Fields of IT for beginners

More and more people wish to study IT world, however most of the articles describe quite specific problems rather, giving no common, solid view on different fields of information technologies. But this is exactly what the beginners need, and since I get a lot of questions about that, I want to provide a comprehensive answer.

However, I assume that you are familiar with such terms as programming languages (PL further) and operating systems (OS, e.g Windows, Mac, Linux, iOS, Android). For convenience, I linked all the terms with links to Wikipedia. Let's discuss general trends of IT industry and popular technologies!

Mobile development

This field is going from strength to strength last years. There are two main platforms: iOS and Android. Next PL are used for them: Objective-C and Swift for iOS; Java and Kotlin for Android. The C++ PL available for both of them, though it is not so comfortable.

Desktop development

This is an old field, initially and mainly it is about Windows, rarely about Mac OS X, and even more rarely about Linux. These PL are mostly used on Windows: Delphi, Visual Basic (to my mind, these two are obsolete, but you may still hear about them), C#, C++. For Mac OS there is a native Objective-C, for Linux it is C and C++.

Cross-platform development

Except native development tools there are cross-platform frameworks and engines that allow to compile a single program under different operating systems. Common examples: Xamarin Mono and Qt (the game engines will be presented later). The general advantage of cross-platform tools is significant decreasing of code amount, which will work the same on mobile phons or PCs without considerable changes. Nevertheless, there are two disadvantages: great size of the application (and probably low speed) and the price of those frameworks, engines.

Front end

Web development is divided into two closely related, but different parts: front end and back end. The first one is about what and how is presented on users screen in a web browser. Here are used: HTML — language for creating web page elements, CSS — the way to describe visual styles of these elements, and JavaScript — a scripting PL, it makes the pages dynamic, allows to change its content slightly or significantly.

Back end

Back end — this is the code executing on a server (i.e. a computer somewhere on the Internet) and does not leaves its bounds. Back end accepts request from users, clients, and generates responses. a response can be a web page (which is of front end part) or data for apps (JSON, media files, something else).

For many years programmers use a terrible PHP for back end, however nowadays there are also popular Python (with frameworks like Flask, Django or Tornado, Google App Engine), Ruby (with "on Rails"). In addition, there are other, more sophisticated technologies, like Node.js, Go.

To store and process the data databases (DB) are used with SQL query language and its varieties. Of course, DBs aren't used in the web only, but everywhere, however its use there especially necessary.

Data analysis

One more popular topic in our time — Data analysis. Here Python PL and its specialised libraries (NumPy, Pandas, SciPy, etc.) are mostly applied. In addition, other technologies and completed applications are used. DB and SQL are also useful. Additionally some knowledge of statistics is required.

Machine learning

The field of Machine learning arises directly from Data analysis, it is a sort of crust of it. Programmatic tools are also almost the same, in view of the fact that Data analysis is more statical, while Machine learning is mostly used for dynamic, automatically working systems, the more powerful technologies. First of all, these are C and C++.

System programming

There is so-called System programming, which is development of low-level systems, programs for some devices. For instance, operating systems development. The main tool here is C PL, though initially it was (and is still important) only Assembly language. Rarely you might meet other PL. Here you need to have good understanding of how different devices and chips of computers work and communicate together.

Mathematics and algorithms

It is worth noting about something else, which is not an independent development field, but is also important, — mathematics and algorithms. Of course, all the programming is about algorithms, however some tasks require more fundamental skills. For example, routing on a map is not possible without knowledge of graph theory, and physics processes modelling — without further mathematics.

Game development, gamedev

Game development. A lot of the people start learning programming since this reason. Indeed, video games development is really enthralling, but it is also quite complicated. You have to develop under mobile devices or PC, work with graphics, audio, be able to create processing of many game objects and elements. You can leave some problems using game engines, i.e. Unity, Unreal Engine, or GameMaker: Studio. They allow to compile the same code under different platforms and have a lot of functions for visual and audio effects. However, it has not done so without paying a price — you get significant size of your applications and often have to pay for such tools.

Besides software development itself, game dev requires visual and audio staff, marketing promotion skills, and an idea. Therefore experienced, experts of their specific fields get together to create and drive large projects. And this is everywhere, not only in game dev.

Software testing

Eventually programs and software systems become very large and complicated, include lots of files. And sometimes (i.e, quite often) programmers cannot keep in mind all the details of them. These lead to errors and mistakes in code and final systems, that may be hidden for a long time and cause problems when you don't expect it. To prevent it, the code have to be tested. But software testing is not about testing by a person only, it's also a theory about programs execution paths, techniques, tools and frameworks for testing automation. So, it is a large and important field of IT.

Cyber security

This field is far away from other ones – here there isn't problems of design, class hierarchy, etc. Although it has its own difficulties: cyber-sec engineers must have good understanding of math, cryptography and algorithms, low-level processes of OS, network protocols. But cyber-sec specialists are widely appreciated and well-paid. Also, it's known that hacking is an opposite side of security – both fields work on the same processes and systems.

Of course, IT is not limited to this list and is not divided into separeted, independent categories, it is just the "tip of the iceberg". Almost all the trends overlap with each other or other fields of science, technologies.

And personally, I suggest to try as many different fields as possible, if not all. Since many of them firstly look hard or boring, but after a year or two, with some new experience and understanding of life, — useful and exciting. And the main — always to keep your desire, your ambition to study and to create your own things. I think, it's much more important than even experience and talent.

Programming languages