Posts by Joel Spolsky

In 2000 I co-founded Fog Creek Software, where we created lots of cool things like the FogBugz bug tracker, Trello, and Glitch. I also worked with Jeff Atwood to create Stack Overflow and served as CEO of Stack Overflow from 2010-2019. Today I serve as the chairman of the board for Stack Overflow, Glitch, and HASH.

What is the Work of Dogs in this Country?

How naive were we?

We had assumed that Bezos was just reinvesting the profits, that’s why they weren’t showing up on the bottom line.

Last year, about this time, the first big dotcom failures started to hit the news. Boo.com. Toysmart.com. The Get Big Fast mentality was not working. Five hundred 31-year-olds in Dockers discovered that just copying Jeff Bezos wasn’t a business plan.

The past few weeks have felt oddly quiet at Fog Creek. We’re finishing up CityDesk. I’d like to tell you all about CityDesk, but that will have to wait. I need to tell you about dog food.

Dog food?

Last month Sara Corbett told us about the Lost Boys, Sudanese refugees between 8 and 18 years old separated from their families and forced on a thousand mile march from Sudan, to Ethiopia, to Sudan, to Kenya. Half died on that trip, of hunger, thirst, alligators. A few of them were rescued and delivered to places like Fargo, North Dakota, in the middle of winter. “Are there lions in this bush?” one asked, riding in a car to his new home from the airport.

Peter touched my shoulder. He was holding a can of Purina dog food. ”Excuse me, Sara, but can you tell me what this is?” Behind him, the pet food was stacked practically floor to ceiling. ”Um, that’s food for our dogs,” I answered, cringing at what that must sound like to a man who had spent the last eight years eating porridge. ”Ah, I see,” Peter said, replacing the can on the shelf and appearing satisfied. He pushed his grocery cart a few more steps and then turned again to face me, looking quizzical. ”Tell me,” he said, ”what is the work of dogs in this country?” [New York Times Magazine, April 1, 2001]

Dogs. Yes, Peter. Fargo has enough food, even for dogs.

It’s been a depressing year.

Oh, it started out so amusing, we all piled into B2B and B2C and P2P like a happy family getting in the Suburban for a Sunday outing to the Krispy Kreme Donut Shop. But wait, that’s not even the amusing part, the amusing part was watching the worst business plans fail, as their stock went from 316 to 3/16. Take that, new economy blabbermouths! Ah, the schadenfreude. Ah, the glee, when once again, Wired Magazine proves that as soon as it puts something on the cover, that thing will be proven to be stupid and wrong within a few short months.

Ooh, sorry, did you buy the Wired Index?

And with this New Economy thing, Wired really blew it, because they should have known by then what a death kiss their cover was for any technology or company or meme, after years of touting smell-o-rama and doomed game companies and how PointCast was going to replace the web, no, wait, PointCast already replaced the web, in March 1997.  But they tempted fate anyway, and didn’t just put the New Economy on the cover, they devoted the whole goddamn issue to the New Economy, thus condemning the NASDAQ to plummet like a sheep learning to fly.

picture-small-goats:

But joy at other’s misfortune can only entertain us for so long. Now it’s just getting depressing, and I know the economy is not officially in a depression, but I’m depressed, not because so many stupid startups went away, but because the zeitgeist is depressing. And now we have to eat dog food instead of Krispy Kremes.

Which is what we’re doing, because life goes on. Even though everybody’s walking around with their chins glued to their chests, mourning about the hours they devoted, ruining their health and love lives for the sake of stock options in SockPuppet.com, life goes on. And the product development cycle must go on, and we at Fog Creek are getting towards the part in the product development cycle where you have to eat your own dog food. So for a while we’re Dog Creek Software.

Eating your own dog food is the quaint name that we in the computer industry give to the process of actually using your own product. I had forgotten how well it worked, until a month ago, I took home a build of CityDesk (thinking it was about 3 weeks from shipping) and tried to build a site with it.

Phew! There were a few bugs that literally made it impossible for me to proceed, so I had to fix those before I could even continue. All the testing we did, meticulously pulling down every menu and seeing if it worked right, didn’t uncover the showstoppers that made it impossible to do what the product was intended to allow. Trying to use the product, as a customer would, found these showstoppers in a minute.

And not just those. As I worked, not even exercising the features, just quietly trying to build a simple site, I found 45 bugs on one Sunday afternoon. And I am a lazy man, I couldn’t have spent more than 2 hours on this. I didn’t even try anything but the most basic functionality of the product.

