terriblesoftware.org
Say the Thing You Want
You’re in a 1:1 with your manager, and things are going just fine. You talk about the project and that other thing. Toward the end, she asks: “Anything else?” And there is something else. You want to lead that new initiative. Or move to a different team. Or you’ve been thinking about what stands in the way of your promotion. The thought is right there, sitting in the back of your throat. You’re going to say it, and then… “Nope, all good.” You get o...
“Good Taste” Is Just Experience
“In the age of AI, taste is the ultimate differentiator.” I keep seeing a version of this on a weekly basis. That in the age of AI, taste is the only thing that matters! Taste is what AI can’t replace! And it’s not that I disagree with it… parts of it actually make sense. But I think I finally figured out what was bothering me. When people say “taste,” what they actually mean is experience. Pattern recognition built up over years of doing the work. But c...
Nobody Gets Promoted for Simplicity
“Simplicity is a great virtue, but it requires hard work to achieve and education to appreciate. And to make matters worse, complexity sells better.” — Edsger Dijkstra I think there’s something quietly screwing up a lot of engineering teams. In interviews, in promotion packets, in design reviews: the engineer who overbuilds gets a compelling narrative, but the one who ships the simplest thing that works gets… nothing. This isn’t intentional, of course. Nobody sits down an...
Nobody Gets Promoted for Simplicity
“Simplicity is a great virtue, but it requires hard work to achieve and education to appreciate. And to make matters worse, complexity sells better.” — Edsger Dijkstra I think there’s something quietly screwing up a lot of engineering teams. In interviews, in promotion packets, in design reviews: the engineer who overbuilds gets a compelling narrative, but the one who ships the simplest thing that works gets… nothing. This isn’t intentional, of course. Nobody sits down an...
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 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...
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...
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...
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 ...
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...
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...
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...
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...