This is what every C++ developer should learn before start coding
- Linux/Unix OS and Command-line tools.
Most likely you will write your C++ code for Unix-like OSs. Why? Because it’s open-source, which actually means that it’s free and everybody can use it, which lead to the fact that a lot of other C++ libraries and projects are written for Linux, so understanding of it and being comfortable with terminal’s command line tools are essential for C++ developer. Setting up the environment, installing libraries, compiling, running and debugging your code — you gonna need it everywhere as developer! So better get familiar with it right now, this will just make your life easier.
Here you go:
UNIX / LINUX Tutorial — Tutorialspoint
Linux Command Line Tutorial For Beginners
Udemy Course: “Linux Mastery: Master the Linux Command Line in 11.5 Hours”.
If for whichever reason you need to learn to code for Windows then it’s better to learn Windows’s command-line first, of course. But I believe that sooner or later you’ll still need to get familiar with Linux and its tools anyway.
- Data structures and C++ STL (Standard Template Library)
To code in C++ (and any other language) you should have a clear understanding of what is an array, hash table, linked list, queue, stack, binary tree and what is its implementation in C++ Standard Library. Also, you need to know what are searching and sorting algorithms.
Just believe me, you don’t want to implement it on your own in real projects. All you need is to go through Standard Containers and Algorithms and remember where you can find this info later when you need it in your code. Understanding and ability to calculate the complexity of those and other algorithms will be a good bonus here.
It’s a big topic, actually. You won’t learn and understand everything at once or in a few hours. It’s supposed to take some time, probably years if you are newbшу at coding. For the beginning you just need to know what STL is about and probably get back to it later when you have a bit more of coding practice, so you understand which problems you can solve with it.
Few tutorials to start with:
Data Structures — GeeksForGeeks
Data Structure and Algorithms Tutorial — Tutorialspoint
Standard Containers and Algorithms
C++ STL Tutorial — Tutorialspoint
- Make, CMake tools
Those are tools that let you build your C++ project. Unless your project is just 1-5 files, you gonna need to automate it’s building process. It’s what these tools basically let you do. But before even starting to read about it you need to understand what is all C++building processes about and how to run C++ compiler (G++ or Clang).
Make — Unix, Linux Command — Tutorialspoint
Unix Makefile Tutorial — Tutorialspoint
Once you are able to code and run your C++ binaries, you gonna hit the problem where it crashes or just doesn’t work as it’s supposed to. So what do you do then? You look at your code, double-check the logic, but you still don’t see any issue with it. What’s next? Here you have two ways to deal with it. You can cover your code with log printouts (which, honestly is usually a boring task to do and it doesn’t make you program more readable) or you can debug it. Debugging is way more interesting! Debugging from a terminal is even more interesting. And honestly, I believe it’s a must-have skill — be able to debug your C++ program from the console. One day you are not gonna have all these fancy IDE’s debug interfaces when something crashes after recent release on the remote dev server and you need to fix it ASAP.
GNU Debugger Tutorial — Quick guide — Tutorialspoint
And this one is my personal recommendation. Strangely, but nobody ever asked me about this during my interviews and I’ve probably never seen it as a requirement for any dev position or on the syllabus of any coding courses. It was on the program at university where I studied (Computer Science, NULP) and that’s where I first learned about different kinds of diagrams which helps to visualize what your program gonna do, what its architecture gonna look like, and many other cool things. Generally, it helps to document and describe your project and code from many different perspectives, so I believe everybody should be able to speak and read this language and know tools for this.
The Unified Modeling Language — Official documentation
UML Tutorial — Tutorialspoint
Lucidchart — online tool for creating UML and some other diagrams. There also are different tutorials about diagrams and how to build it with this tool.
Thanks for reading! Feel free to share your thoughts in comments :)