Technology’s Loser Problem

I’m angry. The full back story isn’t worth getting into, but there was a company where I applied for a job in the spring of 2013: to build a company’s machine learning infrastructure from scratch. It was a position of technical leadership (Director equivalent, but writing code with no reports) and I would have been able to use Clojure. As it were, I didn’t get it. They were looking for someone more experienced, who’d built those kinds of systems before, and wouldn’t take 6 months to train up to the job. That, itself, is not worth getting angry about. Being turned down happens, especially at high levels.

I found out, just now, that the position was not filled. Not then. Not 6 months later. Not to this day, more than a year later. It has taken them longer to fill the role than it would have taken for me to grow into it.

When they turned me down, it didn’t faze me. I thought they’d found a better candidate. That happens; only thing I can do is make myself better. I found myself, however, a bit irked when I found out that they hadn’t filled the position for longer than it would have taken me to gain the necessary experience. I lost, and so did they.

That’s not what makes me angry. Rationally, I realize that most companies aren’t going to call back a pretty-good candidate they rejected because they had just opened the position and they thought they could do better (if you’re the first 37% of candidates for a job, it makes sense for them not to choose you and, empirically, first and second applicants for a high-level position rarely get it). That’s the sort of potentially beneficial but extremely awkward social process that just won’t happen. What makes me angry is the realization of how common a certain sort of decision is in the technology world. We make a lot of lose-lose decisions that hurt all of us. Extremely specific hiring requirements (that, in bulk, cost the company more in waiting time than training a 90% match up to the role) are just the tip of the iceberg.

You know those people who complain about the lack of decent <gender of sexual interest> but (a) reject people for the shallowest, stupidest reasons, (b) aren’t much of a prize and don’t work to better themselves, and (c) generally refuse to acknowledge that the problem is rooted in their own inflated perception of their market value? That’s how I feel every time I hear some corporate asswipe complain about a “talent shortage” in technology. No, there isn’t one. You’re either too stingy or too picky or completely inept at recruiting, because there’s a ton of underemployed talent out there.

Few of us, as programmers, call the initial shots. We’ve done a poor job of making The Business listen to us. However, when we do have power, we tend to fuck it up. One of the problems is that we over-comply with what The Business tells us it whats. For example, when a nontechnical CEO says, “I only want you to hire absolute rock stars”, what he actually means is, “Don’t hire an idiot just to have a warm body or plug a hole”. However, because they tend to be literal, over-compliant, and suboptimal, programmers will interpret that to mean, “Reject any candidate who isn’t 3 standard deviations above the mean.” The leads to positions not being filled, because The Business is rarely willing to pay what one standard deviation above the mean costs, let alone three.

Both sides now

I’ve been on both sides of the interviewing and hiring process. I’ve seen programmers’ code samples described with the most vicious language over the most trivial mistakes, or even stylistic differences. I’ve seen job candidates rejected for the most god-awful stupid reasons. In one case, the interviewer clearly screwed up (he misstated the problem in a way that made it impossible) but, refusing to risk face by admitting the problem was on his end, he claimed the candidate failed the question. Another was dinged on a back-channel reference (don’t get me started on that sleazy practice, which ought to be illegal) claiming, without any evidence, that “he didn’t do much” on a notable project four years ago. I once saw an intern denied a full-time offer because he lived in an unstylish neighborhood. (The justification was that one had to be “hungry”, mandating Manhattan.) Many of us programmers are so butthurt about not being allowed to sit at the cool kids’ table that, when given the petty power associated with interviewing other programmers, the bitch-claws come out in a major way.

Having been involved in interviewing and recruiting, I’ll concur that there are a significant number of untalented applicants. If it’s 99.5 percent, you’re doing a lot of things wrong, but most resumes do come from people way out of their depth. Moreover, as with dating, there’s an adverse weighting in play. Most people aren’t broken, but broken people go on orders of magnitude more dates than everyone else, which is why most peoples’ dating histories have a disproportionate representation of horror stories, losers, and weirdos. It’s the same with hiring, but phone screening should filter against that. If you’re at all good at it, about half of the people brought in-office will be solid candidates.

Of course, each requirement cuts down the pool. Plenty of companies (in finance, some officially) have a “no job hopper” or “no unemployeds” rule. Many mandate high levels of experience in new technologies (even though learning new technologies is what we’re good at). Then, there are those who are hung up on reference checking in weird and creepy ways. I know of one person who proudly admits that his reference checking protocol is to cold-call a random person (again, back-channel) is the candidate’s network and ask the question, without context, “Who is the best person you’ve ever worked with?” If anyone other than the candidate is named, the candidate is rejected. That’s not being selective. That’s being an invasive, narcissistic idiot. Since each requirement reduces the size of qualified people, it doesn’t take long before the prejudices winnow an applicant pool down to zero.

Programmers? Let’s be real here, we kinda suck…

As programmers, we’re not very well-respected, and when we’re finally paid moderately well, we let useless business executives (who work 10-to-3 and think HashMap is a pot-finding app) claim that “programmer salaries are ridiculous”. (Not so.) Sometimes (to my horror) you’ll hear a programmer even agree that our salaries are “ridiculous”. Fuck that bullshit; it’s factually untrue. The Business is, in general, pretty horrible to us. We suffer under closed allocation, deal with arbitrary deadlines, and if we don’t answer to an idiot, we usually answer to someone else who does. Where does the low status of programmers come from? Why are we treated as cost centers instead of partners in the business? Honestly… much of the problem is us. We’ve failed to manage The Business, and the result is that it takes ownership of us.

Most of the time, when a group of people is disproportionately successful, the cause isn’t any superiority of the average individual, but a trait of the group: they help each other out. People tend to call these formations “<X> Mafia” where X might be an ethnicity, a school, or a company. Y Combinator is an explicit, pre-planned attempt to create a similar network; time will tell if it succeeds. True professions have it. Doctors look out for the profession. With programmers, we don’t see this. There isn’t a collective spirit: just long email flamewars about tabs versus spaces. We don’t look out for each other. We beat each other down. We sell each other out to non-technical management (outsiders) for a shockingly low bounty, or for no reason at all.

In many investment banks, there’s an established status hierarchy in which traders and soft-skills operators (“true bankers”) are at the top, quants are in the middle, and programmers (non-quant programmers are called “IT”) are even lower. I asked a high-ranking quant why it was this way, and he explained it in terms of the “360 degree” performance reviews. Bankers and traders all gave each other top ratings, and wrote glowing feedback for minor favors. They were savvy enough to figure out that it was best for them to give great reviews up, down, and sideways, regardless of their actual opinions. Quants tended to give above-average ratings and occasionally wrote positive feedback. IT gave average ratings for average work and plenty of negative feedback. The programmers were being the most honest, but hurting each other in the process. The bankers and traders were being political, and that’s a good thing. They were savvy enough to know that it didn’t benefit them to sell each other out to HR and upper management. Instead, they arranged it so they all got good ratings and the business had to, at baseline, appreciate and reward all of them. While it might seem that this hurt top performers, it had the opposite effect. If everyone got a 50 percent bonus and 20% raise, management had to give the top people (and, in trading, it’s pretty obvious who those are) even more.

