And You Thought You Had Source Control Problems

Ray Ozzie sent me a link to a presentation given by Mark Lucovsky, a developer at Microsoft, about the Windows NT development process.

29 million lines of code. Source code takes up 50 gigabytes. Build takes 8 hours on a 4 CPU machine. 1000 machines in the “stress test” farm.

No, they don’t use SourceSafe.  But I don’t think CVS could handle it, either.


Ron Vogl writes:

I did an internship at Microsoft in the summer of 1997, and at that time, Microsoft had two source-code control tools in use.  Some groups did indeed use source-safe.  The Outlook group, of which I was a temporary member, used an internal Microsoft tool called Source Library Manager, abbreviated SLM and pronounced either slim or slam depending on how you were feeling about it.  SLM was command-line only, with a mix of SourceSafe- and CVS-style workings.  From what I could gather from the interns in other groups, SourceSafe and SLM were used in roughly equal amounts.

Yeah, I used SLM in the old days. Given how devoted Microsoft is to eating your own dog food, the fact that there are still groups that don’t use SourceSafe says something about how bad that product must be.


For today’s topic, I answered some interesting questions readers have sent recently.

“What do you think are the important things students need to learn if they are to become good C++ programmers?”

“I want to find out if there are any interesting tech companies in New York…”

“I’d like to find out about Fog Creek’s shrink-wrap strategy and results to date.”

“Does Microsoft use VSS for their projects?”

These and more… in today’s installment of Ask Joel


I was interviewed by WebWord.com: “If your software is going to be popular, you are going to have to deal with a million other things: writing manuals, creating good looking icons if you have a GUI, testing, recruiting good programmers, making a product that people want, usability testing, dealing with Norman the Cranky Tester, and about 100 other things that take up most of your time”


A study reported in the Journal of Experimental Psychology: Human Perception and Performance lends some credibility to my claim that software developers can’t multitask.

This study seems to be more concerned with rapid switching between two tasks, which they show incurs overhead. But I’ve noticed that almost universally, developers who have two major projects to work on, even if they alternate every other day, will not get as much done as if they do them sequentially. One thing I’ve seen time and time again is an entire team that is having trouble getting started on a new project after they’ve finished an old one. It can take weeks to get up to full-bore productivity on a new task again. The overhead of task switching can be huge.

Typically you see individual developers overloaded with two or more projects because of severe time pressure and understaffing. Sometimes I’ll come upon a software team that has a single developer “working” on three projects simultaneously.

“Task switching incurs overhead,” I say. “Why don’t you have Bob do these tasks one after the other, instead of switching off during the day?”

“Oh, we would never finish in time then. All three projects must be done within one month. Bob could never get them all done in one month if he did them one at a time.”

This just proves that the schedule is completely unrealistic. Despite the fact that the multitasking dramatically reduces productivity, they’re willing to do it because it obscures the schedule. It seems like each of those tasks takes about a month. Do them in sequence, and three months will elapse. Do them at the same time, and it’s possible to deceive yourself that only a month will elapse. (In reality, six months will elapse and one task won’t even get done.)


More on firewalls: my latest idea is to buy an old Pentium 200 on ebay for $50, and use SmoothWall. Yeah, it’s not as fun as buying $2500 worth of Sonicwall equipment, but it’s sure going to be educational.



We need a new firewall / NAT / VPN box for the office. If you know about these and could recommend one, please email me. [Update: thanks to everyone who wrote in. I think we’re going with the SonicWall XPRS2. If you have any horrible experiences, please warn me!]


Last week I got a call from MCI.

“Hi, this is your local phone company,” they lied. “We’d like to save you money.”

“Please take me off your list,” I responded.

“List? I didn’t put you on my list.”

Now I was getting angry. I thought the law here was that they had to take you off their list if you insisted. But they refused. I hung up on them.

That night, Jared told me that they are only required to respond if I use the exact words “please put me on your do-not-call list”. Apparently the telemarketers are now being trained that unless they hear this magic phrase word for word, they should keep calling you.

