Stacked changes: how FB and Google engineers stay unblocked and ship faster
At my last job, I found our code review process was terribly slow and set about analyzing it and coming up with solutions.  I found a lot of developers were blocked on reviews.  They either task switched (expensive) or babysat their review (expensive).  Even though we were using Phab, few did stacked commits because of how unfamiliar the tools were which made them feel brittle.<p>Improving the stacked workflow is one part of the equation but I'd recommend being careful of letting that mask other problems<p>I identified a series of busy-waits including:<p>- Post, wait, CI failure, fix, post<p>- Post: wait for reviewer, ping reviewer, wait, find feedback was posted, fix, post<p>Some of the root causes included:<p>- Developers weren't being pinged when the ball was in their court (as author or reviewer)<p>- Well, some notifications happened, but review groups were so noisy no one looked<p>- The shared responsibility of review groups is everyone assumed someone else would look.<p>- The tools we were using made it hard to identify active conversations<p>My ideal solution:<p>- Auto-assign reviewers from a review group, allowing shared responsibility of the code base while keeping individual accountability of reviews<p>- Review tools that ping the person the review is blocked on when they are ready to act<p>- Review tools that give a reminder after a set period of time<p>- Azure DevOps' tracking of conversation state with filtering (and toggling between original code and the "fixed" version)<p>- Auto-merge-on-green-checks (including reviewer sign off)<p>With this, responses are timely without people polling the service, letting machines micro-manage the process rather than humans.