Learning Java alone doesn’t make you Java developer

by Veerasundar on May 12, 2009

in Java

In college, where I first learned the Java, I was taught only the Java core features. That time, for my internal class projects, I was using the Java’s out-of-the box APIs alone. I never knew about the open source or the huge number of third party APIs available at online. Even then, I was considering myself as a Java developer.

But, I’d to re-think about my ‘Java developer’ status, when I stepped into the software development company. During my first project, I was thrown at huge list of Java jargon, which I’ve never heard before. log4j, DI, IoC, RMI, JNDI, to name a few. The Java core features (and a little bit of EE features) that I’d learned at my studies were being used only about 50% in all the project code and the rest of the code is usually from the jargon I mentioned. Even though these new (to me) technologies were internally using Java’s core features, they did had their own conventions and APIs. Learning these conventions and get used to their APIs was not easy and often really time consuming. But slowly, as I was progressing into my career, these Java jargon became familiar to me. Now, I’m comfortable with all these jargon and confident enough to make a new jargon all by myself! :)

But my point here is, what I thought the Java knowledge was not actually enough to become a Java developer. Learning Java alone didn’t make me a Java developer. I’d to learn all these jargon to become comfortable with the enterprise application development. But, all these technologies were never taught to me as part of my Java course. If it was included in my syllabus, then it would have been really helpful and would have saved much time later. Also, knowing these technologies well before is actually helps the learner to get a better understanding of the enterprise application development process.

I’m not sure about the current syllabus for the Java courses in colleges/schools. I would like to see these new APIs are also included as part of the Java course. Earlier, I’ve blogged about the technologies that a JEE fresher must be knowing, where I shared a similar thought. Apart from the technologies that I’d mentioned (JUnit, Log4J, Struts, etc) in that post, what else would you be adding to the list of must know APIs before stepping into enterprise Java development?

Follow me on Twitter to get notified whenever I update this blog.

{ 9 comments }

Mark Nichols May 12, 2009 at 8:33 PM

I agree that merely learning a language doesn’t make you a developer in that language, whether it was Java, Python, Ruby, COBOL, or Scala.

And you point about the vast array of open source libraries (and their associated API definitions) needing better coverage is well taken too.

Chris May 12, 2009 at 8:56 PM

I don’t think those APIs belong in any course syllabus. It would be great if a university offered more relevant material to what you would be using in the workplace. But the universities haven’t a clue what you will be using specifically in the workplace. It might not even be JAVA (gasp!).

But it would be great if the student community helped to address this gap. At the university I attended, about once a month the ACM or another student organization would offer a 3 hours class/lecture about interesting and helpful technologies. That’s where those technologies become useful.

You could help to solve this issue by volunteering a few hours of your time to teach one of these technologies to your previous university.

Josh May 12, 2009 at 9:33 PM

A University is not supposed to teach you everything you will ever need before you even get your first job.

Eduardo Vera May 12, 2009 at 10:01 PM

Indeed, these days, the “core” Java APIs are not enough to call yourself a developer. Most likely, you need to know – at the very least – the J2EE/JEE spec and one or two frameworks. However, if you need a “minimum knowledge” to qualify as a real developer, I would say that you need hands-on experience on JSPs, servlets, Spring and Hibernate.

Francois Marot May 13, 2009 at 12:05 AM

I agree with you that at school you only learn 50% (at best !) of what you will use in enterprise Java. BUT in school, you have to concentrate on the most important parts ! I think that it is best to have a deep knowledge of the core Java: it is the basis on which all those framework and API are based. So if you don’t have a firm knowledge of those root concepts, you may encounter some tough disillusions later…
It is the same for the IDE (Eclipse, Netbeans): in school, I never really learnt them… But I spend whole my job time using them ! But if I understand enough what is going on in Java (compilation, execution, debugging, classpath issues, classloaders…) I have no problem to understand how to work with those IDE.
I think that school must insist on the fundamental concepts, and must not try to make developers who know every API & framework. If the students know enough of the core concepts, they’ll handle those in no time ;)

Azizi Yazit May 13, 2009 at 3:11 AM

As a java programmer, for me the strong basic in java is required for those want to became updated java programmer. So, in the University, you learned all the basic and use it to learn all the tools when you are working.

Those tools like java frameworks, portlets, orm and others can be easily to be catch when you have a strong basic in java because as you know all the tools was developed using same language (Java).

Ben May 13, 2009 at 7:59 AM

I agree in that just learning a language doesn’t necessarily make you a developer – experience counts for a lot. However, I’m not sure teaching about all these API’s in schools would do much but overload and confuse the students. You need a solid grounding in the fundamentals first before delving into third party libraries.

I’ve been a developer for years, but I still find it impossible to keep on top of all the new libraries, methods, best practices etc! :o )

Alberto September 24, 2009 at 10:17 PM

Certainly a Java course shouldn’t be teaching any of those topics. Certainly universities can have courses that touch on the paradigms behind some of those libraries , but it’s really up to the student to learn those advanced topics on their own. One thing developers must do is read up on their own and to get their hands dirty when exploring new topics.

Infernoz November 21, 2009 at 2:33 AM

University should be about 1. learning to learn, 2. learning the basics about various computer languages, various techniques, and various technologies like databases, networks, graphics, design tools, OOP etc., 3. preferably learning how to work with other people.

University should not be about learning specifics, like say vendor specific training, advanced language details * etc., unless these are an option later on!

* a lot of third party libraries are best suited to advanced programmers, and not for beginners; I know, I've been a professional developer for many years, and plenty of OSS libraries and frameworks have a steep learning curve, when you want to make serious use of them, often because the user documentation is carp!

Comments on this entry are closed.

Previous post:

Next post: