So you want to be a programmer - part 2

So, you want to be a computer programmer. Previously, we talked about the need to program to be a programmer. But what kind of programming. Let’s assume for this discussion that you want to be an independent programmer/entrepreneur. First, you need to decide waht kind of freelancer you want to be. Do you want to develop websites, web applications, games, mobile apps, etc. This will dictate the language you should learn, the platform you should become familiar with, and the ide/tools you should become proficient with.

If you are going to be a website or web developer then javascript will be the language you want. You will also need to know html and css but these 2 are not “programming languages” per se. They are markup languages. They do not contain programming constructs like branching, looping, logic, and functions/methods. Javascript is the language of choice by far for web development.

If you want to be a game developer then there are several choices, but the tools are more important here probably than the language. I would suggest the Unity game engine. There are several good game engines, but Unity seems to be gaining the most attention. This will lead you to learn C#. This is the most popular scripting language for the Unity game engine. Secondarily, to this you will also need to develop knowledge in 3d graphics and need an eye for graphics. This is not my speciality and due to this I have stayed away for game development and website design in my career. I outsource the design elements of the projects I do.

If you want to develop apps the 2 most popular are Android apps and iOS apps. Android lives in the Java programming world. For this you will want to learn Java and then pick an IDE. Eclipse is a very popular open source IDE that is also easy on the budget(it’s free). There is plenty of online help with the Java/Eclipse world to assist you as well.

For iOS the language was ObjectiveC but is now moving to Swift. Apple’s Xcode is the IDE for this language and is really the only choice. There are 2 downsides to developing iOS apps using these tools. First, there is some cost. You need to buy Xcode, and Apple development box and an Apple mobile device. Secondly, this skill set will pigeonhole you into just Apple products. Another iOS approach now is to use C#/.NET/Visual Studio w/Xamarin. The downside to this is you are developing Apple based software using Microsoft tools. This platform is fairly new for Apple development and it’s use is not widespread yet. The upside to this is the knowledge you gain learning C#/.NET/Visual Studio can be used to develop for the Windows platform. Also you can use the Visual Studio IDE for Android and Web development as well. So, you are not as pigeonholed into Apple if you decide you want to branch out.

Another mobile platform to explore is Windows 10(don’t laugh). The reason I mention this is not due to the huge market of Windows mobile devices, but due to the huge market of Windows desktop, laptop, tablet, and XBOX devices. Windows 10 allows you to develop across all of these platforms plus HoleLens(up and coming) and IOT(internet of things). Also, the Windows platform with C#/.NET is one of the largest installed bases for business applications if you decide in the future to work for a company instead of yourself. This is also a benefit to Java as well. Java is another very popular language for business applications. Incidently, this is also a downside to Swift/Xcode. The Apple platform has a very small user base in business applications. Apple does not play in the backend server market like Windows and Linux.

MY recommendations overall are….If you want to develop games learn the Unity game engine. If you want to be a web developer learn JavaScript/HTML/CSS. Also, learn NodeJS for server side javascript programmer and the Angular framework for client side javascript programming. This will allow you to develop full stack web applications. For mobile applications(against most other recommendations) I would learn C#/.NET or Java and skip ObjectiveC/Swift(this is just too specialized a platform).

Overall, and this will sound very Microsoft centric, if you learn C#/.NET/Visual studio as well as HTML/CC/Javascript you will be able to develop pretty much any application for any platform. This is due to .NET Core now being offered for iOS, Android, and Linux. This will allow you to develop web applications, mobile applications for Apple, Aondroid, and Windows, and games with Unity. It will also set you up to develop business applications for companies.