What programming language should one learn or focus on if he or she was a computer sciences student and intended to work as a software developer? This question was a tough one in the past too, but today it is especially difficult because there are even more options than before and no clear final market and IT field directions, in general. In my opinion, however, an answer can be provided with more ease if we look carefully and analyze the current situation well.
On the desktop, Windows PCs still rule (let’s face it, nobody has a Mac nor a Chromebook.) And there, you have a convenient free Visual Studio Community Edition packed with excellent development features and tools for Windows desktop development, and .NET is a great framework that you can learn fairly easy together with C# language (excepting WPF, which had a tough curve, but it’s one of the greatest .NET features in my opinion, anyway; and in the meantime you always have the old Windows Forms support still there).
For mobile development, Android is a must – virtually everybody has an Android device. There Java is the programming language you need to know (but don’t start right now – wait until finish reading this article).
iPhone and iPad mobile devices also have a noticeable market share, and they use iOS. Swift language is the choice if you want to get involved on Apple devices (unless you want to use the obsolete Objective-C). Note that iOS development requires a Mac and XCode, tough.
Nobody (except me) has a Windows Phone, so you can generally ignore Microsoft’s Windows 10 Mobile world for now (at least until maybe a Surface Phone arrives, but I bet that won’t bring a high difference in market shares, anyway.) Still, Microsoft has Xamarin tools enabled in Visual Studio: they allow you to develop apps for Universal Windows Platform (i.e. running on both Windows phones and desktops, with tweaks based on screen size and device capabilities, but published only once and to a single store) and also Android and iOS apps from the same C# source code base (although to test the iOS apps you’ll still need a Mac and XCode too)! With Xamarin, you only need to know C# and can develop for Windows (desktop and mobile), Android, and iOS at the same time!
Update: I think Microsoft’s Hololens is going to be a hit. And Universal Windows (UWP) apps will be able to run there too!
So the choice list is now a lot shorter, I guess. To become an active programmer (i.e. with a job) one should probably go with at least one of these paths. Both are fully supported with highly productive and – unless you are an enterprise – free tools from Microsoft under Visual Studio, especially important if you want to become a freelancer:
Update: Why not Java everywhere: Windows desktop, Android, Web server? Because that isn’t easy everywhere: client side needs a browser plugin to run Java applets and they are obsolete and untrusted (people don’t go there anymore); and also, for iOS the Oracle support to use Java is very limited.