Management loves to turn high performers against the weak, because this enables management to be stingy on both sides. The low performers are fired (they’re never mentored or reassigned) and the high performers can be paid a pittance and still have a huge bonus in relative terms (not being fired vs. being fired). What the bankers were smart enough to realize (and programmers, in general, are not) is that performance is highly context-driven. Put eight people of exactly equal ability on a team to do a task and there will be one leader, two or three contributors, and the rest will be marginal or stragglers. It’s just more efficient to have the key knowledge in a small number of heads. Open source projects work this way. What this means is that, even if you have excellent people and no bad hires, you’ll probably have some who end up with not much to show for their time (which is why open allocation is superior; they can reassign themselves until they end up in a high-impact role). If management can see who is in what role, it can fire the stragglers and under-reward the key players (who, because they’re already high performers, are probably motivated by things other than money… at least, for now). The bankers and traders (and, to a lesser extent, the quants) had the social savvy and sense to realize that it was best that upper management not know exactly who was doing what. They protected each other, and it worked for them. The programmers, on the other hand, did not, and this hurt top performers as well as those on the bottom.

Let’s say that an investment bank tried to impose tech-company stack ranking on its employees, associate level and higher. (Analyst programs are another matter, not to be discussed here.) Realizing the mutual benefit in protecting each other, the bankers would find a way to sabotage the process by giving everyone top ratings, ranking the worst employees highly, or simply refusing to do the paperwork. And good for them! Far from being unethical, this is what they should do: collectively work The Business to get what they’re actually worth. Only a programmer would be clueless enough to go along with that nonsense.

In my more pessimistic moods, I tend to think that we, as programmers, deserve our low status and subordinacy. As much as we love to hate those “business douchebags” there’s one thing I will say for them. They tend to help each other out a lot more than we do. Why is this? Because they’re more political and, again, that might not be a bad thing. Ask a programmer to rate the performance of a completely average colleague and you’ll get an honest answer: he was mediocre, we could have done without him. These are factual statements about average workers, but devastating when put into words. Ask a product manager or an executive about an average colleague and you’ll hear nothing but praise: he was indispensable, a world-class player, best hire in ten years. They realize that it’s politically better for them, individually and as a group, to keep their real opinions to themselves and never say anything that could remotely endanger another’s career. Even if that person’s performance was only average, why make an enemy when one can make a friend?

“Bad code”

Let’s get to another thing that we do, as programmers, that really keeps us down. We bash the shit out of each other’s code and technical decision-making, often over minutiae.

I hate bad code. I really do. I’ve seen plenty of it. (I’ve written some, but I won’t talk about that.) I understand why programmers complain about each other’s code. Everyone seems to have an independent (and poorly documented) in-head culture that informs how he or she writes code, and reading another person’s induces a certain “culture shock”. Even good code can be difficult to read, especially under time pressure. And yes, most large codebases have a lot of code in them that’s truly shitty, sometimes to the point of being nearly impossible to reason about. Businesses have failed because of code quality problems, although (to tell the whole story) it’s rare that one bad programmer can do that much damage. The worst software out there isn’t the result of one inept author, but the result of code having too many authors, often over years. It doesn’t help that most companies assign maintenance work to either to junior programmers, or demoted (and disengaged) senior ones, neither category having the power to do it right.

I’d be the last one to come out and defend bad code. That said, I think we spend too much time complaining about each other’s code– and, worse yet, we tend toward the unforgivable sin of complaining to the wrong people. A technical manager has, at least, the experience and perspective to know that, at some level, every programmer hates other peoples’ code. But if that programmer snitches to a non-technical manager and executive,  well… you’ve just invited a 5-year-old with a gun to the party. Someone might get fired because “tabs versus spaces” went telephone-game into “Tom does shoddy work and is going to destroy the business”. Because executives are politically savvy enough to protect the group, and only sell each other out in extreme circumstances, what started out as a stylistic disagreement sounds (to the executive ear) like Tom (who used his girlfriend’s computer to fix a production problem at 11:45 on a Friday night, the tabs/spaces issue being for want of an .emacs.d) is deliberately destroying the codebase and putting the whole company at risk.

As programmers, we sell each other out all the time. If we want to advance beyond reasonable but merely upper-working class salaries, and be more respected by The Business, we have to be more careful about this kind of shit. I’ve heard a great number of software engineers say things like, “Half of all programmers should just be fired.” Now, I’ll readily agree that there are a lot of badly-trained programmers out there whose lack of skill causes a lot of pain. But I’m old enough to know that people come to a specific point from a multitude of paths and that it’s not useful to personalize this sort of thing. Also, regardless of what we may think as individuals, almost no doctor or banker would ever say, to someone outside his profession, “half of us should be fired”. They’re savvy enough to realize the value of protecting the group, and handling competence and disciplinary matters internally. Whether to fire, censure, mentor or praise is too important a decision to let it happen outside of our walls.

There are two observations about low-quality code, one minor and one major. The minor one is that code has a “all of us is worse than any of us” dynamic. As more hands pass over code, it tends to get worse. People hack the code needing specific features, never tending to the slow growth of complexity, and the program evolves over time into something that nobody understands because too many people were involved in it. Most software systems fall to pieces not because of incompetent individuals, but because of unmanaged growth of complexity. The major point on code-quality is: it’s almost always management’s fault.

Bad code comes from a multitude of causes, only one of which is low skill in programmers. Others include unreasonable deadlines, unwillingness to attack technical debt (a poor metaphor, because the interest rate on technical “debt” is both usurious and unpredictable), bad architecture and tooling choices, and poor matching of programmers to projects. Being stingy, management wants to hire the cheapest people it can find and give them the least time possible in which to do the work. That produces a lot of awful code, even if the individual programmers are capable. Most of the things that would improve code quality (and, in the long term, the health and performance of the business) are things that management won’t let the programmers have: more competitive salaries, more autonomy, longer timeframes, time for refactoring. The only thing that management and the engineers can agree on is firing (or demoting, because their work is often still in use and The Business needs someone who understands it) those who wrote bad code in the past.

One thing I’ve noticed is that technology companies do a horrible job of internal promotion. Why is that? Because launching anything will typically involve compromises with the business on timeframe and headcount, resulting in bad code. Any internal candidate for a promotion has left too many angles for attack. Somewhere out there, someone dislikes a line of code he wrote (or, if he’s a manager, something about a project he oversaw). Unsullied external candidates win, because no one can say anything bad about them. Hence, programming has the culture of mandatory (but, still, somewhat stigmatized) job hopping we know and love.

What’s really at the heart of angry programmers and their raging against all that low-quality code? Dishonest attribution. The programmer can’t do shit about the dickhead executive who set the unreasonable deadlines, or the penny-pinching asswipe managers who wouldn’t allow enough salary to hire anyone good. Nor can he do much about the product managers or “architects” who sit above and make his life hell on a daily basis. But he can attack Tom, his same-rank colleague, over that commit that really should have been split into two. Because they’re socially unskilled and will generally gleefully swallow whatever ration of shit is fed to them by management, most programmers can very easily be made to blame each other for “bad code” before blaming the management that required them to use the bad code in the first place.

Losers

As a group, software engineers are losers. In this usage, I’m not using the MacLeod definition (which is more nuanced) and my usage is halfway pejorative. I generally dislike calling someone a loser, because the pejorative, colloquial meaning of that word conflates unfortunate circumstance (one who loses) with deserved failure. Here, however, it applies. Why do we lose? Because we play against each other, instead of working together to beat the outside world. As a group, we create our own source of loss.

