New technologies like Scala or NoSQL databases for instance are a very good think, and they are there to solve some particular problems. However, in many applications I’ve seen, the real problem is not technology limitation but poor application design, lack of tests or simply bad coding. When that happens, switch to the last shiny framework, tool, pattern or else won’t solve the main problem, and the factors that originated that problem in first place might still be there, waiting to be addressed or bet you again.
Code reviews, pair-programming and continuous refactoring are strongly recommended before considering rewriting a code base or change a technical stack, let’s say, to “pay the debt”. In most cases I’ve seen, the more we master software basics (programming best practices, testing, design patterns, basics of algorithms and data structures, etc.), more close we will be from building great software. To be more effective a change of mindset is sometimes essential and Agile development, TDD and Software Craftsmanship could bring inspiring ideas 😉