1. Get to know the main directions in programming and think about what you would like to do.
  2. Study the IT job market in your region.
  3. Identify the areas that you like and where there are a lot of open positions.
  4. Write down the main programming languages associated with the selected areas. Take one or two weeks for each language and get acquainted with its basics. Take notes: what you like, don’t like, and what’s missing.
  5. When you’ve tested all the languages, pick one and move on to learning.

Languages are a lot like building tools, where each item has its own capabilities and limitations. A hammer, for example, is good for hammering nails, but not for cutting firewood. It’s the same in programming: You can write a mobile app for iOS in Swift, but not for Android.

Tools and programming languages are usually selected according to the task. When a person wants to build a house, the first thing he does not run to the market for tools. He starts with planning a project: he describes the details of the future house and estimates how much it will cost. Without a project it is difficult to imagine what tools, special equipment and materials will be needed for construction. The same approach is useful for everyone who wants to build a career in IT: do not get hung up on what programming language to learn, but try to figure out what area you want to work in.

There are five main directions in programming. Take a look at what these areas are and mark for yourself the ones you would like to test.

Embedded Development
Developing embedded software for physical devices such as refrigerators, alarms, car on-board computers and other equipment with processors to process information.

An embedded developer must be good at electronics, physics, networking and write code in C or C++, the fastest and least time-consuming programming languages. This direction is for all those who like to create tangible things.

Mobile Development
Mobile development is divided into two types: native and cross-platform. Native development involves creating applications for the iOS or Android operating systems. If you decide to write an application for iOS, then your main programming language will be Swift; if for Android – Kotlin.

Cross-platform mobile development is when you use one code to cover two systems at once: iOS and Android. There are three popular frameworks that are designed specifically for cross-platform development: Flutter and the programming language Dart, KMM and the language of Kotlin or React Native and Java Script.

Game Development
Game development for different platforms: computers, smartphones, consoles, VR devices, and other gadgets. Programmers work on architecture, mechanics, artificial intelligence algorithms, animations, user interface, server side, and many other processes.

There are two main areas of gamemaking that are tied to game engines, an auxiliary ecosystem for game development. The main engines are Unity and Unreal Engine. For Unity game development, C# is appropriate; for Unreal Engine, C++ is appropriate.

Desktop Application Development
This is desktop application development for Windows, Linux or Mac OS. Unlike web applications, desktop programs are not stored on a remote server or launched from a browser. They can run as standalone programs – without access to the Internet.

To create desktop programs the developer must master one or more high-level programming languages like Python, Java, C++ or .NET. Also, an understanding of operating systems and tools for building, debugging, deploying and testing applications are needed.

Web Development
Web development is divided into two main areas: frontend and backend. The frontend is the display of elements in a browser: everything that can be read, run and displayed. For the frontend, a programmer must know the Java Script language, as well as the markup languages HTML and CSS. For the advanced level, you need to learn the React framework to develop user interfaces.

The backend is the internal architecture that is hidden from the user when he works with a browser or mobile application. Most often for the backend beginners learn the following programming languages: Java Script, Python, Java, Go. In addition you need to be able to interact with the database and SQL query language. For advanced level backend programmers learn frameworks: Node.js for JavaScript, Django for Python, Spring for Java, and Buffalo framework for Go.