Monday, May 14, 2007

You Are Not Your Stock Options

A little while back I wrote about Web apps as a form of showbiz:

Programming is looking more and more like acting or screenwriting every day. The entry costs are approaching zero and the value of education is only partial. And certainly the show biz adage that "you're only as good as your latest hit" is true in programming as well. Ask anybody who lost a job to a younger programmer with less brains but trendier skills.

(Available as a podcast here.)

Now Caterina Fake has an awesome podcast where she says that the biggest element in Flickr's success was its timing, and there's statistical research which proves - or at least very strongly suggests - that the same material can hit or miss based on network effects.

What does this mean for Rails programmers?

Rails, of course, is a hit. Rails will be remembered as a huge part of Web 2.0, the preferred language of the second boom; yet it's important to remember that when Rails first appeared on the scene, before it became the colossal bandwagon it now is, it came from one of the only two really successful companies to prosper during the dot-com crash - 37 Signals and Adaptive Path. The huge lesson of both these companies was that it's best to focus on a real business, not on winning a startup lottery, but today, nobody wants to be reminded about that.

Let's assume for the sake of argument that you're downloading the podcast and reading the links - I think they're very worth reading. Ultimately, I just write because I like to write, but I think I'm doing a service by pointing you in these directions. However, I could be doing a disservice instead, if all these links result in a certain amount of depression. One implication is that if Rails had come along at a different time, it wouldn't have been a hit. The idea that such huge differences in the course of your career could be due entirely to luck isn't necessarily uplifting, because luck gets good, and luck gets bad, and that's just how it is. Seems kind of fatalistic, eh?

["They r make fun of me" LOLcat removed per request of upset cat owner]

Well, if Web 2.0 is a lot more like show business than engineering, let's take a moment to look at show business.

There's a neat article in the New York Times about music and social software. Turns out blogs and forums are becoming essential to musicians:

Performing artists these days, particularly new or struggling musicians, are increasingly eager, even desperate, to master the new social rules of Internet fame. They know many young fans aren’t hearing about bands from MTV or magazines anymore; fame can come instead through viral word-of-mouth, when a friend forwards a Web-site address, swaps an MP3, e-mails a link to a fan blog or posts a cellphone concert video on YouTube.

So musicians dive into the fray — posting confessional notes on their blogs, reading their fans’ comments and carefully replying.

By the way, just for perspective, I believe these words are absolutely true. I used to be an underground rave organizer, very minor DJ, and kind of a failed dance music producer, and it's pretty easy to tell if you check out my Myspace page (NSFW!) or download some of my music. Social software's absolutely essential for entertainers. Forums and e-mail lists were the big thing before Myspace, and Myspace is big with musicians and actors. People who I know through the DJ world are obsessed with Myspace, and people I know from acting classes are too. For better or worse, social software has become an essential part of show business.

Anyway, in this article, Jonathan Coulton (of "Code Monkey" fame) reports that a few of his songs are much, much more popular than most, and these are, essentially, his hits. Obviously the sales and popularity threshholds for a Jonathan Coulton hit are orders of magnitude lower than those of a Justin Timberlake hit, but the fact remains, regular songs outnumber hits, and yet fans won by hits sometimes love the regular songs as well, and sometimes become loyal supporters.

It's pretty easy to map this to code, or to Web apps. After all, some of your clients, customers, and employers are going to be your fans, but not necessarily all of them. User base and popularity threshholds for a Giles Bowkett hit have generally been orders of magnitude lower than those of a why the lucky stuff hit, and yet some of my projects have been much, much more popular than others, and people in a company who become my fan because of some project that does unusually well will often want me to work on their other projects too.

Obviously, then, you want to maximize the number of your hits, and yet the statistical research indicates that it is very probably impossible for any one individual to exercise control over what becomes a hit.

Which brings us back to Adaptive Path and 37 Signals. Their strategy for prosperity during the bust: do consistently good work, keep active in the community, and save your money. (Both Jason Fried of 37 Signals and Janice Fraser of Adaptive Path have hammered this point home in podcasts.) Interestingly, it's also Jonathan Coulton's basic strategy for making a living as an independent Web-based musician. It's a strategy designed to leverage the randomness of hits without depending on it.

Compare that strategy with working for a venture capital backed startup.

That's a strategy designed to depend on the randomness of hits.

Another foray back into showbiz. There's a phenomenon here in Los Angeles called pilot season. Pilot season is when all the pilots are filmed; each pilot hopes to become a series on network television. According to one blog I read, agents will send actors out to as many auditions as possible during pilot season, in some cases having one actor go to 12 auditions in the same day. If you don't know anything about auditions, or, for that matter, Los Angeles traffic, let me just summarize: going to 12 auditions in one day is simply insane.

In fact, it's an atypical example, an example of how crazy things get. And agents are not always as unethical as you might think from Hollywood's own portrayals of itself. But agents will send an actor out to an unreasonably large number of auditions because if one actor that an agent represents gets one part in one audition on one pilot and that one pilot happens to become a series, the agent wins big. So if the agent represents 20 different actors, and 19 of them never make any money at all in pilot season, and never book any roles, but one actor wins big, the agent makes more money than if every actor got enough small parts to sustain themselves as working actors.

