Product success is shaped by its ability to evolve


Last Updated on Jan 11, 2021

The maxim "Change is the only constant" applies to software too. Change is the number one reason why software development is challenging and fundamentally different from building a bridge or constructing a machine.

Functionally, software changes when users request new features, product requirements are understood better through iteration, or business priorities change. Unlike other creative domains, the focus in the software space has been to get the product into the hands of users as early as possible for the sake of gathering feedback. It is acceptable and even recommended to push the product out before it is complete. Invariably, there is an implicit expectation that software will evolve continuously.

Technically, a product needs to change to keep up with the environment. User growth may push architecture enhancements, new platforms, or legal and regulatory requirements may prompt modifications. There will always be bugs to fix or technical debt to be paid.

Moreover, Systems rot when left alone. They need regular patches and upgrades, vendor assessments, and constant monitoring and logging.

Evolving the software is also about paying forward. It should be so that it is simple for engineers to make changes to the system in the future.

The ease with which you can modify a system is closely linked to its simplicity and its abstractions. Abstractions are effective means to manage complexity. Easy-to-understand and straightforward systems are usually easier to modify than complex ones. The converse is true as well: The more comfortable a product is with adopting change, the simpler one can make it over time.

So invariably, change is in the very nature of software development. The transient nature of software amplifies both the number of changes as well as the pace of change. Many frameworks and tools have emerged just to expect, handle, and thrive on this change.

Agile incorporates the concept of change into the organizational process, with practices and solutions to give the product an advantage by planning for change. The Agile community has also developed technical tools and patterns that help develop software in a frequently changing environment, such as test-driven development (TDD), extreme programming (XP), and refactoring.


© 2022 Ambitious Systems. All Rights Reserved.