Into C++
Yesterday I made up my mind, I’ll learn C++. Properly this time. Seriously.
I’ve long pondered what areas of software I want to get into the most. It is still blurry but I know it is not CRUD applications and definitely not (dev)Ops. I’ve had enough of yaml files and bash and python scripts and clicking buttons on web UIs.
I concluded this post 1,5 years ago with a note that I should put my focus on lower level languages. I put some effort into learning to program in Go in the past half year. It went quite good too, I’m not disappointed with my progress. I am disappointed at the job market though. As of May 2020, there are very few open Go positions in Budapest. There might be a lot more abroad but I won’t be moving anytime soon - expecting a son in August this year.
C++ on the other hand is in very high demand.
There are many C++ jobs on the market and it’s crazy how many interesting branches of software make use of C and C++:
- embedded systems
- automotive software
- game programming
- operating systems and systems programming
- compilers
- scientific computing, simulations
- fintech
- graphics, rendering
- image and signal processing
- all kinds of desktop applications
I’m fairly confident about my PL knowledge and programming skills now. I’ve tried a good amount of langauges, seen things from different angles and built a decent understanding of the fundamentals. Now I need to learn how those things came together in Bjarne Stroustrup’s head. At first sight, C++ seems like a monster. Lots of different language constructs, syntactic elements and a good pile of legacy tooling.
The most important bits that I need to learn are:
- where are the best documentation?
- what constitutes the cpp ecosystem (dev tools, runtimes, libraries)?
- how are 3rd party libs used in projects?
- what compilers are the most popular and why?
- how does the compiler and the linker work?
- what is a “modern” style of cpp? (and what other styles are there?)
- how do people structure their cpp projects?
So, in half a year (maybe less?), I want to be able to get at least medior level C++ jobs. We’ll see. I’ll be reading books, doing small projects, reading source code on Github.
Some reminders for future me:
- read books in multiple passes, don’t get slowed by all the details!
- build something simple and build it step by step!
- look into open source C++ projects, try to contribute!