And the smart people are probably the ones who would have done fine without them, anyway.
Maybe it would have taken them a little longer to get to the correct methodology. Which is why I still believe that there are what business consultants call "best practices." I hate that term, but that's what Joel on Software tries to be: Here are some best practices for this, and that, and the other thing. There's no set of instructions, but there are all kinds of guidelines.
There's about 8 million things I can tell you. I can tell you, when you do a beta test you're not going to have a single beta tester who's willing to install every single beta version of your software -- and do a complete test from head to toe of that version. You're going to have people who try it out on the first day; they're going to report a bunch of bugs, and that's going to be the last you hear from them. So if you have 500 beta testers, you need to give 50 of them each of 10 releases so that you actually get some feedback from the third, fourth, fifth, sixth, seventh beta. So that's a little tiny thing -- it doesn't tell you anything about software management, it's just a piece of random useful advice. The world is full of those things, and they don't add up to a methodology.
It's almost more like folklore.
Yeah, it's just an art. There should be a guild! It's like a medieval way of training people to do things, but it worked pretty well. The closest thing I have that people consider to be a methodology is the "Joel test," and I don't even consider that a methodology -- it's just a quick way to judge whether a team is doing well or badly.
A set of criteria or yardsticks.
It's more like CMM [the "capability maturity model" from Carnegie Mellon's Software Engineering Institute] without the headaches of CMM: a quick way to find out if a software team is good or not. It's certainly possible to fake it.
Microsoft scores pretty high on the Joel test, right?
I think Microsoft is now well in the advanced throes of getting everything 100 percent right in terms of the discipline and just no longer producing products people want to buy with any level of consistency.
You mean that the process is well tuned, but it has lost the bigger picture of what direction the army should be marching?
Partially, and partially also the process is overtuned. There's this other phenomenon that happens.
I remember once, when my grandparents were alive but were old, they were trying to go out to a restaurant with me one night, and it took a half-hour from the time they were standing by the door to the time we got out the front door because my grandmother kept saying, "Do I have my keys?" Of course she did have her keys. "Did I turn on the burglar alarm?" She went and turned on the burglar alarm. And then she said, "Do I have my keys? Go check if the garden door's open; I think I was outside today." "Is the water running?"
Basically, by the time she got to be 65, every mistake she'd ever made in her life she had corrected by creating a new procedure by which she made sure that she never made that mistake again. For example, before she left the house, she double-checked that she had her keys, the burglar alarm was on and so forth. So she had been acquiring these habits to prevent making mistakes she had made in the past. And by the time she got to be 65, it took a half-hour to run through the whole checklist!
What has happened at Microsoft is that someone discovers, for example -- this is something I found on a blog at Microsoft, it's a real story -- that in Turkish there are two letter I's. There's I with a dot and I without a dot, and a capital I without a dot becomes a lowercase i without a dot, whereas in English a capital I without a dot becomes a lowercase i with a dot. So if you've got some code that's checking if something is an integer, and it's doing it by actually comparing the strings, and if your code just happens, in order to make it a case-insensitive test, to lowercase the thing first, that works fine -- until you're running on Turkish Windows. Then, the lowercase i actually wittily, and stupidly, becomes a lowercase Turkish i, which does not compare to an integer with a dot on the i, so that code doesn't work.
So I found on a blog some guy that was going through thousands and thousands of lines of code trying to find these cases. And he's writing about it on his blog so that nobody else would ever make that mistake. And you can sort of see that at some point the guy would say, "Before we ship, let's just make sure there's a representative of the Turkish Windows team in the room signing off." You can imagine them making up some system to prevent this mistake. And now it's gotten to the point where, as Adam Bosworth says, it takes 16 months to get out any release of any Microsoft product. They really can't steer that ship very fast. They spent something like a year on SP2 [Windows XP Service Pack 2] -- it's a good thing they did that, but it's almost all cleanup, maintenance, catch-up, for security reasons.
It's what the Army calls fatigue. Fatigue is everything in the Army that you do to keep your equipment in good working condition: polishing your shoes, brushing your teeth, making sure that you're ready and that all your bullets are clean and there's no sand in your gun. It's all called fatigue, and it takes about two hours a day for an infantry guy. And it's everything but the actual thing you're trying to do. Microsoft has now got to the point where it's like 80 percent, 90 percent fatigue. So even though they're still scoring a [perfect] 12 on the Joel test, we need another category, which is "and you're not Microsoft."
Another problem is that everybody tries to learn about business from Google, Microsoft, eBay and Amazon -- and they're such wacky exceptions. They don't really apply to you. I say, Microsoft makes their own gravity -- they could ship a brown paper bag called Microsoft Brown Paper Bag 1.0 and hundreds of thousands of people would buy it. Or at least try it.