Where to Start?
If you want to know where to start, you can take a few approaches. Of course, this depends on what you want to do in your programming career.
If you want to build games, you should learn some common gaming languages (and platforms, too). For mobile app development, you would focus more on the languages used for iOS and Android development. Is data analytics your thing? It’s pretty hot right now! And if it is, you’ll want to learn data-centric languages, plus some languages that specialize in data analysis like R.
See what I mean when I say it depends on what you want to do? But if you don’t quite know where to begin, you might look at the markets. Are you interested in learning to code because it has a good job market? If that’s your game, then you might consider using the markets as your guide.
Two points to consider:
- The markets are always changing.
- Some languages are in demand because knowledge of those languages is uncommon.
Also, you can ask around. Of course, if you ask five different people, you’ll get five different answers. But, you can always take the ones that are mentioned more frequently and start there. I’ll share my own list and see what others have to say on the topic, too!
Mobile App Programming
There’s no doubt about it: Mobile apps are hot! If you want to program your own mobile app, you can! There are a few moving pieces involved; plus, you’ll have to account for which platforms you want to work on. In this section, we’ll look at which languages target which platforms.
For modern iOS development (this includes iPhone, iPad, wearables, and auto), you’ll want to learn Swift. Swift is the official programming language for modern Apple development. It’s fairly new and works on its own or side-by-side with the older Objective-C language.
You might want to learn a bit of Objective-C, too. Here’s why: If you start doing iOS development, you may eventually come across some older application code. Unless you learn a bit of Objective-C, you might have no idea where to begin. Since Objective-C is a language that extends C, you can also pick up a bit of C along the way. This isn’t necessarily the best place to get started quickly, but if you’re up to the challenge, give it a shot!
Much in the same way Apple programming has evolved over the years, the world of Android programming has a newer language called Kotlin. Kotlin isn’t strictly for building Android apps either, but it’s the modern way of making an Android app. It interfaces with Java, which is the core language for Android programming. You can build an Android app using both Kotlin and Java, so you should also learn a bit of Java.
As you may already know, Java is everywhere! Despite the rise in popularity of many other languages, it’s still a relevant language. I wouldn’t recommend learning only Java at this point in time, but you can certainly start with Java.
For quite a few years now, the idea of programming once and learning once (these are different concepts, but both are still useful) has been the holy grail of mobile app development. While there are several platforms you can do this on, such as React Native, Xamarin, and Ionic, they still don’t have full transportability if you have to do some custom hardware interaction. This isn’t a problem for a lot of cases, so it’s definitely worthwhile.
API and Database
Another factor to consider when it comes to mobile app development is data. Mobile apps usually interact with one or more back-end systems. These systems are used for logging in users, storing their data so they can access it across devices, and providing other data services to the applications. Plus, many mobile apps have their own databases on the device. The programming languages for APIs and databases are the same ones you’d use for web app programming. Let’s check those out next.
Web App Programming
There are multiple layers of a web app. There’s the front end, which is the user interface, or what you see in the browser. Then there’s the code that runs on servers that deliver the applications and data to the browser (a.k.a. client and user agent). Another layer is databases—this is where all the data is stored. Let’s look at some programming languages you might expect to use in each layer.
Front End (What You See)
Web application front-end programming has the following three parts:
- Structure, which is defined using HTML.
- Style, which is defined using CSS.
All other aspects of web development are handled by interactions with a back end. The user interacts with the back end using URLs to fetch images, web pages, front-end code, media, and data used in the web app.
Back End/Database (What You Don’t See)
Admin, Infrastructure, Security, and DevOps
There are programming languages that are widely used in administrative tasks. Python, for example, is used for all kinds of tasks involved in the deployment of apps, managing servers, and running just about any script to automate IT tasks. Shell scripting is another common form of programming that requires nothing more than just the command prompt or shell on your current computer. Type the following in a command prompt or shell, and you’ve just written your first program:
echo "Hello, World!"
But there’s also Powershell if you’re interested in scripting in a Microsoft environment.
Everyone Should Learn Scripting
No matter what type of programming you’re interested in, it doesn’t hurt to learn shell scripting. That’s because you can automate so many tasks using a shell. It’s also a much quicker way to do many of the tasks you might open a file explorer or finder window to do. For example, on Windows you just type “dir” in a cmd window to list all the files and folders in the current directory. On Mac or Linux, “ls” does this. Plus you can add filters to the output.
Many tools have different ways to interface with them, including graphical user interface (GUI) and a command-line interface (CLI). For example, programmers rely on a version control system (VCS) to keep track of changes to code. The most popular VCS is Git, which has a very powerful CLI. Programmers use CLI tools all the time, so it’s worthwhile to get comfortable using a command line.
Data Analysis/Data Science
There are a couple languages that I’m aware of that are specific to data analysis and data science. If you’re a spreadsheet user, you can step up your game using Visual Basic. With VBA, you can program macros that can react to changes to data in your spreadsheets. This is the most basic level of data analysis. It’s also a language you must know if you’re a programmer at a company that relies heavily on spreadsheets during the normal course of business. Knowing VBA will make you seem like a magical genius in the eyes of the business.
More advanced data analysis involves programming in the R language or using MatLab, which is popular in the scientific field. R allows you to crunch numbers and create visualizations of large amounts of data. This is not my area of expertise, but it certainly is intriguing!
Gaming is a big draw for many people who are interested in programming. There are many outlets for game programmers, including mobile, platform, web, PC, and even special devices such as handhelds and electronic board games.
Mobile games run on the same platforms as mobile apps, but programming for them requires a different set of tools, languages, and skills. Metal is the modern graphics tool for games on Apple. You would want to learn C++ for Android game programming, and it probably wouldn’t hurt to learn Kotlin and Java as well.
Alternately, you can use the Unreal Engine to write your games in C# and deploy them to iOS and Apple.
If you’re interested in writing games for platforms, you might consider looking into a college degree. That’s because the field is pretty competitive, and with only a few companies producing games, there isn’t a whole lot of wiggle room. It’s a supply and demand problem, you see. That said, C++ would be a great language to learn if you want to get into this field someday.
When it comes to programming drivers for devices and even standalone devices, C++, Java, or C# should be your language of choice. All of these languages are used in device programming. Low-level coding is tough, and this is yet another area where you’d be unlikely to gain entry without a college degree in computer science or engineering. With that in mind, if you have your heart set on creating some cool device prototypes, you can still do that!
A great way to get started with device programming, no matter what level of skill you have, is to buy a Raspberry PI or an Arduino at a relatively low cost. These are low-cost computers that have input and output pins that can be hooked up to sensors, motors, and whatever your imagination can dream up. You can program them in Python, C#, Java, or several other languages depending on the device and platform you choose. It’s a great way to get creative and learn to program!
This post was written by Phil Vuollet. Phil leads software engineers on the path to high levels of productivity. He writes about topics relevant to technology and business, occasionally gives talks on the same topics, and is a family man who enjoys playing soccer and board games with his children.