The three phases of “sustained” software engineering
Organizations buy, build, harden and decompose their IT stacks. It is a cyclical process that naturally gives rise to what programmer-developers and system architects call the software development lifecycle, commonly abbreviated as SDLC as it is.
If buying, building, hardening (by which we mean augmenting, extending, and refining the functionality of) an IT stack is a fairly organic process, then while natural attrition still occurs, if CIOs can reduce the number of software code failures under their control, 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 simply obsolete as a result of any platform progression to the highest level. Some digital assets need to retire, we know they had a great life, let’s move on.
Three main stages of the software
This argument is a more lifecycle-centric view of software development, i.e., one that has a more inherent appreciation of the three main stages in the life and existence of software, prototyping and initial testing to production and live deployment and ultimately to legacy retirement and maintenance. Yes, it’s true, we can break down the software development lifecycle into smaller granular chunks and levels than that, but the before, during, and after phases are enough for now.
It’s challenging to be able to work across all three phases in a cost-effective manner, with functional excellence, and in an environment that consistently delivers robust secure enterprise applications. Karthik Balasubramanian says we need to think about an approach he calls “smart sustainable engineering” as the way forward.
In his role as senior vice president for technology in the high-tech and independent software division of the company’s digital product engineering and IT modernization company Persistent systemsBalasubramanian is aware that people are drawn to the new and the shiny.
“When we think about engineering and software development, our minds are drawn to the newest, most innovative, and most exciting examples. That’s the kind of [software and hardware] engineering that leads to the release of new generations of smartphones, new cars powered by renewable energy and artificial intelligence (AI) that solves complex problems. We are naturally drawn to work that is innovative, creating the tools and technologies that will make our lives easier or more interesting,” Balasubramanian said.
Of course, it’s important to remember that working on the shiny new bits of an enterprise software stack is only a fraction of the digital engineering a business is responsible for. At any given time, engineers and developers should be working on at least three versions (above suggested) of their product.
Buzz beta doesn’t deliver dough
Balasubramanian warns that as exciting as future, exciting and forthcoming products sound, this work is only used and enjoyed by a few beta users. After all, during development, the future version generates no revenue for the company while incurring substantial research and development costs.
“Software engineers should also support the current version of their product, which is the build they most recently released to users in their organization. The current release will typically include a large portion of the enterprise’s customer base, so engineers need to keep those users and customers happy by fixing bugs quickly and providing regular service improvements,” he said.
Working across three different releases – past, present, and future – is a balancing act, and finding the right balance is key to maintaining customer satisfaction and minimizing churn. If an organization devotes too many resources in the future, it risks losing its current customers to competitors. Once those customers are gone, it’s incredibly difficult to get them back.
“As we think about how companies balance their work across different versions of their product, it’s important to remember the goals that drive that work. Of course, the company wants to acquire new customers, either by introducing new features in the current version, or by attracting them with the innovations of the future version. The company must also satisfy the needs of its customers by using this version. Also, for those using the older legacy versions, the company needs to keep them happy enough not to leave while simultaneously encouraging them to upgrade to the current version,” Balasubramanian explained.
The three levels of supported engineering
If we follow Balasubramanian’s suggestion and think of a more sustained approach to software engineering throughout the lifecycle, then our three levels of engineering excellence are:
Previous version(s): Engineers will not add anything to the feature set of older 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 keep the product running in on mode.
Current version : Although the engineers are not working at breakneck speed to introduce new features in the current version, they will work diligently to ensure that the product can integrate with new systems in the market. The integrations will ensure that the current version communicates with most of the data sources it needs to communicate with. Customer acquisition is crucial to justify the investment made in developing this release and extending the lifecycle of the current release allows the company to build a larger customer base that can then be migrated to the future next-gen version.
Future release: This is where the action happens. The future version should reinvent the product currently used by customers. New feature sets will be developed at breakneck speed and the company will try to differentiate this release in the media to attract new customers.
“While the concepts behind sustainable engineering are easy to understand, they can pose difficult business challenges in practice. For example, consider people who worked on an earlier version of the product that was released more than 10 years ago. In most companies, they are the only people with the specialized knowledge to maintain service through sustained engineering,” Pesistent’s Balasubramanian said.
He says these experts no longer receive the same salary they earned in their younger years of development – with ten additional years of experience, they now receive significantly higher salaries. This unavoidable situation can turn sustained engineering into an outsized expense for companies maintaining legacy products.
Smart supported engineering
But there is a way forward here. Legacy systems most often do not have solid documentation, and therefore the engineering traditionally supported for legacy systems assumes that only domain experts or the original developers can perform maintenance without damaging operation. basis of the product.
According to Balasubramanian, “Recent technological developments have made it possible to take an intelligent approach to maintenance without the need for supervision from a domain expert or the original developers. Through intelligent sustained engineering, companies can analyze the code base of their legacy products and identify the parts of the code base that cause the most problems or defects. During maintenance, smart tools will only interact with problem areas. This leads to minimal changes in production and greatly reduces the likelihood of further fallout from any errant patches.
As companies rise to the challenges of the so-called “Great Resignation,” smart sustainable engineering helps maintain stable performance even when a highly skilled employee leaves for another organization. Over time, as more past generations require ongoing support, this solution also helps contain costs and maintain investments in the products that matter most: current and future releases.
Perpetual motion for the future
“While recent advances in sustainable engineering have made it easier and more affordable to track past versions of products or software, it is important to remember that this process will always require care and attention. The product development cycle never stops: eventually, your current solution will join previous versions, while the future version will become the newly released current product. A successful business will pay close attention to the perpetual motion of the product cycle,” concluded Balasubramanian.
Sustainable engineering isn’t the brightest or most exciting aspect of a company’s operations, but it’s essential to minimizing churn and achieving strong long-term business results. Fortunately, smart sustainable engineering approaches have the potential to help organizations satisfy their customers while keeping an eye on the future.