Often, we engage in zero- or negative-sum plays just to beat the other guy. It’s stupid. It’s why we can’t have nice things. We slug each other in the office and wonder why external hires get placed over us. We get into flamewars about minutiae of programming languages, spread FUD, and eventually some snot-nosed dipshit gets the “brilliant” idea to invite nontechnical management to weigh in. The end result is that The Business comes in, mushroom stamps all participants, and says, “Everything has to be Java“.

Part of the problem is that we’re too honest, and we impute honesty in others when it isn’t there. We actually believe in the corporate meritocracy. When executives claim that “low performers” are more of a threat to the company than their astronomical, undeserved salaries and their doomed-from-the-start pet projects, programmers are the only people stupid enough to believe them, and will often gleefully implement those “performance-based” witch hunts that bankers would be smart enough to evade (by looking for better jobs, and arranging for axes to fall on people planning exits anyway). Programmers attempt to be apolitical, but that ends up being very political, because the stance of not getting political means that one accepts the status quo. That’s radically conservative, whether one admits it or not.

Of course, the bankers and traders realize the necessity of appearing to speak from a stance of professional apolitical-ness. Every corporation claims itself to be an apolitical meritocracy, and it’s not socially acceptable to admit otherwise. Only a software engineer would believe in that nonsense. Programmers hear “Tom’s not delivering” or “Andrea’s not a team player” and conceive of it as an objective fact, failing to recognize that, 99% of the time, it means absolutely nothing more or less than “I don’t like that person”.

Because we’re so easily swayed, misled, and divided, The Business can very easily take advantage of us. So, of course, it does. It knows that we’ll sell each other out for even a chance at a seat at the table. I know a software engineer who committed felony perjury against his colleagues just to get a middle-management position and the right to sit in on a couple of investor meetings. Given that this is how little we respect each other, ourselves, and our work, is it any wonder that software engineers have such low status?

Our gender issues

I’m going to talk, just briefly, about our issues with women. Whatever the ultimate cause of our lack of gender diversity– possibly sexism, possibly that the career ain’t so great– it’s a major indictment of us. My best guess? I think sexism is a part of it, but I think that most of it is general hostility. Women often enter programming and find their colleagues hostile, arrogant, and condescending. They attribute that to their gender, and I’m sure that it’s a small factor, but men experience all of that nonsense as well. To call it “professional hazing” would be too kind. There’s often nothing professional about it. I’ve dealt with rotten personalities, fanaticism about technical preference or style, and condescension and, honestly, don’t think there’s a programmer out there who hasn’t. When you get into private-sector technology, one of the first things you learn is that it’s full of assholes, especially at higher levels.

Women who are brave enough to get into this unfriendly industry take a look and, I would argue, most decide that it’s not worth it to put up with the bullshit. Law and medicine offer higher pay and status, more job security, fewer obnoxious colleagues, and enough professional structure in place that the guy who cracks rape jokes at work isn’t retained just because he’s a “rockstar ninja”.

“I thought we were the good guys?”

I’ve often written from a perspective that makes me seem pro-tech. Originally, I approached the satirical MacLeod pyramid with the belief that “Technocrat” should be used to distinguish positive high-performers (apart from Sociopaths). I’ve talked about how we are a colonized people, as technologists. It might seem that I’m making businesspeople out to be “the bad guys” and treating programmers as “the good guys”. Often, I’m biased in that very direction. But I also have to be objective. There are good business people out there, obviously. (They’re just rare in Silicon Valley, and I’ll get to that.) Likewise, software engineers aren’t all great people, either. I don’t think either “tribe” has a monopoly on moral superiority. As in Lost, “we’re the good guys” doesn’t mean much.

We do get the worst (in terms of ethics and competence) of the management/business tribe in the startup world. That’s been discussed at length, in the essay linked above. The people who run Silicon Valley aren’t technologists or “nerds” but machiavellian businessmen who’ve swooped in to the Valley to take advantage of said nerds. The appeal of the Valley, for the venture capitalists and non-technical bro executives who run it, isn’t technology or the creation of value, but the unparalleled opportunity to take advantage of too-smart, earnest hard workers (often foreign) who are so competent technically that they often unintentionally generate value, but don’t know the first thing about how to fight for their own interests.

It’s easy to think ourselves morally superior, just because the specific subset of business people who end up in our game tends to be the worst of that crowd. It’s also a trap. We have a lot to learn form the traders and bankers of the world about how to defend ourselves politically, how to stand a chance of capturing some of the value we create, and how to prevent ourselves from being robbed blind by people who may have lower IQs, but have been hacking humans for longer than we could have possibly been using computers. Besides, we’re not all good. Many of us aren’t much better than our non-technical overlords. Plenty of software engineers would gladly join the bad guys if invited to their table. The Valley is full of turncoat software engineers who don’t give a shit about the greater mission of technology (using knowledge to make peoples’ lives better) and who’d gladly sell their colleagues out to cost-cutting assholes in management.

Then there are the losers. Losers aren’t “the bad guys”. They don’t have the focus or originality that would enable them to pull off anything complicated. Their preferred sin is typically sloth. They’ll fail you when you need them the most, and that ‘s what makes them infuriating. They just want to put their heads down and work, and the problem is that they can’t be trusted to “get political” when that’s exactly what’s needed. The danger of losers is in numbers. The problem is that so many software engineers are clueless, willing losers who’ll gladly let political operators take everything from them.

When you’re young and don’t know any better, one of the appeals of software engineering is that it appears, superficially, to tolerate people of low social ability. To people used to artificial competition against their peers, this seems like an attractive trait of the industry; it’s not full of those “smooth assholes” and “alpha jocks”. After several years observing various industries, I’ve come to the conclusion that this attitude is not merely misguided, but counterproductive. You want socially skilled colleagues. Being the biggest fish in a small pond just means that there are no big fish to protect you when the sharks come in. Most of those “alpha jocks” aren’t assholes or idiots (talk to them, nerds; you’ll be surprised) and, when The Business comes in and is looking for a fight, it’s always best to have strong colleagues who’ve got your back.

Here’s an alternate, and quite possible hypothesis: maybe The Business isn’t actually full of bad guys. One thing that I’ve realized is that people tend to push blame upward. For example, the reputation of venture capitalists has been harmed by founders blaming “the VCs” for their own greed and mismanagement. It gives the grunt workers an external enemy, and the clueless can be tricked into working harder than they should (“they don’t really like us and haven’t given us much, but if we kill it on this project and prove them wrong, maybe they’ll change their minds!”). It actually often seems that most of the awfulness of the software industry doesn’t come directly from The Business, but from turncoat engineers (and ex-engineers) trying to impress The Business. In the same way that young gang members are more prone to violence than elder dons, the most creative forms of evil seem to come from ex-programmers who’ve changed their colors.

The common enemy

So long as software engineers can easily be divided against each other on trivial matters like tabs versus spaces and scrotum versus kanban, we’ll never get the respect (and, more importantly, the compensation) that we’re due. These issues distract us from what we really need to do, which is figure out how to work The Business. Clawing at each other, each trying to become the favored harem queen of the capitalist, is suboptimal compared to the higher goal of getting out of the harem.

