codified knowledge

seth writes software. seth tries to be better software writer. seth writes blog.

The analogy might be violent, but it applies to new projects, particularly when you’re building something that hasn’t been built before. Like the gunners, you’re trying to hit a target in the dark. Because your users have never seen a system like this before, their requirements may be vague. Because you may be using algorithms, techniques, languages, or libraries you aren’t familiar with, you face a large number of unknowns. And because projects take time to complete, you can pretty much guarantee the environment you’re working in will change before you’re done.

The classic response is to specify the system to death. Produce reams of paper itemizing every requirement, tying down every unknown, and constraining the environment. Fire the gun using dead reckoning. One big calculation up front, then shoot and hope.

Pragmatic Programmers, however, tend to prefer using tracer bullets.

The Pragmatic Programmer, From Journeyman to Master (Andrew Hunt, David Thomas)