[A picture of private offices at Fog Creek Software] Alert! This ancient trifle retrieved from the Joel on Software archive is well-past its expiration date. Proceed with care.

Joel on Software

News

by Joel Spolsky
Friday, April 16, 2004

Dogfood

The term “eating your own dogfood,” in the software industry, means using the code you’re developing for your own daily needs: basically, being a user as well as a developer, so the user empathy that is the hallmark of good software comes automatically.

This site is produced in CityDesk, and about half of my time is spent writing code for CityDesk, so it’s been my policy to edit Joel on Software using the current, debugging version of CityDesk running inside the debugger. The neat part is that if I'm writing a long essay for the site and the application crashes, I have a chance to debug it right there and then and in fact if I haven't saved in a while I must debug it right there and then, otherwise I won't be able to save my work.

Anyway, for the last couple of weeks, the development version of CityDesk has been using a new, smaller database schema (it's mostly the same as the old schema but with some redundancies removed to make it better normalized) and the truth is I was a little bit scared to upgrade the Joel on Software database so I could publish. But dogfood we must eat, so here you go.

Interviews

Eric Lippert writes: “Dev candidates: if you've done any reading at all, you know that most of your interviews will involve writing some code on a whiteboard. A word of advice: writing code on whiteboards is HARD. Practice!” Good advice. I'm wondering if we should stop giving advice on interviewing... my guerrilla guide is so well read that my old trick of looking for people who write their }'s immediately after their {'s doesn't work any more. Everyone who interviews at Fog Creek always carefully does that now, and then they sort of look at me to make sure I noticed that they wrote their } immediately after their {. Tip: That's not what I'm looking for any more.

Memetics and Email Viruses

Gary Cornell and I had an interesting conversation about how email viruses are getting cleverer and better written. It reminded me of Richard Dawkins and Oliver Goodenough (Nature, September 1, 1994) who realized that chain letters were a great example of the evolution of memes. Evolution requires:

  1. A genetic code, such as DNA
  2. Replication
  3. Mutation
  4. Natural Selection

In a chain letter, you have

  1. The text of the letter itself
  2. The letter requires you to copy it and send it to other people
  3. When the letter is copied by hand, everyone makes slight mistakes and slight changes, either intentionally, because they think they are better, or unintentionally, by mistake.
  4. The letters that work best at convincing people to copy them get copied the most and thus those memes survive the longest.

The same thing happens with email viruses. The ones with the best fake letters, e.g., the ones that persuade the most people to open the attachment, will survive and reproduce. The ones that aren't very convincing die out. The next stage, which may have already happened, would be for the virus to modify a couple of words at random in the text of the message before sending it out. Instead of blasting a million people the same message, blast groups of 100 people the same message with a different random change. Eventually random mutation will improve the ability of these messages to survive and reproduce by fooling people into opening the attachment.

Software Marketing HandbookSoftware Marketing

I've said it before, and I'll say it again ... nobody knows more about marketing in the shrinkwrapped software industry than Rick Chapman, and the new fourth edition of his book is the only place you can go to find a complete encylopedia of just about everything there is to know about marketing software. There's really nothing else that compares and if you're trying to market software you really have to read this book.

Over the years and the editions Rick has added an awful lot of material, and a lot of it is starting to show its age. In particular a lot of the discussion of channel marketing may not be relevant: thanks to the Internet, plenty of software companies today are doing fine using 100% direct-to-customer without any traditional channel whatsoever. Don't let that stop you from buying the book; it has plenty of useful data on Internet and direct sales, too. Before you try to sell software, you have to at least sit down and read this book cover to cover, if only to gain the humility to realize how much is involved in marketing.


Have you been wondering about Distributed Version Control? It has been a huge productivity boon for us, so I wrote Hg Init, a Mercurial tutorial—check it out!

Want to know more?

You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.



About the author.

I’m Joel Spolsky, co-founder of Trello and Fog Creek Software, and CEO of Stack Exchange. More about me.

© 2000-2014 Joel Spolsky