PG, agree/disagree? i ask because this is an interesting contrast to what you've said about writing a crappy v1.0, then iterating on and improving it. but the two concepts aren't mutually exclusive, because maybe "crappy v1.0" can simply mean a well-engineered subset of your eventual goal.