7 steps to quickly develop software to deliver customer value

Digital Partnership

By Yoosuf Mohamed, Senior Vice President & Global Delivery Head – Cognizant Security and Engineering Practice, Cognizant

These field-testing steps can help organizations make the required changes to speed software to market that meets continuously changing market needs.

In today’s fast-paced digital economy, it has become clear that the traditional waterfall-style development processes are too expensive and slow to keep pace with the speed of change. Delivering software features and functionalities quickly enough to meet the continually changing market demands requires a shift to a DevOps model, which combines software development with operations. When deployed effectively, DevOps ensures that software changes are delivered continuously, with new features delivered as minimum viable products (MVPs) that are fine-tuned over time.

However, organizations struggle in effecting this fundamental change to deliver the right software at the right speed to win over competition.

Here are seven essential steps that can help application developers unlock value within their legacy applications, beat competition and win customer adoption and loyalty by producing innovative products and services.

Step 1: Pair programming

Organizations can start a new approach to software development by getting programmers to collaborate in a paired development environment. In pair programming, two developers work together at one machine, with the “driver” writing code and the other reviewing it and considering its architectural implications. The continuous knowledge transfer, and the communication helps developers identify more solutions to problems than they would have realized when working alone.

As members rotate among these roles, they gain more context into each software module, enabling them to identify issues and effect resolutions or architectural changes.
Step 2: Continuous integration, continuous delivery

Speed to market is essential to keep pace with business demands and to maintain relevance. It is this need for speed that has made continuous integration and delivery of code essential. Unlike the traditional approach of delivering code every 12 to 18 months, application developers have to deliver and integrate code at least five to six times a day, keeping pace with the changing client requirements. It is crucial to continuously validate whether what is being built makes sense to the customer. Continuous delivery and test-driven development enables developers to work in small batch sizes and deliver changes immediately. This approach is designed to fix bugs swiftly, and avoid any massive disruptions or failures during the development process.

Step 3: Test-driven development

In a DevOps world of continuous integration and deployment, too much code transforms software from being a competitive advantage to a high-cost liability. Developers should adopt a test-driven development approach that involves first writing the test code that describes the expected behaviour of implementation and then running the test. Any changes can now be quickly made and validated without interruptions. The fast feedback mechanism in the test-driven environment acts as a safety net, keeping the business from wasting precious time and effort on flawed code that will add to its maintenance burden in the future.

Step 4: Balanced teams

A balanced team is a self-contained, interconnected DevOps group of six to eight team members that is independent of other groups in the company. Its members rotate roles and bring different yet complementary skillsets to achieve a common goal. This cross-disciplinary collaboration and iterative delivery ensures that everyone’s opinion is equally important to drive the process and product forward. By keeping the team small and structured, no task is too big to tackle.

Step 5: Feedback

A Google research showed that ‘psychological safety’, where all team members feel free to speak up and take risks, is one of the five characteristics of most successful teams. A culture of team work with a shared sense of empathy is critical for a DevOps team. When everyone feels a shared responsibility for the code they write and the product they build, a bug is just a bug. There is no blame game for errors when teamwork and trust works on the right feedback. A weekly retrospective meeting clears the air of miscommunication, and preps the team to resume work more efficiently. This virtuous feedback loop generates real action and drives improvements consistently.

Step 6: Build, Measure, Learn with MVPs

The build-measure-learn process involves building a minimum viable product (MVP), measuring its acceptance and use and enhancing or adapting it as needed. This approach allows developers to build code in relatively small increments, based on a hypothesis of the customer or user need. By delivering an MVP very early in the development and product definition phase, businesses can reduce wasted effort, and speed results by identifying which features are most important.

Step 7: Eliminate waste

Cost is an important consideration for development teams. Today, there is an increased cost component attached to talent acquisition and skilling, thereby pushing up the development costs as well. Therefore, all resources should be focused only on what helps meet their daily and weekly goals. Restrict meetings to just three a week: a daily stand-up meeting to understand paired goals, a daily iteration meeting to discuss how to avoid roadblocks, and a retrospective meeting to iron out the differences and stay on course.

Creating ‘context switch’ avenues and down time activities such as playing indoor games, reading or music refreshes the developers’ energies, allowing them to recharge their batteries. That apart, facilitating face-to-face communications can help organizations boost productivity and team spirit.

Making these seven changes in the software development process requires resilience and determination. Overcoming the roadblocks brought in by such changes, ironing out inconsistencies, and persisting on this journey is critical for organizations determined to effect a change. Organizations should work through these challenges just like they iterate code: by continuously tweaking, testing, communicating and improving upon it. Only such a comprehensive approach will ensure that applications developers stay relevant and future-ready.