There are probably billions of lines of code written in C++ already. New code is being written every day. But will this trend continue? Will you be able to find a C++ job in five years?

Let's have a quick view.

The Story

This post was motivated by a recent video from J. Sonmez, you can see it here: Does C++ Have a Future?

Briefly, John explained that although he loves/loved C++, he thinks that if you’re just starting you shouldn’t invest much in C++. It’s good to know C++ (since it gives you a lot of knowledge about underlying hardware, native code, etc.), but still, from a career point of view, there are better options at the moment.

To be clear, he also mentioned that if you’re a C++ guy already, there’s nothing to worry because there will be still jobs for you. Even in 50 years there might be some Cpp code laying around somewhere :)

My view

In my opinion, it’s not that bad with C++! Or at least I hope so :)

Where C++ is used?

First of all, let’s look where C++ is used. Just by looking at Bjarne Stroustrup’s page on C++ applications we can see that there are a lot of apps our there!

Adding my ideas, I could write that C++ is used almost everywhere:

Computer games, game engines,

Audio libraries,

CAD/3D - like Autodesk, Maya, 3d studio max, Blender, etc

Document editors (Adobe products, Xara, Office)

Flight planning: Amadeus, Sabre

large scale e-commerce at Amazon

Google - various projects (search, Chromium browser, …)

Operating systems: lots of languages usually used, but C++ and C are used for the core parts.

Drivers

Financial: Bloomberg for example, HPT (Hight Perf Trading) platforms

Science: like Cern or NASA

Compilers

Programming tools: like

Communication protocols, systems (like from Ericsson)

Facebook

HP (like Java core)

Intel

…

plus a recent r/cpp discussion: Why use cpp other than performance?

Ok, we could list and list companies and products here for a long time.

Basically, from a low level system, drivers, to whole operating systems, game engines, games, high perf trading, scientific computation, flight planning, document editors…

As you can see C++ is not only in backed/perf code but also in UI - full system stack.

Also, in the mentioned systems, C++ might not be used as the only language. Sometimes it’s used in 99% of the code, in others maybe only 20%.

We also have to remember about legacy code that’s already there. Someone has to maintain it and add new features.

Any advantages?

What are the main benefits:

Modern C++ - feels like a new language. Have a look at C++11/14/17 and the future - C++20 will bring even more great stuff.

RAII - without garbage collector, you can clean your objects nicely!

Performance and memory efficiency - you can optimize down to the hardware level.

BTW: I’ve seen a good about perf: “c++ does not give you performance, it gives you control over performance (Chandler Carruth)”

Native, close to the metal, but still expressive and relatively clean. You can open the hood if you like, or stay and use higher level abstractions.

Multi-paradigm - you’re not forced to use only OOP, you can mix different styles depending on the needs.

Deterministic, well defined

Templates

Portability - there’s a C++ compiler probably for every platform!

Integration - you can bind it with other languages, systems. For example easy to use with C#/Java for backend/perf code.

Tools are getting better and better. Especially thanks to many clang based tools!



And of course we have some little disadvantages, but let’s forget about them today :)

The language itself is growing, the community is amazing, new language standards appears regularly (you can take a look at my recent article: How To Stay Sane with Modern C++.

Also, by looking at the use of C++ and also it’s popularity (f.e. Tiobe’s 3rd place for a long time). Assuming you prefer system, “lower level” areas, I think that learning/starting with C++ is a good idea. Even if you go in other direction, the knowledge of C++ is universal and will give you a huge boost when learning other languages (like C#, Java, Go…).

Anything better that C++?

Can you find some better languages/platforms?

Yes. Especially if you want to build web applications it’s better to learn JavaScript or Ruby. Also, C# and Java are big players and should give you a lot of options and available jobs.

In the field of native languages we have D, Rust, Go… so it’s good to have an eye on them as well!

What to learn then?

Should you learn only C++ and nothing else (especially when you start)? Definitely NOT!

When you just start it’s better to have more choices. You should try several areas and after some time pick your favorite. You can learn C++ but also C# and see where it’s easier to create an UI (hmm… I wonder what’s the answer here :)). But at the same time, you can try Python or Java Script and compare the performance of some low-level code (if that’s possible in Python/JS…).

For some areas, C++ will be better. For some won’t. Moreover, it often happens that an application is built using several languages/technologies. So if you know, more you can help in more areas of the development.

But I am a C++ guru already!

Ok, but what if the job market shrinks? It’s not good to put all eggs in one basket, so I would also suggest learning something new from time to time.

It’s easier said than done, but learning something new - like a new lib, language, paradigm, etc… might have huge benefits on your existing code.

Job market?

Ok, let’s be practical now: What’s the job market for C++?

For example, in Cracow I have lots of options in Banking, Telecom, Flight planning, Gamedev, Enterprise Systems, Cars, Embedded… plus you can also find remote jobs like me :)

To be honest, I think it’s quite stable over the last seven years I think. Maybe it’s even growing a bit, since more tech companies have come to Cracow recently.

But let’s see what’s opinion from others:

What's the rough state of C++ job market in your area? Do we have more or less jobs for C++? #cplusplus #cpp #programming — Bartlomiej Filipek (@fenbf) March 17, 2017

Clearly, it’s not that awesome, mostly stable, and you probably have more options for C# and Java, Java Script… however, it’s not decreasing super fast.

Summary

C++ is a solid language and continues to be so.

I am not saying that C++ is fantastic and you should abandon everything and just stick to it. If you’re just starting it’s good to have more options and learn different things. Even if you’re a C++ guy already, it’s vital to learn something new and improve.

Still, C++ jobs won't disappear overnight. C++ is a solid language and continues to be so. I expect the situation in job market to be stable with some possibility to slowly decrease over the years. But if you like this area you'll be able to find a C++ job anyway. I hope C++20 will add another good reason to stick with C++ and even move from other languages... but we need to wait a few years to see it happening.

Just in case you're learning about upcoming C++17, you can grab my one-page RefCard for the language features: link here.