Does this sound like venture capital?

In a situation like this, both agents and venture capitalists are gamblers. Because hits are incredibly lucrative, yet unpredictable - in the purely technical sense that predicting them is a literal mathematical impossibility due to sensitive dependence on initial conditions - it is better for the gamblers to encourage their actors or their companies to risk everything, even though that risk probably won't pan out, because if just one of those risks does pan out, the money comes back with huge returns that are more than enough to recoup the money that the gambler invested in all the other actors or companies just in case. If every actor or every company plays it safe, they're each individually more likely to stay in business and succeed over the long term - but the gambler won't win any lotteries that way.

The blog post on pilot season says that the smart thing for an actor do at that time is only audition for commercials, movies, stage plays, and ongoing series, and avoid pilots, because all your competition will be out there exhausting themselves gunning for pilots - gambling their careers for their agents instead of making moves which are smart for them.

The implication is that the smart things to do for a programmer during a boom are:

1. Do consistently good work
2. Keep active in the community
3. Save your money

Hopefully that sounds familiar too.

It's a pretty unfortunate political reality that in the world today there are people who are rich enough to treat other people's lives as gambling chips in a gigantor-iffic casino. It's unfortunate for many reasons, but I'm going to limit myself to two here.

First, dramatic income disparity has a statistical correlation with increased mortality among both the poor and the rich. Second, and much more relevant, the people with the money often control, or seem to control, the system. You'd expect the people who control the system to set the system up to perform at its best; but the reality is that the people who control (or seem to control) both systems - both Hollywood and Silicon Valley - have set both systems up for high risk and big winnings. This is why, in music, people like Jonathan Coulton have stepped outside the major-label system, and it's a big reason programmers should consider the VC system with caution, if at all.


  1. Hey Giles,

    I definitely appreciate reading your perspective and your warnings about VC-backed companies. But from the perspective of the programmer themselves, working for a VC-backed company (maybe with a decent salary and the 'promise' of benefits down the road), isn't the biggest risk the developer takes the risk that the startup will fail a couple months down the road?

    It seems like the turnaround for the tech industry is getting so fast anyway that you should almost expect a startup to fail, but wouldn't most of the risk fall upon the shoulders of the startup founders? The worst it seems for the developer in such a position is that they're looking for a new job when the startup fails. Of course "stop gaps" like this in life are the suck, but as long as you're getting paid and having fun coding, things could be worse, eh?


  2. Hey Tieg - yes and no. To some extent I am kind of just raging against the machine here, but here's the other side of the equation: I had this same exact skepticism in 2000, and by 2001, I was the only person I knew who had a job. Everyone I knew socially and everyone I knew from previous jobs got fired in the same period of about four weeks. And at the time, I was involved in the rave scene, which is all about knowing lots of people. If everybody I knew was unemployed, that meant pretty much everybody in the city was unemployed. I knew educated people and ignorant people, rich people and poor people, and none of them had jobs but me. I didn't actually dig the job - that's a different story - but the point is that if you can spot bullshit, you avoid getting put in a bad position by it.

    The other thing is that for me, personally, working at a startup when I don't expect success for the startup? No way. That feels cynical and dirty. But it goes beyond the whole moral thing. I think it's not a coincidence that Ruby on Rails emerged from a company which was able to do well during the bust. Ruby on Rails is all about zero-bullshit coding, and when you work at a job that you know is BS, for a startup that is obviously hype, you're not going to build a framework like Rails. There's no harm in contributing bullshit code to a bullshit project. It was already bullshit anyway. But if you're up against a budgetary wall every time you do anything, you develop zero-bullshit code habits, and that leads to zero-bullshit frameworks.

    So that means that maybe if we had a little less tolerance for bullshit from the people who hire us, we wouldn't have to deal with J2EE at all. The alternative point of view is that tolerating bullshit from employers leads to doing bullshit work yourself, and holding yourself to a higher standard leads to Rails, and anybody who codes because they like code is going to want to produce great code, not terrible code. Writing good code is all about defining a process with accuracy and clarity. Bullshit does not survive when exposed to accuracy and clarity, and consequently, every job I've had where the atmosphere's been charged with bullshit, the code's been bad. There is actually a cause-effect relationship there. To write good code, you have to adopt a zero-bullshit mentality. But if you're going from zero-bullshit mentality to 100%-bullshit mentality every time you stop coding to go into a meeting, eventually your brain stabilizes on a 50-50 bullshit mentality to avoid insanity. And the result is bad code.

    So yeah, I think working for a startup when you don't expect the startup to succeed is a huge risk for the individual developer. You might do your most exciting work but it's pretty unlikely that you'll do your best work.

  3. "Paper back writer" was on the radio and I was listening to the lyrics.. and I thought to myself wow this sounds exactly like our industry right now.

    I currently work for a VC backed startup as a programmer and I think you hit the nail on the head, but that also kind of correlates to your posting about having passion for what you do. The more passion you have for the general art of your daily job then the more likely you are to cover no matter the company, and if you have both then your set.


Note: Only a member of this blog may post a comment.