The law of the jungle is becoming more and more relevant for the field of software development. To stay competitive, projects constantly need to adapt to changing requirements, changing expectations and changing environments. Failure to do so means that the product will soon be forgotten and substituted with a competitor’s product. I will briefly discuss the stages a project goes through(as described by the Stage model) and comment on the dynamics of the jungle that the ICT sector has become.
The Software Jungle
Imagine that software projects are species of flowers. Naturally, each species aims to reproduce as much as possible in order to survive. Flowers reproduce by attracting bees(users) with distinctive colors(UI/responsiveness) and supplying them with nectar(content). The bees in return distribute the pollen and everyone is happy.
Let us journey through the hardships that flower X can face in this software jungle.
Initially, flower X occupies a field and lives happily in symbiosis with its users. But then the bees start getting fat from all the nectar and the flower needs to have bigger nectar holes. And out of nowhere, some monkeys come along and start eating the flowers, so flower X needs to start reproducing vegetatively as well. Sometimes, a hurricane carries some seeds to a far off field and flower X has to adapt to the new soil (like an OS or a changed API). It also needs to have some mechanism of recovering from stampedes like new restrictive government regulations or hackers. And on top of that another flower starts invading the field. Maybe it has brighter colors, maybe it has sweeter nectar, but for some reason bees prefer the new flower and start avoiding flower X. If it does not adapt, flower X will suffer a great blow in reproductive capabilities and will be well on its way of becoming extinct.
The Cycle of Life: Stage Model
According to the stage model, software projects go through five stages: Initial development, Evolution, Servicing, Phase-out, and Close-down. This section provides a concise description of each of those illustrating with examples.
- Initial development – engineers build the software from scratch to satisfy initial requirements. This stage is important in not only that it specifies the software architecture which will be vital for implementing changes later, but also because during this stage the members of the software team gain expertise in the field of the project.
In practice, with the advent of Agile methodologies, the Initial Development stage gets shorter and shorter and the majority of the development is done in the following stages.
- Evolution stage – This is the stage when iterative changes, modiﬁcations, additions and deletions to functionality occur. Evolution is triggered by customer demands, competitive pressure and sometimes legislative changes(for example, the upcoming changes in Data Privacy).
Note that the product need not be released when the evolution stage begins. The release date could be after several internal iterations addressing defects. Also, the system could be released in an alpha or a beta state before the final release.
This stage is where we find the known-and-loved web giants like Google, Facebook, Spotify, etc. They are living their own Golden Ages – they have amassed a considerable user base and are constantly adding new functionality to stay competitive and address the demands of their users. However, history has shown that Golden Ages come to an end.
- Servicing – every project can only evolve for a limited amount of time. Evolution stops when the architecture of the project can no longer support new additions of functionality or staff changes leave the development team without experience. Changes in this stage are hard and expensive and often push the project even deeper in the Servicing stage.
Examples of projects in this stage are dying out products like MySpace or ICQ (personal opinion).
- Phase-out – No more changes are being made, but the service is still available.
Examples here include older games like Starcraft, Warcraft III, The Sims, etc., file-sharing programs like Kazaa and the upcoming end of support for Windows XP .
- Closedown – The service is shut down and users may be directed towards a replacement. For example, when a new MS Office comes out, an older version may be abandoned.
Software projects need to stay in the evolution stage in order to grow and stay successful. Unfortunately, Mother Software is not like Mother Nature and it does not have a built in evolution mechanism. It is up to the software team to manage the evolution of the product by iterative refactoring, restructuring and the addition of new functionality. “Survival of the fittest” is an accurate description of the competitive software market. Inevitably, all products will topple under their own weight and will be replaced by a newer service more suited to the recent changes in the dynamics of the market.
The decline of a software project is something natural and it is something that needs to be planned for.
Our new Constitution is now established, and has an appearance that promises permanency; but in this world nothing can be said to be certain, except death and taxes.
—Benjamin Franklin, in a letter to Jean-Baptiste Leroy, 1789
In the early days of Google Books, the founders of Google were overseeing the scanning process of a university library that had signed up for the service. However, their collaborator had gone rather silent and upon asking what’s the matter (and later to the Observer ) he replied
I’m wondering what happens to all this stuff when Google no longer exists.
“I’ve never seen two young people looking so stunned: the idea that Google might not exist one day had never crossed their minds.
Indeed, we need to address the question what will happen when Google is no longer around? If there is no plan for the migration of data, then will the decline of Google equate to the burning of the library of Alexandria? And if Facebook closes down, will you be able to show all your selfies to your grandchildren? You should start making backups now!
My claim is that sooner or later projects will fall prey to their competitors, but that does not mean that their users should suffer and lose their data. Even now books bought from the Apple store are incompatible with Kindle devices. There should be some kind of standard that service providers should be made to adhere to. The main problem is that such a standard will impose great limitations on developers and the evolution process. So, I’m asking you: should we slow down to make sure we’re going the right way?
The software market is a jungle of inter-connected products, where most of them have rivals who will take every opportunity to steal their users. This rivalry leads to evolution and expansion of the service, until such an evolution is no longer available. On one hand, this evolution is great because it drives progress. On the other hand, as a community we need to ask the question if this unmanaged growth of the whole system will not lead to some potential great loss of data or knowledge in the future. Are the things we abandon total garbage?