from a totally new implemented system view (which is hardly found except in acadamic worlds) requirements should drive your technology and not your design. when maintaining a system you're chosen technology must somehow fit into the existing one.
i think design emerges while implementing your system. use upfront desing only for roughly requirement issues. the more fine grained you get to your running system the more you loose sight of your first design. and is a pain in the arse if you try to back-squeeze your implementation to you're 2 weeks ago proudly presented design
don't develop technology centered, refer better to good practices (unit-tests, close requirements engineering, well factored code etc....).
of course
you should know about technologies (
jsp, asp, mysql, or whatever), so you can choose the appropriate one for your system, but remember: no technology is worth the holy grail.
[ April 28, 2006: Message edited by: manuel aldana ]