Nah. I'd almost argue that discovery coding is what helps define the architecture. I've seen way too many cases of over complexity designing a system for scale that will never be hit which results in an architecture that is too rigid to add new features to. If you do discovery coding you would realize the real bottlenecks and functionality that's required and can build an architecture that addresses those concerns instead of just designing for design's sake.