I’m pretty psyched, because UI Design for Programmers is going to appear in print soon.

The print version will be expanded from the web version, with about 5 bonus chapters, lots more illustrations, and a foreword by Dave Winer. It’s being published by Apress, a publisher I love because the founder, Gary Cornell, actually knows more about programming than I do, a rare trait in a computer books publisher.


Working without a salesperson

As a tiny company, Fog Creek Software can’t afford a sales team, or even a sales person, or in fact, a sales cat. “So how do you plan to sell your consulting services?” you ask.

“Aha!” I say. “I’ll promote them on my web site! Surely somebody out there wants to hire smart programmers and architects.”

Here’s what I was thinking of doing to make it worth your time. If you know someone who can use the services of Fog Creek Software, and they hire us, I’ll pay you 5% of the revenue we get from the project, up to a maximum $5000 (U.S.) for each referral.

I’ll post more details and the complete terms as soon as I get the OK from my lawyer. (“You can afford a lawyer?” you ask. “No, but we couldn’t afford to buy errors and omissions insurance if we didn’t have a lawyer, so it’s the lesser of two costs,” I reply). Meanwhile start thinking of all your friends who are CTOs at wealthy startups and Fortune 500 corporations that need a small but crack team of software wizards.



Yesterday we shipped our first product, a bug tracking package called FogBUGZ. I’ve noticed that lots of development teams have bug tracking software, but many of them just don’t use it.

There are a lot of subtle sociology and group-dynamics issues that explain why some software is univerally used, and other software languishes on the shelf. Microsoft’s internal bug tracking tool, RAID, is used universally by developers throughout the company. (FogBUGZ works a lot like RAID, but it’s web-based instead of client-server). But lots of companies spend hundreds of thousands of dollars on overengineered “defects management” tools which nobody ever uses.

And the reason for the difference comes down to small issues of usability and sociology.

For example, usability theory holds that if you make a task 10% easier, you double the number of people that can accomplish it. I’ve always felt that if you can make it 10% easier to fill in a bug report, you’ll get twice as many bug reports. (When I removed two questions from the Joel On Software signup page, the rate of new signups went up dramatically). Over the three years in which I’ve been developing and tweaking FogBUGZ, I’ve resisted dozens of requests for new fields, because I’ve learned that the more fields you have to fill out, the less likely you are to use the bug database to report a bug, and the more likely you are to work around the system by sending email or making a post-it note.

And in sociology, it’s vital to remember that change is hard. It’s difficult to get people to learn new habits and new ways of working, and it’s impossible to inflict a new style of working on an existing group of developers all at once. So we designed FogBUGZ to be viral. One person on any team – a manager, tester, or developer, can start using it, and pretty soon it will spread to the whole development team. It can start with a single developer, who starts using it as a “to do” list. Then it spreads slowly: maybe the first developer assigns an item on the to do list to a friend. Then the two of them decide to tell the testing team not to report bugs via email, but to use the bug tracking tool instead. Rapidly, it spreads to the whole development organization, and pretty soon, developers get disgruntled that they can’t enter a bug for the office manager to get more Mountain Dew.

FogBUGZ reflects our attention to usability and sociology, not just technological “gee whiz” gadgetry. Try it out! We’ve got a demo online where you can set up your own private bug database to play with for free. And let me know how you like it.

Google Just Rocks.

They are beta testing a new navigation bar — an add-in for Internet Explorer that’s really, really cool. It’s the first thing I’ve seen that justifies the screen real estate. (And I’m not just saying that because I own Google stock!)


Painless Bug Tracking

TRS-80 Level-I BASIC could only store two string variables, A$ and B$. Similarly, I was born with only two bug-storing-slots in my brain. At any given time, I can only remember two bugs. If you ask me to remember three, one of them will fall on the floor and get swept under the bed with the dust bunnies, who will eat it.

Keeping a database of bugs is one of the hallmarks of a good software team. I never cease to be amazed at how few teams are actually doing this. One of the biggest incorrect facts that programmers consistently seem to believe is that they can remember all their bugs or keep them on post-it notes.

If I can bend your ear a moment, I’d like to explain a pretty painless way to do bug tracking, in the spirit of my previous articles on painless schedules and painless specs.

Netscape 6

