Developers spend an enormous amount of time being stuck. I've been a developer and an engineering manager myself for many years, and I think being stuck is the default state. We, developers, spend most of our time being stuck, and just occasionally, we get unstuck and make progress.
Communication among humans is always imperfect – something always falls through the cracks. You may hold meetings, write memos, report regularly on your work progress, and something will still get lost – a broken link in the chain of communication, or just a tiny gap.
In software development, communicating productively is as important as writing quality code quickly. Maybe even more important — studies show that most problems in software projects are in fact communication problems.
If you've ever managed any software project, you've probably asked yourself: how could our teams move faster? How fast are we moving today? For these kinds of questions, it's tempting to turn to metrics.