The core tenets of our development methodology are derived from the Scrum development model. We use an iterative, team based approach to development to deliver superior results while minimizing both risk and cycle time
Our development process incorporates a three-phased approach:
• Scope the project
• Build and deliver
• Sustain and support
Scope
Our goal in scoping the project is to specify what’s going to be built, by how many people, in how much time, and at what cost. This phase is driven by the CTO assigned to the project in conjunction with the Product Marketing Lead, and in close collaboration with the customer.
We engage seamlessly with your team to rapidly come up to speed, placing senior business and technology professionals on site, engaging and iterating with your team around business goals, product requirements, and design alternatives. At the outset, we make sure that we have a deep understanding of your technology goals, and how these goals align with the business’ overall strategy for success. We identify any technology issues or roadblocks that have been obstacles in the past, so we can be sure to avoid them, or fix them so they don’t happen again. When needed, we perform various primary and secondary research activities to ensure the product is well-researched, differentiated from the competition, and meets the needs of your target audience. For clients that have already done this due diligence, we ensure that our marketing resources are fully briefed by your team so that we can intelligently guide the development in line with your requirements.
The CTO assigned to your team is responsible for the high-level architecture and design, with a focus on breaking the requirements down into functional components at a granular enough level to make key technology decisions and determine the resources necessary to complete the project.
Based upon the various functional components, and the time constraints imposed by the customer, the makeup and size of a cross functional team (or teams for bigger projects) is determined. A detailed timeline with specific milestones is then created and agreed upon by all of the stakeholders.
We take pride in scoping projects to realistic, achievable, delivery dates.
Build
Our development process is iterative, and focuses on frequent delivery of usable software over the course of the project. The quicker we deliver product iterations to our customer, the more actionable feedback we’re able to receive. By the time we reach the final milestone, we’ve already had many iterations of feedback and subsequent adjustments, and are delivering software that’s squarely aligned with the expectation and vision of the customer.
Delivering workable software in short increments is an art unto itself. Each iteration, known as a sprint, is roughly four weeks long, although in certain cases sprints may be as short as two weeks.
The CTO and Product Marketing Lead, in conjunction with the customer, determine which features should be included for development at the beginning of each sprint. Features are selected in concert with the customer based on their business value and implementation time. Items that do not get completed during the sprint are deferred to the following sprint. The key benefit of this approach is that the features with the highest business value are developed first.
On a daily basis, each team (local and remote) conducts a short meeting to get aligned and to identify any roadblocks that may be standing in their way. Since we have teams working locally and remotely, we employ a highly effective cross-team meeting known as a “scrum of scrums”. These meetings, typically conducted by videoconference and spearheaded by the CTO, bring the project manager and technical lead from each team together at least three times per week.
At the end of each sprint cycle, we review all completed and deferred items, and present the software to the customer. In addition, we hold a retrospective, where all members reflect on the last cycle, identifying things that worked well, and things that didn’t. Since every project and customer is different, this allows us to make continual improvements to the process.
It’s very common for our teams to work in close collaboration with the customer’s development organization. We’ve found that in these cases, including the relevant members of the customer’s team in the scrums of scrums meeting works exceptionally well to keep everyone informed and aligned.
Additionally, we’ve found that agile project management and tracking tools reduce the complexities of multi-team development efforts. They add real-time visibility into development status, foster communication between teams, and increase productivity.
Sustain
Sustaining work on a finished project is broken down into two categories; Bug Fixing and Customer Support.
Bug Fixing typically utilizes a smaller cross-functional team, but follows all of the same methods and practices outlined in the Build phase, with the caveat that bugs take the place of features in sustaining sprints.
Our Customer Support process includes both e-mail and phone based coverage by trained customer service professionals. Any support issues escalated to the development team are added into the next sustaining sprint.