A large part of my career has been spent working on software performance engineering. Making things smaller, faster, more efficient. Cutting the fat and allowing healthy growth where it makes sense. Helping that growth to be economical and well executed.
A second big part of what I’ve done could be broadly called project remodels, I did this Visual Studio back in 2008–2010, where changing strategy can allow for a lot of future growth. If you can fundamentally change how things are held together and what’s needed to create most experiences then you’re able to support a lot more growth without things getting crazy. I think VS2010 was super successful in this way, in some dimensions, and tragic in some others. Probably par for the course.
But is this stuff normal?
My sense is that every software system that’s successful goes through some kind of critical growth spurt which it must survive to continue to be interesting. That’s the period where money is coming in, new engineers can be hired, and there is a huge temptation to keep adding stuff. It happens in all kinds of applications.
Part of the reason this happens, maybe all of the reason, is that engineers like adding stuff. It’s the “if we only used my new shiny framework everything would be fabulous” syndrome. This results in not one shiny framework, but maybe dozens. Visual Studio used all known frameworks at the time… maybe it still does, and there are more now…
Fundamentally, engineers and engineering managers seem to feel like the best, maybe only, way to achieve greatness is to add some new awesome thing to their already-pretty-good product. If the answer is always, hire more people, write more code, the product will inevitably buckle under its own weight. To quote a friend, “if you have 500 engineers working on something, you get 500 engineers worth of work. Whether you want it or not.”
Fixing this is a cultural thing. You have to make sure there are plenty of useful, valuable, things to do that do not involve adding. You have to reward simplification, consolidation. You have to celebrate those successes, get them on dashboards, and show how well they correlated to customer satisfaction.
Working on an already great product has to be more like perfecting an existing work of art and rather less like adding more people to the Mona Lisa; and just piling on stuff is inevitably easier and maybe more fun than careful refinement.
I really believe a lot of products, just like a lot of first-draft novels, would be hella better if 1/3 of the thing were deleted. Maybe even 2/3.
I’m not sure if software is doomed like this, but sure does secure full time employment for performance people.