The twittering of the Munchkins

oz

And now for something completely different.

I’ve spent the last forty — not quite, but almost — years of my life paying the rent by writing computer code. It hasn’t been a bad living, and I can’t complain. It’s also been more fun than not: nothing deep about it, really, but intellectually interesting enough to make the days pass quickly.

I always tell people that it’s like solving crossword puzzles for a living, which is not exactly right but isn’t too far off, at least as regards the hour-by-hour texture of the work. It’s very finical. A letter out of place spoils the whole thing.

The element that isn’t captured by that description is that there’s a certain very modest scope for creativity. A crossword puzzle, after all, has only one right answer, but any programming problem has many, and coders, like Talmudists, dearly love to wrangle about why solution A is better than solution B. There’s such a thing as elegant code, and such a thing as ugly, clunky code, and we all aspire to write the former.

This too is fun. People who don’t appear macho at all suddenly become very assertive. And people who you would think have no taste at all — judging by the way they dress, and the books they read — suddenly come out as aesthetes, and make good their claim to the title.

Alas, that’s all gone now. At least in the corporate world where I still have to make a living. I bet it’s still alive in the open-source world — in fact, I know it is. But in the sweatshops where most of us coders earn our bread, the glory has departed. It’s mere drudgery now: Taylorized and overmanaged. One of the chief villains is something called ‘Agile methodology’, nicely satirized in the TV series ‘Silicon Valley’ as ‘scrum’. ‘Agile’ is a horrible neocult, and it has become the bane of my existence.

If you read the Agile manifesto or the Wikipedia entry it doesn’t sound too unreasonable, though the smarminess of the prose ought to ring alarm bells in any reasonably alert and cautious person’s mind.

But what it has led to in practice is an extraordinary bureaucratization of programming, accompanied by an extraordinary proliferation of cult-speak. For example, there really are ‘scrums’. In fact there’s one every day, usually in the morning. Scrums are presided over by ‘scrum masters’. I am not making this up.

I believe it is now possible to get some kind of credential as a scrum master. Scrum masters are usually people who don’t write code, and don’t know how to write code, but presumably understand scrums.

One is expected to stand during scrums, and they really do consist of moving post-it notes around on a whiteboard. This is very important. The post-it notes must also be color-coded, which is a sore trial to color-blind me. I always use a note of the wrong color, and must be called sharply to order, usually by a scrum master who is younger than some of my own children.

These things are referred to as ‘scrum ceremonies’. Again, I assure you: I am not making this up.

There are other picturesquely-named personages too, besides the scrum master: stakeholders and advocates and what not. But as the old proverb has it, shit rolls downhill, and all the shit ends up on the heads of the coders. Coders are supposed to be able to push back, but in practice they can’t, and so they get stuck with whimsical arbitrary deadlines for code whose behavior has never been clearly specified. Then somebody changes his mind about the expected behavior halfway through the development process. It’s a case of bricks without straw, Pharaoh!

It’s a testimony to the decency of human nature, and perhaps to a certain vestigial sense of Munchkin solidarity, that the coders seldom turn on each other and try to shift the blame when the preposterous deadlines are missed. (Though there are exceptions, may they burn in Hell.) The usual excuse, often true enough, is that some emergency supervened because the last delivery of crummy code failed in production, and a fire had to be fought.

One could go on and on — really, somebody ought to write a book about it — but perhaps this gives you some idea.

All this has of course made the programming workplace a much more anxious, unpleasant setting. The sense of solidarity, though it’s not entirely gone, is much impaired. We all used to make merciless fun of the boss, among ourselves. No more. Every so often an easily-disavowed emoji will turn up in some chat application. That’s about the extent of it.

Much of this work is done by contractors rather than regular employees. I’m one of that mercenary army myself, these days. Contractors don’t ordinarily stick around very long — and for that matter regular employees don’t either. There is, of course, no such thing as job security for either category of prole.

One of the sad consequences of this transience and casuality, combined with the nutty deadlines and the absence of specification, is that one really ceases to care about writing good code. It will probably never go into production anyway, and if it does, you’ll be long gone by the time it blows up and exposes the bank to a billion-dollar lawsuit or public disgrace. Or both. And if it does, they will richly deserve it.

Not that I would ever deliberately leave a time bomb in some odious employer’s code base. Oh no. As Richard Nixon once memorably said, That would be wrong. Retro me, Sathanas!

