Joel on Software
March 17, 2010
19:25
A while ago Jeff and I had Eric Sink on the Stack Overflow Podcast, and we were yammering on about version control, especially the trendy new distributed version control systems, like Mercurial and Git.
In that podcast, I said, “To me, the fact that they make branching and merging easier just means that your coworkers are more likely to branch and merge, and you’re more likely to be confused.”
This is what Taco looks like nowWell, you know, that podcast is not prepared carefully in advance; it’s just a couple of people shooting the breeze. So what usually happens is that we say things that are, to use the technical term, wrong. Usually they are wrong either in details or in spirit, or in details and in spirit, but this time, I was just plain wrong. Like strawberry pizza. Or jalapeño bagels. WRONG.
Long before this podcast occurred, my team had switched to Mercurial, and the switch really confused me, so I hired someone to check in code for me (just kidding). I did struggle along for a while by memorizing a few key commands, imagining that they were working just like Subversion, but when something didn’t go the way it would have with Subversion, I got confused, and would pretty much just have to run down the hall to get Benjamin or Jacob to help.
And then my team said, hey you know what? This Mercurial bug-juice is really amazing, we want to actually make a code review product that works with it, and, and, what’s more, we think that there’s a big market providing commercial support and hosting for it (Mercurial itself is freely available under GPL, but a lot of corporations want some kind of support before they’ll use something).
And I thought, what do I know? But as you know I don’t really make the decisions around here, because “management is a support function,” so they took all the interns, all six of them, and set off to build a product around Mercurial.
I decided I better figure out what the heck is going on with this “distributed version control” stuff before somebody asks me a question about the products that my company allegedly sells, and I don’t have an answer, and somebody in the blogo-“sphere” writes another article about me junking the sharp.
And I studied, and studied, and finally figured something out. Which I want to share with you.
With distributed version control, the distributed part is actually not the most interesting part.
The interesting part is that these systems think in terms of changes, not in terms of versions.
That’s a very zen-like thing to say, I know. Traditional version control thinks: OK, I have version 1. And now I have version 2. And now I have version 3.
And distributed version control thinks, I had nothing. And then I got these changes. And then I got these other changes.
It’s a different Program Model, so the user model has to change.
In Subversion, you might think, “bring my version up to date with the main version” or “go back to the previous version.”
In Mercurial, you think, “get me Jacob’s change set” or “let’s just forget that change set.”
If you come at Mercurial with a Subversion mindset, things will almost work, but when they don’t, you’ll be confused, unhappy, and unsuccessful, and you’ll hate Mercurial.
Whereas if you free your mind and reimagine version control, and grok the zen of the difference between thinking about managing the versions vs. thinking about managing the changes, you’ll become enlightened and happy and realize that this is the way version control was meant to work.
I know, it’s strange... since 1972 everyone was thinking that we were manipulating versions, but, it turned out, surprisingly, that thinking about the changes themselves as first class solved a very important problem: the problem of merging branched code.
And here is the most important point, indeed, the most important thing that we’ve learned about developer productivity in a decade. It’s so important that it merits a place as the very last opinion piece that I write, so if you only remember one thing, remember this:
When you manage changes instead of managing versions, merging works better, and therefore, you can branch any time your organizational goals require it, because merging back will be a piece of cake.
I can’t tell you how many Subversion users have told me the following story: “We tried to branch our code, and that worked fine. But when it came time to merge back, it was a complete nightmare and we had to practically reapply every change by hand, and we swore never again and we developed a new way of developing software using if statements instead of branches.”
Sometimes they’re even kind of proud of this new, single-trunk invention of theirs. As if it’s a virtue to work around the fact that your version control tool is not doing what it’s meant to do.
With distributed version control, merges are easy and work fine. So you can actually have a stable branch and a development branch, or create long-lived branches for your QA team where they test things before deployment, or you can create short-lived branches to try out new ideas and see how they work.
This is too important to miss out on. This is possibly the biggest advance in software development technology in the ten years I’ve been writing articles here.
Or, to put it another way, I’d go back to C++ before I gave up on Mercurial.
If you are using Subversion, stop it. Just stop. Subversion = Leeches. Mercurial and Git = Antibiotics. We have better technology now.
Because so many people dive into Mercurial without fully understanding the new program model, which can leave them thinking that it’s broken and malicious, I wrote a Mercurial tutorial, HgInit.
Today, when people ask me about that podcast where I dissed DVCS, I tell them that it was just a very carefully planned fake-out of my long time friend and competitor Eric Sink, who makes a non-distributed version control system. Like that time he started selling bug-tracking software, and, to punish him, we sent him a very expensive Fog Creek backpack with a fake form letter that made it look like we were doing so well that expensive backpacks were the standard Christmas gift we were sending every FogBugz customer.
I seem to have run out the clock on this site. It has been an extreme honor to have you reading my essays over the last ten years. I couldn’t ask for a greater group of readers. Whether you’re one of the hundreds of people who volunteered their time to translate articles into over 40 languages, or the 22,894 people who has taken the time to send me an email, or the 50,838 people who subscribed to the email newsletter, or the 2,262,348 people per year who visited the website and read some of the 1067 articles I’ve written, I sincerely thank you for your attention.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
March 14, 2010
17:53
At right, a picture of Taco, a ten-week-old siberian husky puppy who moved in with us last week!
Some of you may have seen my final column in Inc., in which I announce my retirement from blogging effective March 18th, the 10-year anniversary of Joel on Software.
Writing for Inc. was an enormous honor, but it was very different than writing on my own website. Every article I submitted was extensively rewritten in the house style by a very talented editor, Mike Hofman. When Mike got done with it, it was almost always better, but it never felt like my own words. I look back on those Inc. columns and they literally don’t feel like mine. It’s as if somebody kidnapped me and replaced me with an indistinguishable imposter who went to Columbia Journalism School. Or I slipped into an alternate universe where Joel Spolsky is left-handed and everything he does is subtlely different.
I’m not going to stop writing altogether.
What I am stopping is the traditional opinionated essay that has characterized Joel on Software for a decade. I’m not going to write Ten Ways to Get VCs to Salivate, I’m not going to write Why You Have To Buy a $10,000 Italian Espresso Machine for your Programmers, and I’m not going to write Python is For Aspergers Geeks or Ruby is for Tear-streaked Emo Teenagers. After a decade of this, the whole genre of Hacker News fodder is just too boring to me personally. It’s still a great format... the rest of you, knock yourselves out... I just can’t keep doing that particular thing.
There will still be some posts here—don’t unsubscribe. There will be announcements of new projects, stories of things that I’m doing, and links to other things I might write, like HgInit, the Mercurial tutorial.
Philip Greenspun and Dave Winer (with DaveNet, even before Scripting News) pioneered the Internet Pundit style of essay writing which has served so well for fifteen years. They started as lone voices in a new medium, but the genre spread like wildfire. It was perfectly prognosticated in the 1990 Christian Slater movie Pump Up The Volume. If you’ve already forgotten it, here’s what happens (not a spoiler): Slater plays a kid with a low-power radio station in his bedroom, broadcasting in the middle of the night to the other isolated, angsty kids in his high school. Interesting drama ensues. 102 minutes later, by the time the credits roll, high school kids everywhere are spouting their opinions on their own pirate radio stations. And that’s exactly what happened with blogging, until we got where we are today, with millions of people expressing themselves and using the exact same narrative techniques and stories and styles that the first bloggers pioneered.
What we need now, I feel, is not another essay repeating No Silver Bullet for the 18,000th time. We need something that is more objective (based on measurable truth and falseness rather than just lists of anecdotes about successful projects and failed projects). We need something that reflects the best new ideas about what authorship means in 2010, not just electronic forms of 18th-century pamphlets. We need to stop rewriting the same things again and again (fail fast! NDAs are worthless! Execution matters, not ideas! Use the right tools for the job!). Instead we should start filling in the long tail of knowledge.
So that’s what I’m going to do with the next decade.
More details on my faux retirement:
- I’m drastically cutting back on speaking engagements. I already committed to speak at Business of Software 2010, in Boston in October, so that’s still on.
- This week’s StackOverflow Podcast will be the last in that format. Jeff and I are working on a new format and will come up with something exciting, new and different, so stay tuned for the details, but the current format is getting kind of tired.
- Although I appreciate that many people find Twitter to be valuable, I find it a truly awful way to exchange thoughts and ideas. It creates a mentally stunted world in which the most complicated thought you can think is one sentence long. It’s a cacophony of people shouting their thoughts into the abyss without listening to what anyone else is saying. Logging on gives you a page full of little hand grenades: impossible-to-understand, context-free sentences that take five minutes of research to unravel and which then turn out to be stupid, irrelevant, or pertaining to the television series Battlestar Galactica. I would write an essay describing why Twitter gives me a headache and makes me fear for the future of humanity, but it doesn’t deserve more than 140 characters of explanation, and I’ve already spent 820.
- The Joel on Software discussion group, in long decline, will close. The Business of Software group will remain open.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
February 18, 2010
09:05
New StackOverflow developer Kevin Montrose (6,878 reputation) added a neat feature to the career site that makes it a zillion times easier to file a CV if you’ve already put in your job and education history on LinkedIn or FaceBook. Try it out.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
February 14, 2010
21:21
A few people heard me on This Week in Startups (starting at 15:45) asking Jason if we should take money from the first VC who fell into our laps, or spend time doing the Sand Hill Road rounds, meeting more VCs, and doing a road show for the other firms that might be interested in investing.
Jason (and his guest James Segil) both agree that we should take more time picking the right partner. We’re going to be in bed with these guys for years, they say, and we have to approach this like picking a spouse.
Anyway, people emailed me in shock and surprise that we would even consider VC, considering the things I’ve written.
flickr.com/photos/niznoz / CC BY-NC-SA 2.0Why are we seeking venture capital for StackOverflow?
Almost ten years ago, I wrote about two kinds of companies, the Ben and Jerry’s type of company, which grows carefully and organically, and the Amazon type, which uses huge amounts of investment capital to get big quickly.
At the time, I had no doubt that I wanted Fog Creek to be a Ben and Jerry’s type of company, and that model has served us well. By staying profitable and growing carefully, we’ve managed to survive two big downturns and we’ve grown into a stable, 34-person company that’s a great place to work and is likely to remain stable, and a great place to work, for a long time.
StackOverflow, though, is a bit of a different story.
There are a few indicators for the type of company that I believe can benefit from, and should take, VC.
- There’s a land grab going on. The business is in a new field with no competition, but the field has proven itself, and is obviously going to get very crowded very soon, so the faster you can grab territory, the better.
- There is a provable concept that’s repeatable. I always point to the example of the Starbucks IPO, which was brilliant because it was so simple. Every new Starbucks store that opened in Seattle became profitable in a matter of months. They tried a couple of stores in Chicago and Washington just to make sure it wasn’t a Seattle thing, and those worked even better. Thus, the formula of opening as many stores as possible was as close to a sure-thing as possible, so raising money was a no-brainer.
- The business itself could benefit from the publicity of getting an investment from someone who is thought of as being a savvy investor.
- The investor will add substantial value to the business in advice, connections, and introductions.
- The business can potentially have a big exit or become a large, publically traded company.
- The founders are not in it for their own personal aggrandizement and are happy to give up some control to make the business more successful.
There are counter-indicators, of course: signs that you shouldn’t consider VC. Here are just a few off the top of my head:
- If the founders are risk-averse and are willing to trade a much smaller payout for lower risk.
- If the founders are technical without substantial business experience and wish to maintain absolute control forever.
- If the investor is mostly “dumb money,” i.e., someone who doesn’t know about the field. The proverbial dentist, who is happy to give you a half million bucks, but doesn’t know the first thing about CPMs and CPCs and CTOs, so you might as well not bother.
- If you’re going into an established field with a lot of competition, there’s no benefit to speed; you’re better off slowly building a niche business and growing from there, quietly taking one customer at a time away from the competitors.
- If the product is immature and unproven, in which case, expensive marketing efforts will be wasted proving to the world how bad your product is.
- If the founders don’t have enough of the right kinds of industry connections, or the idea is not compelling enough, so that raising VC would take months or years
- If there is any other way to raise the kind of money you need, for example, by selling actual products to customers.
When I put all these things together the conclusion is that StackOverflow is one of those rare companies for which VC can really work. Jeff and I started out with a goal for StackOverflow of changing the way programmers and system administrators get answers to their questions on the Internet, which was deeply broken. In 18 months we’ve accomplish that: we’ve got 6 million unique visitors every month. Now we’re biting off the bigger goal of changing the way everyone gets answers to their questions on the Internet, and that’s something we can’t do alone.
So, off I go, on a StackOverflow road show. I’ll be in Silicon Valley Feb 24-Mar 3; drop me a line if you want to get together.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
21:21
A few people heard me on This Week in Startups (starting at 15:45) asking Jason if we should take money from the first VC who fell into our laps, or spend time doing the Sand Hill Road rounds, meeting more VCs, and doing a road show for the other firms that might be interested in investing.
Jason (and his guest James Segil) both agree that we should take more time picking the right partner. We’re going to be in bed with these guys for years, they say, and we have to approach this like picking a spouse.
Anyway, people emailed me in shock and surprise that we would even consider VC, considering the things I’ve written.
flickr.com/photos/niznoz / CC BY-NC-SA 2.0Why are we seeking venture capital for StackOverflow?
Almost ten years ago, I wrote about two kinds of companies, the Ben and Jerry’s type of company, which grows carefully and organically, and the Amazon type, which uses huge amounts of investment capital to get big quickly.
At the time, I had no doubt that I wanted Fog Creek to be a Ben and Jerry’s type of company, and that model has served us well. By staying profitable and growing carefully, we’ve managed to survive two big downturns and we’ve grown into a stable, 34-person company that’s a great place to work and is likely to remain stable, and a great place to work, for a long time.
StackOverflow, though, is a bit of a different story.
There are a few indicators for the type of company that I believe can benefit from, and should take, VC.
- There’s a land grab going on. The business is in a new field with no competition, but the field has proven itself, and is obviously going to get very crowded very soon, so the faster you can grab territory, the better.
- There is a provable concept that’s repeatable. I always point to the example of the Starbucks IPO, which was brilliant because it was so simple. Every new Starbucks store that opened in Seattle became profitable in a matter of months. They tried a couple of stores in Chicago and Washington just to make sure it wasn’t a Seattle thing, and those worked even better. Thus, the formula of opening as many stores as possible was as close to a sure-thing as possible, so raising money was a no-brainer.
- The business itself could benefit from the publicity of getting an investment from someone who is thought of as being a savvy investor.
- The investor will add substantial value to the business in advice, connections, and introductions.
- The business can potentially have a big exit or become a large, publically traded company.
- The founders are not in it for their own personal aggrandizement and are happy to give up some control to make the business more successful.
There are counter-indicators, of course: signs that you shouldn’t consider VC. Here are just a few off the top of my head:
- If the founders are risk-averse and are willing to trade a much smaller payout for lower risk.
- If the founders are technical without substantial business experience and wish to maintain absolute control forever.
- If the investor is mostly “dumb money,” i.e., someone who doesn’t know about the field. The proverbial dentist, who is happy to give you a half million bucks, but doesn’t know the first thing about CPMs and CPCs and CTOs, so you might as well not bother.
- If you’re going into an established field with a lot of competition, there’s no benefit to speed; you’re better off slowly building a niche business and growing from there, quietly taking one customer at a time away from the competitors.
- If the product is immature and unproven, in which case, expensive marketing efforts will be wasted proving to the world how bad your product is.
- If the founders don’t have enough of the right kinds of industry connections, or the idea is not compelling enough, so that raising VC would take months or years
- If there is any other way to raise the kind of money you need, for example, by selling actual products to customers.
When I put all these things together the conclusion is that StackOverflow is one of those rare companies for which VC can really work. Jeff and I started out with a goal for StackOverflow of changing the way programmers and system administrators get answers to their questions on the Internet, which was deeply broken. In 18 months we’ve accomplish that: we’ve got 6 million unique visitors every month. Now we’re biting off the bigger goal of changing the way everyone gets answers to their questions on the Internet, and that’s something we can’t do alone.
So, off I go, on a StackOverflow road show. I’ll be in Silicon Valley Feb 24-Mar 3; drop me a line if you want to get together.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
21:21
A few people heard me on This Week in Startups (starting at 15:45) asking Jason if we should take money from the first VC who fell into our laps, or spend time doing the Sand Hill Road rounds, meeting more VCs, and doing a road show for the other firms that might be interested in investing.
Jason (and his guest James Segil) both agree that we should take more time picking the right partner. We’re going to be in bed with these guys for years, they say, and we have to approach this like picking a spouse.
Anyway, people emailed me in shock and surprise that we would even consider VC, considering the things I’ve written.
flickr.com/photos/niznoz / CC BY-NC-SA 2.0Why are we seeking venture capital for StackOverflow?
Almost ten years ago, I wrote about two kinds of companies, the Ben and Jerry’s type of company, which grows carefully and organically, and the Amazon type, which uses huge amounts of investment capital to get big quickly.
At the time, I had no doubt that I wanted Fog Creek to be a Ben and Jerry’s type of company, and that model has served us well. By staying profitable and growing carefully, we’ve managed to survive two big downturns and we’ve grown into a stable, 34-person company that’s a great place to work and is likely to remain stable, and a great place to work, for a long time.
StackOverflow, though, is a bit of a different story.
There are a few indicators for the type of company that I believe can benefit from, and should take, VC.
- There’s a land grab going on. The business is in a new field with no competition, but the field has proven itself, and is obviously going to get very crowded very soon, so the faster you can grab territory, the better.
- There is a provable concept that’s repeatable. I always point to the example of the Starbucks IPO, which was brilliant because it was so simple. Every new Starbucks store that opened in Seattle became profitable in a matter of months. They tried a couple of stores in Chicago and Washington just to make sure it wasn’t a Seattle thing, and those worked even better. Thus, the formula of opening as many stores as possible was as close to a sure-thing as possible, so raising money was a no-brainer.
- The business itself could benefit from the publicity of getting an investment from someone who is thought of as being a savvy investor.
- The investor will add substantial value to the business in advice, connections, and introductions.
- The business can potentially have a big exit or become a large, publically traded company.
- The founders are not in it for their own personal aggrandizement and are happy to give up some control to make the business more successful.
There are counter-indicators, of course: signs that you shouldn’t consider VC. Here are just a few off the top of my head:
- If the founders are risk-averse and are willing to trade a much smaller payout for lower risk.
- If the founders are technical without substantial business experience and wish to maintain absolute control forever.
- If the investor is mostly “dumb money,” i.e., someone who doesn’t know about the field. The proverbial dentist, who is happy to give you a half million bucks, but doesn’t know the first thing about CPMs and CPCs and CTOs, so you might as well not bother.
- If you’re going into an established field with a lot of competition, there’s no benefit to speed; you’re better off slowly building a niche business and growing from there, quietly taking one customer at a time away from the competitors.
- If the product is immature and unproven, in which case, expensive marketing efforts will be wasted proving to the world how bad your product is.
- If the founders don’t have enough of the right kinds of industry connections, or the idea is not compelling enough, so that raising VC would take months or years
- If there is any other way to raise the kind of money you need, for example, by selling actual products to customers.
When I put all these things together the conclusion is that StackOverflow is one of those rare companies for which VC can really work. Jeff and I started out with a goal for StackOverflow of changing the way programmers and system administrators get answers to their questions on the Internet, which was deeply broken. In 18 months we’ve accomplish that: we’ve got 6 million unique visitors every month. Now we’re biting off the bigger goal of changing the way everyone gets answers to their questions on the Internet, and that’s something we can’t do alone.
So, off I go, on a StackOverflow road show. I’ll be in Silicon Valley Feb 24-Mar 3; drop me a line if you want to get together.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
21:21
A few people heard me on This Week in Startups (starting at 15:45) asking Jason if we should take money from the first VC who fell into our laps, or spend time doing the Sand Hill Road rounds, meeting more VCs, and doing a road show for the other firms that might be interested in investing.
Jason (and his guest James Segil) both agree that we should take more time picking the right partner. We’re going to be in bed with these guys for years, they say, and we have to approach this like picking a spouse.
Anyway, people emailed me in shock and surprise that we would even consider VC, considering the things I’ve written.
flickr.com/photos/niznoz / CC BY-NC-SA 2.0Why are we seeking venture capital for StackOverflow?
Almost ten years ago, I wrote about two kinds of companies, the Ben and Jerry’s type of company, which grows carefully and organically, and the Amazon type, which uses huge amounts of investment capital to get big quickly.
At the time, I had no doubt that I wanted Fog Creek to be a Ben and Jerry’s type of company, and that model has served us well. By staying profitable and growing carefully, we’ve managed to survive two big downturns and we’ve grown into a stable, 34-person company that’s a great place to work and is likely to remain stable, and a great place to work, for a long time.
StackOverflow, though, is a bit of a different story.
There are a few indicators for the type of company that I believe can benefit from, and should take, VC.
- There’s a land grab going on. The business is in a new field with no competition, but the field has proven itself, and is obviously going to get very crowded very soon, so the faster you can grab territory, the better.
- There is a provable concept that’s repeatable. I always point to the example of the Starbucks IPO, which was brilliant because it was so simple. Every new Starbucks store that opened in Seattle became profitable in a matter of months. They tried a couple of stores in Chicago and Washington just to make sure it wasn’t a Seattle thing, and those worked even better. Thus, the formula of opening as many stores as possible was as close to a sure-thing as possible, so raising money was a no-brainer.
- The business itself could benefit from the publicity of getting an investment from someone who is thought of as being a savvy investor.
- The investor will add substantial value to the business in advice, connections, and introductions.
- The business can potentially have a big exit or become a large, publically traded company.
- The founders are not in it for their own personal aggrandizement and are happy to give up some control to make the business more successful.
There are counter-indicators, of course: signs that you shouldn’t consider VC. Here are just a few off the top of my head:
- If the founders are risk-averse and are willing to trade a much smaller payout for lower risk.
- If the founders are technical without substantial business experience and wish to maintain absolute control forever.
- If the investor is mostly “dumb money,” i.e., someone who doesn’t know about the field. The proverbial dentist, who is happy to give you a half million bucks, but doesn’t know the first thing about CPMs and CPCs and CTOs, so you might as well not bother.
- If you’re going into an established field with a lot of competition, there’s no benefit to speed; you’re better off slowly building a niche business and growing from there, quietly taking one customer at a time away from the competitors.
- If the product is immature and unproven, in which case, expensive marketing efforts will be wasted proving to the world how bad your product is.
- If the founders don’t have enough of the right kinds of industry connections, or the idea is not compelling enough, so that raising VC would take months or years
- If there is any other way to raise the kind of money you need, for example, by selling actual products to customers.
When I put all these things together the conclusion is that StackOverflow is one of those rare companies for which VC can really work. Jeff and I started out with a goal for StackOverflow of changing the way programmers and system administrators get answers to their questions on the Internet, which was deeply broken. In 18 months we’ve accomplish that: we’ve got 6 million unique visitors every month. Now we’re biting off the bigger goal of changing the way everyone gets answers to their questions on the Internet, and that’s something we can’t do alone.
So, off I go, on a StackOverflow road show. I’ll be in Silicon Valley Feb 24-Mar 3; drop me a line if you want to get together.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
February 11, 2010
22:12
In the early days of a technology startup, you tend to have a lot of software developers, and you feel like you could never have enough. If you hire sales and marketing staff too early, they don’t really get much traction, and you may start to think that sales and marketing are a waste of time. This led me, in the early years, to believe that a healthy software company should have a lot of real software developers and maybe no sales and marketing.
At one point I entertained the quixotic and, retrospectively, stupid idea of requiring every employee at Fog Creek to be a programmer... even the receptionist would have to have done some BASIC programming in high school to qualify. In the US Marines everyone, even the cooks, is a rifleman. Of course that’s because the cooks are in friggin Afghanistan getting shot at so they better be riflemen, whereas our receptionist almost never has to drop into the source code and bang out a class. Almost never.
Over time, though, as your product gets better and better, the more sales and marketing people you hire, the more you sell.
That’s because programmers multiply salespeople, and vice-versa.
I’m a nerd, so I’ll be real math-y about this. Define the quality of your code on a scale from 0 to 1.
0 means your product solves absolutely no problems for anybody so nobody in their right mind would ever buy it. Microsoft Bob.
1 means that every single person on Earth, if they bought your software, would be net happier, even after paying your fee.
Your software starts at 0 and slowly climbs up the hill.
If everybody in the world knew about your software and was encouraged to evaluate it, the number that would buy it would be (Earth population) x Quality.
Sales and marketing functions exist to encourage earthlings to find out about your software and evaluate it. These functions will have no effect on sales if your quality is extremely low. But as the quality gets higher, the value of sales and marketing goes up, commensurately. Double the quality, and the same sales effort yields double the revenue.
The population of the planet is so large, and the effect of sales and marketing so hard to scale, that by the time your product is really great, the optimal ratio might be very heavily tilted in favor of sales and marketing. Large software companies might have 5 or 10 or 20 people in the sales organization for every developer.
This explains, among other things, why US software companies can’t expect to get sustainable advantage by offshoring software development to cheaper countries. If a developer in Russia, India, or China costs 50% as much as a developer in Seattle, San Francisco, or Boston, but software development is only 10% of your costs, you can only get a 5% advantage from offshoring development. The offshoring that does happen is strongly biased to custom software development which, by design, can only solve one person’s problem, so more developers than marketers are needed.
It is not the case (as commonly believed by nerds) that marketing is a substitute for code quality. The best marketing in the world cannot force people to pay for a useless product.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
January 26, 2010
16:04
My sister got her kids a little puppy, and they’ve been trying to train it. To live with a dog in the house, you need to teach it not to jump on people, not to poop in the house, to sit on command, and to never, ever, ever chew on the iPad. Never. Good girl.
With dogs the main trick to training is that feedback has to be immediate. If you come home to discover that, hours before, the dog tipped over the garbage can in the kitchen, it’s too late for training. You can yell at her but she just won’t get what you’re going on about. Dogs are just not that smart.
For programmers, getting better at what you do requires quick feedback, positive and negative, on what you’ve just done. The faster you get the feedback, the faster you’ll learn. With long-cycle shrinkwrap software, it can take a year or more to hear feedback from customers.
That’s one of the reasons we have testers. A great tester gives programmers immediate feedback on what they did right and what they did wrong. Believe it or not, one of the most valuable features of a tester is providing positive reinforcement. There is no better way to improve a programmer’s morale, happiness, and subjective sense of well-being than a La Marzocco Linea espresso machine to have dedicated testers who get frequent releases from the developers, try them out, and give negative and positive feedback. Otherwise it’s depressing to be a programmer. Here I am, typing away, writing all this awesome code, and nobody cares. Boo hoo.
Who should be a tester? That’s tricky! Software testing is one of those careers that isn’t that well known, so a lot of people who would be great at testing and would probably enjoy it a lot never consider applying for jobs as testers.
Signs of a good tester:
- Scientific
- Loves a good puzzle, even the kind that takes days to solve
- Likes to think about things methodically
- Generally likes working with software and computers
You don’t have to be a programmer to be a tester. A lot of companies want testers to be programmers who write automated test suites. It seems more efficient that way. This reflects a misunderstanding of what testers are supposed to do, which is evaluate new code, find the good things, find the bad things, and give positive and negative reinforcement to the developers. Sure, automated test suites are a time saver, but testing software covers so much more than that. If you put too much emphasis on those scripts, you won’t notice misaligned text, hostile user interfaces, bad color choices, and inconsistency. Worse, you’ll have a culture of testers frantically working to get their own code working, which crowds out what you need them to do: evaluate someone else’s code.
A particularly terrible idea is to offer testing jobs to the programmers who apply for jobs at your company and aren’t good enough to be programmers. Testers don’t have to be programmers, but if you spend long enough acting like a tester is just an incompetent programmer, eventually you’re building a team of incompetent programmers, not a team of competent testers. Since testing can be taught on the job, but general intelligence can’t, you really need very smart people as testers, even if they don’t have relevant experience. Many of the best testers I’ve worked with didn’t even realize they wanted to be testers until someone offered them the job.
If you:
- Love software and computers
- Want to work on a software team, and
- Don’t particularly like programming
you should consider being a tester. ( We’re hiring! What a coincidence!)
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
January 25, 2010
16:21
Steve Krug has written a follow up to his usability classic Don’t Make Me Think. The sequel, Rocket Surgery Made Easy, is a terrific, short, concise, fun guide to running simple “hallway” usability tests to improve the usability of your software and websites. Highly recommended.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
January 22, 2010
15:33
“As companies expand, the people within them start to specialize. At such a point, some managers will conclude that they have a ‘keep everyone on the same page’ problem. But often what they actually have is a ‘stop people from meddling when there are already enough smart people working on something’ problem.”
From my latest Inc. column: A Little Less Conversation
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
December 30, 2009
10:01
Microsoft Careers: “If you’re looking for a new role where you’ll focus on one of the biggest issues that is top of mind for KT and Steve B in ‘Compete’, build a complete left to right understanding of the subsidiary, have a large amount of executive exposure, build and manage the activities of a v-team of 13 district Linux& Open Office Compete Leads, and develop a broad set of marketing skills and report to a management team committed to development and recognized for high WHI this is the position for you!”
This is ironic, to use the Alanis Morissette meaning of the word [NSFW video].
The whole reason Microsoft even needs a v-team of 13, um, “V DASHES” to compete against Open Office is that they’ve become so insular that their job postings are full of incomprehensible jargon and acronyms which nobody outside the company can understand. With 93,000 employees, nobody ever talks to anyone outside the company, so it's no surprise they've become a bizarre borg of "KT", "Steve B", "v-team", "high WHI," CSI, GM, BG, BMO (bowel movements?) and whatnot.
When I worked at Microsoft almost two decades ago we made fun of IBM for having a different word for everything. Everybody said, "Hard Drive," IBM said "Fixed Disk." Everybody said, "PC," IBM said "Workstation." IBM must have had whole departments of people just to FACT CHECK the pages in their manuals which said, "This page intentionally left blank."
Now when you talk to anyone who has been at Microsoft for more than a week you can’t understand a word they’re saying. Which is OK, you can never understand geeks. But at Microsoft you can’t even understand the marketing people, and, what’s worse, they don’t seem to know that they’re speaking in their own special language, understood only to them.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
December 14, 2009
10:30
Is your desktop backed up?
Did you backup that server?
Are your backups on a different machine?
Do you have offsite backups?
All good questions, all best practices.
But let’s stop talking about “backups.” Doing a backup is too low a bar. Any experienced system administrator will tell you that they have a great backup plan, the trouble comes when you have to restore.
And that’s when you discover that:
- The backed-up files were encrypted with a cryptographically-secure key, the only copy of which was on the machine that was lost
- The server had enormous amounts of configuration information stored in the IIS metabase which wasn’t backed up
- The backup files were being copied to a FAT partition and were silently being truncated to 2GB
- Your backups were on an LTO drive which was lost with the data center, and you can’t get another LTO drive for three days
- And a million other things that can go wrong even when you “have” “backups.”
The minimum bar for a reliable service is not that you have done a backup, but that you have done a restore. If you’re running a web service, you need to be able to show me that you can build a reasonably recent copy of the entire site, in a reasonable amount of time, on a new server or servers without ever accessing anything that was in the original data center. The bar is that you’ve done a restore.
Let’s stop asking people if they’re doing backups, and start asking if they’re doing restores.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
December 13, 2009
17:57
The higher someone’s Stack Overflow reputation, the more likely they are to have submitted a CV to Stack Overflow Careers:
This is not entirely surprising, of course: the more time someone has invested in Stack Overflow, the more likely they are to (a) know about Stack Overflow Careers, (b) be willing to invest $29, after all the hours they’ve already sunk, and (c) have the confidence that their CV is going to impress the kind of employers that are using the site.
Still, the participation rate in Stack Overflow Careers is pretty impressive, and it somewhat confirms the claim we’re making to employers, which is that when you search for CVs on Stack Overflow, you are looking at some pretty gosh darn good programmers.
While I’m rattling on about statistics, here’s a little bit of data about Stack Overflow traffic itself that you may not have seen.
We use Quantcast to measure our traffic. Currently, they’re showing us as the 740th ranked site in the world (of all sites), with 6 million monthly unique visitors, 1.9 million from the US. And the growth is pretty steady, except for a couple of weeks at the end there which reflect the holiday season:
Comparing our traffic to our big competitor is difficult because they don’t use Quantcast, so we have to rely on Alexa, which has a reputation for particularly terrible data, but here’s what that looks like:
Are there any sites out there for programmers with more traffic than Stack Overflow? I haven’t found any, using the available data... even msdn.microsoft.com has less, according to Quantcast, but I find that hard to believe.
In either case, having decided that Stack Overflow was the biggest programming site in the world, I thought, “hey, it should be easier for us to get ads.” I asked our ad guy, Alex “DailyWTF” Papadimoulis, if Microsoft had bought any ads. They’re about to launch Visual Studio 2010, which is probably going to have the biggest marketing campaign (in dollars) in the history of developer tools, and you’d think they’d want to spend something at the biggest programming site in the world. Here’s what he wrote back:
“Microsoft is doing huge spends, but they’re going through McCann for the VS2010 launch (IIRC). Agencies really don’t like us. Now if we go to video units with fly-over… oh they’ll start loving us!”
What he’s referring to is the fact that we don’t accept any kind of animated ads on Stack Overflow, because, well, they’re evil, so we lose a lot of revenue from advertising agencies who are looking for the most aggressive possible ways to get in people’s faces. Whatever. Don’t care. We hate animated ads and I’m pretty sure our users do, too.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
December 9, 2009
20:49
“Like most entrepreneurs, Ryan and I are still learning about how to manage people and teams. And we’re both used to hiring very smart and dedicated people who will get things done to a high standard if you give them some general direction and set them free. But on this trip, we started to notice that this style of hands-off management, which works so well with our own staffs, just wasn’t working when we had outside vendors involved.”
From my December column in Inc.: “ When and How to Micromanage”
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
December 2, 2009
17:24
For as long as I’ve been in the industry, which is, I think, about 74 years now, the problem I’ve had with hiring programmers was not interviewing them or deciding if they’re smart—it’s been finding them in the first place.
What I’ve dreamed about is a programmer search engine.
The ideal programmer search engine would only include programmers who are actually looking for jobs. If you’ve ever emailed someone based on a resume you found through a traditional search engine, you’ve probably discovered that they’re not actually on the market.
It would only include people willing to work in your neck of the woods.
It would show you CVs right away, and, ideally, it would show you something about their programming skills besides the usual resume blahblah.
Well, OK, that day is here, and I’m like a kid in a candy store. Nom nom. Announcing the other half of careers.stackoverflow.com: the employer’s side!
Right now, there are about 928 candidates on there. That’s a start. What’s more interesting is whether there’s a candidate who meets your needs.
Let’s say you’re searching for a full time Java programmer within 40 miles of Palo Alto. Right now there are 11 candidates listed. All but one are active on StackOverflow... one even has reputation over 4000 points.
Want a bit more choice? Check the box that indicates that you’re willing to relocate. Now there are 80 matches, all of whom have the legal right to work in the states. Candidates have a lot of flexibility indicating where they’re willing to work. Even if you need a Ruby on Rails programmer in Oklahoma City, as long as you’re willing to pay for relocation, you’ve got 7 choices. You’ve got 14 choices in London (with the legal right to work.) If you think that a Python programmer could learn Ruby, you’ve got 51 choices. There are plenty of choices whether you’re hiring in Tel Aviv, Sydney, Silicon Valley, or New York. There are four programmers in Copenhagen right now. No relocation required. All of them highly qualified, actually; any one of them would qualify to interview at Fog Creek.
Stack Overflow Careers is something of a chicken-and-egg business. We have to get a big audience of programmers and a big audience of employers all at the same time, and then it’s like a junior high school dance, with the boys on one side of the gym and the girls on the other side, and for a while you just sit there holding your breath to see if anyone will dance. We invited a few hundred employers as beta testers... these were the companies that have been listing jobs on StackOverflow over the last six months, and so far, they’ve found a few dozen candidates that they liked. Once it gets to that point, we’re out of the loop, so we don’t really know how many people are actually finding jobs, but please email me your success stories and failure stories so we can keep working to make it better.
In the meantime, Jeff and the StackOverflow crew have done something brilliant: they’ve made it possible to do searches and see how many candidates match even before you have to pay. So if you want to try it out but are afraid that there aren’t students looking for OCaml internships in Houston, you can try it, and find that there is, indeed, one. So, try it out right now. There’s no obligation, and we’re happy to give you your money back if you don’t think you got good value.
Need to hire a really great programmer? Want a job that doesn't drive you crazy? Visit the Joel on Software Job Board: Great software jobs, great people.
|
Recent comments
18 hours 18 min ago
1 day 32 min ago
3 days 12 hours ago
4 days 3 hours ago
4 days 22 hours ago
6 days 12 hours ago
1 week 2 days ago
1 week 3 days ago
1 week 3 days ago
1 week 4 days ago