Articles
Software engineering lessons from production, raw and honest from the heart — almost 20 years of them. Jump to a year in the sidebar, or browse categories and curated collections.
79 articles from 2024 · show all
December 2024
Looking for beta readers
Wanna read my hardest engineering lessons learned? You're in luck!
Your next mountain, pt2
3+1 quick book recommendations to help you think about next year
What's your next mountain?
Life is a hill-climbing algorithm
Why system design is my favorite interview
Without reading their resume, you'll see if a candidate is fresh or has been doing this a while. And you'll know their blind spots and their strengths
Atoms, molecules, organisms
Here it is: 20+ years of programming experience distilled into 378 words. From the book I'm writing.
Smart core, thin interfaces
Here's an approach to writing code that I've been using for years and couldn't quite put into words until now. One of those _"This feels wrong but I can't explain why"_. Now I can!
Why learning and teaching the good stuff is hard
You can't learn to ride a bike from reading a book.
Empirical evidence for code modularity
Few of your engineering decisions matter long-term. Software is soft. You can change your mind. But how you structure your components is here to stay.
November 2024
Why even care about code structure
As long as it works, right?
The anatomy of a React Island
A coworker asked how React Islands work and I realized it's a technique I've been using to modernize monolithic web codebases for years, but never wrote down how it works.
Finding modules in a big ball of mud
Pulling modules out of a big ball of mud is like grabbing a slice of cheesy pizza. It's kinda separate but also not really.
Why you need observability more than tests
Here's a short and sweet story about a Friday deploy. I love Friday deploys.
The swarm doc
Here's a doc I like to use to structure the pre-work design chat that makes later code review a breeze.
Big Ball of Mud – the world's most popular software architecture
Forget Gang of Four, here are the 7 architectural patterns real programmers use:
Why software only moves forward
At scale there are no rollbacks and no cut-overs. Your software only moves forward.
October 2024
Don't judge tech just because you're old
Your favorite way of doing things may just be an expression of tech limitations at the time
"Yes caviar is great, here's a ham sandwich"
Why do some projects ship and others seem to drag on forever? You need 3 people to get this right.
Yes, AI will "take" your job. No, you won't mind
Is the job to get things done or to memorize trivia and solve cute coding puzzles?
It made me $500k but I think content is a bad business
Why I didn't become a full-time creator/educator
Make mistakes easy to fix
You can't prevent bugs. You'll burn out. Instead focus on making them quick to fix.
September 2024
The Laws of Software Evolution
Manny Lehman was one of the first to notice that software is never done. It just continues to evolve forever.
The Series A inflection point
The Series A inflection point is the most fun time in a startup, if you ask me. Here's what it looks like
You can side-step a yak, they don't all need to be shaved
When yaks aren't procrastination, they might be tunnel vision. You're so focused on the right solution, you miss the good enough solution
Better is good
A small improvement that lands is better than a large improvement stuck in review
How big up-front design fails
A long design phase without shipping kills many software projects. Here's a story from production I haven't shared before.
The Tour of Duty approach to career
Quick note today to plant the seed of an idea I've always loved: The Tour of Duty.
Why software projects fail
5 common themes
August 2024
What helps you ship confidently?
Been thinking about what needs to be in place for engineers to ship with confidence
Interviewing tips for experienced engineers
The way you interview changes as you go through your career. If you're grinding leetcode 10 years in, something's wrong.
Let small fires burn
You can't fix everything. Focus on the next big thing and let the small fires burn.