What programming language should I learn? (if I were a student)

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!

But what if you want to also develop for Web? Then .NET and C# can help as well, as ASP .NET MVC and WebApi are available on the server side, but you’ll probably still need to learn some JavaScript for the client side. Or better, TypeScript, that brings some OOP to JavaScript world and makes it a lot more appealing (TypeScript compiles to JavaScript, so it is really multi-platform too).

And hey, if we got to JavaScript, note that you can use the free Visual Studio’s tools for Apache Cordova to build apps for Windows UWP, Android, and iOS with a single JavaScript (or TypeScript) source code base, using HTML5 and CSS3. Google’s Angular framework is also interesting, especially now that is heads towards the completely revamped version 2. And for the server side you can use Node.js if you want to run JavaScript there as well! And therefore, if you know JavaScript, you can develop software for virtually all environments: desktop and mobile apps, and server side apps and APIs as well.  Just note that generally JavaScript’s performance is lower (compared t0 machine code that Xamarin generates and that ASP .NET JIT-compiles into) because it’s an interpreted language.

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.


About Sorin Dolha

My passion is software development, but I also like physics.
This entry was posted in Development, Miscellaneous and tagged , , , , , , , , , , , . Bookmark the permalink.

Add a reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s