I’ve spoken of “The Business” as if it were a faceless, malevolent entity. It might sound like I’m anti-business, and I’m not. Business is just a kind of process. Good people, and bad people, start businesses and some add great value to the world. The enemy isn’t private enterprise itself, but the short-term thinking and harem-queen politics of the established corporation. Business organizations get to a point where they cease having a real reason to exist, and all that’s left is the degenerate social contest for high-ranking positions. We, as programmers, seem to lack the skill to prevent that style of closed-allocation degeneracy from happening. In fact, we seem to unintentionally encourage it.

The evil isn’t that software is a business, but that technical excellence has long since been subordinated entirely to the effectively random emotional ups and downs of non-technical executives who lack the ability to evaluate our work. It’s that our weird ideology of “never get political” is actually intensely political and renders us easy to abuse. Business naturally seems to be at risk of anti-intellectual tendencies and, rather than fight back against this process, we’ve amplified it just to enjoy the illusion of being on the inside, among the “cool kids”, part of The Business. Not only does our lack of will to fight for our own interests leave us at the mercy of more skilled business operators, but it attracts an especially bad kind of them. Most business people, actually, aren’t the sorts of corporate assholes we’re used to seeing run companies. It’s just that our lack of social skill appeals to the worst of that set: people who come in to technology to take advantage of all the clueless, loser nerds who won’t fight for themselves. If we forced ourselves to be more discerning judges of character, and started focusing on ethics and creativity instead of fucking tabs-versus-spaces, we might attract a better sort of business person, and have an industry where stack ranking and bastardized-“Agile” micromanagement aren’t even considered.

If we want to improve our situation, we have to do the “unthinkable” (which is, as I’ve argued, actually quite thinkable). We have to get political.

Why corporate conformity doesn’t work

Narcissism and conformism seem, at first glance, to be somewhat opposite of each other. A narcissistic person believes deeply in his own superiority: others are inferior, detestable, and exist to be used toward his own ends. Narcissists demand attention and adoration, and a continual recognition by the group in which they reside that they’re a cut above. If they can’t lead a group, because it won’t let them, they’ll sabotage it to prove (to themselves, if nothing else) that they were smarter all along. When in a leadership position, they’re typically bad at it, much more focused on “managing up”– that is, appealing to the higher-ranking and more successful narcissists above them– than truly leading the team. It’s not surprising that peoples’ narcissistic colors break out in the corporate world, in which invisible differences between people can produce order-of-magnitude differences is remuneration, division of labor, and respect. Most white collar workers secretly believe, like the narcissist but for different reasons, “I’m better than this job.”

Advocatus Diaboli wrote beautifully on this topic:

The most important difference between blue-collar and white-collar workers is not about differences in levels of formal education, artistic tastes or social attitudes. [It is about] how they see their peers. Blue-collar types tend see their peers as colleagues (good or bad) who are in the same boat they are in. White-collar types see their peers as life-long adversaries who do not belong in the same boat they are in. Some also believe that they “really” belong to a much more exclusive boat and were just plain unlucky to land in their one they are in. (Emphasis mine.)

I’ll get back to that contention, held by many, and (arguably) true for many. Most institutionalized working people are stuck in roles far below their capability. The “I’m too good for these people” contention is pure narcissism, devoid of value or truth. Most people, by definition, are average relative to the groups in which they reside. On the other hand, “I’m too good for this job” is, for many, an accurate reflection of reality. They’re being asked to do things that could be done with far less training, skill, and natural ability. That is, also, an uneasy place to be. People who are overqualified for their jobs can be replaced by (or, worse, surrounded by and eventually answering to) sloppier, less skilled, and cheaper workers. They’re more likely to see their conditions decline (as their positions are eliminated, commoditized, and consolidated) than ever to be recognized (unless they change companies) as built for better things.

Corporate conformity, on the other hand, appears superficially to be a denial of that narcissism. The corporate conformist’s modus operandi is to eliminate even the slightest suspicion of narcissistic stirrings. To distinguish oneself in any way is detrimental. Being the laziest person on the team is deadly, but so is being the hardest worker. Being the office liberal or office conservative or office Christian or office atheist is yet another way to ensure that promotion never happens. It’s not about what one’s political views are. Even when many people agree with him, the office liberal showed arrogance by thinking that his views matter and should be heard. Differentiating oneself should only be done in the blandest way. Even travel can be off-limits: going on more interesting vacations than one’s colleagues or superiors should not be talked about. Many young people attempt to cover gaps in employment with “world travel” and that’s a terrible strategy. If you’re going to lie to cover a work gap, use a painful, trying experience like a failed startup or a resolved health problem instead of travel, which induces resentment. No one envies mononucleosis.

Teamism

Corporate conformity doesn’t demand self-effacing retreat. In fact, the people who never speak up are just as likely to be sidelined as those who speak up in the wrong way. What it does require is adherence to a certain cult: teamism. One might notice that “team” is an overused and abused word in business. Executives call themselves “the leadership team” (gag!) in a public denial of what they actually are: an unprogrammed assortment of the most successful social climbers, still prone to (un-“team”-like) in-fighting.

Furthermore, the terminology of being “on” a team has its own interesting double-speak. At the bottom, team membership is discussed as factual organizational placement: which double-digit-numbered page of the org chart one’s name is written on. “Oh yeah, I’m on Tom’s team.” Executives and upper-tier managers use “on a team” to mean something different– undistinguished, mediocre, unproven, or just unlucky. As in, “if I fuck up this presentation, I might end up on a team in my next job”. The hideous, irrelevant truism, “there is no I in ‘team'” shows an understanding of how the business world actually operates. There are high-flying fighter pilots (I’s) with established personal brands. Recruiters know them by name, and great jobs come to them. Then there are teams which house the mediocre, commoditized losers who sit at the bottom and justify their petty salaries by picking up work that no one else wants to do.

Why teamism? Why is it so ubiquitous? Is it effective? (Yes, but to what end?) The answer is that American corporate life has experienced three fundamental phases of development, each corresponding to a position in the fundamental “What is human nature?” debate.  The first, which peaked in the Gilded Age, is what we call the “Theory X” view of management. Theory X holds that people (in particular, employees) are fundamentally dishonest, lazy, and selfish. This is the Hobbesian “human nature is evil” stance. A Theory X manager must intimidate his workers, lest they steal from him or slack. Beginning around 1925, the more progressive industrialists (such as Henry Ford) began to realize that this wasn’t entirely true. Theory X indicates that it’s most efficient to dominate people totally. But, empirically, shortening work hours increased productivity, and increasing wages resulted in both higher morale and more commercial success (because people could afford what was produced). At least relative to the frank indecency of Gilded Age management, human decency was proven to be good business.

From the late 1940s to the 1970s, Theory Y (“human nature is good”) dominated. Under Theory Y, workers are naturally self-motivated and creative, unless corrupted by bad management or intimidated into mediocrity. The Theory Y manager’s job is to remove obstacles and let the people below her create. People who are trusted, for the most part, will end up deserving it. Theory Y sounds wonderful; every workplace should be like that, no? So what killed it off? The culprit was the “elitism is sexy again” mentality that re-emerged in the Reagan Era (1980s). Theory Y was true enough when socioeconomic inequality was at an all-time low. For most workers, there wasn’t enough at stake to justify harming their employers. Doing something harmful, that would damage others’ careers or harm business operations, wasn’t worth it just to get a promotion that brought a 20% raise. People were probably just as narcissistic in the Theory Y heyday as they are now, but a 20% pay bump doesn’t give enough social distance for one to get away from the long-term reputation risks involved in harmful behavior. Change that raise to 500 percent, and it’s a different story. The narcissist is more empowered by the new calculus (“if I succeed, I’ll get away from these losers forever”). In 1965, there wasn’t as much to gain through bad behavior at work in 1985, when selling out an employer’s secrets to the nearest private equity firm got a person a job that paid in one month what the previous job paid out over a year.

