Making software is primarily about people: the people we work with, the people who write the requirements, and the people who use the software. These are some of the practices I've adopted over time to write better software and work more effectively with people.
- Most technical decisions involve tradeoffs. There is rarely One Right Way.
- Take the next smallest step. Write a ticket, create a failing test, make the easiest case work. Little by little the work gets done.
- Make commits that tell a story, one idea per commit, so that reviewers and future PR readers can follow along.
- Refactor in small steps, with a commit after each step. When everything breaks, back up a step.
- Sometimes backing out and starting over is the right thing to do. Pay attention to that boggy feeling that says something is getting too messy and complicated.
- Debug like a scientist. Make one change at a time, and take notes on what you did and what happened.
- When stuck, find a pair. When someone else is stuck, offer to pair. Even when not stuck, pairing often results in writing better code faster, and prevents silos where only one person is familiar with the code.
- When pairing, say "Yes, and..." It's quicker to try your pair's proposed solution than argue with it.
- Give credit generously, especially to underrepresented people in tech. When pairing, name additional authors with "Co-authored-by: Full Name <github_email@address.com>" on its own line at the bottom of the commit.
- As a senior developer, part of the job is to help others succeed.
- Feedback should be specific, actionable, and kind.