Search This Blog

Loading...

Sunday, January 25, 2009

Wounds that I am nursing....A Whining blog!

A thing I detest doing is updating my resume. During the process, I aim to make the resume as marketable as possible. Buzz words regarding tools/software that I have used, experiences that could classify among the current "Hot" technologies and my contributions to a project and my achievements therein desperately try to find a place in my resume. Updating my resume opens some old wounds..(that's just for effect, I am not really hurting ;-))


As a Java/J2EE developer, clearly most of my resume is going to contain references to the same and tools/libraries/technologies used there-in.


I often find myself asking what exactly differentiates a J2EE ,or more recently re-christened, Java EE developer from a Java SE developer ? From a birds eye view, it appears to me that Java EE is a super set of JAVA SE. In other words, if you are working with a lot of the Java EE modules, you need to understand quite a bit of Java SE in order to be effective.

I have not used all the features of Java SE but have good coverage over most of them. On a rating scale, I would put myself comfortably above the middle. On the Java EE stack, I have directly or indirectly worked with most of the offerings.

Now, comes my whining or expression, pick your choice ;-). I quite dislike being stereo-typed in the java sphere. I cringe when someone classifies me as a Java SE developer or as a Java EE developer and uses that as a criteria for the hiring process, i.e., I make the cut or not.

At one point in my career, I lost an opportunity because I did not have experience with J2EE in general and EJB's in particular. At that time I had considerable experience with the Java SE stack using Swing, Java Beans, RMI, JDBC etc. At a subsequent point in my career after the fall of EJB 2.X, I was nearly eleminated from a potential career opportunity because my resume had a lot of J2EE buzz words in it.

I often wondered why my lack of EJB experience eliminated me from the first position. I did know RMI and Remoting, I was familiar with transactions, I knew JDBC, I understood pooling of resources, I was comfortable with Struts and MVC frameworks, so were EJB's and their likes such a big step away? Frankly my position has been that J2EE is finally Java after all. I still maintain that if I know Java SE reasonably well, there is absolutely no reason why I cannot develop J2EE components. Something I did later on and without much pain, at least to me :-) For colleagues and seniors who tolerated me, I am forever in your debt :-)

Now, regarding my potential elimination from the position that felt I had to many Java EE buzz words under my belt, and that the position called for a more "core" Java SE developer, I frankly could not understand the concern. Subsequent introspection made me feel that the thought of the hiring powers were "Java EE developers are mostly folks who only wire components together and don't participate in core programming".


I made up a term in the above paragraph, "The Wiring Developer". Time to give the term a meaning. A wiring developer is one who works in a language/tool where they simply wire components together and achieve the goal desired. Select a form from a palette, select a database icon and drag it over the palette, map the columns and we have an application that persists the form to the database. Awesome! Wiring developers have at their disposal a fantastic language or tool that abstracts away the underlying complexity. These are folks who have invested their efforts in learning a tool and are really good with it and thus more power to them. I wish the tools that I work with are that straight forward :-( Sadly this is not so. One has often got to to delve into other aspects like Graphs, Skip Lists, Trees, Djakarta's algorithm, closures, recursion/iteration, object orientation, patterns, who knows what, in order to achieve results that are up to the requirements presented; both from a functional and non-functional perspective.


So whats the point? Well when a wiring developer enters the coal mines of the Java/J2EE world, they would need to know how to dig using low end tools . The same applies to the Java/J2EE developer who enters the high life of wiring, they need to possess the fine art of wiring. In other words, if one is developer who is great at wiring together things, then target positions that will not dirty ones suit. If you are folks like me who are in the mines (no disrespect to miners here by any means), target a Java/J2EE position where you would enjoy digging in the mines :-).

Anyway, I have explained my wiring developer definition. Time to return to the "mine", which represents the J2SE and Java EE developers such as myself. I am of the opinion that Java EE developers != Wiring developers, Java SE developers can easily do Java EE stuff, any solid OO developer can do Java, any strong miner can do Java, C#, Scala, Eiffel, or whatever.

When hiring a developer who is going to work with Java related technologies, one should be on the look out for a person who has invested in the basics of the language, understands basic programming concepts, a person who can learn any library/tool based of those foundations. That is what I would like to call the equalizer equation for hiring a miner.

There might be requirements where specialists can showcase their skills but generalists who are smart, rock the boat, if invested in properly by the company. A smart Java SE developer IMO will pick up JAVA EE modules in a breeze. The same applies for the Java EE developer should the roles be reversed. A good hungry programmer will learn and grow. If a company is willing to invest in its people, I feel a C# or C++ developer can excel in Java and vice versa if given the time. I do understand that (investment == $$$) and people often do the best they can when hiring as long as the equation is tractable.
In conclusion, I must admit that atleast in the Java sphere, if someone categorizes me as Java SE or Java EE developer I cringe. Categorize me as a moron programmer, and I will walk away with a smile. But please, please if its Java, there is nothing I press that there is nothing I cannot do! Heal my wounds..please heal..
So, what do I put on my resume in the current time? Should I highlight my Java SE skills and hide my J2EE contributions or should I showcase all my J2EE work?
Neither, I hate updating resumes and am passing on the same..too much stress and I hate rejection which is quite possible considering todays economy ;-) .
As a final parting note, Overstock.com is hiring smart developers, J2EE or J2SE, if you are smart, interested in making a mark with exciting, cutting edge technologies..look no further than their site...and please do not use me as a barometer when considering whether or not to apply to Overstock, I am, what I like to term "An accidental hire" :-) That term my friends, is my contribution to popular culture :-)..if already defined and copyrighted, I have a law suit in the making ;-)

2 comments:

Dave Stockmann said...

So overstock forces you to update your resume too? I thought that only happens with consulting companies.

Sanjay Acharya said...

lol! Nah dude, a resume should always be updated. In this economy more so...