I’m going to start a little game on the blog called Guess How it’s Done. I’ll look at some web sites, and guess how they do it. This is something I’ve always done in private.
That got me thinking about complexity. I have found that, almost universally, the intrinsic complexity of a task is overestimated, while the extrinsic complexity is underestimated. If you are building a search engine, for example, the intrinsic complexity would involve the ranking and retrieval algorithms that are part of the essential nature of searching. Extrinsic complexities would be those introduced through external factors that have little to do with search, such as the need to scale search to several million users, to provide monitoring and 99.9% uptime. Others might call extrinsic complexity the details. In my present role, I prefer to hand things off before having to deal with any extrinsic complexities. Such is the role of research.
This bias in the estimation of complexity is constantly rearing its head. When folks here at Daylife look at a competitor’s product, their guesses about what sorts of algorithmic magic might be going on are often quite a high of what I estimate to actually be the case. When I meet with clients, or with others that are familiar with Daylife, and listen to their interpretation of what we do and how we might do it, the estimates are similarly inflated. Which is not to say that what we do is simple. It is not. But if you were to stack up all of the clever things we have done over the last three years, the things we have done to achieve performance and scale would measure quite a bit higher.
The same bias appears in what often seems to be a decline in productivity as a company grows. In our first year or two, we rolled out features at a furious pace. Now we have triple the number of engineers, and yet the rate at which the intrinsic properties such as feature-count or data quality increase has not tripled. Some of that is overhead in managing a larger company, absorbing engineers with less experience than the initial team, and a dilution in ownership of the product. The rest of it? A skew in our estimation of the complexity of various tasks.
The same bias makes my job at Daylife at times difficult. I can crank out prototypes at a fairly alarming rate — applications or algorithms that do some interesting things, but are as implemented utterly unscaleable and unacceptably slow, and at times go down without warning and don’t come back up until someone happens to tell me. One of the guys on our team, who admittedly has no experience with software, suggested that my productivity was three times that of a typical engineer. Actually, I only have to do one-sixth of the work, and only spend about half of my time working on prototypes.
I wonder if the same bias bites other fields as well. Take putting a satellite into orbit. Rockets are, on the surface, fairly simple devices. Mix some fuel with an oxidizer in a combustion chamber, put in some gimbals and a feedback system, and a way to vector the thrust, some telemetry, and that’s about it. The principles are simple. Then there are the details. Making practical use of the Navier-Stokes equations are the physical scientist’s version of NP-Hard, and perhaps not even terribly illuminating given the hypersonic nature of the nozzels used, and the added complexity of a chemical reaction going on during the whole process. I suspect it is a nightmare attempting to model the performance and stability of a rocket engine, and they certainly have to be tested. In a previous life, I spent a few months attempting to determine the conditions within a straight tube with a lateral temperature gradient and a steady mass flow of a gas capable of undergoing auto-combustion. Oh yes, and don’t forget to make sure your O-rings are pliable at whatever the ambient conditions are during launch.
And yet no one thinks launching a rocket is a simple task, even though the complexity is perhaps underrated. “Rocket science” is still an annoying benchmark of complexity, appropriate in the middle of the twentieth century but no longer a good choice. Perhaps the complexity is more in-your-face than with software, the potential for mistakes and disaster more easily understood.
Anyhow, the Guess How its’ Done game will only be concerned with intrinsic complexities. As for the extrinsic ones, ugh, lets not go there.
Posted by Ken Ellis
RSS