Think of us as a bolt-on technology department. We can assist with both management and engineering, including requirements specification.
Management
We have deep experience managing projects, people and organizations. We understand every business’s first concern is remaining profitable. Happy, efficient employees are the hallmark of great companies. We can help design processes to pair with the software we build for you.
- Project Management — We have tools and techniques to manage projects for you. We know how manage with the old-fashioned, waterfall method, or we can be agile. There are best practices applicable to any project, but we can find the optimal process for each team. Projects can be tracked with spreadsheets, inside services such as Basecamp and Pivotal Tracker, or with custom tools like FreeTime. We can manage your projects for you, or we can help you develop a process for your team.
- People Management — As a former Chief Technologist and VP of Engineering, Leon knows how to recruit and retain top talent. He views programming as a craft; programmers should organize into masters, journeymen and apprentices who take pride in the quality of their work. The best managers do three things: choose the destination, cheer the team when they arrive and in all other situations humbly serve the team. This attitude can be expressed through conscious conversation about the needs and goals of team members, usually in the context of regular meetings and written evaluations.
- Operations — We reach for automating whatever we can with software. Most situations rely on human processes to achieve success. We can help design the entire system, not just the software part. Understanding the tasks people perform outside of the software is crucial to developing and improving the software. We document the complete process and train your users on software systems we install.
Software Engineering
Planning before coding is the only way to build software. The size and importance of the project dictates the effort spent, but every project benefits from formal software specification. We start with user stories that develop into use cases. From there, we describe a data model and specific behaviors. Our aim is to communicate in plain language exactly how the application will function before we build it.
- Elicitation — The first step in building software is discovering needs. We begin with your statement of needs and problems. We ask why until the answer is obvious. For example:
- Customers complain about poor service. Why?
- Our service people spend too much time completing orders. Why?
- Our software system requires double entry. Why?
- We use software that’s closed source, expensive and runs on the desktop. Why?
- We had no alternative 10 years ago.
- Solution: develop a modern system that frees us to provide better customer service.
- Requirements — Once we understand the problems and the needs they imply, we can make a formal statement about them. We put this into a Requirements Specification. Putting it in written form helps shake out the corners of the problems we might not have noticed during conversation. It also puts a stake in the ground about what we plan to build together. A typical Requirements Specification would have the following sections.
- Use Cases
- Process Flow Diagram
- Data Flow Diagram
- Object Catalog, including properties and methods
- Constraints, such as minimum browser versions and percentage uptime
- Design — Where the requirements are about what the system does, the design describes how it does it. When we speak of design, we mean the totality of design: form and function. We typically partner with graphical designers and user experience experts. We are adept at producing detailed technical design. Design Specifications typically include the following elements.
- User Interface Wireframes, as diagrams or clickable prototypes
- Screen Mockups
- Graphical Style Guide
- Coding Standards, such as a source code style guide
- Database Schema
- Details Algorithm Specification
- Testing Specification