Many times we notice that quality is not practically followed across the software development organization but is found in some pockets or is decorated on the walls of the company in nice fancy frames.
Quality is to be followed from team formation to delivering value to the customer. Lets look at each stage on how quality can be imbibed in all the stages of development.
Team formation –
Recruitment needs to focus on recruiting members, who would imbibe quality values in practical sense. This can be achieved by giving practical problems during interviews, which will validate their approach to solve problems and would also validate their understanding of the fundamentals, which is critical to quality.
Business needs to invest time to infuse quality in delivering value to customers.If the management is pushing hard with deadlines all the times – the team might try cut corners. I liked the statement from spotify’s blog, which states that “We don’t deliver on date but we deliver on quality”
Rather than start developing business features from day one, Initial stories should include some of below mentioned items(as needed)
1. Development teams should be trained on skills, such as domain, engineering practices(refactoring,Test driven development,..), process, tools and any other skills required for development. or else it will be like sprinting without wearing right shoes, and eating right diet.
2. High level architecture should be laid out.
3. Infrastructure such as continuous integration, tools for unit, functional,.. automation should be made ready during initial sprints.
4. Practices such as Acceptance test driven development(ATDD) needs to be followed during the iteration.
The team needs to follow practices that will provide instant feedback about the quality, such as Test driven Development, peer code review, team code review, static code analysis, Continuous Integration(CI) and automated test system.
Reviews needs to be very open and directed towards the objective of delivering quality product.
As there is no end to improvement, team should think in every retrospective on ways to improve the quality.
Shift left strategy needs to be applied for testing the sprint output as early as possible.
Look at all the testing and make sure to move to left to identify the issues early on.
For example – Team should look into moving even performance testing to start, and it does not have to be perfect from day one.
If the team does not have the skills for adopting the practices of agile, it is important to to get a hands-on coach, who can coach the team on technical practices such simple design, refactoring, TDD and also general agile practices. As this practices require attitude shift, coaching is important to adopt these practices.
Knowledge Sharing –
Team members with similar skill set(developers of specific technology, testers,…) can meet on some defined frequency to share the good practices that are used in different projects within the company.
Quality needs to be a common denominator across locations.
Metrics should be based on the customer value, how efficient are we and are we continuously improving and striving to improve.
Example – how much time it takes to get feedback from customer, product usage
what is the usage of features by customers, ROI from features being built.
Metrics should be transparent at all levels so that same metrics is available to all members. so that teams can retrospect and strive to continuously improve.
IT , R&D, business should work together as only one section of the team cannot deliver quality.
Quality is also providing what exactly customer wants and not to flood customer with unwanted features that we want the product to have. Customer does not care about the technology or methodology used for development, they are are interested in the end product.
Business team needs to have courage, in removing existing features from product, if they are not providing value to customers.
How much closeness is maintained with customers to understand their needs, context to provide them the solutions.
Quality needs to flow from the time members are recruited and should involved all the stakeholders that are contributing directly or indirectly in the software development process.
We have adopted agile to deliver fast but have we also adopted all the practices that needs to be taken care from quality perspective.
Quality cannot be enforced at just one step of the software development process but should be thought considering the entire flow.