Bridging the gap between expectations and actualization requires a streamlined process and a well-defined strategy. A structured approach aided by established processes is the key to deliver consistent, quality and on-time products. These pre-listed steps not only act as a checklist but a framework for the team to use repeatedly. This is expected to help the team to come up with predictable results. In the long run, benefits in terms of reduced number of development-related iterations and the defects reported from both from the field and during the software development lifecycle results in stable products and faster deliveries.So, is there a defined set of practices aimed at developing and delivering an “ideal” product? For the sake of simplicity, “ideal” in this context would meanindustry benchmarked, reusable and configurable; easy to deploy and meeting customer expectations. The list is, needless to say, never-ending.

In this context, I have thus listed a few best practices that, in my opinion, can ensure the product meets and exceeds the customer’s expectations.

ANALYZING REQUIREMENTS

Thoroughly gauge and understand all requirements pertaining to the product. Focus not only on the explicit but also the implicit requirements. Gather not only functional requirements but also the non-functional ones.

BE MINDFUL OF CHANGE

Analyse and identify the areas of change. Do not just focus on that particular component but evaluate the potential impact on the complete system.

DESIGN AND REVIEW

Understand the importance of detailed product design and evaluate different options to obtain the best possible solution. Keep in mind that most of the products fail due to bad design. Concentrate on developing a scalable architecture.

COMPREHENSIVE CODING

Develop codethat compliesto the organization’s coding standards. Focus on building reusable components and developing easy to configure products. This not only reduces development time but also makes the testing less time consuming. Get the code reviewed and incorporate the feedback.

TESTING AND VERIFICATION

Follow a thorough routine of functional, integration, regression and load testing. Verify the transactions/logs after testing process. Focus on testing automation to reduce time required for testing repeated releases. Test automation may take time once, but saves considerable time going forward.

RELEASE TAGGING

Appropriately tag the releases to avoid any ambiguities

ADOPTION OF ENGINEERING TOOLS

Use some best available tools for testing and delivery of quality product.

Today there are many open source plug-ins and tools are available to make the development faster, do the static code analysis on the fly while coding, dynamic code analysis, test automation, testing and continues integration and deployment.

For quick reference some of the tools that I have used and found extremely includes SonarQube for static analysis, jstack, valgrind, jmap, jprofiler for dynamic analysis, JUnit , TestNG for testing, Sahi, Selenium, TestComplete for Test automation, Jenkins, Travis CI for continuous integration, ansible for continuous deployment. The list is endless but the objective to mention some of the tools are to make readers understand the importance that some of these tools bring to the product quality and faster product development and delivery.

Net, net, it isn’t easy for organizations to deliver consistently good quality products but at the same time, there exist best practices that if adopted can make a big difference. The only thing is to keep working on them even if it requires someone to go extra miles in terms of putting effort, energy & time or pushing the environment to challenge the status-quo to change the existing mind-set.It only needs discipline!

Manish Jain

Manish Jain

Manish Jain is Chief Technology Officer and Vice President, Comviva. He brings to the table over 17 years of work experience in the telecom value added services Industry, spanning research and development projects and...