Enterview with Martijn Verburg published in:http://www.oracle.com/technetwork/articles/java/martijn-1865077.html
Oracle Technology Network: You were voted by your JavaOne peers as a JavaOne Rock Star for your session on the diabolical developer, in which you identified some “diabolical” practices that Java developers engage in. Tell us about some of the bad practices.
Verburg: I’ll refrain from going overboard, but here are the ones that have left me shaking my head in disbelief most often:
- A lack of communication: Software development is far more a social activity than a technical one; most projects fail because of communication issues and social dynamics, not because of a bad technical decision. Sadly, many developers never learn this lesson.
- No source control: Some developers simply store code in local file systems and e-mail the code in order to integrate their changes; yes, this still happens.
- Design-driven design: Some developers are inclined to cram every design pattern from the Gang of Four (GoF) book into their projects. Of course, by that stage, they’ve actually forgotten why they’re building the software in the first place.
Oracle Technology Network: If these practices are so bad, why do developers engage in them?
Verburg: I’ve seen a wide range of reasons:
- They were never taught at their high school or university that their bad habits were harmful.
- They weren’t mentored in their first professional roles.
- They’ve lost passion for their craft.
- They think software development is a technical activity and not a social one.
- They think that they’ll be able to tidy it up later.
- They’re deliberately being malicious!
Oracle Technology Network: Can you identify any core confusions, assumptions, or misconceptions that lead Java developers to engage in bad practices?
Verburg: With Java and the JVM, in particular, I’ve seen a couple of trends. One is that developers think that the JVM is a magic box that will clean up their memory and make their code run fast, as well as make them cups of coffee. The JVM does help in a lot of cases, but bad code can and will still lead to terrible results!
The other trend is to try to force Java (the language) to do something it’s not very good at, such as rapid Web development. So you get a proliferation of overly complex frameworks, libraries, and techniques trying to get around the fact that Java is a monolithic, statically typed, compiled, OO environment. It’s not a Golden Hammer!