Agile Quality Assurance
Quality is first and foremost about making things that are a good fit for the intended purpose. Not over engineered – which implies waste – with features that do not provide value to users. Agile Quality Assurance is specifically designed to make sure that every product is always “fit for purpose”, and quality assured at every stage, including before and beyond the completion of a minimum viable product (MVP).
THE WHAT AND WHY OF QUALITY
Only one in three software projects are truly successful, according to Standish Group’s Annual CHAOS report in 2020. Our quality assurance framework uses a structured way to identify and map how quality software development outcomes can be assured. This is more than testing and quality control.
PLANNING FOR QUALITY
Rather than undertake an in depth requirements and business analysis process, define a minimum viable list of requirements and goals. Make sure that your goals are clear and easily understood. Line up at least 3 carefully researched software development experts that have the experience and domain expertise required to deliver your software. Make sure that each expert clearly communicates their definition of “done” and that these are both understood and acceptable.
Communication and agreements regarding communication are critical. Cover everything from protocols, platforms to culture and management. Protocols are covered under “alignment” below. Platforms should be decided ahead of time to make sure that everyone is comfortable and proficient in the use of the chosen tools. Culture and management requires another blog post but a “remote first” policy (bias in favour of remote personnel) and so called “psychological safety” (ability to show and employ one’s self without fear) are essential.
BEYOND TESTING, TOWARDS QUALITY ASSURANCE
Make sure that you have a clear definition of what quality means to you and your software development product. Use the concept of fitness for purpose rather than perfection (an idealised end point) because the journey towards perfect quality is a process. Also, whilst testing and quality control are central to any quality goal, Agile Quality Assurance is not about testing and the different types of testing. It is more to do with making sure that certain activities – that support and act as a compass and guide to quality outcomes – are implemented to achieve the goal of quality assurance.
AGILE CONTRACTS SUPPORT QUALITY OUTCOMES
Use an Agile Contract, designed to support quality assurance goals and align customer and supplier motivations. Design the contract to encourage partnership and risk sharing, based on a fixed price but variable scope. One way to achieve this is through a short initial phase discovery (see below) that enables both parties to better understand and thus de-risk the work. Avoid contract tie-in by making sure that there is a clear exit strategy – for example, protecting transfer of IP – if things go wrong. Also, structure payments to provide for an agreed incentive or bonus payment, and declare completion at any point, for the achievement of the customer’s key goal.
DISCOVER AND SELECT QUALITY FOCUSED EXPERTS
During the discovery stage, if necessary, iterate and change your software development expert based on performance, including quality assurance related criteria. To save time and achieve the best quality results, undertake the discovery process, simultaneously, with one or more software development experts. Engage a lead expert and allow others to participate. All participants have access to all evolving product requirements and related information for the duration of the discovery stage. All participants get to adjust their approach, time estimates and bids based on the new information. At the end of the process, score each participant, review, and select your preferred partner to complete the development work. The leader is paid a pre agreed fee irrespective of their engagement status after the discovery process. Other participants are incentivised to take part by the prospect of being selected, based on their inputs and refined bids. This crowdsourced approach allows you to get to know each expert and their approach to quality assurance. This process enables an improved discovery process that drives better quality outcomes.
ALIGNMENT – THE HEART OF AGILE QUALITY ASSURANCE
Use Agile to iteratively build your product and make sure that you get a tangible and useful deliverable, typically working software, after each development cycle (sprint). Quality outcomes require alignment, between you, the customer, and your software development expert. Agile Quality Assurance first demands a timely and proactive approach to problem solving, on a daily basis. Your software development expert should provide a daily update with any issues or work blockers that you can remove.
Your expert should also provide weekly or biweekly updates and progress reports by undertaking a sprint demo. This is a demo of the evolving product after each sprint, after it has achieved the definition of “done”, after it has been tested and after it has successfully passed through the agreed quality control process. There should be no exceptions to this rule. After each sprint demo, your expert and other team members should reflect on the work and any areas that could be improved. This should be a formal meeting at the end of which your expert should identify and act on at least one thing that could improve the quality of future outcomes.
A MARATHON WITH MULTIPLE SPRINTS
Agile Quality Assurance is about the journey towards perfection, rather than perfection per se. Continuously cycle through the process of “observation, orientation, decision and action” – this is by definition continuous, and embodied within the process of alignment described above. This is our Agile Quality Assurance framework.