Observe that for the programmer...
23 Sep 2011
Observe that for the programmer, as for the chef, the urgency of the patron may govern the scheduled completion of the task, but it cannot govern the actual completion. An omelette, promised in two minutes, may appear to be progressing nicely. But when it has not set in two minutes, the customer has two choices—wait or eat it raw. Software customers have had the same choices.The cook has another choice; he can turn up the heat. The result is often an omelette nothing can save—burned in one part, raw in another.—
Fred Brooks
Omelettes and Fried Eggs (a programmer’s dilemma)
This quote is one of my all time favorites. It helps bring a great analogy for people who don’t understand programmers, how a complex program is made. But I think the original is missing a key point - the programmer made an omelete when the business owner would have been just as happy with a fried egg. The responsibility lies in the programmer to determine what technical requirements there are, and build the simplest product that the business owner needs. Principles like DRY, YAGNI, TDD (which really all derive from bottom-up programming techniques) have been thrust into popularity as more dynamic languages have gotten popular again (Ruby, Python, Javascript). We should remember that the number one thing that programmers can do to reduce scope is change the requirements. This might even be clarifying a use case or removing something that you don’t need just yet. The great thing about agile (with a little “a") is that you’re always introspecting and keeping track of where you are. If you’re behind, you should know you’re behind every day at standup, so that’s the time to re-work the assumptions if needed or triage what you don’t need.
(via gbb)
programming all your eggs and bacon