Fuck This Industry and, While We're At It, Fuck Joel Spolsky
This is reworked post from Reddit with some editing.
“Bob” posted on Joel’s forum, asking:
“I’m thinking of leaving the industry. What is a good industry to get into where your programming skills would put you at an advantage?”
To which Joel replies with a bunch of snarky words, basically telling Bob to shut up and eat his broccoli, closing with the tasteless remark “I don’t get the negativity in here. How did the Joel on Software discussion group turn into a mutual mope-fest for angsty emo girls.”
RoboticCoder on Reddit replies, offering the definition:
“It seems to me the industry is split into two groups, The programmers, who started out programming long before they ever thought of it as a career choice i.e. the bedroom coders, the geeks :) And then there are the monkeys, the people who fell into the computing field because it was seen to be a boom industry a few years ago, they learned some basic programming and got their degree or <insert other qualification here>.”
A guy named skinnybuddha replies to that, saying:
“I think monkeys are the ones who complain the most. I would not program for free, because I can find other interesting things to do that would pay more than 0. I find that programmers are treated pretty well by management, monkeys are seen as a commodity to be exploited.”
I think skinnybuddha basically got it backwards, and it’s all based on a couple of simple axioms:
- “Monkeys” as he calls them are optimizing for money. “Programmers” are optimizing for fun.
- “Programmers” spend a sizable portion of their free time learning more about programming.
- The Paradox of Choice is real.
Because of #1, “Monkeys” don’t investigate other languages and platforms, accumulating knowledge about alternatives that they are then prevented from putting into practice at work. They don’t need to do this to make more money.
“Monkeys” are more successful because it’s easier for them to succeed. This is because they happened to have selected a quantifiable value for success that is both easy to maximize and widely accepted as a definition of success: money. It’s a lot easier to tolerate a job that earns you a lot of money yet is boring if your primary goal is making money. Every company tells you what you’ll earn before you agree to start. Whether or not it is boring or interesting, a fact of greater importance to “programmers” than “monkeys,” can only be observed obliquely before accepting the job. Even defining success as something other than making a lot of money represents a choice. Every time you can’t do something because of a lack of money, the “programmer” will reconsider that choice and suffer some buyer’s remorse. A “monkey” will seldom experience buyer’s remorse for the one decision they did make, where to work, because if they simply selected the highest-paying job, there is nothing to clutter that question. Fun being a difficult concept to quantify, the “programmer” will be more susceptible to buyer’s remorse about the job they selected, compounded by their decision to optimize for fun rather than money.
Additionally, some “programmers” develop a distaste for popular platforms and languages, thus finding opportunities rarer. Rarer opportunities translates into higher compensation when danger is involved or the need is very high, but, generally speaking, programs can be written on any platform so denial of the popular platforms translates into additional requirements being imposed on the employer by the employee. Obscure platforms are a benefit to the employee, not a cost to the employer, so compensation goes down and the elusive fun factor (theoretically) goes up.
“Programmers” who actually enjoy programming the common platforms and languages are more likely to be in high demand and thus have more opportunities to distrust their own decisions about where to work. It’s easy to maximize compensation, and hard to maximize fun. You will always have buyer’s remorse for those other jobs you passed up on, whose enjoyability is hard to measure. And, whenever your job is unfun, you’ll be thinking about how you could instead be making ten times more money at that other unfun job you passed up.
As a thought experiment, consider a supermarket. When there are only two checkout lines to choose from, you don’t feel as bad when you happened to have gotten in the slow one as when there are ten open. When there are ten open, you will invariably compare your plight to the happy person in the fastest line. You’ll only consider the people in the average line if you happen to be in one of the 5 lanes that’s slower than average. But even if you’re in the second-fastest line, you’ll feel like a schmuck for not getting in the fastest lane.
Compound the problem by not being able to compare the speed of the lanes directly. If you care very deeply about the speed of the lane, but can’t measure it, you will be unable to escape the conclusion— rightly or wrongly— that every delay in this lane is of great importance. You will feel excruciatingly awful. The best way to solve this problem is simply to stop treating it as a problem, and stop optimizing this variable before you go crazy. Easy advice to administer, but hard to take.
Programming is also one of the most stressful occupations. Stress plus little money is a recipe for health problems. The best “programmers” are the most likely to have programming as an avocation as well as a vocation. While our “monkey” friends spend their weekends running marathons and lifting weights, we’re in front of computer screens getting and staying fat and unhealthy. The exercise they’re getting is making them live longer, be perceived as more attractive to mates, and getting them laid more. The extra money they’re making and their stability (i.e. boringness) probably helps in that department too. Meanwhile, we are learning new languages and platforms: adding choices to our life which we will either be unable to enact in the workplace, or which we will kill ourselves by agonizing over when we have the option. All of this will cause us to feel like artists, but won’t help us be perceived as artists. The suffering leads to more eating and depression and ultimately we die alone.
From a business perspective, remember that management also prefers “monkeys” over programmers, because management is taught to regard people as human resources: labor-producing machines with sets of skills. It’s much easier to replace a person with a common skill than one with an uncommon skill. Managers are also scrutinized by the quality of their decisions; no manager was ever fired for choosing (what’s perceived to be) the safe bet. The ready supply of X programmers gives them both the illusion that development is like any other skilled labor which people can be swapped into and out of, and the feeling that they’re choosing a safe choice.
The cool companies that let you use whatever technology you want tend to be run by programmers rather than business people. Companies that are good at business tend to grow and thus hire more middle management, who bring with them business cargo cults such as human-resources-as-a-commodity. Businesses that aren’t as successful don’t, and that’s the place “programmers” want to work. Such places also tend not to compromise on technology for business reasons, which stifles profitability—and exists in an environment in which business and profitability are seen as contrary to good programming. This translates to less money and fewer customers. “Programmers” are expected to endure this because of the sheer joy of programming, which becomes a factor in compensation. People doing fun jobs because they’re fun aren’t likely to make compromises that improve the bottom line.
A side-effect of this is that profitable companies have diminished abilities to differentiate “programmers” from “monkeys.” They’re just HR. There’s also a strong counter-incentive from above to make a distinction, since it would increase hiring costs and trouble, and would give more power to the “programmers,” who aren’t perceived as being particularly important to the profit equation.
I am sure that there exist exceptions to these principles, but they are exactly that and I would expect them to be correspondingly rare and short-lived.
Maybe this job just isn’t for everyone. But I’m starting to think this job is for precisely the people who shouldn’t be doing it in the first place, and not those who have a passion for it or a natural gift. I personally think I would enjoy it more if it went back to being my hobby. But I know so much now it would be ridiculous not to try and make money with it, and retooling myself for a different occupation sounds like a great way to give myself and even bigger helping of the paradox of choice than I already have, which is pretty significant.
If you’re a programmer and you’re happy, my advice to you right now, if you value your happiness, is to throw out the Pragmatic Programmer’s adage of learning a new language every year. Don’t do it, man; put down that language. It’ll only end in tears. Maybe not this year, maybe not next year, but eventually, it’s going to catch up to you. You’ll sit down to start a new project and ask yourself, what language should I do this in? And you’ll spend the next two or three hours trying to decide without making a conclusion, except that every language sucks.
As to Joel, he’s internet famous, which means almost nothing. Making it in New York doesn’t mean much to me; I consider him a schmuck who got lucky and a person who ought to read Fooled by Randomness a couple more times. His lack of empathy towards someone on his own board is disheartening.
Of course, it all adds up if you take it from a business perspective. it’s not in his business’s best interest to have a list of great career options for the exiting programmer on his board. He hires programmers, after all. It’s important to understand that Joel is a businessman first. Drama about his blog is just a fancy way of getting traffic to his website, to raise awareness of his software which is coincidentally marketed to developers. Unfortunately, knowing about marketing doesn’t seem to be enough to inoculate a person against it. Everyone should take any mention of Joel as a flashing red neon sign reading “BUY FOGBUGZ!!”