Switching to Java is Self-Destructive!

Over Career forums, I was answering a question by .Net Programmer who wanted to switch to Java due to company requirement.  I found some answers supporting the move.  In my view, it is NOT-A-GOOD-IDEA to switch from .Net to Java.  If i were asked on the matter:


My quick answer would be: Do not switch!

Scenario

You are a .Net Programmer with 5+ years of experience.  You love the platform & enjoy your day-to-day programming life.  One day your boss come & says “Buddy… We have a long term Java Project in hand, we require you to learn Java & render the project!”

What you will do?

You will feel regretful in leaving .Net!  A series of thoughts & questions will arise in your mind:

1.       I do not like Java!

2.       Can i learn Java?

3.       What about my hard earned .Net skills?

4.       Is there a risk that I forget .Net?

5.       What will happen to my career?

6.       After 1 year the Industry perceive me as .Net or Java guy?

 

You can always find switching-supporting arguments, preferably from your boss or manager.  Following are some of the tactical arguments which i remember:


1.       Great Programmers never insists on particular language

2.       All languages are converted to machine language for execution, so doesn't matter .Net or Java! 

3.       You won't forget .Net after 1 year

4.       Java is better than .Net

5.       Having Java in resume will increase your value


Often i see the Information World is more of false/wrong/contextual information.  It takes some real processing to filter out the weed information.  I will answer the above statements at the end of the article.

 

How Career Value is increasing?

Career Growth implies more productivity output for same time input, more capabilities earned, more quality & more..

We have to see the multiple factors that contribute towards career growth:

1.       Increase by year (more projects >> more knowledge >> more value)

