It seems like everyone’s taking guesses as to how the recession will impact their little corner of the world. This is my guess.
The trend in engineering and architecture during the now-bursting Web 2.0 bubble has been one of precious little engineering at all. It’s become the common wisdom to ship first and scale later, and Hoare’s old chestnut of “premature optimization is the root of all evil” is a favorite flippant dismissal of any suggestion to the contrary. Technologies that enable a fill-in-the-blanks approach to rapid development at the expense of performance have become the default choice for new companies in this environment. It’s taken for granted that The Cloud will solve scalability issues because, of course, why optimize when you can just fire up more servers to run your sluggish code? Or, when you get popular, rewrite, and never mind the second-system effect.
The difference between investor-responsible, cost-driven development and put-the-prototype-in-production hackery can be serious money. In a recession economy, my hunch is that this haphazard latter approach to engineering is going to be one of the first things to go. What’s different, now, is that there needn’t be a tradeoff between performance and expressiveness, or between reliability and developer satisfaction. The tools have improved over the last several years as more organizations have faced scaling challenges, and tools matter.
I’m first to admit that I have something of an agenda with this prediction. I spend a fair bit of my time working with and writing about the Scala programming language, which provides the expressiveness and flexibility of dynamic and functional languages like Ruby, Python, and Lisp with the performance of C++ or Java. But Scala is just one of a number of tools that can be applied to do engineering right on a budget without being miserable. The open source community has become rich with performance testing tools, libraries to aid test-driven development, powerful statistics suites, and much more. Even sharing optimization stories goes a long way towards encouraging the type of performance- and correctness-oriented engineering that’s going to succeed in a tight market.
I think this recession is an opportunity for a minor Dijkstrian renaissance in the values of the tech community, and particularly the web application development community. It’s important to remember that software engineering is a practice, like medicine or law, and that as engineers it’s our responsibility to make the right choices on behalf of our stakeholders. My hope is that other developers survey the landscape of tools and approaches and choose those that best fit the current economic constraints.