1/13/07

Career advice for Java developers for the coming year

Well it would probably apply if it was 2001 as much as 2007 and it's this

"Focus on the data"

Good advice is often surprisingly simple - to some it's unsatisfactory. I believe this advice fits is in that category. It's like "Invest in Index funds" - brilliant investment advice for so many reasons (e.g. diversification, lower taxes, lower costs, avoid bad management) but often people expect a solution much more intricate and involved . . . . . but I digress.
I guess the main point is - by focusing on "the data" you are effectively focusing to a large extent on your customer and the guys with the $$$ paying the bills and your pay check . . . and that's not a bad thing.

Within "data" there is a lot of stuff in Java - let's start with how data is often stored and represented

Representation of data and accessing it
  • RDBMS -- There's so much to SQL - the DDL and DML - and of course there's JDBC (CallableStatements, PreparedStatements etc.). Then there's the differences between Sybase, Oracle, MSS etc.
  • XML -- Parsing it (DOM, SAX, XPP), formatting it (XSLT), accessing it (XPath), describing it (XML Schema)
Mapping of Data to and from Objects
Getting it out of the "persistence device" and into Java. That is:


Transmission of data
Now we probably have to send that data to somewhere - partners, other business units, end customers etc.

  • Web Services (JAX-WS and Axis) -- then of course there's SOAP and REST but let's not go there now :-)
  • Messaging (JMS -- check out ActiveMQ)

Architectures

These are the hot architectures of the moment but they really put the emphasis on data and services to access that data.

I could also go into the display of data too but that's really getting a little too broad . . .

Either way, that's a lot of stuff - just to address business data-related functionality - but hopefully your career as a developer will be long and successful so you've got time to plug away at it. My advice - start with JDBC and XML as everything builds on that foundation. Know those already? Web Services and Messaging and so forth.

In the end we build most applications to access, update, manipulate and display data because that's what customers and employers will pay for. And if your "value add" as a developer aligns with the needs of your customer / employer then your career as a developer will be bright.

And yet as with all such apparently simple advice - the follow-through, persistence and effort - week-in and week-out is the hard part and it's what often distinguishes the best from the rest.

4 comments:

garikapati said...

yeah! Good point on which every Java developer to be concentrate not just in new year but rest of his career.
for ESB try Apache ServiceMix..

Cheers !

garikapati said...

yeah ! Good article !

Anonymous said...

This was a great article, thank you. i was looking for something like this b/c i've decided to change jobs, i have been in health IT for 5 yrs now and have had a lot of focus on EDI. I realize now that i'm behind b/c i haven't used hibernate, sybase, struts, SOA technologies, AJAX, Spring, etc. And my web development is waaay outdated. I find it a little overwhelming that there are so many new technologies and it seems like they'll just keep coming. I'm 28 and I want to start catching up. I have been talking to recruiters and the market seems to be doing very well, but I don't know where to go. Perhaps you can give me some advice - I've been thinking of doing contract jobs so that I can gain a lot of different experiences faster than a permanent job, what do you think? Also, I don't know if should even try to improve my web development skills (JSP, javaScript, Struts, AJAX, XSLT, etc ) or if I'd be better off picking one aspect of application development: Back End or Front End and sticking with it? Or should I aim to be a well rounded programmer in both includign web?

Any more advice would be greatly appreciated. I've already started to read your other articles, they're all great. I would have rather written you an email, but I couldn't find a way and so I remain anonymous b/c of the job switch situation. Thanx again.

Frank Kelly said...

Dear Anonymous,

Without some of those APIs under your belt it will be hard to get into some places that already have them in house.

One thing I think is worthwhile is getting a Sun certification (e.g. SCJP) as a good stamp of approval of basic Java knowledge.

That will give employers some degree of confidence in your skills (well in my opinion at least it impresses HR to get you in the door!).

Then I'd pick one of the APIs that interests you e.g. Hibernate / Struts, buy a good book and try to write some sample programs with it.

I've been fortunate enough to be exposed to Struts and Toplink but I'm hoping to get some Spring/Ajax experience next.

I'm not too familiar with contract jobs but from what I know you had better already know those APIs before you get in the door. As a contractor the company doesn't really want you learning on their dime. They're paying for your expertise!

As for being well rounded I'd say go with what keeps you interested. If variety is your thing jump around or if you like one area (e.g. front-end) then go with that.
There's enough jobs out there for specialists or well-rounded developers but if you do find a niche, do try to expand your interests to other areas.

Don't get too discouraged - there's a lot to learn - so break it into chunks and keep plugging away.

-Frank