But I write shit code these days. I used to care about error handling. I used to make no assumptions at all about the validity and canonicality of the data feed I was working with. I used to spend a lot of effort making sure that my code worked with improbable but possible edge cases. I used to care about optimization and thread and socket pooling and re-use and short execution paths and compact footprints. I used to care whether threads really bought you anything, or just made the code easier to write.

Admittedly, I was never very good at including comments. I have gotten better at that, because after all, they’re much easier to write than code.

I haven’t quite descended to the Skid Row of coding yet, which is what I call ‘cut-and-paste code.’ You take a block of four or five lines, and in your editor you replicate it a dozen times, from top of screen to bottom, with one or two variable names changed in each copied block. This is a sin against God and man. What you ought to do is factor out the repeated common logic into a function or macro or something, and call it repeatedly with different parameters.

But you see the cut-and-paste approach a lot these days, created by people who certainly know better. A couple of years back I had a boss at a big American bank — one that you love to hate; trust me — who insisted that I ought to take the cut-and-paste approach. Why? Because it was easier for him to read the code that way.

It hasn’t gotten quite that bad for me yet; the cut-and-paste gig didn’t last, and the bad boss is now a more or less distant memory. (God, how I hated him at the time, though.) But my product is crap these days, even without that particular descent to the Ninth Circle.

And it seems that really, this is what my employers want. Or rather, as Madeline Albright once said, it’s a price they’re willing to pay for turning an eccentric, artisanic occupation into assembly-line work.