Monday morning, when I got in to work, I gathered the team in the kitchen. I told them about the 45 bugs. (To be fair, many of these bugs weren’t actual defects but simply things that were not as convenient as they should have been). Then I suggested that everybody build at least one serious site using CityDesk to smoke out more bugs. That’s what is meant by eating your own dog food.

Here’s one example of the kind of things you find.

I expect that a lot of people will try to import existing web pages into CityDesk by copying and pasting HTML code. That works fine. But when I tried to import a real live page from the New York Times, I spent a whole day patiently editing the HTML, finding all the IMG links (referring to outside pictures), downloading the pictures from the web, importing those pictures into CityDesk, and adjusting the IMG links to refer to the internal pictures. It’s hard to believe, but one article on that web site contains about 65 IMG links referring to 35 different pictures, some of which are 1 pixel spacers which are very difficult to download using a web browser. And CityDesk has a funny compulsion to change the name of imported pictures internally into a canonical number, and it doesn’t even have a way to find out what that number is, so the long and the short of it was that it took me one full day to import a page into CityDesk.

It was getting a bit frustrating, so I went and weeded the garden for a while. (I don’t know what we’ll do to relieve stress when it’s all cleaned up. Thank God we can’t afford a landscaping service.) And that’s when it hit me. Hey, I’m a programmer! In the time it took me to import one page and adjust the pictures, I could write a subroutine that does it automatically! In fact, it probably took me less time to write the subroutine. Now importing a page takes about half a minute, instead of one day, and is basically error-free.

Wow.

That’s why you eat your own dog food.

And when Michael started importing some sites himself, he found about 10 bugs I had baked in by mistake. For example, we found web sites that use complicated names for pictures that cannot be converted to file names when you import them because they contain question marks, which are legal in URLs but not legal in file names.

Sometimes you download software and you just can’t believe how bad it is, or how hard it is to accomplish the very simple tasks that the software tries to accomplish. Chances are, it’s because the developers of the software don’t use it.

I have an even more amusing example of failing to eat dog food. Guess what email product was used internally at Juno Online Services? [If you’re just tuning in, I worked on the Juno client team for a few years].

Hmm, did you guess Juno? Since that was, uh, our product?

No. A couple of people, including the president, used Juno at home. The other 175 of us used Microsoft Outlook.

And for good reasons! The Juno client was just not such a great email client; for two years the only thing we worked on was better ways to show ads. A lot of us thought that if we had to use the product, we would have to make it better, if only to stop our own pain. The president was very insistent that we show popup ads at six different points in time, until he got home and got six popup ads, and said, “You know what? Maybe just two popups.”

AOL was signing up members at a furious rate, in part because it provided a better user experience than Juno, and we didn’t understand that, because we didn’t eat our own dog food. And we didn’t eat our own dog food, because it was disgusting, and management was sufficiently dysfunctional that we simply were not allowed to fix it, and at least make it tolerable to eat.

Anyway. CityDesk is starting to look a lot better. We’ve fixed all those bugs, found some more, and fixed them, too. We’re adding features we forgot about that became obviously necessary. And we’re getting closer to shipping! Hurrah! and thankfully, we no longer have to contend with 37 companies, each with $25 million in VC, competing against us by giving away their product for free in exchange for agreeing to have a big advertisement tattooed on your forehead. In the post-new economy, everybody is trying to figure out how much they can get away with charging. There’s nothing wrong with the post-new economy, if you’re smart. But all the endless news about the “dot coma” says more about the lack of creativity of business press editors than anything else. Sorry, fuckedcompany.com, it was funny for a month or so, now it’s just pathetic. We’ll focus on improving our product, and we’ll focus on staying in business, by listening to our customers and eating our own dog food, instead of flying all over the country trying to raise more venture capital.

2001/05/05

Eating your own dog food is the quaint name that we in the computer industry give to the process of actually using your own product. I had forgotten how well it worked, until a month ago, I took home a build of CityDesk (thinking it was about 3 weeks from shipping) and tried to build a site with it.

What is the Work of Dogs in this Country?

TechInterview

Michael buried four fishermen up to their necks in the sand on the beach at low tide for keeping their fishing spot a secret from him.

2001/05/04

Ooh, someone tried to break into Fog Creek Software while I was here. When Michael came into work he found a window downstairs broken and a screwdriver on the floor. They must have run away when they realized I was here.

