If you’re new to this blog, these are the posts I’d start with. They capture the ideas I return to most often when thinking about writing software and working effectively as an engineer.
Delivering Work
How to Deliver Code Every Day
A practical system for consistently delivering work.
On commenting and approving pull requests
A
simple default for adding value to colleagues’ work while keeping it moving.
Things I Check Before Opening a PR
My
checklist for making pull requests easy to review and safe to merge.
Why Great PRs Are Great: Pull Requests Templates
How
a simple template can make pull requests easier to write and review.
“What Would Finishing This Today Look Like?”
A
question I use to think creatively, break out of artificial constraints, and
increase velocity.
Writing Better Code
Write Boring Code
Why boring code is the best code.
Hard-Won Software Development Habits
A
collection of habits that are core to my engineering practice.
Ruby’s Frozen String Literal Comment: YAGNI
A
small example of resisting unnecessary configuration.
The Joy of JavaScript Absolute Imports
Why
simplifying your import paths can make a codebase easier to work with.
Debugging and Problem Solving
All My Best Debugging Tips
A collection of techniques I rely on when debugging tough bugs.
A Perfect Bug Report
What makes a bug report genuinely helpful to the engineer fixing it.
Don’t Ask for Advice; Ask for a Code Review
A
better way to get feedback that helps you grow.
Thinking Clearly About Work
Prioritization for Engineers: Rank Every Work List
A
simple technique for making better decisions by forcing prioritization.
Getting It Right the First Time
Why great engineers always seem to get things right on the first try.
First Get It Working, Then Make it Look Good
Why you should prioritize something that works over something that looks good.
Decoupling Design From Engineering
Why
you should try to separate your artistic brain from your builder brain.
Desire Paths
What software design can learn from how people actually behave.
Career and Community
Take the Big Project
Why the hardest problems are often the best opportunities for growth.
My Daily Programming Routine
A look at the habits that shape my workday.
How I Organize a Meetup
Lessons from organizing developer communities for over a decade.
Product and Process
Acceptance Criteria That Actually Work
How
to write acceptance criteria that help engineers, reviewers, and product teams.
If you enjoy these posts, keep reading!