Recently, I have seen many developers considering switching to technologies like NoSQL, Scala, and so on due to problems like performance, maintenance and availability.
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 😉
2 thoughts on “Back to Basics”
Great post! Good to see you posting, Dr. Lemos.
I think the most important tool to make a good code is test.
With continuous integration and TDD, you enter an almost perfect land for refactoring: regression tests and safety.
One thing that’s very bad for good code base is over-engineering. So many people get so worry about design patterns so early,
and make good too complex and difficult to understand. Evolutionary design/architecture is the good way.
Keep posting my friend!
I edited this post suppressing the list of Java posts. Since they will not be published neither in the order suggested nor with the same titles, this will avoid confusion.