On Professional Courage
I wrote the other day that "my critique of someone like Sean Goedecke... would look very different from [my critique of Steve Yegge]."" I wasn't really planning to write about Goedecke so soon, but he recently published a blog post that I think exemplifies a really damaging mindset among software engineers, and I want to talk about it.
Sean Goedecke is a blogger who frequently posts about topics like the politics of working in a large software company and the role of LLMs within software development. He is a staff software engineer at GitHub and works on Copilot. I've been reading his blog for maybe a year or so. His writing is very perceptive on some points; the former post I linked above has some tips that I think are truly very useful and can be used to good effect for software developers who want to influence their team or company to move in a particular direction.
However, a lot of his writing on AI is just... really infuriating, in my opinion. He put out a post earlier this year, Software engineering may no longer be a lifetime career, which exemplifies my frustrations with him. Here's a few quotes, though I recommend reading the full piece for context-- it's not long:
It would really suck for software engineers if using AI made us worse at our jobs in the long term (or even at general reasoning, though I still don’t believe that’s true). But we might still be obliged to use it, if it provided enough short-term benefits, for the same reason that construction workers are obliged to lift heavy objects: because that’s what we’re being paid to do.
If you work in construction, you need to lift and carry a series of heavy objects in order to be effective. But lifting heavy objects puts long-term wear on your back and joints, making you less effective over time. Construction workers don’t say that being a good construction worker means not lifting heavy objects. They say “too bad, that’s the job”2.
To my mind, the obvious conclusion here is that we need strong protections for workers' rights. If employers can make more money by taking shortcuts that hurt their workers, they will do so. It's important for workers to have the power to decide "no, this goes too far, we are not willing to make this trade-off." However, Goedecke dismisses the idea of unionization in a footnote. He has a different takeaway from this line of thinking. From later in the post:
The career of a pro athlete has a maximum lifespan of around fifteen years. You have the opportunity to make a lot of money until around your mid-thirties, at which point your body just can’t keep up with it. A common tragic figure today is the professional athlete who believes the show will go on forever and doesn’t prepare for the day they can’t do it anymore. We may be in the first generation of software engineers in the same position. If so, it’s probably a good idea to plan accordingly.
I just find this defeatist attitude so frustrating. And apparently another reader, William Murray, did too and wrote to Goedecke about it. That email, and his response, make up the blog post that galvanized me to write this. Murray's email reads, in part:
The way I see it, if you are right there are only two reasonable responses, pursue other work or resist. You present your elegiac approach as mature / pragmatic / realistic. I’d call it complicit.
And here's an excerpt of Goedecke's response:
What I care about is the people in my industry who don’t know what to do. I get hundreds of emails from junior and mid-level (and other) engineers who say “I’m scared, I don’t know the rules post-2021, thank you for helping me keep my head down and keep my job”. [...] I think it’s morally wrong that so many engineers — either in safe sinecures in big tech or literally retired — seem to be trying to foment a second Luddite revolution. Many of their readers will be experienced enough to handle it sensibly, but not all. Every “AI is fascist, stand up and resist!” post that goes viral ruins some poor idealistic junior’s career3. [...] I do accept the existence of some kind of line: I think Industrial-Revolution-collaborating was OK but Nazi-collaborating wasn’t, for instance. But in the current situation, the way I’m spending “my voice” is to try and prevent the most vulnerable of my colleagues from making career-ruining mistakes.
On some level, I can understand this way of thinking. As a mid-level engineer with about 6 years of experience in a company that has instituted AI mandates within the past couple of years, I am probably in the audience he is writing for. I can confirm that being unwilling to go all in on AI has hurt my career in some respects. Job-searching as a software engineer has become increasingly difficult if you have a moral objection to participating in LLMs' choke-hold on the industry. In general I don't harbor much animus for people who decide to bite their tongue to keep their job rather than fight back against their industry's AI obsession. I don't think it's a very ethical position, but people need to eat and everyone has their own complex struggles, so I'm not going to spend my time berating anyone for that, especially when I'm in no position to throw stones.
That said. Quietly doing what you need to do to keep your own job, and persuading other people to go along with their own and others' exploitation, are two distinct things. I think it's morally defensible to say to junior engineers, "look, if you criticize AI or refuse to engage with it at this moment in the tech industry, you are taking a risk with your career prospects." But I think Goedecke goes a step further than that with his overall defeatist attitude towards AI. I don't think he's making the argument that, if you are deeply morally opposed to AI, then you should understand the risks before taking action to oppose it in your workplace or in places where employers can see it. I think he's making the argument that you should not take action to oppose it.
I think a lot of his response comes from motivated reasoning. As they say, it's difficult to get a man to understand something when his salary depends upon not understanding it, and Goedecke works on GitHub Copilot, one of the biggest coding agents on the market. So it seems disingenuous to argue that he's just trying to help out less established engineers. By his own admission, "[j]unior and mid-level engineers will suffer before [he does]," so I think it's more than a little self-serving to argue that the right thing for juniors to do is to stop fighting the tides of progress and adopt the tool that pays his salary.
Goedecke is not the only one with this take, though. Lots of software engineers are willing to set aside their ethical concerns around AI because they find it to be a useful tool. To be honest, I've found myself pulled in that direction at times too, because I have seen Copilot assist with some tasks in impressive ways. But what I keep coming back to is that AI coding agents, at least in their current form, are like asbestos. They have some incredibly useful properties, but also they are incredibly toxic, and I think that if we proceed along our current trajectory, it will do a great deal of irreparable harm over the long term. If we have the chance to alter that trajectory, I think it's important to try.
I just want to end this post by saying that I don't think I'm some paragon of virtue with how I'm handling AI's impact on my own career. I use GitHub Copilot sometimes at work. I would prefer to just avoid it altogether, but my company monitors AI usage and management has sent me stern emails when they detected that I went too long without using it. If I were braver, maybe I would reject it anyway and deal with the consequences. Instead, I use it just enough to both satisfy management and make myself a more credible critic to other software developers, since most agentic engineering enthusiasts will not give you the time of day if you have never seriously attempted to use an LLM for coding. I try to push back when I think that I have a reasonable chance of getting through to someone, even just on lesser battles like "please don't have an AI agent write your AGENTS.md, because it's often complete slop which then compounds into more and more wasted work when other AI agents read those instructions." I persist in submitting annoying questions like "how are we mitigating the climate impact of our AI mandate" in the all-staff Q&A meetings, although frankly I have no hope that this will get through to senior leadership. And I am trying to be more open about my real thoughts about AI on this blog. These are all tiny things, and they're not enough. But if more software developers would push themselves just a little bit more than they're comfortable with when it comes to following their conscience at work, I think we would perhaps be in a slightly better situation.