DEV Community
Lessons from Leading a Small Dev Team: Code Reviews, Git Workflow, and Shipping Without Burning Out
Nobody hands you a manual when you become a team lead. One week you’re a developer who ships features, and the next you’re responsible for whether other people ship features. Meanwhile your own code has quietly dropped to the bottom of your priority list. A small team, somewhere between three and six developers, is a particular situation. You’re too small for heavy process, but too big to run on instinct alone. The habits you establish early become the culture, for better or worse. This article covers the three areas that shaped my team the most: how we do code reviews, how we use Git, and how we keep shipping without grinding people down. These are lessons I’m still learning, not commandments. Take what fits your team and leave the rest. Part 1: Code reviews What reviews are actually for Most teams say reviews exist to catch bugs. They do catch some, but that’s the weakest reason to have them. Reviews are far better at four other things. They spread knowledge: after a review, at least two people understand that part of the system. They keep the codebase consistent, so naming and patterns stay coherent. They teach, because juniors learn from seniors and seniors get challenged by fresh eyes. And they catch design problems early, while fixing them is still cheap. If you treat reviews as pure bug hunting, they become adversarial: the reviewer is a gatekeeper and the author is a suspect. If you treat them as knowledge sharing, they become collaborative. That one change in framing quietly changes the tone of every comment on the team. Keep pull requests small The single most effective rule I’ve enforced is small pull requests. A twelve-hundred-line change gets approved in four minutes, because nobody can hold that much in their head. A hundred-line change gets real attention. Review quality drops sharply as size grows, and no amount of discipline fully fixes that. It’s a human limit. Some guidelines that work. One pull request should have one purpose, so a refactor and a feature are two separate changes. If a change needs a long explanation, it’s probably too big. Break features into steps that can each be merged safely, such as the data layer first, then the endpoint, then the interface. And use feature flags so that unfinished work can be merged without being visible to users. Small changes also make reverting painless. Rolling back a small change is routine. Rolling back a huge one is a project. Give every pull request a template A short template removes friction and ensures reviewers get the context they need. Mine asks for four things: what the change does, why it’s needed, how to test it, and a checklist covering tests, leftover debug code, and documentation. The “why” matters most. Code shows what changed, but only the author knows the reasoning, and a reviewer can’t judge a decision without understanding the problem it solves. Review in the right order When I review, I work from the top down rather than line by line. First I read the description and make sure I understand the goal. Then I look at the overall shape and ask whether the approach is sensible, because if the design is wrong, detailed comments are wasted effort. Next I check correctness and edge cases: what happens with empty input, with failures, with two things happening at once. Then I check the tests and ask whether they verify behaviour or merely chase a coverage number. Only after all that do I look at readability and style. Style deserves one more note: let tools settle it. Automated formatters and linters should end every debate about spacing and naming conventions, so human attention is reserved for logic and design. Nothing drains a team’s goodwill like two people arguing about formatting in a review. Write comments people can act on Tone is fragile in text. A comment that sounds neutral to you can sound hostile to the person reading it. A few habits help enormously. Signal how serious each comment is. We use simple labels. A “nit” is minor and opti...
Powered by Readybot.io
External Link
Platform
You are about to visit:
https://example.comThis will open in a new tab. Make sure you trust this link.