13 thoughts on “The twittering of the Munchkins

  1. I remember the three dimensional liar’s poker sessions you describe, hilarious. I bailed during the post-y2k contracting slump, I’m with the ironworkers union now, better money, better hours and a better class of people, frankly.

  2. I think this is the most terrifying thing you’ve written, MJS.

    We’re all contractors at this point. NAFTA has taken hold and we’re turning into Mexico rather quickly.

  3. I may be the Devil but I have a deal for you.

    I type five words a minute, but…

    I spent 16 years in biomathematics. This Nim language is a smooth bridge between Python and C. You can avoid 99% of the C errors by keeping it at high level. Game developers do this by writing frameworks in Python and “tight loops” in C. With Nim: — Python, Lisp, C, C++, even full-bore Prolog is all 100% baked in!

    I want to use this to bring on the Singularity. It can’t be one iota scarier than Clinton-II vs. Bush-III!!!

    You slip people this disk. They talk to it. It talks to them. Then they realize it’s infinitely smarter than them.

    It’s the Revolution baby. Bring it on!

    robertkj () a+ () fastmail () do+ fm

    End of Message.

    • I’ve never been a language bigot, though admittedly, I really hate C++. (Or does SQL count as a programming language? If so, I hate it too.)

      Occasionally I think about joining the Trappists and writing nothing but LISP. By way of cleansing my soul.

  4. Comrade Smith, your piece about this fucking Agile bullshit opened old wounds! What took you so long? I thought you’d be writing sooner about this latest corporate America boondoggle. I feel your pain comrade. There was a time when yours truly was a respected coder. Back then, there was such a thing as a Tech Leader, who was sort of a Yoda of the programming world, a knowledgeable coder who was the go to person on a project. Somehow, Tech Leads got transformed to Project Leads and later, they got further morphed into Project Managers. Of course, before the advent of that other boondoggle, the Project Management Institute, a Project Manager was nothing but a Tech Lead with a fancier name. Then came a time when they decreed that a Project Manager cannot be a coder and that was the last nail in the coffin of my coding career.

    As much as I loved coding and the rush that you’d get when you see your program in action, I figured in a few years, no one would want to hire an old bird as a coder. So I gave up coding and became a Project Manager, although I refused to get that bullshit PMI certification. Just when I thought things couldn’t get any worse, they came up with this Agile crap with its daily standups, sprint planning, velocity calculation, poker cards, and other gimmicks intended to demean and belittle everyone, including the hapless Scrum Master. After much kicking and screaming, I was dragged into one of those week long courses to become a certified Scrum Master. One day, the instructor who was as clueless as any of those motivational speakers, asked who in the corporate world would make a perfect Scrum Master. The correct answer: your friendly admin assistant! That is to say, you’d have to be as far away from any technical qualifications to fit the bill for a Scrum Master.

    Alas, I joined the dark side and became a Scrum Master. The only remarkable difference between what Comrade Smith has so eloquently described and my own experience is that with Agile, the pressure of getting the code done by some deadline given by the evil management was now off. The coder would give his/her best guess as to how long it would take to name that tune and if the estimate was wrong, well, there was always another sprint. So in my experience, the coder was off the hook for estimating the work and completing it by some deadline. Then again, this could have been because of the peculiarities of my work place and the boss of the coders who was a talented suck up, thereby, getting his crew off the hook. Still, those daily standups were pretty humiliating to all coders, particularly to those that always had a dog eating their homework.

    Luckily for me, moving out of the country put an end to my scrum mastering. A couple of years ago, I decided to give it a shot and check out the Scrum scene in Montreal. If there’s anything worse than an American Agile evangelist, it’s the foreign Agile believer. We’ve become so good at exporting software development fads and other bullshit that even non-Americans find this crap fascinating. For foreign folks, this is relatively a new fad and because their experience is limited to the success tales they’ve read in books, their zeal for implementing this shit is ten times worse than that of Americans. My attempt at pimping myself as a Scrum Master landed me an interview with this hiring manager who sent me a Youtube video of what his ideal Scrum Master is supposed to act like! He asked me questions like, “So, who’s your best friend?” When I gave the safe answer of “my husband”, he yelled, “Wrong! It should be your Product Manager!” Then he asked me how I should measure my success. Silly me, I responded with another safe answer: delivering the project on time and budget. Again, he yelled, “Wrong! Your job as a Scrum Master is to nurture the coders and create a soothing environment for them!” Strangely enough, I did get an offer from them which naturally, I refused.

    My personal take on this latest gimmick is that since technical jobs are now mostly outsourced or done by immigrants, there’s not much left for White folks to do and this is their attempt in job creation for non-technical managerial staff. If there weren’t such jobs as Scrum Master, Iteration Manager, Scrum guru, etc., what would White folks do to make a living in this very lucrative industry?

    Incidentally, couldn’t agree more on the subject of C++ and its panacea of code reusability. I hate it too! Fortran is still my favorite.

    • The vocabulary is amazing, isn’t it? I overlooked sprints. But I’ll see your sprints and raise you story points. (I’m going to keep ‘epics’ in reserve.)

    • Oh, and you’re also right about Tech Lead. That was an honorable title. I held it once or twice, and as Chesterton says, there were shouts about my ears, and palms before my feet.

      • Ah, those were the days when the software world was mostly staffed with technical folks. We didn’t have Busy-ness Analysts and Product Managers who can’t cut one line of code but churn volumes of incoherent bullshit about how the software should behave. We didn’t have Architects whose sole job is to issue Fatwas about how thou shall use the latest trend regardless of whether or not it makes sense for an application. I see all this as a “detechnification” attempt to transform the software world for the worse. Just as you mentioned, in earlier times, it was about the elegance of the code. Now, it’s all about form as opposed to function. An elegant code was clever, efficient, maintainable and mind you, no one ever thought of asking its author/coder to stand up every day to give a reportage on what he did yesterday, what he was doing today, and if he had any roadblocks. To the mighty Programmer (another old and extinct term), a roadblock was maybe an inadequate hardware or not enough memory to run the code in but that wasn’t anything that a nelly Scrum Master could fix. Now, the roadblock du jour could be someone’s badge that stopped working or someone’s laptop that needs to be upgraded. Pure administrative stuff befitting a know nothing Scrum Monster!

  5. Awww, Michael! <3

    But I can't help slipping in–the Dick Cheneys of the world know that this makes even their luxuries less luxurious and more prone to breaking, ergo the only rational conclusion is that this is all a deliberate plot to destroy the world, not a mere clumsy attempt to make a few bucks off the proles. Gates’ 500 million, after all.

  6. Between 1998 and ’09, I did graphic design at the “boutique” Web design/programming outfit a friend started in the late ’90s. Around ’08 or thereabouts, they started in with this “agile” horsehockey; even though I wasn’t a programmer, I made a point of sitting in on meetings as I figured it wouldn’t hurt to try and learn a thing or two.

    You’re right about the “cult” aspect. God damn, what a weirded-out scene. The standing-up meetings — I never could figure what the point was behind that. I also never could get why they call it a “scrum” — isn’t the “scrum” that part of a rugby game where all the players on both teams crash into each other in a convulsing, pushing, shoving, chaotic melee in an effort to get possession of the ball?

    “Agile” is so not the word for that bullshit.

  7. I miserably failed a whiteboard test recently. I successfully–if not very prettily–accomplished about 10 things I never done during the during the testing process. But chocked doing the Python Fibonacci sequence with dry-erase marker (Fibonacci sequence is like the second tutorial they teach you when you learn programming). Even the interviewer–fresh out of the Hacker School–seemed uncertain about the merits of whiteboarding; but had clearly committed to it and wasn’t turning back.

Leave a Reply