The software engineering world is increasingly facing questions and challenges around collective ownership in software development including software quality. As quality practitioners, independent software testing providers, testing services organization, we are not perturbed by these – we are confident of leveraging these challenges as opportunities and definitely believe in the mantra of collective ownership. However it is important for the varied entities to understand their roles in ensuring smooth and consistent delivery – this is one of the core challenges that one of my friends in the start-up world was recently talking to me on, in encouraging developers to think beyond just coding – in my opinion, this is the important element of inculcating the software testing mindset amongst developers.
I’ve promised him a workshop/talk to help his developers understand how to bring in this change which is primarily a mind-set change along with core discipline in the process. I strongly believe this is a topic that will help several organizations in grooming their development teams to the next level in building products that are of acceptable if not high quality. Understandably this is a very subjective discussion, but nevertheless an important one and the points below will hopefully bring in objectivity in the process of inculcating the software testing mindset.
- Do not feed in on requirements that are given to you as is. Take up a feasibility study to ensure you are convinced about the requirements, the market relevance, competitive advantage, robustness of the technology solution etc.
- As you code, think about the testability angle of what you write – testers are being increasingly encouraged to think like end users and go beyond the call of system requirements. Now, if developers start thinking about the testability angle, the overall quality and end user focused coupling gets tighter
- Never miss out on unit testing – it not only helps you verify your own code and improve on any gaps that may exist, but largely helps the test team as well in focusing on more critical issues rather than those at the unit level
- Leverage test automation scripts from the tester to use them before you release builds to test. These go a long way in enabling test readiness for the quality team
- Participate in team efforts such as exploratory testing, bug bashes, test code reviews, test case reviews – these tighten the bond you have with the most important entity, the test team opening more scenarios for discussion. Similarly, ensure you take up high level code reviews with the test team. This will also help you compare your code against the team and the industry’s coding best practices and whether what you’ve written is readable, less bulky (as much as possible) and intuitive for others who understand coding – this goes a long way in building a robust, maintainable and transferable code base
- Take time to understand the non-functional quality attributes of your code and how they’ve come along – be in performance, security, usability, accessibility etc.
- Step out of your coding comfort zone every week or so to connect with the varied entities on points above, as these help you develop a testing (curious) mindset and that goes a long way in improving your performance and the performance of the code you write
The one core take away for developers is that, coding is not rocket science understanding the end user expectations, competitive landscape and aligning system requirements with the same is more challenging. All though there are business teams that cater to these, gaining an understanding or a mere appreciation for these and partaking in the above process in possible ways, goes a long way in setting yourself apart as an exceptional developer – to be able to do that, inculcating the software testing mindset is one of the guided and proven paths!