Ever since Oracle bought over Sun Microsystems, the future of Java as a language and a platform has been a hot topic of debate among the development community. The doomsayers have already started singing the swan song of Java although no one is quite sure who or what will replace Java eventually.
The future of Java programmer came up as the topic of discussion in a recent JavaPosse podcast (recorded earlier during the JavaPosse conference in early 2011). Listening to the discussion, I couldn’t help wondering what it meant for the offshore developer.
Hey offshore guy, how’s that enterprise code coming along?
If you are an offshore developer, chances are you are working for a medium to large size IT consultancy somewhere in Bangalore or Manila working for a large Banking/Insurance or Telecom client. Reading about Scala, Groovy and Clojure and how Java is bloated, you are wondering what the deal is all about? There’s enough work and more, you think. You just finished a project that used Spring and Hibernate and there is another EJB3 project in the offing. So why is everyone suddenly speaking of Java like it was something the cat dragged in?
And here in lies the crux of this debate. You see, Java is one of the most popular languages today (Tiobe index, anyone?). According to some estimates, there are a few million Java programmers in the world. It wouldn’t be amiss remiss to say that at least a third of those are probably working for the outsourcing industry. The outsourcing budget for most Fortune 500 companies is only going to increase in the next year. Most of the work outsourced by these companies falls under the category of enterprise development for which no viable alternatives exist currently which look better than Java.
The outsourcing industry will always prefer technologies that can be commoditized. Java is a prime candidate. It’s easy to learn and has excellent tooling support. For large scale projects, outsourcing consultancies help manage costs by their ability to add and remove scores of developers with short notice. For those who scoff at the quality of software this produces, let me just say that a) the quality is good enough which is more than what most of these applications need, and b) the predictability and tooling around Java helps minimize the risks. Now imagine doing this with Scala which has an extremely high entry barrier and practically no tool support.
However, like every knowledge area, there are fashionistas in the programming world as well. Well deserving, hardworking programmers in the developed world who attended fancy computer science courses and dabbled with Robotics in their teenage no longer find Java niche. This group of developers is generally the early adopter of newer technologies. They attend conferences and write blog posts comparing Scala and Clojure and scoff at Java’s bloatedness. If you are such a developer, congratulations! We need more like you. To show the rest of us the way ahead. So please keep doing the good job you are doing.
In the meantime…
If you are a “senior” Java programmer writing enterprise code, what does this mean to you? Should you start learning Scala or Groovy or Clojure ? Or should you give it a miss because there is no way Scala or Clojure will replace Java for a long time to come ?
I have the following advice.
- Don’t get intimidated by all the talk about Java’s demise. Java is here to stay. But,
- Continue learning new languages. Languages like Scala give you a fresh perspective on programming and will make you a better Java developer.
- Learn to write good Java code. Now that you know the functional aspects like the back of your hand, start paying attention to non functional stuff like performance.
- Learn how to make your code testable, learn the importance of good version control and continuous integration. Many a project becomes a drag to work on simply because there is no easy way to integrate and test all the work everyone’s doing.
- Don’t learn NoSQL yet. But do learn SQL well. It’s easy. And it’s extremely useful.
- Pay attention to design. Pick up HTML and CSS. Make sure your next boring CRUD application is just a tad bit less boring to look at.
- Understand the pains specific to your work – remote connectivity, non cooperative clients, pesky managers, incomplete requirements, late night calls and find creative ways to resolve these.
In short, do not worry about the fancy stuff. We still have a long way to go before we can master writing really good Java code and executing outsourcing projects well.
All the best!