The Theory Y workplace was trusting, open, and mutually altruistic and it could be, because external social inequality was at an all-time low. Selfish and bad behavior certainly has always been with us, and so it certainly happened even in the Theory-Y heyday, but there wasn’t the epidemic of it that could threaten a company’s existence. That changed in the 1980s, because the external stakes were so much higher. Workplaces had to become secretive, distrusting, and somewhat ruthless again. Bosses who weren’t feared had their careers ruined by a rising cohort of Boomer yuppies, and ceased to be bosses.

Theory X was driven by simple human greed, but its moral support came from  an “original sin” mentality, one that the secularism of the mid-20th century discarded. Calvinism held that work was, literally, a punishment for The Fall. That went out of style, and good riddance. Theory Y, however, proved itself to be too optimistic about human nature and what people are. By 1985, we’d seen as a society that people can be highly creative, industrious, and even altruistic with only moderate reward. The successful moon landing was executed not by billionaires, but by men and women who loved the work. So we’d seen some impressive Theory-Y victories. You simply wouldn’t be able to get something like the Apollo program with Theory-X management. We’d also seen that Theory Y’s optimism (echoes of which still exist in the culture of Silicon Valley, despite extreme Theory-X behavior at the top) didn’t have the whole picture. Given a sweet enough carrot, some people would do the wrong thing, and while it might not be that most people would, we’d seen that there are enough such people to present an existential threat to a business– or, at least, to a too-trusting executive’s career. We had to invent something new. If Theory X was the original-sin thesis, Theory Y was its antithesis; the synthesis became what I call “Theory Z”, or the cult of teamism.

Is human nature good, or evil? For a simplification, let’s identify “good” with altruism and “evil” with militant selfishness (egoism). Few people are degenerately egoistic, but even fewer are universally altruistic. Most people are localistic. They do care about people and things beyond themselves: their families, their physical neighborhoods, their companies and nations, and so on. People view themselves at the center of a nested collection of neighborhoods and care about the closest and smallest ones the most. The greater the distance (social, tribal, or physical), the less they care. None of this is surprising, and what it tells us is that human nature isn’t prevailingly “good” or “evil”. It’s somewhere in between, for most of us. In the corporate context, this predicts that peoples’ “corporate altruism” should be strong in a small company and weaker in a large one, and we see that to be true. It tells us that people would rather delegate undesirable work to a remote office (especially in a foreign country) than burden their officemates. That, we also see. The social and emotional bonds that are relevant tend to be formed over time through shared experience and physical co-presence. While Theory X motivates by intimidation, and Theory Y believes people are intrinsically rightly motivated so long as management doesn’t corrupt them, Theory Z attempts to harness team cohesion: bonds formed by physical closeness as well as shared experience (and suffering). Theory X was obsessed with the egoistic human, and Theory Y believed in a fundamental altruist; Theory Z is a practical (but intensely manipulative) approach focused on localism. The Theory Z manager recognizes that the individual worker doesn’t give a damn about the company as a whole (and, since Theory Z is closer to X than Y, most companies aren’t worth caring about, from a worker’s perspective) but is willing to bet that he won’t fuck over his buddies.

Mike Cohn explains it well in the software context, with this short blog post, “Sssh… Agile Is All About Micromanaging.” Those blessed enough not to be familiar with the cult that has been made of “Agile” can still learn much from this revelation.

[T]he deep, dark secret of agile: It’s all about micromanagement. Almost every principle and practice of agile is there to support micromangagement.

  • The daily scrum is about micro-managing the team’s daily work plans and making sure that everyone is doing what they say they’ll do. […]
  • Pair programming is about making sure that programmers don’t lose focus, don’t goldplate, don’t work on only the fun stuff, and that they clean things up.

Ah, but who is it that is doing this micromanagement? It’s the team.

The purpose of the Theory Z teamism is to replace one boss five hundred feet away with ten bosses twenty feet away. It’s to diffuse responsibility when people are rejected (fired). The official manager can deflect responsibility by claiming “the team” discarded the unwanted employee. It also makes it easier for people to play political games while remaining vague in whom they are attacking. Instead of discussing specific people, they can say “the tech team is weak” and (in truth) target specific people (possibly the CTO, possibly the specific person on that team related to a matter) with plausible deniability. The purpose of Theory Z teamism is to make Theory X (micromanagement, prevailing distrust, executive greed) look like Theory Y (commitments and “consensus”). In a world that has outgrown top-down religion (Theory X) but found secular humanism (Theory Y) toothless, local microcults are the new rage. Theory Z encourages management to tailor microcults to specific corners of the company. The cloying, common theme within and between these microcults is team. The executive suite is “the leadership team”. HR won’t let you call a disliked employee a “shithead”, so you call him “not a team player”. It enables the upper management (still inclined to Theory X thinking) to hide the true dynamic of the relationship between (exploited) employee and (rent-seeking) organization by redirecting the focus to employee and “team”. You wouldn’t drop the ball on your team, Mac?

If my negativity about teamism makes it sound like I’m “anti-team”, that’s not the impression that I’m trying to convey. When an actual team synergy exists, it’s great for everyone. It’s more fun to be on a winning team than to win alone. All that said, the truth of most organizations is that there are no winning teams. The winners are executives, ace fighter pilots, and proteges who get to move about the company as themselves. It’s the rest, the non-Elect losers, who are “on a team”. The corporate world is one in which the winners interoperate with multiple teams as they choose, rather than being stuck at one table in an assigned seat. Of course, the executives still call themselves “the leadership team”, but that’s just how they market themselves internally within the organization. They aren’t a team in any meaningful sense. They’re out for themselves, and they wouldn’t be executives if they were any other way. Those who are “on a team” are the ones who don’t have any independent credibility, but who serve at the mercy of parochial “team leaders” (middle managers). Theory Z isn’t about teamwork. It’s about corralling the disaffected losers that a company still needs and saying, “be a team, now!”

My issue, then, isn’t with teamwork or genuine team formation, because those aren’t what Theory-Z teamism is. Teamism is forced team identity. Its seed mythology is that those who have been slotted by fortune (or misfortune) to answer to the same middle manager constitute a “team” in any meaningful sense. It lends false objectivity (“not a team player”) to the language used to denigrate and discard those who awaken and realize that the corporate gods don’t exist. Finally, it glorifies mediocrity and slave mentality, by applying terminology with positive associations (such as genuine teams that achieve things that would be extremely difficult, if not impossible, for an individual) to the unfortunate, miserable state of being at the bottom of an organization.

Counter-narcissism

