Collective Wisdom from the Experts 113
Invisibility can be dangerous. You think more clearly when you have some-
thing concrete to tie your thinking to. You manage things better when you can
see them and see them constantly changing:
- Writing unit tests provides evidence about how easy the code unit is to
unit test. It helps reveal the presence (or absence) of developmental quali-
ties you’d like the code to exhibit, such as low coupling and high cohesion.
- Running unit tests provides evidence about the code’s behavior. It helps
reveal the presence (or absence) of runtime qualities you’d like the appli-
cation to exhibit, such as robustness and correctness.
- Using bulletin boards and cards makes progress visible and concrete.
Tasks can be seen as Not Started, In Progress, or Done without reference
to a hidden project management tool and without having to chase pro-
grammers for fictional status reports.
- Doing incremental development increases the visibility of development
progress (or lack of it) by increasing the frequency of development evi-
dence. Completion of releasable software reveals reality; estimates do not.
It’s best to develop software with plenty of regular visible evidence. Visibility
gives confidence that progress is genuine and not an illusion, deliberate and
not unintentional, repeatable and not accidental.