The Time I Ruined Programming
Nearly all programmers have slowdowns and periods where they just can’t get anything done. It’s why we hate two-week “sprint” nonsense and stack-ranking; no one wants to be watched by a guy in a guard tower with a gun, just waiting to pop the programmer who slows down the chain.
When people learn how to program, they do so enticed by what the job once was: an R&D job of pure creation, free of nonsensical deadlines and business-driven engineering. A computer science curriculum doesn’t prepare one to be a bored grunt, but for a life of work on projects like compilers, interactive games, and machine learning algorithms. Of course, only a lucky few get paid to do that kind of stuff. Most programmers end up writing and maintaining boring business programs, solving problems that are only challenging because of tight deadlines and the sheer weight of bad decisions made before.
The truth is that I have no use for people who are constitutionally insubordinate. To blindly disobey orders, because they are orders, is even more idiotic than blindly following orders. Civilization requires what I call operational subordination. An example would be stopping at red lights while driving. We do this not because we consider ourselves inferior to these robotic lights, but because driving wouldn’t be safe if we didn’t obey their directives. We don’t think of it as subordination; it’s just good sense.
Workplaces, of the Theory X variety that has become the norm since the downsizing epidemic of the past few decades, don’t settle for operational subordination. They want personal subordination. The good of the company (read: the careers and reputations of executives) must take a higher priority than the career goals and personal needs of the worker, and the worker is expected not simply to obey stated commands, but to internalize this sense of moral inferiority. If he has no orders, he must ask for more work.
Programmers, by and large, don’t mind operational subordination. In fact, we have an affinity for it. We like to solve complex problems with simple rules that make sense. We operationally subordinate, every day, to the syntactical demands of a compiler that simply won’t do anything with code it cannot parse. When rules are sane, and the benefit in their existence is obvious, we eagerly follow them. It’s the personal subordination that burns us out. We’re smart enough to spot a system that demands personal loyalty from us, while refusing to reciprocate, and it disgusts us. We recognize that our rules-based, overly rational way of thinking is under attack; someone is trying to hack us and take advantage.
Employers have successfully dumbed programming down. Large companies may need a few excellent programmers, but line-of-business software can be done by people of mediocre talent who’ll accept bad wages and worse working conditions. Scrum is not going away. Does it produce excellent software? No, not even close. It doesn’t even produce secure or safe or maintainable software. It works just well enough that deliverables get deliverated, and just barely so but at a sufficiently close approximation to working software that executives get promoted away from their messes before anything starts falling apart at a macroscopically visible level.
Now that I’m older, I have almost no passion for programming as an end in itself– an average corporate codebase is far more complex than anything I would intentionally write, and yet that complexity is wasteful and ugly– but, still, certain problems that can be solved with software interest me.
On the other hand: code for code’s sake, in million-line piles of corporate cruft and the dead shells of Jira tickets? Nah, I’m done with that. That really is a young idiot’s game.
Part II: The Fourth Turning
At any rate, let’s get back to the 21st century. One disturbing trend is that work is becoming more subordinate. I know, because I’ve been involved in making it so.
A few years ago, I worked on a “performance management” system, imposed on truckers, that would track which drivers were too fast, which were too slow, and even which drivers were eating lunch off-route to save money or have time with their children. It doesn’t save much to prohibit a driver from eating off-route: how much does five miles’ worth of gas cost? But, thanks to technology, this surveillance costs even less.
One could argue that Agile and Jira are programmers’ own professional karma. What we’ve allowed to be done to every other class of worker is now being done to us. It shocks us more than it should.
Globalization is inevitable and desirable, but we’re letting it go off in a way that benefits the rich and eviscerates the middle class. Technological automation is wiping out jobs, and surveillance is turning high-autonomy, fulfilling jobs (like what programming used to be, when it had that R&D flavor) into drudge work. The high-surveillance culture doesn’t merely make the workplace unpleasant, but also lowers the bar for who can contribute– it becomes profitable to employ unskilled scabs, if surveillance becomes cheap enough– depressing wages further. Though Agile Scrum reduces the effectiveness of competent programmers, it turns incompetent ones into marginally employable code-cutters. So what happens? Well, employers replace the high-talent curmudgeonly experts with scrummy rent-a-coders, and wages nosedive. Furthermore, as jobs are wiped out in one industry, people who worked in it become “refugees” and flow into another, making that industry more competitive, and driving wages down further.
Technical progress, from a humanistic standpoint, has slowed down. Basic research funding has collapsed and we’re no longer putting people on the Moon; we’re tweeting about “covfefe” instead. Antibiotics did more to improve human life than a blog post about technological immortality written by some 24-year-old who optimizes ad placements; that much is true. Finally, the great technological marvel of the 21st century is a cloud. Not “the Cloud”; that’s just jargon for “the Internet”. I’m talking about the cloud of prehistoric algal carbon pumped out by the literal septillions of useless computations, performed to mine so-called “BitCoins”. Yes, that cloud, for anyone planning a tropical vacation to the North Pole. Ah, BitCoin and its ilk; this high-pitched electric whine, inaudibly belch-screaming carbon dioxide into our atmosphere, might be the siren song of a desperate middle class, seeing its impending demise at the hands of authoritarian capitalism, and not knowing what else to do but invest in libertarian wank tulips. Technology is becoming less useful and less friendly, from a humanist’s standpoint, but it does not seem to be self-limiting. Its direction leaves much to be desired, but its speed remains high.