I was planning to write something about differences between agile approach to software development and more classical one (waterfall-alike) style, but I didn’t really want to repeat the obvious banalities you can easily find on Google. That’s why I decided to present it more like “top-down” versus “bottom-up” approach holy war, mainly because I’ve noticed how hard it is to cooperate with someone who’s devoted to opposing style of software design.
Personally, I appreciate value of KISS (Keep it Simple Stupid) and YAGNI (You Ain’t Gonna Need It) principles, but my keywords are: “generic”, “re-usable” and “design patterns” - so yes, I’m the one who always prepares a design up-front. What is more, as low-level details may sabotage larger idea of general design (as they can “follow spreading paths”), I always start with overall model that fits all the requirements, so low-level details will fit their slots later. Some may call it difficult, but I’m always up for the challenge.
"Is Design Dead?" (http://martinfowler.com/articles/designDead.html)
Believe me or not, I’ve found it just recently in some TDD-related materials. Enjoy the reading.