Netscape 6 is just not making people happy.

I’m happy, because Netscape 6 is practically an advertisement for what happens if you don’t read Joel on Software and do what I tell you 🙂

The number of problems in Netscape 6 that I’ve already addressed on these pages is mind boggling.

Netscape Goes Bonkers

The Autodesk Files

Wow, I read this in print years ago, and didn’t realize it was on the web! The Autodesk Files tells the story of the creation of Autodesk. An interesting look at bootstrapping a big company before the days of lunatic VCs and dotcom mania. (Thanks to Bill Seitz for finding it!)

“Lifeboat is probably the largest independent software vendor in the world today,” John Walker wrote, back in 1982. (They were really more of a distributor). Lifeboat was eaten up by what is now Programmer’s Paradise, if you can believe that. And people stopped calling PCs “micros.” Now when you write “micros” it looks like you were going to write microsoft but thought better.

Fun with Mailing Lists

In an attempt to gain a bit more control over the mailing lists for Joel on Software, I’ve installed a program called Mailman which, from now on, will handle the email notifications I send to my subscribers. (For me, this means two big improvements: I can delete email addresses that bounce, instead of getting 50 bounces in my mailbox every time I send a bulletin; it should also reduce the incidence of corrupted messages that some of you have been reporting.)

Installing Mailman, by the way, was a barrel of laughs. Like most open source software, “it’s only free if your time is worthless.” Sob.

If you’re not already a subscriber, please sign up! (I’ve made it very easy.) You’ll receive a short notification whenever there is a significant new article on the site — that is, one of my long articles, not just the short ramblings on the home page which can appear almost every day.


We’re trying to find a new office for Fog Creek Software in New York. One of the buildings we’re looking at, the World Trade Center, requires businesses to have an international presence. It turns out that Joel on Software has subscribers in 44 countries!

Dell And Usability

Dell doesn’t think like their users think. When you go to their website, the first question they ask is what kind of buyer you are: home, small business, large business, etc. I don’t know what I am! I guess I’m a small business, but home systems are usually cheaper, and I usually like to buy top of the line PCs, so maybe I need the Big Business section. This distinction is completely lost on me.

I want a PC. What difference does it make whether I’m a home buyer or a small business buyer? I suspect that they are asking me this because they want to charge businesses more than homes, and large businesses even more. To defeat their system, I choose “home.”

Suppose I want a PC to run Linux. (I do, actually, need a small, cheap Linux server). There’s no way to search for computers that come with Linux as an option. In fact, if you click on the “Search” button and type “Linux,” the very first link you get is for something called: “Air Force – Dell and Linux”, some kind of page targetted to buyers in the US Air Force. Very strange.

There’s a link there on the USAF page to “Dell and Red Hat Alliance.” I tried it, hoping it would get me out of the Air Force zone. Indeed it did, but all it had was a list of press releases. Thanks, guys, I’m trying to buy a computer here.

And in fact, what I really want is a Linux computer in a small form factor. We don’t have much room and I hardly ever need expansion cards. How do I tell Dell’s dang web site that I want a small form factor Linux machine?

The only way to really find systems that run Linux is to try configuring a bunch of different systems until you find a system that happens to have Linux as one of the OS options in the dropdown box.

If Dell is really “building one for me,” I don’t see why there are so many confusing product lines and why Dell insists on putting their customers into little boxes based on their arbitrary distinctions. I’m sure it made sense for Michael Dell to organize his executives according to target markets, but it makes no sense to organize the web site this way.

The first principle of usability says that you have to bring the program model in line with the user model. Figure out what the user expects to see on the first page, and make that the first page.

Look at Apple’s hardware page. This makes sense. There’s a list of computers down the side.Or the IBM Thinkpad site. As soon as you click “Browse”, you see an organized list describing the main models and their key differences.

As for search, it’s no longer good enough to rely on crappy old mechanical search engines. At the very least, your search engine must look for common keywords, trademarks, your own damn brand names, and provide a reasonable answer. Search for “Thinkpad” on the IBM website, and you go to the Thinkpad homepage. Search for “Linux” and you go to IBM’s Linux website. But if you search for “Linux” at Dell, you wind up deep inside the site for US Air Force buyers, which is almost certainly wrong.