Software Development – A Best Practice
Once the business has decided to embark on the journey of software development, assigning a team to build it can be fraught with risk for both the business and the developers.
The risks to the business are
- How can the quality of work be verified?
- How can they be sure that it can be built, and if it can,
- How can the chances for rework be minimized to get just exactly what’s needed,
- Will the final cost of the solution meet the preliminary estimate?
The risks for the development team are
- Unreasonable expectations of the business,
- Insufficient or unclear requirements,
- Indecisiveness or shifting requirements, and
- Micro-management of the development process.
To protect themselves, some organizations choose to publish an RFP, REQUEST FOR PROPOSAL in an attempt to establish a budget. This ‘fixed bid’ approach for bringing the vision to value, creating software from an idea, is impractical. It does nothing to eliminate risk and can actually foster the potential for creating an adversarial relationship between the business and the development team.
The RFQ, REQUEST FOR QUALIFICATION, is a preferable approach. The RFQ is an invitation used to identify and select a software architect who has the capacity to assume a role similar to the architect in a commercial construction project. In this role, they create a comprehensive plan of action around the business case and user requirements.
The plan will include the first two phases in the software development process, the Discovery Phase and the Design Phase. It will result in a scope of work with achievable goals and objectives. It will also be detailed enough to establish budget guidelines, set stakeholder’s expectations, and leave room for flexibility.
The five phases of the software development process include:
The Discovery Phase
The Discovery Phase is the process of assessing and evaluating the people, processes, technology, business challenges and the goals of the proposed solution. The Discovery Phase is also the time that both parties can define what success will look like. For more information related to the Discovery Phase refer to our article, “The Benefits of the Evidence & Impact Process”.
The Design Phase
The Design Phase is when the development team documents all of the components of the proposed solution and creates a plan for creating the software. It will include timeline expectations, resource allocation, budgets and anything else that will impact the total effort to achieve the business goals set forth in the Discovery Phase.
The Design Phase concludes with a mutually agreed upon plan of action that will be used as a roadmap for the Development Phase
The Development Phase
The Development Phase is a series of short sprints where features are built and as completed, they are turned over for testing and approval. As these new features are being tested, the development team focuses their attention on the next features in the design plan.
The Testing Phase
As new features are received from the development team, they are tested thoroughly and then delivered for user acceptance testing. Once they pass these tests and the business signs off on the effort, they are rolled out during the Deployment Phase.
The Deployment Phase
Once there’s sign off, the Deployment Phase is when the new features are scheduled and placed in production.
THE AGILE DEVELOPMENT METHOD
A development team that utilizes the agile development method gives a project team the power to deliver new features quickly and preserve the flexibility that stakeholders need to shift their priorities as the needs of the business change.
Agile methods break down a big project into smaller bite sized chunks. Ever mindful of the overall vision, developers and stakeholders work closely together to prioritize which features should be built first. Once they’re built the rapid feedback cycle assures that the development team and the end users are in sync with the overall goal and objectives.
This rapid feedback cycle puts a premium on collaboration and input from the user which results in an end product that often exceeds initial expectations. The cycle is repeated over and over again so that with each iteration existing features are refined and new ones added.
With an agile approach, one can get 20% of the software that 80% of users need most into production faster. Agile also results in minimizing wasted effort and increasing user satisfaction.
Agile encourages users and developers to work side by side which results in an alignment of the business with technology. The rapid feedback cycle also provides a structure that if and when the original vision for a feature shifts, it can be addressed in a timely manner.
Agile gives stakeholders the ability to
- verify the quality of work on a frequent basis, and
- if the need arises, reprioritize or shift the focus if needs change, and
- more easily keep tabs on progress and ongoing development costs.
It also gives the development team
- frequent feedback to minimize wasted effort, and
- clear requirements for the next sprint while preserving flexibility, and
- The ability to deliver working features faster to end users.
If you are facing a business challenge that could be solved by automating business processes, integrating the RFQ approach with the agile development method can go a long way to assure your software development experience is successful and possibly even exceed your expectations.