Nothing was taken. The police came and searched the place, guns drawn. Very NYPD Blue. (PS: NYC police hate that show). Now we’re waiting for the fingerprint people.

From the “Couldn’t have happened to a nicer guy” department

Wall Street Journal: SEC Investigates EarthLink’s Slatkin
Amid Claims That He Bilked Investors

That company is just all about honesty and integrity.

2001/05/03

Ev has a neat idea for an application that he calls Alias Manager. It’s a simple way to deal with having a team of people who are responsible for answering emails to one email alias, like the world famous president@whitehouse.gov, or the almost as famous customer-support@fogcreek.com. When I read his idea, I thought, smart Ev! We need that too!

Then I realized that FogBUGZ almost does it, but not quite. It would take about $10,000 of investment to add this feature to FogBUGZ. So I thought I’d ask my readers two questions:

  • have you seen a simple, cheap application that does this?
  • do you need a simple, cheap application that does this?

Postscript: I’ve gotten tons of replies. There are a lot of expensive CRM packages. That’s not what I’m talking about, they are too complicated and too expensive for small business. There are also some open source things, many people mentioned rt.

Are the Groove Designers Architecture Astronauts?

George Moromisato at Groove Networks writes:

I read “Joel on Software” more or less religiously and I’m always intrigued by your insights. Your column on Architecture Astronauts was no different, except for your dismissal of Groove as software that “miss[ed] the point” of Napster’s example. I hope to take a few moments of your time to convince you to give Groove another chance.

Like Napster, we also consider peer-to-peer to be a means to an end, not the end in itself. For Groove, the end goal is not to search for music on the Internet (as cool as that is); Groove’s end goal is to allow people to interact and share information on the Internet without regards to time, distance, or corporate infrastructure.

The last point is worth diving on: Today, if I want to share information with someone outside my corporate infrastructure I have three plausible choices: 1) use email, which is not very interactive, has very little persistence, and is often insecure; 2) use an internal web server, which requires me to ask my IT administrator to either open up a hole in the firewall or to deploy some section on our extranet; or 3) use a public web server, which now is privy to my corporate data and may take it with them when they go under. The cool thing about Groove, and one of the problems that we were trying to solve, is that I can use it like email to communicate with someone outside my infrastructure (they can download the client for free) and I don’t have to worry about a server (we are peer-to-peer when appropriate) or a firewall (we go through firewalls) or security (since Groove communications are by invitation only and heavily encrypted). The best part, IMHO, is that, while we provide some basic tools to interact inside a Groove space (sharing files, doodling, voice chat, forums, etc.), we have also built a platform that allows third parties to extend Groove in whatever direction they want, all without having to ask us to change our servers or upgrade the core product!

[pause while I stop hyperventilating]

The bottom line is that I think it was unfair of you to consider us Architecture Astronauts. It is true that we do not solve the problem that Napster was trying to solve, but I think we have been successful at solving the problem that we set out to solve. Also, to be fair, we have managed to ship a product (and even sell it to people) unlike some of the Architecture Astronauts that you are thinking of.

Anyway, I hope I haven’t completely wasted your time. Thanks for your columns and good luck with everything.

George Moromisato
Chief Product Designer
Groove Networks

My reply:

I like Groove, I think it’s a nice architecture. I think in many ways it’s Notes done right, eliminating one of the biggest problems with Notes — the server bottleneck which crippled large Notes installations.

On the other hand, Notes was the most misunderstood product in history 🙂 It was being sold as a groupware platform, but in reality, it was being bought (and used) as an email program. A few people used the discussion groups and document databases, and an even smaller number actually created applications on top of Notes, but the reason companies with 50,000 people bought Notes was really for email.

Which, unfortunately, didn’t work quite well enough in Notes. At Bankers Trust in the mid-90’s, management ruled that no new Notes accounts could be created, because of an incident where Notes replication between servers managed to tie up the company’s crucial transatlantic link thus cutting London off from New York for an entire trading day. As a result Bankers Trust was in the awkward position of ruling “no new Notes accounts!”

At Viacom a couple of years later, Notes was shelfware because the email component was too hard for most people to figure out. Everybody in the company had AOL accounts which they expensed because they could figure that out.

Note that none of this is necessarily a bad thing from a company perspective: Notes sold scrillions of copies and was considered a raging success. In theory, Groove is even cooler, because it’s Notes without the server headaches.

