terriblesoftware.org
Why Am I Doing the Thinking for You?
I got a Slack message the other week, just “What do you think?” with a link to a Notion document. No context or indication of what this person actually believed. Just a link and a question mark. I stared at it for a minute, trying to decide if I was annoyed or just tired (both, probably). What’s this message is actually saying is: “I haven’t figured this out yet and I’d like you to do the thinking for me.” That sounds harsh, but it’s true. When you...
Why I Still Write Code as an Engineering Manager
I still code on my team. Not every day, and almost never on critical path work, but regularly enough that I know what our codebase actually looks like. The parts that are a joy to work in and the parts that aren’t. Why not critical path? Because that’s not my job anymore. Taking the interesting, high-visibility work from your team is a fast way to breed resentment and stunt their growth. But there’s plenty of other work: small bugs, minor improvements, tooling fixes, documentat...
Life Happens at 1x Speed
“Almost everything will work again if you unplug it for a few minutes, including you.” — Anne Lamott Over the past year, I’ve made a change to how I consume content. Everything is at 1x now: podcasts, YouTube videos, audiobooks. All of it. I also made a rule for myself: if something isn’t worth consuming at 1x, it’s not worth consuming at all. Let me explain why this makes sense for me, and why it might for you too. At some point, consuming content at 2x speed becam...
Creating Your Own Opportunities
One thing I keep hearing from engineers is some version of “I want to grow, but my manager isn’t giving me the right opportunities.” And I get it: managers should be helping you grow. Assigning you the right projects, creating space for you to stretch. That is all part of their job. If your manager isn’t doing any of that, you have something to complain about. Two things, though. One, complaining about it probably isn’t going to change much. Two, even the best manag...
A Year of Writing for Myself (That 230,000+ People Read)
I started this blog about a year ago with pretty modest expectations. It started as a place to organize my thoughts on management, engineering, and everything else in between. I figured maybe a few colleagues would read it. Maybe some friends? I really did not expect that I’d have more than 230,000 unique visitors in the first year. In a single year, this little blog went from basically nothing to nearly 0.2M people reading my random thoughts about software and leadership. I’m still ...
The Strange Case of Engineers Who Dismiss AI
I refuse to use AI coding tools. I don’t need to try them to know they’re garbage. I have instincts . I tested ChatGPT in 2022, and asked it to write something. It (obviously) got it wrong; I don’t remember what exactly, but it was definitely wrong. That was three years ago and I haven’t looked back. Why would I? It’s not like there was anything meaningful that changed about AI tools, right? My coworker uses Claude Code now. She finished a project last week that wou...
AI Can Write Your Code. It Can’t Do Your Job.
In May, OpenAI agreed to pay $3 billion for Windsurf, the AI coding assistant formerly known as Codeium. Three billion dollars. For a VSCode fork. The deal eventually fell apart, but what matters is that they wanted to do it in the first place. Last week, Anthropic made an interesting acquisition: they bought Bun, the JavaScript runtime. Bun is open source and MIT-licensed. Anthropic could have forked it and built on top of it for free. They have Claude Code, an excellent code-writing tool. Inst...
What Actually Makes You Senior
People love to describe senior engineers with a big checklist: architecture, communication, ownership, leadership, etc. But if you strip away the title, the salary, and the years of experience, there’s one core skill that separates senior+ engineers from everyone else: reducing ambiguity . Everything else flows from that. Here’s what I mean. A mid-level engineer can absolutely crush a well-defined problem. Give them a clear spec, some reasonable constraints, and they’ll deliver...
“ChatGPT said this” Is Lazy
You’ve just pushed a PR after hours of careful work. You’re feeling pretty good about it too. Then the review comes in. “ChatGPT thinks that {wall of AI-generated text}” No context or specifics. Just a copy-paste job from someone who couldn’t be bothered to form their own thoughts. I’m seeing this everywhere now: PR reviews, design docs, Slack threads. But here’s the thing: I don’t care what AI said. I care what you think. ChatGPT isn’t on th...
Stop Avoiding Politics
Say the word “politics” to most engineers and watch their face scrunch up like they just bit into a lemon. We’ve all been conditioned to believe that workplace politics is this dirty game played by manipulative ladder-climbers while the “real” engineers focus on the code. I used to think the same way. For years as an engineer, I wore my hatred of politics like a badge of honor. I was above all that nonsense. I just wanted to ship. Politics was for those other people...