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 software and teams.


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 code that doesn’t serve a purpose.

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.

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 design brain from your engineer 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!

  • Posts — Longer essays
  • TIL — Short, technical daily learnings