The famous saying ‘Change is the only thing that does not change’ applies more to the modern information technologies than anything else. Technologies just come and go; by that time a company is ready to release a product, the underlying platform is already outdated; the birth and death cycle is getting shorter and shorter! Countless energy and time has been spent in meddling and muddling with the technology stacks than solving the actual business problems.
So, how can the IT companies and teams handle and survive the waves and tsunamis?
‘Can a product/application X live forever?’ The obvious answer is no; ‘Change is inevitable’. So, the better question to ask is ‘How can the lifetime of a product be increased?’ History shows that following strategies would help in increasing the longevity of a product or application with minimal or no changes; of course, it all depends on the type of product that one is designing; some apps are required to live longer and some are transient. This article is only for the former, the applications that are supposed to live forever, i.e., as long as the corresponding business or company exists!
There could be many ways, but one high level idea suggested in this article is ‘Rigid core and changing peripherals’. The idea is that, for any application, the parts need to be divided into two categories; the Core, and the Peripherals. I.e., identify the data, algorithms, business logic, etc that will not change with respect to technology.
And design a stronger and immutable core as much as possible using ideas like the following: * Use low level stacks wherever feasible: This might increase the complexity of the software development and also may have some extra cost in the maintenance, but the big benefit would be that the application would be able to live longer. For example, just look at the apps created based on CORBA or ActiveX/COM in the recent past! Thumb rule could be that if a