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)
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) :)