Let us first look at the TDD and why I feel it is right way to develop functionality. To start with let me just ignore TDD as if it does not exist but obviously I do believe writing unit test cases is worth the effort.
So I have done my design, written my implementation as per the design and now I am writing the unit test cases to test out every possible scenario and then I realize I am not able to unit test a scenario until I modify the code to get it more suitable and enabled for testing. I modify my code to make it available for testing but then we know if our code is not testable, it is a flaw in the design and the design itself should have been such to allow for it to be tested. So I need to modify the design.
So in a way my tests are driving the way the code is written and eventually the design hence why not start with the unit tests at the very first place rather then going through an unnecessary loop and that is what is TDD (or more aptly TDDAD – Test driven development and design).
But then can we just stretch it even further and have my test cases drive the architecture of the system as well. Not really
1. Architecture by definition has much wider scope and relevance then may be just the design of few classes. It is a decision which is taken at a team and solution level and not merely confined to the reasoning being done at the pair programming level.
2. We need to get some basic architecture in place as part of zero iteration which takes in account just enough skeleton in place from which we can start building. We need to ensure we are pretty confident of this basic skeleton as it will be one of the hardest stuff to alter later in the future iterations and will have quite a strong consequence whenever we plan to do it.
3. Architecture decisions are very hard to postpone as something like going for a typical n-tier architecture or may be for SOA or in some case opting for a third party off the shelf solution or the very latest GAE as PaaS solution has to be taken upfront and cannot be delayed for a point in future
Not to say that we need to do big upfront architecture but still the bare bones or the minimal set has to be in place and then let the design evolve


![Framing #3 - Stockholm Old Town [Explore] Framing #3 - Stockholm Old Town [Explore]](http://static.flickr.com/5080/7216523256_d7a02bb300_t.jpg)