Teamism (“team unity”) is the justification for the extreme conformity that the corporate environment demands. When a person has multiple bosses, with new dotted lines forming at all times, there isn’t room for self-expression, and the optimal strategy is to be as bland and average as one can be, except in short bursts of targeted activity intended toward a specific promotion. (Failure often results in termination, so one must be prepared for that.) To stand out is taken, implicitly, to be a personal statement of, “I don’t have to follow your rules”, which is interpreted as “I’m too good to follow your rules”. While narcissism is tacitly accepted in the executive ranks– at a high enough level, they’re all narcissists or they wouldn’t be there– even a whiff of narcissism is viewed as toxic when it appears “on the team”. Teamism, then, is a militant anti-narcissism. It seeks out and punishes those who think they’re too good for their jobs, or who just seem to think so. As a side effect, this also punishes excellence, because people who do their jobs uncannily well are going to appear to be up to something (Theory X). Teamism is great at inducing uniformity and reliable mediocrity, and quite successful on its own terms, but it does a terrible job of encouraging people to perform beyond the Socially Acceptable Middling Effort, or the SAME.

In the short term, teamism does a fantastic job of getting what the executives want, which is for people to work hard under an assumed “social contract” with the team. The thing is that “the team” has no power. The organization can break the social contract at any time, and argue that it never existed. Over the long term, this leads inexorably to corporate degeneration. (Executives know this, but tolerate it because they’ll be promoted away from their posts before it’s a personal issue for them.) Teamism encourages people to target their effort levels toward the SAME. People who are talented can usually achieve the SAME and have energy to spare, and will find their way to better places. (This may have them promoted into upper management, or moved to better teams, or externally promoted into another company; or, it might get them isolated, rejected, and fired. Either way, the result is the same: they leave.) This has an “evaporative” effect: the more competent people leave, and the less able stay. Underperformers gradually push the SAME downward, it being safer to slightly underperform than overperform in most organizations. The SAME drifts, slowly but inevitably, toward zero. After a while, upper management will take note, but by this time, it’s often too late to do anything about it, and the remedies that do exist are toxic ones that don’t work. Executives might attempt to institute stack ranking, for example, to scare people back into working. This, however, re-awakens the narcissism and political machination that the teamism was invented to tamp down.

What is the corporate value of teamism? Why do contemporary corporate executives favor it over the management-by-fear Theory-X style, or the permissive altruism of the Theory-Y school? The short answer is that Theory Z teamism is Theory X with Theory Y trappings. It allows organizations to behave in a Theory X way (rent-seeking, throwing loyal employees overboard for any cause) while encouraging the worker to focus locally, on people in the same boat, whom one is inclined to empathize with. The longer answer is that teamism is better at exploiting cognitive dissonance as well as guilt. Teamism is aggressive counter-narcissism, its purpose being to inculcate people with the belief that they aren’t too good for their shitty jobs. If they sit on teams, and they see similarly talented people underutilized on low-quality work, it strengthens the executive case. Abstractly, most white-collar workers think (or, I would argue, know) that they’re good for what they’re asked to do. When they go into an office and see others suffering just as much as they are, it’s much harder to hold that view, because (although I disagree with this reasoning) it equates the thought, “I am too good for this job”, with “I am better than him, that guy doing an equivalently crappy job”. Some people think that way about those they sit next to on a daily basis, but most people don’t like thinking that way. Hence, cognitive dissonance sets in. If people become used to the sight of highly qualified people in humiliating, subordinate roles doing menial work, they’re likely to accept that situation for themselves.

The business view

What, pray tell, do executives gain from this? After all, isn’t it a business loss to underemploy people? On paper, it might be. Potential revenue (opportunity cost) is squandered when highly-qualified people are assigned to low-quality work. However, the profit-maximizing organization is a fictitious person. It doesn’t really exist, insofar as it cannot implement its will. For that, it relies on executives, individuals who’d rather hold a high degree of control in a malfunctioning organization than risk that control to improve it. The executive doesn’t give a damn about the organization’s profitability or long-term health. He only cares about the effect of those variables on his career, and he realizes that his needs are best served by keeping the people around him loyal. Knowing this, he often benefits more by hoarding control than anything else. A false scarcity in the allocation of important or desirable work is a powerful tool. Giving some of that power up (say, by implementing open allocation) might make the organization better and more successful, but it won’t make it easily controllable.

There is, at root, a fundamental conflict of interest between “the business” (and its desire to maximize profit, revenue, or subjective health) and the executives who actually control it. It is best for the business that all employees have the chance to contribute as usefully as their talents allow, but it’s best for executives to keep important work assigned only to proven loyalists who, even should they outperform their executive patrons, will never challenge the position of the ones who lifted them.

False scarcity

The reality, for most white-collar workers, is that their narcissistic impulse isn’t entirely wrong. Most of them are too qualified for their positions. To understand why I can assert this as if it were an objective fact, let’s examine the nature of a subordinate organizational role. To say that someone is “too good” for a specific task is a bit offensive and not especially defensible. I have cats, I clean their litter box, and I’m not “too good” for that job because someone has to do it. From first principles, the fact that work is unpleasant and menial doesn’t mean that a talented person should be “too good” for it. (People who think otherwise are likely to be actual narcissists.) So the positive definitions of a role (i.e. the things one is expected to do) don’t make a job “beneath” a talented person. So I won’t focus on unpleasant duties. Rather, I’ll focus on the negative definitions associated with a subordinate role, or the do-nots. Don’t attempt cultivate a relationship with anyone above your manager. Don’t work on things you weren’t explicitly assigned to do. Don’t speak “off script” in the presence of important people. These prohibitions (and not specific undesired tasks) are the causes that give a person of even moderate talent the justification in believing that he’s simply too good for the role.

I’d argue that most people are, factually, too good for their jobs. As I’ve said above, I don’t think anyone is too good to do an unpleasant task if it must be done. The truth is, however, that most of white-collar work isn’t about performing necessary tasks or about producing anything. It’s about managing perceptions, helping one parochial warlord beat out another, and appearing subordinate enough to (a) please one’s immediate manager, and (b) present a positive image of that manager to his superiors. Most white-collar office workers have to be present for 8 (or more) hours each day not because there’s that much work (there usually isn’t) but because working fewer hours would present the image that their bosses can’t control their charges. For the white-collar worker, most of one’s “work” time is spent supporting authority through sacrifice (most visibly, of time) rather than producing anything real. Most of the stress doesn’t come from the tasks to be performed, but from the chronic job of presenting oneself in a way that one can acquire and maintain permission to do meaningful work, which is kept in short supply by the parasites (executives) who define and allocate it. Most of the work that is done is just there to keep up appearances in an organization that could do just fine without half its people, but (luckily for them) is constitutionally incapable of figuring out which half.

When talented people realize their real jobs aren’t to produce but to subordinate, they conclude (accurately): I’m too good for this bullshit. And they’re right, all of them. They deserve better. That’s not narcissism. It’s accurate self-perception within an institutional prison that shouldn’t exist.

If people awakened to this at once, and collectively, it could spell the end of the current corporate system. What has to happen, to prevent that, is to single out those who awaken and shame them as narcissists. Closed allocation systems work exactly to that purpose. One who puts himself out there by (usually unwisely) suggesting he’d be more useful to the company doing something else can then be interpreted as acting as if he’s too good for his team and immediate manager. This makes him disliked and will have him rejected by the team (and fired) in time, intimidating those who remain. Toward the executives’ goal of maintaining control at all costs (even when it harms or may destroy the company) it is brilliant, because even the slightest internal assertions are penalized automatically. Theory Z teamism is perfect from a parasitic executive’s perspective. Most people are intelligent enough to distrust and dislike corporate executives, even within their own companies. Few people are stupid enough to overlook the fact that at least 80 percent of these high priests called “executives” are overpaid, pampered, worthless parasites. The result is that anti-executive sentiment (possibly leading to unionization, which would threaten management’s power and profits) would spread quickly if people weren’t inculcated into a sort of cultish, corporate religion. The brilliance of Theory Z is that it has people convinced they are working not for upper management (which they, rationally and rightly, couldn’t give a damn about) but their immediate team.

