Three keys to sustainable (software) development

Executives making substantial investments in new technology platforms and capabilities have a not-unreasonable expectation that their investments will have a lifespan of over a decade or more. This is particularly true for leaders of organizations whose businesses are not rooted in the constant change and turmoil of the technology industry.

Unfortunately, such reasonable expectations run counter to the reality of cycle times in the IT industry. Technologies come and go, become fashionable and then become irrelevant over periods as short as six months or a couple of years. Software and technology platforms, development tools and architectures are born, thrive and die – or are replaced – within a decade.

How then should we square the need for sustainable returns on new systems investments with the countervailing cycle of constant technology disruption?

The answer involves understanding three core concepts: iteration, abstraction and…Legos.

An iterative, not one-time, investment

Over-promising and under-delivering is too common a pathology in the IT domain. Eagerness to meet business executive’s expectations – reasonable, in their view, but often unrealistic – is a sure recipe for failure. It’s incumbent upon IT and software development leaders to educate decision-making executives about the realities of modern software development and to set expectations appropriately.

The biggest reality check for executives is that sustainable development actually means sustained development. The old days of months of design being turned into a single development phase resulting in a finished product are long gone. Modern iterative development approaches are based on a continuous product improvement model that assumes development will continue through the life of the system with the addition of new features and ongoing renewal of the underlying platforms.

An iterative approach to software product development can ensure that investments remain relevant for a decade or more. The nuts and bolts of the application or system 10 years hence may look very different, but value will have been delivered continuously to the organization during that lifespan. An iterative approach also allows for a process of continuous renewal that keeps the application and underlying platforms vital and inline with a changing software technology landscape.

The power of abstraction

The greatest determinant of investment longevity is a well-designed application and system architecture. Adhering to certain core architectural principles is the key to building a sustainable lifecycle for a software product or service.

In software development, “abstraction” means the ability to create clear functional separation of responsibilities across the various layers of the application and underlying platform components.

In a typical complex business application there can be multiple layers of abstraction: Between the user experience and underlying application logic, between application logic and core services of the application, between the core services and the data architecture and between the all of the application and data services and the underlying operating platform on which the system is running.

Each of these layers is represented by a well-defined set of interfaces. In a sustainable development model these interfaces need to be designed with a view to the future. They need to remain stable in the face of disruption and needed changes in other dependent parts of the system. An application with a sustainable architecture can tolerate ongoing updates and modifications throughout its life without these changes creating disruptive ripple effects through the entire system.

Clean and well-architected layers of abstraction will enable a system to evolve as the underlying ecosystem of operating systems, platforms and databases also changes. Such an approach provides the additional benefit of reducing lock-in to particular technologies and vendors over the decade or more life of the system. A particular database technology choice at the beginning of the project can be changed without rewriting the entire system as new and better choices become available.

Modular, like Lego

The buzzword of the last couple of years in application engineering has been “micro-services,” i.e. breaking a complex application into a series of smaller individual services, which are then orchestrated together to deliver the functionality of the system. Lego is the best analogy for a modular, “micro-services” approach to building software.

Lego enables you to build pretty much anything from a predefined set of bricks. Each of these bricks has a different function, shape, size, color etc. but every brick is designed to connect in a defined way with every other brick in order to achieve the end result. This modular – Lego – approach to building software is one of the keys to sustainable development.

Modularity in software design and implementation has many benefits. It enables resiliency, scalability and, when used appropriately, better application security. But modularity is really the key to sustainable software development because it allows for the ongoing renewal and refreshing of aspects of the system as demands of the business evolve and more effective technology choices become available.

Building for the future

Modern, modular software architectures with well-defined layers of abstraction, combined with an iterative, continuous improvement model of software development are the keys to sustainable system investments. These approaches and principles really do provide a way to reconcile executives’ demands for longer-term returns on their IT systems investments with the reality of today’s fast accelerating pace of technology change.