💾 Archived View for rawtext.club › ~winter › gemlog › 2023 › 10-19.gmi captured on 2024-03-21 at 15:35:46. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-11-04)
-=-=-=-=-=-=-
"Tell us how you really feel about Agile..."
I Will Fucking Haymaker You If You Mention Agile Again
I've been a software developer for a while. I'm starting my eighteenth consecutive year, if I have my counting right, though I've been coding long before that, even professionally. I spent a couple of summers working on veterinary multimedia software in my undergrad days, in Visual Basic. My university education was extremely Java-heavy (it was a certain era, okay?). Before that I got the classic microcomputer programming education of BASIC, Pascal, and C.
(I was rotten at C. I hate C.)
But just to say that, professionally, I've been doing Agile for a long time. Which is to say, I've been using Scrum for a long time. No, they're not the same thing. Scrum is just a form of Agile development, like Kanban. But for many developers, they're one and the same. And I've been doing story estimation and burndowns and retros for the better part of fifteen years.
I used to work for what I'd consider to be a mid-sized software company - a few hundred people, around 80 of them developers, the rest in QA, product and project management, sales, tech writing, etc. And the company had a particular financial niche, and some well-heeled clients. It was a steady job. It was where I learned to be a professional developer, rather than just someone who can hack together some code. And I remember when we first started learning about Scrum.
We'd had one particular project that was big, and costly. We blew past the projected number of releases (too many bugs). We had double digit release candidates, when usually we had one to three. Our code was complicated: deep financial calculations and projections. And the client was concerned about our development practices, and our management was concerned about how long it was taking us to get stuff done, and so there was an understanding, by others, that something had to change.
The customer never has to change, of course; requirements can be vague, project managers can be assholes, but that's never on them. If you want their money, you've gotta jump. And so we all started reading Uncle Bob (because that was the era) and Clean Code and we implemented sprints, and whew, we did it our way.
That's the story of Scrum, right? Every organization has its own idiosyncratic take. Ours was that we did everything, all the ceremonies - daily standups, backlog grooming, retros, demos. Only, it gets better. Because we had so many ongoing little projects (ranging from 2-3 devs to a dozen or more), we set up a daily management meeting where the managers would meet with the Scrum Masters to review their burndown. Every day. If it wasn't going down right, they got yelled at. If that was a persistent problem, the scrum team got yelled at.
And I mean actually yelled at. Dressed down by the head of development, voice raised, implicitly threatened. It's the sort of thing that, at this stage in my career, I look back on and laugh. What did they hope to accomplish with that alpha male yelling shit? For people to go, oh, I guess I should just do it much faster, and still produce the total lack of errors mandated by management?
(Another story for another time.)
So that was my first introduction. This went on for a few more years; the company was sold for a lot of money, and the new owners fired the most expensive people in their relentless pursuit to make the deal worthwhile. I saw the layoffs coming, and got out. Joined a new company, doing the same sort of work as before. And I was right: within four months, the company had been gutted, having maybe 20% of the people at its peak. The new owners rode out the existing contracts and enjoyed a lot of revenue after having pared down expenses as low as they could reliably go. And a unique company, that had occupied an important place in my city's IT scene for two decades, was gone.
I loathe Venture Capital. Everything is a number, and the associated human cost, the sorts of outcomes that have profound impacts on actual people, are unimportant.
At the new company, we did Agile too; both for the big projects, and for the day-to-day maintenance work production required thereafter. Planning. Standups. Two weeks of work, then retros. I remember looking at my squad's retro, seeing "Sprint 82", and thinking: who the fuck are we kidding?
We tried Kanban for a bit, and I loved it. We had standups that were less than five minutes, no retros, and just worked through our prioritized backlog. It had fewer meetings than Scrum, and we had a quicker release cadence, too, as quick as our big, bureaucratic organization would allow. Then we got a new manager. He saw that his teams were using a mix of Kanban and Scrum. This wouldn't do. We should have a single, unified development process! Back to Scrum.
Eventually I left (that's also another story for another time). I took a job doing software in an organization that's not specifically software-based; we support the work of others. And we did Kanban for a while, and it was great: daily standups on Teams that were over in a few minutes, and even these were just hewing to the expectations of what we were supposed to do, because we had incredibly active chats, and could ask any questions there. Until earlier this year, when it was decreed: you guessed it, back to Scrum.
I've spent pretty much all my professional life doing Scrum. And what we're doing now isn't terrible - our standups of ten or so people are done in under five minutes, we've figured out how many points we're generally capable of doing biweekly, and bring in an appropriate amount of work. We're data-driven, and improving, and this feels like the best situation I've been in since I graduated university. But I'm tired of Scrum because even with quick meetings, it's so regular that I look into the future and I just see an endless stream of numbered sprints stretching off to the horizon, ending at my retirement or my early death, whichever comes first.
A dozen years ago I started a software project of my own, a game. I sort of deliberately set out to avoid lots of best practices: I didn't have an issue tracker. All my bugs and suggestions just went into a text file. I didn't use source control for the first six months, before finally setting up a svn server (I hadn't used DVCSs at that point). I eventually switched to Mercurial, then git. But apart from this, I very deliberately don't set any boundaries on how I do development. I don't have a Kanban board, or set sprints for myself, or whatever. I released my first version four or five years later. I still put out regular updates, extending the game, fixing bugs. I have a small, devoted community whose feedback I value immensely.
And it's wonderful. I remember, early on, watching things appear on the screen and fixing bugs and refactoring code to make things easier for myself later, thinking: this is really good. This is what development used to feel like, when everything was new and exciting, and before people who had a book to sell told me I was doing development wrong.
Obviously, "just let developers do their work" is not going to fly in most professional settings these days. It takes a tremendous amount of trust, and even then, even if that trust is present, there's the problem of opacity. Where is the team at? When will the next release be ready? What is the team working on now? These are problems that Scrum attempts to answer with process, though these can also be answered by just talking to the team.
I've fundamentally come to see Scrum as a management tool, a way to try to squeeze regular releases and to average productivity across any given team. And I hate it, even if I understand what it's trying to achieve. Kanban's better, and in those brief windows I've worked with it, I've liked it a lot more than Scrum.
But more than that, my years of working solo and creating a big, complicated project have reinforced in me that you don't need any of this stuff if you've got the right team in place (whatever happened to "individuals and interactions over process and tools?). That these layers of Stuff that Agile and their associated tooling provides might help deliver software faster, but maybe not. And that they can suck the joy out of it, too. Do you want your professional life to just be a series of sprints until you retire or die? I don't. And the last few years, as I've had a number of friends die tragically young and seen others develop serious health complications, well, it's something I think about a lot.