Friday, 22 April 2016

Which are more in demand, .Net or Java developers?

For that question your time frame is wrong. Or conversely the question is wrong for the time frame. But also, the domain governs much more what language/environment you're going to use - e.g. if you make programs for Windows then 9 times out of 10 it would be DotNet, if you make something for Android phones then the same can be said of Java, if you make a backend for a web site you might have a equal split between Java / Ruby / Python / C++ / JavaScript (or even something else), for iPhone (or most Apple stuff) you might find ObjectiveC is much more prevalent (perhaps to be replaced by Swift in the future). At the moment I think the smart-phone craze is what's driving Java's majority, in other domains where it used to be top of the pops it's losing ground to stuff like Ruby, which in turn is losing ground to JavaScript, etc.

If you're going to spend the next 10 years in this industry and attempt to be a decent to good programmer / software engineer - then none of those 2 would be "enough". Neither would any other single language / environment / system. For that matter if you spend 10 years and don't realise that they're "the same" and have little (if any) influence on the way you program, design, create, fix bugs, etc. ... then you're missing the entire point. Much more influential is the domain, and even then it's more like an influence on the tools you use where other domains might use different tools to accomplish the exact same things in (even) the exact same ways.

Rather your question should ask what you should be looking for in the next 1 to 3 years (at most). Or what sort of understanding in programming you'd need over the course of 10 years.

If I went with looking at 10 years future just out of university I might have gone with Delphi. And it would have been the exact wrong choice. I'd have wasted the entire decade on something which was dying out, even though at the time it looked like the "next big thing", only to be replaced by the next-next big thing Java (only a few years later), which now seems to be in replacement phase to the next-next-next big thing Python/Ruby, and yet even that seems as if it's doomed by stuff like Haskell.

But even that previous paragraph is wrong, because none of them are entirely replacing each other. Neither is anything entirely "dead". I still do some stuff using Lazarus (i.e. a Delphi clone), not to mention many are still using Fortran (now if anything "should've" died out it would be that). I still do some C, and sometimes C++. Every now and then I go and do a bit of Java. And at present my major language is C# - simply because of the domain I find myself working in. And yet a large portion of my time is also spent on making stuff in Lisp. Thus nothing actually died over my 25+ years in the industry, some just became less popular replaced by "something new" which wasn't all that "new" in any case (some exceptions might be stuff like Haskell - though not as "mind blowingly new" as some would have you believe, functional programming came from long before Haskel was even an idea).

My advise? Learn something which interests YOU and where you can find immediate short term employment. At the moment it might be Java or it might be C#. It might also be Python / JavaScript / whatever else you can shake the proverbial stick towards.

But for the long term you should be doing many of these things, simply plodding away at Java or C# isn't going to give you enough "scope" to become a sought after employee - that sort of experience tends to keep you in a junior position. You get ahead further by understanding more concepts and broadening  your design capabilities - not just specializing in using a Philips head screw driver. Rather you want to know how to also use other types of screws, hammers, saws, glue, the works! Else all you're ever good for is being a cog in a production line doing the same actions over and over again, never getting ahead.


-------------------------------------------------------------------------------------------------

Looking strictly at current salary trends tells us that Java is currently paying more.  According to YouWorth salaries are trending as follows:
.NET - $74k/year
Java - $81k/year
While these are slightly different, I would not expect a large difference in the two in the near future. 
10 years from now?  That may be a different story.  With Windows being the primary operating system for the vast majority of businesses, I think .NET will be a safe bet for the long haul.  I don’t see Java going anywhere for now but the market for mobile/online programming languages is anybody’s guess.  With as quickly as things change in those markets I think it’s safe to say that Java will be around, but how prominent will it be?  That is harder to say. 
I think your best bet is to choose what makes you happy and work with that while gaining a working knowledge of other languages.  This will make you more agile in the long term and also give you more options in the short term.  
I pulled these numbers from YouWorth.  YouWorth is a free mobile app for both iOS and Android that tracks  .net and java developer salary data. Not only am I an ambassador for YouWorth, but I use it myself. The app allows anyone to import LinkedIn skills and track their job market value over time. YouWorth notifies me at any point there is a change in either my value or the value of skills I follow.  This is a great tool to use when looking into your own career and skill set for something like specific programming languages. 

No comments:

Post a Comment