Businesses have the challenge (now more than ever) of deciding what to invest in and what to cut back on. It is true that tumultuous times tend to expose opportunities that would otherwise remain hidden. Smart and lucky companies will pounce on these opportunities and reap the upside benefits either counter-cyclically (while the economy is still in a downturn) or by positioning themselves well for the turnaround when it comes.
Software developers have an analagous situation every time they embark on a new project. But the cool thing about software is that “hedging your bets” is much more feasible than in business. Software architectures like SOA and the old standby of model-view-controller allow you to be prepared for whatever comes along. Building security, scalability, and performance into a system from the ground up similarly prepares you for the shifts that will inevitably hit your application.
The analogy is that both business management and software development require investment. Architecting a system properly and leveraging the new thinking in software security and performance takes time to learn and time to implement. That is time that’s not always available on every project. Compromises are made.
The analogy breaks down however when you consider that in running a business requires a path to execute on. You have to choose the things to pursue and go after them wholeheartedly. With the new flexible architectures in software you’re supposed to be more able to “roll with the punches”.
Of course, there are many business models that spring up around the change that is hitting various industries. And there are many business models (just like dead code) that need to be tossed out in favor of better ones. Witness the record companies, auto sector, newspaper business, and lending industry. If only they could come up with ways to modularize, wrap services around their offerings, and swap in a whole new user interface. Hmmm. Maybe they can.