Essays & links on building software in the real world, viewed through leadership, product engineering, software design, and the day-to-day craft of development, emphasizing constraints and tradeoffs.
The engineering teams I look back on as truly great share less than people assume. Smart people, of course. Doing this work well is hard, and the teams I'm thinking of were all made up of people who were good at it. But smart, capable people are also
When you want to change something that involves other people, you have choices about how to go about it. As an IC, you can push ahead on your own and hope others adapt. As a leader, you can announce a decision and move on. Both can work in the short
What AI coding costs you | Tom Wojcik What’s the effect of the prolonged AI usage among coders and is it tracked correctly, if it all? Refusing to use AI out of principle is as irrational as adopting it out of hype. A really great, pragmatic look at "
Extremely Lazy and Immensely Curious When I explain that Claude Code has changed my relationship with developing software completely, I’m under-exaggerating... if that’s even a thing. This off-the When I go through these types of robot-related productivity rants, someone invariably unhelpfully volunteers, “
677: I Accept the Battery Cost — Accidental Tech Podcast — Overcast I am not an abolitionist and I'm not totally against looking into it because I recognize that it's not actually particularly different than all the other forms of technology that have come before it.
The tree swing cartoon is widely known and frequently remixed for good reason. It captures something almost everyone in the software industry has experienced: you thought you were clear when writing requirements or asking for something, but the other person interpreted it differently. Everyone knows this happens. The interesting question
Code has always been the easy part When I joined Etsy the team was two years into a rewrite chasing a more elegant architecture (actually two distinct incompatible elegant architectures), and hadn’t shipped a customer facing feature in that time. I like to say (and it may even
When using Claude Code , you'll often want to drop to the shell for quick commands like checking git status, switching branches, or running tests. There are two main ways to do this, and which one you use depends on what you need. For single commands, Claude Code supports
I started 2025 with a goal to write and publish essays about software. That was my entire focus with this site and, I'm happy to say, I did just that . I didn't focus on specific themes around software, just whatever I had been thinking about and
Don’t fall into the anti-AI hype - <antirez> Whatever you believe about what the Right Thing should be, you can't control it by refusing what is happening right now. Skipping AI is not going to help you or your career. Think about it. Test
Let's get the caveat out of the way first. My perspective here is about businesses. There are certainly different tradeoffs and values in other types of organizations, but I'm talking specifically about businesses that employ software engineers to build software that customers pay for. Even within
The conversation around AI has become increasingly absolutist. While there are many aspects of AI open for debate, from impacts on the economy to the environment to professional implications, I'm particularly interested in the rhetoric that using AI makes you a lesser developer. Unfortunately, saying anything measured about
After reading Design Principle: Composable Services someone asked "How do you keep consistency with this approach long-term?", noting that they've seen it tried, but eventually things get out of hand. It's a good question and not something I touched on in either that
After publishing Taking a Step Back from Ruby , I heard from a lot of people. Some agreed, some didn’t, and a few offered perspectives that helped me clarify what I didn’t discuss in that post: why leadership matters for the ecosystem. Leadership as Infrastructure When the
I wrote briefly about this on Mastodon earlier in the month , but I wanted to expand on my thoughts a bit. I’ve been writing and defending Ruby for more than 20 years. It isn't a huge community, and it's often dismissed by others. But