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.