Anyway, now we’re talking about architecture. Let’s talk about features. The applets you ship with are all spiffy but not ultra-compelling, because you can often get the same functionality elsewhere. And it’s the applets that are going to sell Groove, not the architecture. If you don’t believe me look at NeXT and Be … you can build the best dang computer in the world with a killer architecture, but if it doesn’t run Microsoft Excel, nobody wants one. When you say “it’s a platform, third parties will build things,” you have to explain what KIND of things and why THEY will be killer apps that sell the architecture. If you keep hearing the same examples, you’re in deep trouble — like the idiot WAP people who talk endlessly about how “you’ll walk by a starbucks and the GPS in your phone will coordinate to beam you a coupon for that starbucks.” I’ve heard this same example a zillion times from “location based wireless” architecture astronauts and it amuses me, because it solves the one problem that coffee shops DON’T have, namely, advertising to people who are standing right in front of the store! 🙂

So… yes, you shipped a product, and sold it to people, it’s great, I believe you. But if you want it to be The Next Great Thing it has to be more than architecture, it has to enable things that people really need.

2001/04/21

Spring in New York City

It was a beautiful day; I went out with Jared, Ami, and Hagit and took some pictures in Central Park. See them here.

Debugging Tip

About half of our customers are in the US, and half outside. On my primary laptop, I finally decided to permanently set my regional settings to France to smoke out the last of the internationalization (“i18n”) bugs in our applications. (For example, did you know that in France large numbers are written with spaces as the thousands separator? For example 1 000 000 is a million. And 3,14 is pi. And 4/1 is January fourth). Anyway, if you see email from me with dates in French, that’s why!

i18n.gif:

Even web-based applications should be written to respond to locale settings. FogBUGZ shows you dates according to the web browser’s settings, not the web server. If you set your computer’s regional settings to Denmark, Google appears in Danish.

Don’t Let Architecture Astronauts Scare You

When great thinkers think about problems, they start to see patterns. They look at the problem of people sending each other word-processor files, and then they look at the problem of people sending each other spreadsheets, and they realize that there’s a general pattern: sending files. That’s one level of abstraction already. Then they go up one more level: people send files, but web browsers also “send” requests for web pages. And when you think about it, calling a method on an object is like sending a message to an object! It’s the same thing again! Those are all sending operations, so our clever thinker invents a new, higher, broader abstraction called messaging, but now it’s getting really vague and nobody really knows what they’re talking about any more. Blah.

When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers just don’t know when to stop, and they create these absurd, all-encompassing, high-level pictures of the universe that are all good and fine, but don’t actually mean anything at all. 

These are the people I call Architecture Astronauts. It’s very hard to get them to write code or design programs, because they won’t stop thinking about Architecture. They’re astronauts because they are above the oxygen level, I don’t know how they’re breathing. They tend to work for really big companies that can afford to have lots of unproductive people with really advanced degrees that don’t contribute to the bottom line.

A recent example illustrates this. Your typical architecture astronaut will take a fact like “Napster is a peer-to-peer service for downloading music” and ignore everything but the architecture, thinking it’s interesting because it’s peer to peer, completely missing the point that it’s interesting because you can type the name of a song and listen to it right away.

All they’ll talk about is peer-to-peer this, that, and the other thing. Suddenly you have peer-to-peer conferences, peer-to-peer venture capital funds, and even peer-to-peer backlash with the imbecile business journalists dripping with glee as they copy each other’s stories: “Peer To Peer: Dead!”

The Architecture Astronauts will say things like: “Can you imagine a program like Napster where you can download anything, not just songs?” Then they’ll build applications like Groove that they think are more general than Napster, but which seem to have neglected that wee little feature that lets you type the name of a song and then listen to it — the feature we wanted in the first place. Talk about missing the point. If Napster wasn’t peer-to-peer but it did let you type the name of a song and then listen to it, it would have been just as popular.

Another common thing Architecture Astronauts like to do is invent some new architecture and claim it solves something. Java, XML, Soap, XmlRpc, Hailstorm, .NET, Jini, oh lord I can’t keep up. And that’s just in the last 12 months!

I’m not saying there’s anything wrong with these architectures… by no means. They are quite good architectures. What bugs me is the stupendous amount of millennial hype that surrounds them. Remember the Microsoft Dot Net white paper

The next generation of the Windows desktop platform, Windows.NET supports productivity, creativity, management, entertainment and much more, and is designed to put users in control of their digital lives.

