5 Essentials to Implement ‘Do Things Right the First Time’ Practice in Software Development
Bora Siva Kumar Reddy, PhD
R&D Manager @ Ericsson India | PhD in Management
The most common question we hear is, “What does software quality mean for contemporary software development? According to the existing literature, software quality means different things for different researchers and software development practitioners; it encompasses many characteristics. Nevertheless, any organization’s main goal is to develop software that offers a compelling user experience and produce more with less. That is: ensure that the solutions are technologically accurate, reduce the cost of production, and satisfy its users. In general, this can be accomplished by offering quality service at a lower cost and preventing rework. Quality also has to do with predictability. Agile is one of the fastest software development methodologies that enable the quality product to be delivered to the customer side.
When it comes to Desire for Quality in projects adopting Agile methods, the first quality doctrine that comes to mind is “Do Things Right the First Time”. In this “Do Things Right” means fulfilling the customer requirements in accordance with customer satisfaction. The following are 5 essential techniques that I believe can have a major impact on achieving “Do Things Right the First Time”.
Seek only top talent, and spread their passion
Steve Jobs in his book summed up the value of having top talent in a team “Go after the cream of the cream. A small team of A+ players can run circles around a giant team of B and C players”. Work is carried out by highly talented and motivated workers result in lower turnover, greater productivity, better quality, and improved business outcomes. When your intent is to deliver top-quality product and avoid rework, you should seek only for the top talent and spread their passion towards building top quality products. This leads to deliver higher levels of quality of the products in less time. However, it is not always possible to fill the development teams only with A players. In that case, make sure that there is a proper mix of A players and B players. The B players are also very important to keep the daily details moving.
Create an environment in your development teams to use the best of their abilities and passion to achieve more; along with the support of effective tools and technologies to accomplish the goals. The programs such as ‘Zero defects’ in software development, rewards for those who deliver features with no defects are very helpful in delivering the best quality software products and brings healthy competition in the development teams. Make sure to express your passion on a regular basis, as it spreads exponentially and can have the same impact for your workers as a continued quest for quality.
Comply with the coding standard guidelines
Standardization has a positive effect on a product's quality. For effective software development, there are certain coding standards that are required. When you consistently aim for high-quality software with no defects, complying with coding standards is deemed necessary. There are various benefits of complying with coding standards including—the consistent standard of code; no matter who's writing the code, reduced costs of development and expedited time to market, easy to maintain even the codebase grows, reliability is ensured every time, enhances team communication, reduces programming errors, and improve code quality. The complying with coding standards not only ensures reliability but also creates health circumstances with the development and testing teams. It releases the white-box tester’s workload by helping them to understand the program easily and saving the testing time. Working under a set of coding norms makes it much easier for team members to understand the colleagues’ programs and disavow the injection of worthless defects.
Customer involvement
Customer involvement in software product development is essential for a continuous understanding of customer needs and one of the very important factors for accomplishing ‘do things right first time’ practice in software development. To build products that bring a level-best fit for customer needs, the software companies need to get continuous feedback from customer persons. The customer involvement is the activation participation in design activities, technical decisions, program and timeline decisions, continuous feedback, and product innovation. Involving customers or customer persons in software product development is one of the major challenges for companies and managers. It is even more challenging when the development team is distributed. Many companies still don’t have proper mechanisms to integrate customers into product development. To deal with these problems, there are some suggestions available in the literature including—1) Build customer representatives called ‘personas’ and integrate them with the development teams. These personas represent fictitious customers which have the same knowledge as customers. 2) Develop customer units. The customer units are integrated mix of company employees and customer representatives. Any software that is developed, first release to the customer units for feedback. Also, these customer units can act as a Tire 1 support teams. 3) Travel to the customer sites or invite customer persons to be part of the development teams. 4) Include rich communication tools such as video, messaging, screen sharing, and feedback wikis.
Automated testing
Any testing which is not automated is waste of time and energy. Automated testing minimizes human intervention, avoids repetitive tasks, and helps improving software quality. Automate as many test cases as possible to reduce the defects in software development. Automated testing offers more accurate outcomes, improving the quality of the product, reducing time to market, and creating better ROI. Automated testing guarantees software quality without repetitive and manual intervention being involved. It is recommended to develop the test code along with the development of the software code. Both can be a parallel activity. Once the software code is developed, it can be executed against the test code to validate; and this is a recurring process. In this approach, the defects can be identified as early as possible. The earlier a defect is identified, the more cost-effective it is to patch the glitch. Test automation is closely related to Continuous Integration/ Continuous Delivery (CI/CD).
However, there is no single solution to achieve complete automation in testing. But there are various tools that can be used in integration to accomplish automated testing requirements.
DevOps and CI/CD pipeline
Automate everything possible is a new mantra in software development. That is, avoid human intervention as much as possible. The tasks such as automated test execution, automated deployment on heterogeneous environments, monitoring the applications, so on, and so forth can be done using the DevOps and CI/CD pipeline. Thus, development teams can achieve high-quality software, flexibility, and numerous deployments. Successful CI/CD implementation usually relies on a set of tools integration to remove manual steps, reduce errors, and increase the team’s agility. CI makes sure only quality code passes through the pipeline. Therefore, the entire process is repeated every time someone submits a new software code to the shared repository. CD targets towards reducing the lead time by automating the processes ranging from unit testing, integrating, acceptance testing, and deploy to production. This practice helps in rapidly automating all the processes and deploy in customer sites after all the intended acceptance tests are passed, and the users in production can use the latest changes in no time. The eventual goal is to build a repeatable system that takes advantage of automation and allows continuous improvements to deliver top quality products faster and easier.
To wrap-up, the importance of ‘do things right the first-time’ practice arises from the goal of decreasing waste and increase efficiency in software development. The importance of software quality is clear for companies to be more efficient and focus their R&Ds to improve. Keeping this in mind, the author believed these five essential techniques can have a major impact on implementing ‘do things right the first-time’ practice. The quality of software products that can arise consistently with the use of these techniques is discussed. Practicing these techniques can help companies sideline quality hurdles.