The result is a punitive, miserable system in which even the slightest self-assertions– even normal human impulses– are treated as arrogant narcissism. (Many religions and most cults use the same dynamic; not to believe certain improbable claims is made into rejecting one’s community.) Few people will take that social risk, and the result is an extreme conformism.

The twist

If a sort of militant anti-individualism, presented as anti-narcissism, takes hold in an organization, extreme conformity will result. Perhaps surprisingly, most people are unaware that it has happened. “My company isn’t like that.” Sorry, but it probably is. Unless you have direct on-the-spot responsibilities to important customers, showing up at specific times, regardless of whether there is work to do, is conformity. Working only on assigned projects, or only on projects assigned to a specific subcorner (sorry, I mean “team”) of the company, is conformity. Spending 8 hours per day in a state of low-level social anxiety (the long-term health risks of which are poorly publicized) not because it produces useful work, but to uphold a power relationship, is conformity. I think, sadly, that I’m accurate in arguing that over 90 percent of American workplaces are conformist hellholes that destroy creativity and squander (abuse, even) talent. Some may think that technology companies or VC-funded startups might provide a way out but, empirically, those are some of the worst in this regard.

So what about narcissism and its purported antithesis of “being a team player”? Ultraconformist workplaces might be undesirable, but shouldn’t one agree that narcissism is a bad (and, to a business, dangerous) thing? Might it be worth it to suffer a bit of conformity if the negative effects of the true narcissist are curtailed? Don’t the people at the bottom need to learn, anyway, that they aren’t special snowflakes?

Reality intrudes. Here’s the thing about conformity: it might seem like an antidote for narcissism, but it needs to be enforced. By whom? Who wants the role of conformity’s Enforcer? Generally, such people turn out to be narcissists, those who arrogate the role of speaking for a large group (as large can they can get) because of the power it commands. Narcissists, of course, love power, and have the deepest understanding of the impulses (narcissistic and otherwise) that impel others to compete with them for it. The result is that, the more conformist an organization’s culture is, the more power that organization has already given away to true narcissists.

This gets to the heart of what I’ve taken to calling the Organizational Problem. Simply put, organizations cannot be stable because they rely on people to keep them up, and because the power associated with upkeep often attracts the worst kinds. Organizations have a justified fear and dislike of the true narcissist, because such people are truly toxic when in positions of power. What they are unable to prevent, seemingly without exception, is the ability of the toxic narcissist to gain entry into whatever suborganization (be it management or an official “culture police”, as some startups have) it relies on to spot and kick out narcissists. Psychopaths truly are the cancer cells of the human organization, the fittest ones not only able to elude the immune system, but often capable of redirecting it against healthy cells.

The case for corporate conformity is that it blocks the advancement of narcissists, who supposedly can’t thrive in a conformist environment. The (completely wrong) assumption is that, because the conformist environment denies individual expression (much less admiration) the psychopath or narcissist will be unable to function in it. The reality is that narcissists (and especially psychopaths) love conformist environments. The slightly-narcissistic normal person sees the corporate conformity– the rules and expectations it imposes on people– as restraint; but the psychopath sees them as weapons. It’s no surprise that psychopaths like weapons. (Non-psychopathic narcissists do, too, but for different reasons. In general, they prefer to wear but not use the sword.)

The Organizational Problem is so convoluted and deep that I cannot offer a general solution. I wish I could. I’ve tried to find one and, honestly, haven’t been able to come up with anything simple enough to impart in a few thousand words. I don’t think there is a “closed-form” answer. I think the best that we can do, on the ground, is to remove the obstacles that don’t work, on the grounds that they generate social complexity that will, in general, benefit the narcissist and the psychopath. The first step for us, all of us, might be to accept our basic humanity and reject the toxic conformity that seems to settle, if unopposed, in the corporate world.

What’s a mid-career software engineer actually worth? Try $779,000 per year as a lower bound.

Currently, people who either have bad intentions or a lack of knowledge are claiming that software engineer salaries are “ridiculous”. Now, I’ll readily admit that programmers are, relative the general population, quite well paid. I’m not about to complain about the money I make; I’m doing quite well, in a time and society where many people aren’t. The software industry has many problems, but low pay for engineers (at least, for junior and mid-career engineers; senior engineers are underpaid but that’s an issue for another time) doesn’t crack the top 5. Software engineers are underpaid, relative to the massive amount of value (if given proper projects, rather than mismanaged as is typical) they are capable of delivering. In comparison to the rest of the society, they do quite well.

So what should a software engineer be paid? There’s a wide disparity in skill level, so it’s hard to say. I’m going to focus on a competent, mid-career engineer. This is someone between 5 and 10 years of experience, with continual investment in skill, and probably around 1.6 on this software engineering scale. He’s not a hack or the stereotypical “5:01″ programmer who stopped learning new skills at 24, but he’s not a celebrity either. He’s good and persistent and experienced, but probably not an expert. In the late 1990s, that person was just cracking into six-figure territory: $100,000 per year. No one thought that number was “ridiculous”. Adjusted for inflation, that’s $142,300 per year today. That’s probably not far off what an engineer at that level actually makes, at least in New York and the Bay Area.

Software engineers look “ridiculous” to people who haven’t been software engineers in 20 years (or ever) and whose numbers are way out of date. If you’re a Baby Boomer whose last line of code was in 1985, you’re probably still thinking that $60,000 is a princely sum for a programmer to earn. When one factors inflation into the equation, programmer salaries are only “at record high” because inflation is an exponential process. Taking that out, they’re right about where history says they should be.

I would argue, even, that programmer salaries are low when taking a historical perspective. The trend is flat, adjusting for inflation, but the jobs are worse. Thirty years ago, programming was an R&D job. Programmers had a lot of autonomy: the kind of autonomy that it takes if one is going to invent C or Unix or the Internet or a new neural network architecture. Programmers controlled how they worked and what they worked on, and either answered to other programmers or to well-read scientists, rather than anti-intellectual businessmen who regard them as cost centers. Historically, companies sincerely committed to their employees’ careers and training. You didn’t have to change jobs every 2 years just to keep getting good projects and stay employable. The nature of the programming job, over the past couple decades, has become more stressful (open-plan offices) and careers have become shorter (ageism). Job volatility (unexpected layoffs and, even, phony “performance-based” firings in lieu of proper layoffs, in order to skimp on severance because that’s “the startup way”) has increased. With all the negatives associated with a programming job in 2014, that just didn’t exist in the 1970s to ’80s, flat performance on the salary curve is disappointing. Finally, salaries in the Bay Area and New York have kept abreast of general inflation, but the costs of living have skyrocketed in those “star cities”, while the economies of the still-affordable second-tier cities have declined. In the 1980s and ’90s, there were more locations in which a person could have a proper career, and that kept housing prices down. In 2014, that $142,000 doesn’t even enable one to buy a house in a place where there are jobs.

