Pull Requests
Pull Requests are a proposal to merge a set of changes from one branch to another. They emerged from the world of open source and are optimized for low-trust, low-communication environments.
If worker busyness were the measure of software productivity, then pull requests would be well suited to the task. But we know that’s not how quality and productivity are formed.

**Weaknesses to Pull Requests include:**
- Typically only spot surface level problems, missing structural level issues.
- Lead to a false sense of security and reduced sense of accountability
- Increases the effort per developer as they carefully wordsmith feedback
- Changes often require 2-3 rounds of feedback and change, which increases the time to production
- Can erode culture by discouraging live interactions and conversations
- Inherently ineffective and inefficient due to emphasis on minimizing human interaction
- Back and forth interruptions slow both the code author and the reviewer
- Delay the improvement process to the end instead of building it in from the beginning
- Represent Work in Progress, and we know that increases cycle time and reduces throughput in the system
**What to do instead:**
- Pair programming: active review that builds quality into the product from the start
- Ensemble programming: collaborative development with an effective work-in-progress of one, eliminates need for post-facto reviews and rework
- If pull requests must be used, reduce the size of the average change; prioritize finishing other people’s pull requests before doing your own work; prefer conversations over written feedback.