2.       Increase by technology (.net, c#, entity framework, wcf, sql server)

3.       Increase by business acumen (financial, insurance, power sector)

4.       Increase by methodology (cmm, scrum, tdd)

5.       Increase by company (overseas client, mnc exposure)

We are talking about the second point highlighted.

Java is a different animal!

Adding Java to the .Net pack will require you to go through the following preliminary aspects of Java:

·         Learn Java Language

·         Get familiar with IDE

·         Learn Collections

·         Learn GUI aspects

·         Build & Deploy

·         Troubleshoot

·         Learn ORM (Hibernate)

·         Learn J2EE (struts, ejb etc.)


Surely, you end up in a different plane with Java!  You can see that 1 year working on these aspects won't add to your .Net experience as it would be a parallel track & no-total-value increase.  So you are wasting your energy.

In the .Net track value increases if over the years you build on top of knowledge like > windows app > phone app > web app > certifications > .net reflection > componentization > entity framework > large project implementation > agile > tech lead > team lead > architect > like that..


Same as the case of Java guy switching to .Net. 

Work Enjoyment Aspects

Programming is a great Job for the Programmer-Material people.  They enjoy hours spend @ work.  But the enjoyment will be drastically reduced if we are not FAMILIAR with the technology.  Surely a configuration issue can create hectic hours.

While working in Java with amateur training OR no-training yield your pleasant days to hectic in no-time.  I don't think these small companies spend enough money on training resources well in a new technology; they will be looking for quick turnaround.

So working in Java could be PAIN!

Why fresher is paid less?

One thing we should not forget that “When we were freshers, only few companies were ready to hire us”.  Later we gained experience & after 5 years, there are 10 or more companies at the same time to hire us.  This demand/supply fluctuation is made through CAREER VALUE.

As Warren Buffet says “Do not do anything that lose money”, similarly I would say:

“Do not do anything that lose career value!”

Memory Aspects

Learning to Drive a Bike & Learning to use Computer is stored in different memory areas.  But returning to a Bajaj Pulsar bike after you were riding Yamaha Z bike would be a problem – you will face difficulty with gear box, brakes, control etc. (as they work on the same memory area)

Similarly working in Java & returning to .Net after 1 year will surely make difficulties in thinking process, writing code, F5 key to run etc.  These 2 are colliding skills.

I am not a psychiatrist to convey it... But as you are a smart guy, you got what i am trying to say.. Right? 

My own experience

I am writing this from my own experience.  Years back i was working in .Net, Delphi, Java, PHP, HTML, VC++, Disassembly, all in one year.  My mind used to get cluttered between Win32 API call, Java SWT, PHP Variable Declaration, and Eclipse & Visual Studio.

I entered this Accident Zone due to my over-helping mentality.    Every quarter my boss will come up with a new client & a far different technology, seeing that nobody accepts the project, I will accept it & stretch myself to learn Java, PHP etc.  Later point of time, I found that company is taking me as a “buffer resource” who can work in all technologies, i became a:

“Jack of All Trades & King of Nothing”

And in value aspects my 6 year career was paid less than a 2 year Java programmer in the same company!

“So who gained, who lost?”  Clearly company gained what I lost!

So being in the wrong hands, people might exploit your helping attitude!

High Growth Scenario

If we properly take care of our career, empower the right skills, achieve 30% steady & simple growth every year like Sir. Narayana Murthy, then our career will look like this: (GROWTH & LADDER)


 image

 But if you blindly depend on your company, work on all contradictory technologies, switch a lot between technologies, lose your mind, your career will look like this:  (SNAKE & LADDER)

 

After all, it is you who have to decide the aspects, that Job gives:

1.       Work Enjoyment Part

2.       Monetary Aspects

3.       Financial Freedom


My Answers

As per the promise, I am trying to put my answers against the tactical “supporting-thoughts” by deceivers:

1.       Great Programmers never insists on particular language Yes.  You are right.  But i say if they insisted on particular language, they would have been EVEN-GREATER!  For example all the Tech Authors, Tech Leads, MVPs are a result of focusing on particular technology or language.  So focus is value, focus is growth!

2.       All languages are converted to machine language for execution, so doesn't matter .Net or Java!   I don't know what to say for this.  I can counter it saying “All human beings are ultimately Animals with advanced brain!  Do we treat animal equal to human?” NO.. Similarly there is difference in .Net & Java.  The skill experience determines the productivity factor of .Net, so how quick the machine language is created depends on skill level, so .Net matters!

3.       You won't forget .Net after 1 year We won't forget .Net after 1 year, but the 1 year can definitely corrode the skill efficiency for sure, we won't be sharp enough as we were 1 year before.  It requires thorough regression to get back to old foam!

4.       Java is better than .Net Considering the latest .Net Platform, C#, Associated Technologies, I would say .Net is way ahead than Java.. Challenge >> Read this

5.       Having Java in resume will increase your value It can only increase value if the company is looking for hybrid-programmers, such opportunities are less in the programmer level & more in the solution architect level.  So in general case, it will not increase the value & you will get confusing calls from Java Hunters, if the keyword  Java is in your resume.

Boss's thought

From the management side, they won't like these points.  They prefer resource-reuse as switching technology helps with:

1.       Reduced cost as no-new java programmer is hired

2.       Improved return on existing resource as idle time of .Net programmer is avoided

In my management experience, we were happy to reuse resources, but i would be honest to tell upfront that it will reduce their career value; I do not like people coming back to me & saying i cheated them 

Boss will ask you to see things in his stand point; Programmer can ask-back to see things from the programmer stand point! 

In most cases, the switching of technology marks a permanent move as the company is not interested to get back the programmer to previous state, but in the case of idle programmer, the company would be motivated to get a .Net project to reduce idle time.

Remember one thing; some companies have tricky managers who make sure the employees won't grow in value, so that they can use a 10 year programmer at the cost of 3 year guy!  Such leaders are temporary solution seekers, never stick to them as they are lacking humanity values.

 

Another School of Thought

In the film industry I have observed some Actors will play role of Hero & Villain within the same year, but they won't reach the top layer as their IMAGE is struck between multiple characters.  They do the switching due to necessity OR they wanted to enjoy different styles, sometimes being Hero for multiple movies make their life boring.  In this case switching is yielding some benefits of work-enjoyment, but definitely they are losing value. 

The IMAGE of an actor determines his success leverage.  This is the reason SRK is high value in Bollywood.  If he plays the role of Arrogant Villain for 2-3 films, he is gone out of value!

 

Concluding, switching tracks is Self-Destructive!

Summary

I honestly believe I have produced the facts against Switching-to-Java.  Switching career-path impacts, future of:

1.       Career Value

2.       Money Value

3.       Work Enjoyment Factor

 

I would say I made the mistake years back & I would be happier if my bad-experience helped another person from repeating the same!  Btb.. i support the thought we should keep an overview of all technologies like java, iphone, android etc, but not at the cost of our career!

I am open for thoughts from programmer savvy's too.. (not managers though) :)

Next Recommended Reading Appraisal and Switching Company