That was about 9 months ago. Last month, we got Microsoft Hailstorm. That white paper says:

People are not in control of the technology that surrounds them….HailStorm makes the technology in your life work together on your behalf and under your control.

Oh, good, so now the high tech halogen light in my apartment will stop blinking randomly.

Microsoft is not alone. Here’s a quote from a Sun Jini whitepaper:

These three facts (you are the new sys admin, computers are nowhere, the one computer is everywhere) should combine to improve the world of using computers as computers — by making the boundaries of computers disappear, by making the computer be everywhere, and by making the details of working with the computer as simple as putting a DVD into your home theater system.

And don’t even remind me of the fertilizer George Gilder spread about Java:

A fundamental break in the history of technology…

That’s one sure tip-off to the fact that you’re being assaulted by an Architecture Astronaut: the incredible amount of bombast; the heroic, utopian grandiloquence; the boastfulness; the complete lack of reality. And people buy it! The business press goes wild!

Why the hell are people so impressed by boring architectures that often amount to nothing more than a new format on the wire for RPC, or a new virtual machine? These things might be good architectures, they will certainly benefit the developers that use them, but they are not, I repeat, not, a good substitute for the messiah riding his white ass into Jerusalem, or world peace. No, Microsoft, computers are not suddenly going to start reading our minds and doing what we want automatically just because everyone in the world has to have a Passport account. No, Sun, we’re not going to be able to analyze our corporate sales data “as simply as putting a DVD into your home theatre system.”

Remember that the architecture people are solving problems that they think they can solve, not problems which are useful to solve. Soap + WSDL may be the Hot New Thing, but it doesn’t really let you do anything you couldn’t do before using other technologies — if you had a reason to. All that Distributed Services Nirvana the architecture astronauts are blathering about was promised to us in the past, if we used DCOM, or JavaBeans, or OSF DCE, or CORBA.

It’s nice that we can use XML now for the format on the wire. Whoopee. But that’s about as interesting to me as learning that my supermarket uses trucks to get things from the warehouse. Yawn. Mangos, that’s interesting. Tell me something new that I can do that I couldn’t do before, O Astronauts, or stay up there in space and don’t waste any more of my time.

2001/04/20

From the “Extreme Programming” Test Lab

A couple of weeks ago Michael and Babak were finishing off some work for a client. They spent a couple of days working together doing pair programming and blasted through a long list of minor features and bug fixes. To some extent, the “continual code review” made things go very quickly.

This week, we’re plowing through a large pile of last minute changes to CityDesk (an original Fog Creek product), and we’re not doing pair programming. I have to say that we’re moving even faster without pairing up, literally blasting through dozens of fixes and small features a day per person.

Old joke:

Q: To a Political Scientist, what is the singular of the word “data”?
A: “Anecdote”

In that spirit, I’ve gathered some data which shows that the benefits of pair programming are not enough to offset the loss in productivity. We’ve been making up for it by doing a lot of code review (a process which is made absolutely trivial using CVS/FogBUGZ integration – two clicks from the bug report notification to graphical diffs). Today I spent about 10 minutes total doing code reviews (found some problems, even) which is really cheap compared to pair programming.

2001/04/18

The Joel on Software discussion group is starting to show signs of life. Cool! At some point I have to figure out how to use the categories feature to sort out old postings.

Stupid IT Research

Forrester Research says that content management software is about to “explode.” “According to a recent report from the Yankee Group, sales of content management software will grow to $3 billion in 2004, up from $900 million in 2000.”

I hate those cheesy market research companies who come up with ridiculous numbers and extrapolations (suitable for business plans) that make no sense, which, frankly, they pulled out of their tokhes. They always have these lame bar charts where they only have data for this year, then they extrapolate out four years assuming a typical 736.13% rate of growth, a number they divined by rolling dice and tossing bones about haphazardly.

It’s cool, because you can make a business plan that shows that if you can get only 1% of the market for content management, you’ll be making $30m a year, which easily supports 250 employees. So you show the stupid veecees the report from Forrester (or Jupiter, or Gartner, or one of the less popular ones) and they give you enough money to hire 250 people, and two years later you’ve got $254 in revenue from selling tomatoes you grew in the company backyard and you have to fire everyone.

Conclusion: if your business plan includes projections from IT research firms, you better start planting tomatoes.

From the “Why We Don’t Want VC” Department

Philip Greenspun: “I was pushed out of ArsDigita by the venture capitalists and managers that I brought in.”