Development
QBurst's software development methodology has evolved from our experience delivering 500+ projects. Each one of those projects was different and solved a unique problem. One thing we have learnt from experience is that software development does not have much in common with manufacturing, which is a repeatable production process. Following a recipe will not ensure success. Software development is a creative process and involves trial-and-error. However, chances of failure can be reduced by following proven best practices such as code reviews, unit testing, and continuous integration. And last but not the least, software development requires the right kind of people and tools.
Agile Development
Our development methodology is based on agile principles and techniques. Historically, companies have followed the waterfall model, which is a phased approach where requirements analysis is done upfront, followed by high-level design, low-level design, coding, testing, and finally user-acceptance. However, waterfall model has its drawbacks; the main problem being its inflexibility. Very often, requirements may not be clear upfront or may change during the course of a project. In agile development, business and development teams work together closely. The product is developed incrementally in iterations. Working software is produced early and new features are frequently released. End-users get to use the software while new features are still being developed.
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
The default agile methodology we follow is Scrum, but based on project and client needs, we often come up with a custom process.
Below is description of each stage:
- Project Initiation
We start the project by documenting the business owner's wish-list. A wish-list is a set of use cases that the business or product owner wants implemented. During the initiation phase, the use cases are documented at a high-level (or at least use-case titles are written down). A high-level effort estimate is added to each use case. The list of use cases is then prioritized for implementation. This results in the creation of the Product Backlog. - Product Backlog
The Product Backlog must be maintained and refined on a continuous basis throughout the project life-cycle. New requirements are added as and when they are unearthed. Existing use cases may be broken down into finer-grained use cases. Estimates may change as new facts come to light. Priorities may also end-up changing. - Sprints
The product is developed in an incremental fashion in multiple sprints. A sprint is the basic unit of development in Scrum. It is "timeboxed" and the average duration is two weeks, though sprints of one week to a month are common. A planning meeting is conducted prior to the start of a sprint. In this meeting, the product owner and developers work together to come up with the sprint backlog, i.e., the list of requirements that would be completed during the sprint.
During a sprint, short daily project status meetings occur in which both product owner and developers participate. These are called daily scrums. In these meetings, each developer says what they had worked on the previous day, what they plan to do for the day, and if they have encountered an impediment.
At the end of a sprint, a working software increment must be produced. The sprint deadline is never extended. If a requirement cannot be completed, it gets moved back to the product backlog. Also, during a sprint, requirements are never changed. Thus the developers are shielded from requirement changes allowing them to work uninterruptedly. A review meeting is conducted at the end of the sprint and completed work is presented to stakeholders.
To summarize, our development methodology is based on working in close collaboration with customers, frequent releases of working software, and rapid iterations.

