The Three Phases Of ‘Sustained’ Software Engineering
Organizations buy, build, bolster and break down their IT stacks. It’s a cyclical process that quite naturally gives rise to what developer-programmers and systems architects refer to as the software development lifecycle, typically shortened to SDLC as it is.
If the buy, build, bolster (by which we mean augment, extend and finesse the functionality of) an IT stack is quite an organic process, then although natural attrition will always occur, if CIO’s can reduce the amount of software code break-down passing under their purview, then they may be able to maximize Return on Investment (ROI).
This is not an argument for or against legacy software; some applications and data will become archaic, anachronistic or just simply outdated as a result of all platform progression at the highest level. Some digital assets have to retire, we know that, they had a good life, let’s move on.
Three core stages of software
What this is an argument for is a more lifecycle-centric view of software development i.e. one that has a more inherent appreciation for all three core stages of software’s life and existence from initial prototyping & testing to live production & deployment and ultimately onto legacy retirement and maintenance. Yes, it’s true, we can break down to the software development lifecycle into smaller granular chunks and tiers than that, but the before, during and after phase is enough for now.
Being able to work across all three phases cost-effectively, with functional excellence and inside an environment that still delivers robust secure enterprise apps is tough. Karthik Balasubramanian says we need to think about an approach he calls ‘intelligent sustained engineering’ as a route forward.
In his role as senior vice president for technology in the high-tech and independent software division at digital product engineering and IT modernization company Persistent Systems, Balasubramanian is aware that people are drawn to the new and shiny.
“When we think about engineering and software development, our minds are drawn to the newest, innovative and most exciting examples. This is the kind of [software and hardware] engineering that leads to the release of new generations of smartphones, new cars fueled by renewable energy and Artificial Intelligence (AI) that solves complex problems. We are naturally drawn to the work that breaks new ground, creating the tools and technologies that will make our lives easier or more interesting,” said Balasubramanian.
Of course, it’s important to remember that working on the new and shiny elements of an enterprise software stack represents only a fraction of the digital engineering for which a company is responsible. At any one moment, engineers and developers must work on at least three (above suggested) versions of their product.
Beta buzz delivers no dough
Balasubramanian warns that however exciting the future, exciting, to-be-released product sounds, this work is only used and appreciated by a few beta users. After all, during development, the future version drives no revenue for the company while carrying substantial research and development costs.
“Software engineers must also support the present version of their product i.e. the generation that they have most recently released to their organization’s users. The present version will typically comprise a large portion of the company’s customer base, so engineers must keep those users and customers happy by quickly fixing bugs and delivering steady service improvements,” he said.
Working on three different versions — past, present and future — is a balancing act, and getting that balance right is key to maintaining customer satisfaction and minimizing churn. If an organization commits too many resources to the future, it risks losing its present customers to competitors. Once those customers have left, it’s incredibly difficult to get them to come back.
“As we think about the ways that companies balance their work across the various versions of their product, it’s important to remember the goals that motivate this work. Of course, the company wants to acquire new customers, either by introducing new features to the present version or by enticing them with the innovations in the future version. The company must also satisfy the needs of its customers using the present version. Additionally then, for those using the past, legacy versions, the company must keep them happy enough not to leave while simultaneously encouraging them to upgrade to the present version,” explained Balasubramanian.
The three-tiers of sustained engineering
If we follow Balasubramanian’s suggestion and think of a more sustained approach to software engineering across the lifecycle, then our three-tiers of engineering excellence are as follows:
Past version(s): Engineers will not add to the feature set of legacy versions. However, they have an obligation to maintain a quality experience for customers using these products. The company will fix basic errors to maintain uninterrupted service and help run the product in lights-on mode.
Present version: While engineers won’t work at breakneck speed to introduce new features to the present version, they will work diligently to ensure that the product can integrate with new systems in the marketplace. The integrations will ensure that the present version talks to most of the data sources that it needs to talk to. Customer acquisition is crucial to justify the investment that was made in developing this version and prolonging the life cycle of the present version enables the company to build a larger customer base that can then be migrated to the future next-generation version.
Future version: This is where action happens. The future version should reimagine the product currently being used by customers. New feature sets will be developed at breakneck speed, and the company will try to differentiate this version in the media as a means of drawing new customers.
“While the concepts behind sustained engineering are easy to understand, they can pose difficult business challenges in practice. For example, consider the people that worked on a past version of the product that was released more than 10 years ago. In most companies, these are the only people that have the specialized domain knowledge needed to maintain service through sustained engineering,” said Pesistent’s Balasubramanian.
He says that these experts are no longer being paid the same salary they earned in their younger development days — with an extra ten years of experience, they now command significantly larger salaries. This inevitable situation can turn sustained engineering into an outsized expense for companies maintaining legacy products.
Intelligent sustained engineering
But there is a way forward here. Legacy systems most often don’t have solid documentation and hence traditionally sustained engineering for legacy systems has operated on the premise that only domain experts or the original developers can perform maintenance without damaging the basic functioning of the product.
According to Balasubramanian, “Recent developments in technology have made it possible to take an intelligent approach to maintenance without needing oversight from a domain expert or the original developers. Through intelligent sustained engineering, companies can analyze the codebase of their legacy products and identify which parts of the codebase are causing the most issues or defects. When performing maintenance, the intelligent tools will only interact with the problematic areas. This leads to minimal changes in production and dramatically decreases the likelihood of additional fallout from any errant fixes.”
As companies navigate the challenges of the so-called ‘great resignation’, intelligent sustained engineering makes it possible to maintain stable performance even when a highly skilled employee leaves for a different organization. Over time, as more past generations require sustained support, this solution also helps to limit costs and maintain investments in the products that matter the most — the present and future versions.
Perpetual motion for the future
“While recent advancements in sustained engineering have made it easier and more affordable to keep up with past versions of products or software, it’s important to remember that this process will always require attention and nurturing. The product development cycle never stops: eventually, your present solution will join the past versions, while the version of the future becomes the newly released current product. A successful company will pay diligent attention to the perpetual motion of the product cycle,” concluded Balasubramanian.
Sustained engineering is not the flashiest or most exciting aspect of a company’s operations, but it is vital to minimizing churn and delivering strong long-term business outcomes. Thankfully, intelligent approaches to sustained engineering can potentially make it easier for organizations to keep their customers happy while maintaining an eye on the future.