Alienating Ourselves: A Response to Justin Searls on 10x Developers
In a recent blog post, Justin Searls of Test Double claims that 10x developers are fading away, because the conditions that make one a 10x developer were more prevalent for developers born before 1990. The difference between those born before 1990 and those who come more lately is, according to Searls, enthusiasm. That is, before the huge influx of cash into the industry, programming was simply "a firmly middle class job that appealed to people who really loved computers." More simply, Searls thinks there wasn't a strong incentive to become a developer other than you were a computer enthusiast, a hobby that boomed during the personal computing revolution. Now, programming has become a "comfortably upper-middle class profession that attracts anyone who wants to secure their financial future," meaning that people who don't particularly enjoy or have an enthusiastic interest in computers are becoming developers. He doesn't see people programming for the cash to be a problem, but he does predict a looming generational conflict between the 10x enthusiasts and the mere professionals.
However, even if we grant Searls' claims about 10x developers and enthusiasm, I don't see why the field gaining careerists would drive enthusiasts, and thereby 10x developers, to extinction. The same incentives still exist for people who are enthusiastic about programming to become developers, whatever the corresponding increases in cash incentives. It just draws non-enthusiasts in greater numbers. Nor was there a singular moment in history where computers were just right to create enthusiasts, as the following facts are manifest:
- enthusiast developers under 30 exist in great numbers
- many enthusiast developers born before 1990 do not have a programming origin story like Searls lays out (including me!)
Given these facts, at most, the proportion of enthusiast developers in the field might decrease, but they would not become depleted. In fact, I would think that by Searls' lights, there should be numerically more enthusiast developers in the industry than ever before. So if there is a looming conflict between enthusiasts and mere professionals, there isn't strong reason to believe the shift is generational.
But Searls' blog post, by his admission elsewhere, isn't really about 10x developers. I would argue it isn't even really about the empirical claims about generational incentives (which would be a lot of work to prove, I might note). What it's really about, in my opinion, is a connection between enthusiasm and productivity, and the way we developers sometimes misuse our enthusiasm for programming in order to become more productive at work.
The Good Life and Alienation #
What makes a life go well? What leads to human flourishing? What makes lives more or less meaningful? These are difficult philosophical questions to answer, and in the Western tradition of philosophy, these questions go back at least to Socrates himself. But we don't need a full theory of the good life or meaningfulness to know that some things are likely to make one's life go worse. For instance, working excessive, unpaid overtime hours on a work project only to make others richer, most of us would say, does not make one's life go better. But this is exactly what many of us enthusiast developers, including me, do on a regular basis, whether or not we're 10x developers (which I'm certainly not).
The concept of a 10x developer is fraught, and perhaps mythical, and so I think we should abandon it for a more realistic term: a hyperproductive developer. A hyperproductive developer can finish more work than the average developer (aka, a productive developer) in the same amount of work days. Perhaps the hyperproductive developer works more off hours than the average developer, or is unusually efficient, or both. Contra Searls, I don't think there's any necessary connection between enthusiasm and hyperproductivity. I do agree with Searls that many of us who are enthusiasts, people who live to program, use our enthusiasm to power their productivity at work.
In particular, hyperproductive developers regularly work extra hours when the costs clearly outweigh the benefits of just logging off, and they are able to motivate themselves to keep going through their love of code. Probably the most severe costs of hyperproductivity are burnout and workaholism. But what's more interesting to me, philosophically speaking, is that hyperproductive developers are needlessly alienating themselves from their creative forces.
Alienation #
Karl Marx and Friedrich Engels famously defended their concept of alienation in The German Ideology, noting that once human societies engage in a division of labor, each person has an exclusive sphere of activity: "He is a hunter, a fisherman, a shepherd, or a cultural critic, and must remain so if he does not want to lose his means of livelihood" (The German Ideology, MECW V, 47). In tech, we are generally pigeonholed much further in what we kind of work we do. But if I am to truly flourish, Marx and Engels argue, I require freedom to pursue any branch of activity I wish, where I can "do one thing today and another tomorrow, to hunt in the morning, fish in the afternoon, rear cattle in the evening, criticise after dinner, just as I have a mind, without becoming hunter, fisherman, shepherd, or critic" (ibid.).
In terms of we enthusiast developers, the ideal world would be one where we could do (say) data science in the morning, compiler design in the afternoon, web applications in the evening, embedded systems work after dinner, just as we have a mind, without becoming committed to these as job titles. In such a situation, our work is our life, in a good way: "My work would be a free manifestation of life, hence an enjoyment of life" ("Comments on James Mill", MECW III, 228). This enjoyment comes from making something through an activity where my life, my creative energies, would be made manifest in something external to me, and I can have the pleasure of being recognized in my work, by myself and others (ibid., 227). However, when I make something for a company, a boss, a client, etc., I am alienated from the fruits of my labor: it belongs to that company, boss, client, and my work is unrecognizable in the product. As a result, "my work is an alienation of life, for I work in order to live, in order to obtain for myself the means of life" (ibid., 227). I am not living to program anymore, I am programming to live.
Obviously, as professional developers, we must program to live. But why, as enthusiast developers, do we program to live after hours? Why do we not live to program (or whatever other activity we desire) outside of work? We must resist the urge to conspire in our own alienation, and use our creative forces for better pursuits than work in our free time. Rather, we should be using our creative energies on software projects that fulfill us and will make the world closer to a place where anyone can pursue any branch of knowledge or activity, just as they please.
Bibliography #
MECW: Marx, Karl and Friedrich Engels. Karl Marx, Frederick Engels: Collected Works. New York, International Publishers. 1975-1987