When we opened the job listings section I had originally imagined people would just read through the entire list to see if there were any interesting jobs.
In the first month, though, we got about 420 listings; there are 174 live right now: too many to scan. So we added a new search feature:
The best part is that once you set up a search, you can subscribe to it using RSS. I imagine this will be especially interesting if you're looking for a job outside of Silicon Valley or New York. Right now 50% of the job listings are for jobs within 100 miles of either New York, NY or Palo Alto, CA, but if you're from, say, Atlanta, and you want to stay there, but would love to hear about new opportunities, run the search and subscribe to the RSS feed and you'll automatically find out when new jobs are posted in your area.
Intern Noah, shown at right wearing the official Fog Creek intern uniform while singing the Fog Creek anthem, coded the UI for this, but Stanford wanted him back for classes, so I finished implementing the search feature myself over the last two weeks. I got the ZIP Code database from zipcodeworld.com and the Canadian postal code data from zipcodedownload.com (inexplicably missing H0H 0H0, the Postal code for Santa Claus at the North Pole, but that might be because they couldn't decide what to put in the longitude column). I got the formula for great circle distances using Ed Williams' Aviation Formulary and double-checked the results using the incredibly cool Great Circle Mapper. Of course, when you're looking for points that are within 20 miles of a given longitude and latitude, it's not that big a deal to pretend the Earth is flat and just use the Pythagorean Theorem, but of course, then you have to convert degrees to miles and suddenly it's just as hard to do it the wrong way as it would be to do it the right way.
The Russian version of Joel on Software just came out!
I have no idea who those people are on the cover.
Programmers under the age of thirty probably don’t realize why Aged Senile Programmers like me are so slow to adopt exciting new programming languages the day they come out, and why we roll our eyes at hip bandwagon ideas that sell books and consulting engagements (forgive me if I don’t seem excited enough about your new book, “Extreme UML Refactoring Patterns”).
It’s probably because we read No Silver Bullet, a stunningly important essay from way back in 1986, by Frederick P. Brooks (he of Mythical Man-Month) that has proven again and again to be spot-on.
Programming consists of overcoming two things: accidental difficulties, things which are difficult because you happen to be using inadequate programming tools, and things which are actually difficult, which no programming tool or language is going to solve. An example of an accidental difficulty is manual memory management, e.g. “malloc” and “free,” or the singleton classes people create in Java because they don’t have top level functions. An example of something which is actually difficult is dealing with the subtle interactions between different parts of a program, for example, figuring out all the implications of a new feature that you just added.
Improvements in programming languages can eliminate accidental difficulties, but after you’ve done that, you’re left with the actual complexity of software development, so the No Silver Bullet theory basically warns us to expect diminishing returns from new technologies. I’m not really doing justice to Brooks’ argument, so if you haven’t read No Silver Bullet recently, I would highly recommend it.
There have been about five great advances, since the 1950s, in eliminating accidental difficulties in programming. These are, very broadly:
So the question is, what’s number 6?
Bruce Tate’s book Beyond Java tries to address that, and does a good job of explaining why so many experienced Java programmers are getting fed up with that language and moving to Python and Ruby.
Although Stevey lists lots of accidental difficulties in Java, when you read the book, you will notice a theme, which seems to be that it’s explicit typing, where the programmer is asked to declare the type of things, that leads to most of the problems. For example, the inability to express data in Java code is mostly just a side effect of the requirement that types be declared explicitly. Yes, there are other problems in Java, but this is The Big Hairy Problem right at the heart.
To a historian, it’s starting to look like type declarations are one of those accidental difficulties that good programming languages can eliminate. Beyond Java is a good summary of the arguments and worth reading.
“Before moving on to a full-fledged in-person interview, we usually use a phone screen to make sure that we’re not wasting time and money on someone who is just seriously not smart.”
“A motley gang of anarchists, free-love advocates, and banana-rights agitators have hijacked The Love Boat out of Puerto Vallarta and are threatening to sink it in 7 days with all 616 passengers and 327 crew members unless their demands are met. The demand? A million dollars in small unmarked bills, and a GPL implementation of WATFIV, that is, the esteemed Waterloo Fortran IV compiler. (It’s surprising how few things the free-love people can find to agree on with the banana-rights people.)”
The original version of the Guerrilla Guide, published here in 2000, was an internal Fog Creek hiring guide. Version 2.0 was a major revision that appeared in the book Joel on Software. This 3.0 version is another major rewrite which reflects some of the changes in the industry over the last few years, and incorporates some new things I've learned about interviewing.
The Boston Globe quoted me saying, “The good employers have relationships with professors and they forward students who seem exceptional.” Which reminded me that we're in the middle of recruiting season for our summer internships, so if you have a student who you consider to be particularly capable, please tell me about them.
In the three weeks since we added geographic search to the job listings, I've been collecting detailed statistics on where people are searching for jobs. This is not merely out of curiosity, but because we constantly get email from companies outside of the main tech centers wondering if they should bother placing an ad. "We're in Italy... do you have anybody looking for jobs in Italy?" Well, yes, as a matter of fact: 80 people searched for jobs in Italy in the last 21 days, so if you place an ad for a job in Italy, it's fair to guess that about 80 people who are specifically searching for jobs in Italy will see it. That's in addition to the far larger number of casual visitors who don't do a geographic search.
My theory of Joel on Software readers is that they're pretty smart, ergo, they already have good jobs, for the most part, but thanks to the power of RSS, a lot of people have set up subscriptions to find out about new jobs in their area. So, for example, if you're in Austin, happily employed, but willing to consider new opportunities, you go into the search page, search for Austin, and then when you subscribe to the RSS feed you'll get all new Austin jobs right in your reader. The way the statistics engine works, you get a custom RSS feed, and as long as you keep checking it, you'll be adding one to the 174 other people looking for jobs in Austin. When you unsubscribe, after 21 days, you'll stop counting towards that number. And this, in turn, encourages companies with jobs in the Austin area to post their jobs, knowing they're certain to reach a certain number of job seekers, and even if they don't, we're still (as far as I know) the only job board that gives them their money back if they're unsatisfied, so there's really no risk at all.
The number of job seekers in the last 21 days is 307,764 with one major caveat: due to the way we keep statistics, as soon as you go into the search page and change your search, you get counted twice. I did this because someone who is willing to work either in Chicago or Boston should show up in the Chicago count and the Boston count, and they might actually want to subscribe to two RSS feeds, so even though they're one person, they're counted as two. Also, job seekers who delete cookies will get counted again. But for the most part if you just keep coming back to the site checking out the jobs, we won't double count you, and we'll even remember your geographic search for the next time you come back.
1113 posts over 14 years. Everything I’ve ever published is right here.
There’s a software company in New York City dedicated to doing things the right way and proving that it can be done profitably and successfully.