Java developers, there is life outside the container
Of late I have been looking at a good number of resumes and interviewing some candidates for Java developer positions. I must say that I was astounded by the number of candidates who do not know how to design any Java software that does not involve a servlets or JSPs . It is clear to me that there is a good number of Java developers out there who are oblivious to the fact that there is a world of Java outside the container. And these developers are no slouches either. The developers that I interviewed were highly certified Java developers with strong Java fundamentals.
I am still failing to reconcile the strong fundamentals of the Java developers with their inability to design outside the container. I view the ability to design outside the container as something every Java developer should be able to do. During interviews, that should not be a question that should be asked at all. In fact, I never used to ask the question at all until I noticed that each time I asked a candidate a design question, they made the assumption that there should be a container, servlets and JSPs involved. When I dug a little deeper, I made the observation that there is an unbelievably high number of highly certified Java developers who fall short when asked to design anything that is not hosted in a container.
In my opinion, Java certifications and their emphasis on particular patterns are dumbing down the Java developer. The world of Java consulting exacerbates the problem because it rewards those who solve problems by rote. While I have nothing against patterns or consulting, I cannot help but observe that we might be losing a generation (in dev generation years) of Java developers in much the same way we lost a good generation of developers to 4GLs at the end of the last decade. Who is going to develop the complex stuff? Who is going to innovate? Innovative solutions to complex problems cannot be solved within the constraints of containers.
What do you mean by “there is a world of Java outside the container”. Are you referring to writing web apps that do not run in the standard JEE container or servlet container (tomcat, jboss, weblogic, websphere, glassfish…)?
After rereading your post I guess what you are getting at is that Java developers tend to write only web applications and have no idea how to write console based apps or apps that interact with other apps on the socket level… Is that what you mean?
Yes. I am talking about just standalone java code. Sockets is one example of communication but there are a lot of other examples of java code that runs as standalone programs without the need for a container.
I totally see your point.
I have been a Java dev for a very long time but I’m tired of Java and the unnecessary complexity of the API and I was jealous of the simplecity of modern scripting languages like Ruby, Python and JavaScript. That’s why I traded my fulltime job for returning to university for getting my MBA and doing some projects for myself.
Let me name just 2 examples :
File API – in these languages I mentioned reading and writing files is much easier.
JSF – it just adds a new level of abstraction onto html. It is actually much easier to build web apps with templates in a small restricted templating language.