Should I stick to the Open Source, or its time to explore the .net world
I have been developing professionally websites/applications for almost 5 years, using PHP (Zend Framework) with Oracle/MySQL. Currently I am getting deeply into distributed system design, and SOA.
I intend to learn new powerful language like JAVA, and a framework like SPRING, to widen my horizons, and increase my career growth possibilities.
But I am confused in a way. Question is: why I would learn a new open source language.. I know already know one which is PHP, and I deal with open source systems like Linux. Should I learn another open source language, or its time to explore the .NET world? which path I should take? being totally into open source languages, or having mixed background? which path will extremely benefit me on the long term?
I just intend to learn only one language besides PHP, so I have enough time to know its ins/outs/frameworks/quirks, and to master it.. I don't have enough time to explore/use every single language around. so my decision now is considered strategic and it will affect me on the long term big time.
I am not asking to know which is a better language,or which language is more powerful, yet I am asking to know what path yields the best results, and benefits me the most.
Reasons to which path I should take, also Pros and Cons are highly appreciated.
Thanks in advance.
I would try both Java and .Net.
From a career perspective, both Java and .Net are heavily used in the industry and if you are good at your trade, you should not find a problem getting a well paid job using either technology. At the moment, I think .Net is recruiting more (according to the most recent stats I looked at), but this can easily change, so I wouldn't use it as the basis for any decision.
My thought process would be, learn Java and C# (at an introductory level), as they are both similar in syntax, and should compliment your understanding of each other. It also helps to understand the shortcomings of one language by knowing another.
Once you have played with the both a little, pick the one that you find suits your prior knowledge the best, the one you enjoy the most, and find the easiest to use. I also ways find that if you enjoy working with a technology, you will do better at it. So let the technology choose your path for you.
Which path will give you the best result? It really depends.
Depends on where you live, what's your career vision, how many open positions there are for each kind of job. Are you aiming to work in Microsoft, or Google, or some other place? (Google - go for Java and Linux, and for Microsoft - you can probably figure out).
But what I'm saying is, it's always good to know both of the worlds. So a few years outside your comfort zone can't hurt.
Microsoft .net supported languages would provide you with a nice amount of syntactic sugar that will make open source languages taste bitter.
Additionally, it doesn't hurt to explore.
Make sure you don't get caught in one side, because your clients would not often care about the technology or the programming language you used.
Becoming language and platform independent is a bigger challenge than becoming a master in one language.
You should not care about Open Source or Closed Source when it comes to the question what programming language you want to learn.
Learning C# or Java in particular: Well, I would decide in respect to my job requests, in what business I am and people I am able to ask. This makes it more easy and you'll learn faster when you've someone you can ask. Try getting very good in the language you choosed without getting fanatic and label everything else as evil.
In my opinion C# and Java are very similar. You won't have serious problems to learn the other one later if necessary.
Yes, I would do either or both.
What you may be looking for is a project which will push your technical capabilities. After tens years Java development (some of it at Sun) I had thought I couldn't push it much further until I found the right project. Now I look back at how much I have learnt since then. ;)
which path will extremely benefit me on the long term?
That would depend on what your goals are, only you can say what they should be. If you don't know, then the real problem is finding some new goals and the choice of developing your current skills further or learning a new language or doing something completely different should be obvious.
Just a quick point, learning .Net is not the end of using open source software. There are plenty of good open source frameworks out there for .Net such as Umbraco CMS / nHibernate ORM / CruiseControl .Net continuous build framework etc.
Check out Alt.Net which is a term used to coin all the alternative community driven frameworks in .Net which are usually open source contributed towards.
My opinion, learn .NET C# and JAVA. Why? The most used language in industry right now.