Python, to take one example, is a great general purpose language. It is terse, expressive, introspective, and high-level, and it supports multiple programming paradigms (imperative, OO, functional). Its standard library is robust and full-featured, and it also benefits from a vast ecosystem of third-party libraries that do just about everything imaginable.
It will never be as fast in execution as, say, C (though we can expect impressive speed improvements through the improved use of VMs); but in terms of developer productivity you can't beat a high-level dynamic language.
For any complex app, you need good project management software, version control, unit testing, clear and comprehensive documentation, and so on. I can't think of any reason why you can't apply these techniques using a dynamic language.