All of those factors are subjective, however, so I’ll discard them. We have sufficient data to know that $142,000 for a mid-career programmer is not ridiculous. It’s a lower bound for the business value of a software engineer (in 1999); we know that employers did pay that; they might have been willing to pay more. This information already gives us victory over the assclowns claiming that software engineer salaries are “ridiculous” right now.

Now, I’ll take it a step further and introduce Yannis’s Law: programmer productivity doubles every 6 years. Is it true? I would say that the answer is a resounding “yes”. For sure, there are plenty of mediocre programmers writing buggy, slow websites and abusing Javascript in truly awful ways. On the other hand, there is more recourse for a good programmer who find quality; rather than commit to commercial software, she can peruse the open-source world. There’s no evidence for a broad-based decline in programmer ability over the years. It’s also easy to claim that the software career “isn’t fun anymore” because so much time is spent gluing existing components together, and accounting for failures of legacy systems. I don’t think these gripes are new, and I think tools are improving, and a 12% per year rate sounds about right. Put another way, one who programs exactly as was done in 1999 is only about 18 percent as productive as one using modern tools. And yet that programmer, only 18% as productive as his counterpart today, was worth $142,000 (2014 dollars) back then!

Does this mean that we should throw old tools away (and older programmers under the bus)? Absolutely not. On the contrary, it’s the ability to stand on the shoulders of giants that makes us able to grow (as a class) at such a rate. Improved tools and accumulated knowledge deliver exponential value, but there’s a lot of knowledge that is rarely learned except over a decades-long career. Most fresh Stanford PhDs wouldn’t be able to implement a performant, scalable support vector machine from scratch, although they could recite the theory behind one. Your gray-haired badasses would be rusty on the theory but, with a quick refresh, stand a much greater chance of building it righjt. Moreover, the best old ideas tend to recur and long-standing familiarity is an advantage. The most exciting new programming language right now is Clojure, a Lisp that runs on the Java Virtual Machine. Lisp, as an idea, is over 50 years old. And Clojure simply couldn’t have been designed by a 25-year-old in Palo Alto. For programmers, the general trend is a 12% increase in productivity; but individuals can reliably do 30 percent or more, and for periods spanning over decades.

If the business value of a mid-level programmer in 1999 was $142,000 in today’s dollars, then one can argue that today, with programmers 5.7 times more productive, the true value is $779,000 per year at minimum. It might be more. For the highly competent and for more senior programmers, it certainly is higher. And here’s another thing: investors and managers and VPs of marketing didn’t create that surplus. We did. We are almost 6 times as productive as we were in the 1990s not because they got better at their jobs (they haven’t) but because we built the tools to make ourselves (and our successors) better at what we do. By rights, it’s ours.

Is it reasonable, or realistic, to argue that mid-career software engineers ought to be earning close to a million dollars per year? Probably not. It seems to be inevitable, and also better for society, that productivity gains are shared. We ought to meet in the middle. That we don’t capture all of the value we create is a good thing. It would be awful, for example, if sending an email cost as much as sending a letter by post or, worse yet, as much as using the 19th-century Pony Express, because the producers of progress had captured all of the value for themselves. So, although that $779,000 figure adequately represents the value of a decent mid-career engineer to the business, I wouldn’t go so far as to claim that we “deserve” to be paid that much. Most of us would ecstatic with real equity (not that 0.05% VC-istan bullshit) and a quarter of that number– and with the autonomy to deliver that kind of value.

If you’ll ever die, don’t apply

Some day, I will die. So will everyone I know, everyone who has read this post, and everyone they know. I’m probably more than a third of the way there. I’m not especially afraid of it. Actually, I’m curious. Though I don’t subscribe to any religion or believe in anything resembling an anthropomorphic god or gods, I think it’s more likely than not that something interesting will be on the other side. (If I’m wrong, I won’t know.) All that said, I’m going to die some day, and even before that I’ll experience involuntary change (aging). It’s not an easy thing to forget, and it’s not a thing that I should forget. There’s no virtue in ignorance. And, despite not having any specifically religious faith, I’m pretty sure that what a person does in this life matters. Something in me is convinced that the ultimate reality of human existence is somewhere between the dichotomous nihilisms of materialist reductionism (existence ends fully at death, so all will be erased) and mainstream religion (only the next world matters). Perhaps that is why Buddhism (and its tendency toward middle paths on such questions) appeals to me more than the mainstream interpretations of the Abrahamic faiths (in particular, Christianity). The assertion that believing in the existence of a certain being (who left no evidence of his existence) is the key variable in separating people out for eternal bliss or agony is, in truth, far more nihilistic than most atheistic beliefs.

I’m not a nihilist; whatever this life is, it’s not to be thrown away. I conceive of myself, however, as a realist. I’m not immortal, and even though I haven’t really begun to age (I’m only 30) in any painful or even inconvenient way, I’m increasingly aware of the fact that I will die. People who are young and healthy one year are dead in the next. I’ve seen it happen too many times.

I’ve written at length about Silicon Valley’s perverse bubble culture and its obsession with youth. There isn’t a meaningful physiological difference between a 22-year-old and a 35-year-old that has any business importance. I think, however, I understand what Silicon Valley’s youth obsession is actually about: not age, but immortality. No one is immortal, but some people think they are. They haven’t learned the value and price of time yet. Nothing bad has happened to them yet. They still conceive of themselves as invulnerable.

These venture capitalists don’t just want to fund 22-year-old white males. They fund a specific kind of 22-year-old, white males: people who can trick themselves into living outside of time (and, more practically, throwing their time and health away, often at a pace of 100 hours per week, for someone else’s benefit) because they haven’t been reminded yet, by life, that they very much live in time.

The difference between the 35-year-old and the 22-year-old is not personal health but experience. The 35-year-old has had parents, aunts, and uncles get old, get sick, and die. He’s seen college classmates (and more than an unlucky one or two) lose the cancer lottery and die at a ridiculously young age. He realizes that time brings involuntary, unexpected, and sometimes painful change, and that a year of life spent “paying dues” or enriching ingrates is a permanent loss. Most 22-year-olds haven’t learned those lessons yet, and those who have are unfundable in the current Valley.

The “job hopper” stigma and “team player” nonsense of Corporate America, after all, make sense for people who haven’t figured out yet that their time is finite: that the “technological singularity” might not happen in the next 100 years, that “old people” were once as young as them, that they’ll get old and die and that it will always seem too soon. Those who believe themselves to be immortal are appealing to the exploitative overseers. They value the present at zero, convinced of some superior and unending future (one that will never come, except for the politically sacrificial and lucky). They are (for the moment) timeless and therefore without much memory.

I’ve always feared that if humans became technologically immortal, but if we did not succeed in ending scarcity, the first thing that an elite would do would be to create a “zombie” class of people who (like us mortals) lose most or all memory every hundred years or so, lest they acquire the knowledge that enable them to compete with the existing elite. They would continue to die (in effect) but be biologically maintained as peak-of-their-prime adults (to perform work, for others’ behalf) and probably conceive of themselves as immortal. Obviously, that doesn’t exist yet; the technology isn’t there. But culturally, it’s already happening. Of course, indefinite life extension and memory erasure aren’t there. Instead, the old class of immortals (once they become aware of their own mortality, and seek genuine purpose and value, rather than the enrichment of an ingrate elite, out of their work) is discarded and a new one is put in place.

Silicon Valley is for the immortal. If you’ll ever die, don’t apply.