The Bug Economy

Published 19 March 08 11:01 PM | carlcs 

I've been reading a bit about economics lately. Mostly I just want to have a coherent opinion on subjects like trade, budgets, and growth and other such stuff. The thing that has surprised me is how some economic principles have applications in the world of software development and bug management. Here are a couple of thoughts on how you can apply lessons from economics to shipping quality software.

People respond to incentives

This seems like such a simple statement of supply and demand, but yet the implications are quite profound. It's very powerful to predict the results of a policy change based on the aggregate self interest of the individuals affected. For example, if you institute price controls you will get shortages. That's simply because producers have no incentive to meet demand and consumers have no incentive to conserve. This effect was in fine display during last winter's windstorm. I waited in line for three hours to get a generator and spent half of my remaining time driving around looking for gas cans or a gas station that actually had gas. If prices are allowed to float then people who really need the gas and are willing to pay for it can still get it, while those who can do without cut back. Of course anyone who actually did this would get slammed for price gouging.

If you remove the mediation of prices, other factors jump in. These include black markets, the willingness to wait in line, and political factors. When I waited for the generator, a guy stopped by the line and said there was someone in the parking lot with a couple of generators on sale. You can see these factors in play with the release of new video game systems as well. The releases are always underpriced relative to demand so they are always accompanied by long lines, exorbitant 'black market' prices on E-bay, and back channel dealing. I've always wondered how many 'new friends' J Allard gets when a new version of Xbox is released. Even I got calls from naïve long lost relatives when the Xbox 360 came out. Say what you want about the inequality caused by pure market forces, at least prices provide transparency.

The key thing to realize when you try to apply this this idea is that people don't respond to the well-meaning intent of a policy. They may in fact respond in a way that is exactly opposite to the intent but in a way that is still quite rational. The economic effects come into play even during times of national emergency like WWII or local disasters when everyone is supposed to be banding together. We shouldn't expect something as prosaic as our jobs to be immune to this rule.

How does this work in the bug economy? What happens when you try to institute controls on bug counts? You get a black market in bugs. Issues start to drop out of product studio and get tracked informally, if at all. Some bugs get changed to tracking or are moved to other milestones, often without the guiding hand of a bug-bar. Bugs become hot-potatoes even when the product would be best served by deliberate consideration.  The lesson to learn is that you should never drive the indicator. If you institute gas price controls, that doesn't magically make any more gas appear. (Ask Jimmy Carter.) Similarly if you drive bug counts, that doesn't magically increase the quality of the product. What really happens is that you lose the value of your leading indicator, bug counts. This leads to my next observation.

Sound monetary policy is critical

Money has no intrinsic value. Money is only a mechanism for making it convenient to exchange the value you provide when you work for the goods someone else produces when they work. When you erode the value of money through inflation you introduce uncertainty. High inflation makes it impossible to make long term investments. People don't want to invest for future returns because that future cash will be greatly eroded.

One of the biggest problems in post-revolutionary America was the lack of hard currency. This impeded trade and made it difficult for the likes of Thomas Jefferson to get out of debt. That doesn't mean there isn't a 'real' economy. It just means that it's much harder to measure because the real economy retreats to black markets and barter.  The real economy is also much less efficient and creates less real wealth than one that is mediated through prices. This barter economy was the real reason Alexander Hamilton came up with the whiskey tax which in turn led to the Whiskey Rebellion. Whiskey was the only commodity and currency in wide circulation. Taxing whiskey was the only way to pull westerners into the larger federal system.

In the bug economy, bugs have no intrinsic value. Their presence does not mean that quality is low, and their absence does not mean quality is high. For example, when you reward finding a lot of bugs, you introduce bug inflation. The value of a bug degrades and the devs scoff at the bug count because there are so many trivial issues.  A single check-in can wipe out a score or more. This is just like the German buying a loaf of bread with a wheelbarrow of money in the 1920s. Again the real problem isn't that you have a lot of bugs, but you don't know what the bug count means anymore. By driving the meaningless indicator, rather than the underlying value you have introduced uncertainty and destroyed the value of the bug-count as a predictive tool. Deflation has similar problems. When the bug count gets driven down artificially you can have a hornets’ nest of problems hiding in an apparently small number of bugs.  Again, the 'real' quality economy retreats into the black market.

There is one big problem with instituting policies based on this fact. It's hard to tell the president that interest rates must go up to slow the economy and prevent inflation, especially in an election year. This leads us to my next observation:

The fed must be politically independent

No president would raise interest rates so that his successor can have a strong economy. I have some doubts that there has ever been a president who would sacrifice reelection to do the right thing if they had the power. The temptation is just too great. For example, Bob Woodward quoted Bill Clinton as saying "You mean to tell me that the success of the program and my re-election hinges on the Federal Reserve and a bunch of f****** bond traders?'" Only a politically independent fed can do the right thing according to its charter.

The closest equivalent we have in the software world is shiproom. Unfortunately, it's rare that it has the leverage and independence to make sure that bugs remain a meaningful indicator. Even if the person driving the meeting has some independence,  the people providing data to ship have their own conflicts of interest.  Sure, quality is never intentionally sacrificed, but remember the point about "people respond to incentives." The quality incentive doesn't hit until after the next review, if ever. The bug count and shipdate incentives hit much sooner and much more directly.

This group-think and conflict of interest can lead to overly optimistic schedules. All too often schedule estimates sound more like a refrain from "Bob the Builder." Bob says: "Can we build it?" His team responds "Yes we can!" Ironically, strong leadership can actually be a detriment. Inspiring a team to do the impossible can have long term negative effects. For myself, I've always had a soft spot for Lofty who always adds "er, well, I think so."

A closely related issue is that you can't delegate shipping. Yes, it's important to have long term vision about new features and come up with exciting new stuff, but at the very least executive management needs to be able to call BS. I'll never forget what my first GPM told me when I was getting beat up about putting together a schedule and driving a product. "Driving a project is a core part of what every PM does." At the time I was fresh off of a successful presentation I gave to BillG and every manager and VP in the chain of command (Well, SteveB wasn't there)  as well as a handful of other assorted VPs. I didn't understand how my ability to handle executive presentations didn't trump the nitty -gritty, boring parts of the job. Let’s just say that five years later, I am a convert.

Resources are scarce

Despite the fact that it can be very easy to fool yourself  about working harder to get more things done and how the magic of technology has destroyed the business cycle, productivity is not easily changed. Bugs may not indicate what you want them to, but the product still has a certain quality level, even if you can't measure it well. There is still work to fix issues, no matter how good the team is. Spending resources in one part of the economy means that another part will not have those resources available. If you over produce steel, then you'll have excess inventory and a recession until that inventory is worked off. Leadership cannot change this fact. Software has its own laws. Builds take a long time. Even the most trivial of bugs takes time to open, time to fix, time to check in, and time to regress. Code churn leads to regressions, glide paths can't be forced, and software that isn't tested is always broken.

The thing is that there is a real quality level lurking behind all of those bugs and a real economic output hiding behind the stats at http://www.bea.gov/. The best you can do is treat those stats with respect and do everything you can to make sure that those stats continue to reflect the bug (or non-bug) economy.

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# Carl Carter-Schwendler said on May 30, 2008 5:41 PM:

Recently, I finished A Terrible Glory . It's a pretty good book chronicling Custer's destruction at Little

Leave a Comment

(required) 
(optional)
(required) 

About carlcs

I've been working at Microsoft since the beginning of 1998. I have been both a developer and a program manager and have worked on COM+, Enterprise Scalability, Core File Services, and Terminal Services. I am currently a program manager on the Windows Essential Business Server team.
Page view tracker