And call they did. Today, the same moron called me back. I told him the magic words: “Please put me on your do-not-call list.”

“Oh, OK,” he said. Same guy. So now I have proof that MCI actually has this insane policy, Jared is not just being paranoid.

Why do they want to call me if they know it makes me angry? What kind of company would do that? It can’t possibly help and can only hurt. If anyone has any insight into the messed up management process at this company that actually made them reach this decision, I’d love to hear it.

If you live in New York State and don’t like telemarketing calls, there is a web form you can fill out which makes it illegal for telemarketers to call you.

I filled it out today. According to the web site, the next “do not call” directory will be published October 1 and telemarketers have until November 1 to stop calling me, or they will be subject to a $2000 fine.

If enough people (and states) figure this out, maybe one day telemarketing will be worthless and nobody will bother any more.


I found a great resource for someone like me who knows how to design a software product and get it built, but doesn’t know the first thing about marketing it. Luckily I found Rick Chapman. We arranged for a quick book swap — I sent him a copy of UI for Programmers, and he sent me a copy of his book, The Product Marketing Handbook for Software. I read the whole book in one weekend. This book is fantastic. It’s the education you would receive if you captured a veteran of channel marketing and gave him a truth drug. Hours of nonstop, extremely useful info. What’s a SPIF? Do you need a UPC? How do you get into the channel? Should you bother? What kind of deals will you have to cut to get retailers to stock and promote your software? It’s a complete braindump covering just about everything you should know if you’re thinking of creating shrink-wrap software. Priceless.

There’s a web site that goes along with it called SoftwareMarketSolution.com (I know, that’s a mouthful.) Check it out, it’s the Joel On Software of marketing.


VMWare Rocks

I’ve been using VMWare for configuration testing. This is a program that lets you run multiple virtual “computers” in windows on your desktop. It runs on Linux or Windows NT/2000. Each virtual computer can have any Intel-compatible operating system (Any flavor of Linux, DOS, and all flavors of Windows work fine.) Each virtual computer gets its own IP address, its own hard drive, and access to the CD-ROM and floppy, and acts exactly like a real computer. You decide how much RAM to allocate to your machine.


I’ve got a computer set up with a huge hard drive and 512 MB RAM for this purpose. It took all week, but I set up a couple of dozen operating system configurations: everything from Vanilla Windows 98 to Windows NT 4.0 to Windows 2000 to XP. I have entire domains running all on virtual machines; at one point I was running three machines at once: a domain controller, a machine with SQL Server 2000, and another machine with IIS. This allowed me to test really difficult FogBUGZ installation scenarios all on one computer.

The coolest thing is that you can create “undoable hard drives” on your virtual machines. So every time I ran SETUP and it didn’t work, with one click I could wipe out all the changes I had made to the hard drive and go back to a pristine Windows installation. (Testing on pristine computers is essential. Otherwise you may ship an installer which works perfectly on your developers’ computers, because they have all kinds of goodies loaded, but which simply does not work on typical users’ computers).

This is such an excellent product that I think every tester, developer, and product support person should have it. It’s also a great way to try out scary software (like Windows XP, Office XP, or the .NET Beta) without messing up your primary computer. It’s a nice tool for product support: when a user calls up asking for help with a procedure in Windows NT 4.0, you can instantly boot up Windows NT 4.0 in a window and give them exact instructions for what to do. Finally, it’s a nice way to run Linux software under Windows and vice-versa. I highly recommend it.

(I do have one complaint about VMWare… every time you create a virtual hard drive, it’s unpartitioned and unformatted. It took me almost three days to install an NT 4.0 system from scratch, because I had the hardest time figuring out that the NT 4.0 installer requires a FAT 16 formatted hard drive. It would be trivial for VMWare to ship some formatted “hard drives” on their CD-ROM).

Software takes ten years in Russia too.