Ivan Petrov · 2022-04-12 16:10
Hello Lainons.
I noticed after a bit of research that in order to perform better in a C/C++ developer career, you need to be proficient in certain skills in addition to general data structures/algorithms knowledge. So I decided to create a list of these skills to see what I need to work on. As a result, I categorized the skills needed depending on their priorities (essentially based on how frequently I stumbled upon them in related career pathways and how fundamental/general they are).
The real motive behind this post is to get advice on how and where to learn these skills, possibly including some sources such as online courses, books, video series and others that I can't think of right now.
The list:
HIGH PRIORITY
-----------------------
* OOP Design Patterns
* Multi-threading/Concurrency
* C++11/14/17 Features
* Scripting (Bash/Python)
MID PRIORITY
-----------------------
* Boost
* TCP/IP Protocol
* Socket Programming
* General Linux Knowledge (I know it is a bit broad but this can literally be found on any job requirements list)
LOW PRIORITY
-----------------------
* Qt
* CUDA/GPU Programming
* VOIP
I am also looking forward to any type of general advice about the topic and appreciate all of them in advance.
FILLER · 2022-04-12 21:09
That only represents a small fraction of what actually occurs or is needed in a typical developer career, or what is expected in order to not get filtered out by HR and interviews. Also in some jobs you might never need to use some of the things you listed. I also hope you're aware how few and far between C and C++ jobs are out there compared to Java, C#, JavaScript (Node & React), PHP and Ruby. Assuming you're still a student or whatever you shouldn't limit your options.
Molly Millions · 2022-04-12 23:19
>>30738
This. I'm learning TypeScript right now in the hopes of getting hired more easily despite hating web development.
stack · 2022-04-12 23:36
Full time c++ dev here, although I'm relatively new to the field (~3 years out of college and at my current job)
I think that's a pretty good list to start with for a c++ specific job, if that's what you're interested in specifically.
I do agree with the previous post that it's more of a niche job market and there would be more abundant jobs say for example in webdev
But that's not to say these kind of positions don't exist, you just need to look for them and decide if there's something specific you'de like to do with these skills, like graphics programming or something else typically done in c/c++.
Some things I would also consider adding to the list if you want to stand out that I would look for if I was hiring for my current workplace:
* AVX/SIMD programming
* Code optimization
* Some experience with Linux Kernel source (for example I made a simple raspberry pi GPIO driver in college)
* gdb/valgrind
* very comfortable with pointers
As far as resources go:
https://drive.google.com/file/d/1U_9ZtNsO3qGLD7YwM94dp_cFjio33QjK/preview - head first design patterns
http://www.beej.us/guide/bgnet/ - sockets/network programming
https://www.cs.cmu.edu/afs/cs/academic/class/15492-f07/www/pthreads.html - pthreads tutorial
https://bogotobogo.com/cplusplus/C11/1_C11_creating_thread.php - c++11 std::thread
https://agner.org/optimize/ - code optimization
https://www.codeproject.com/articles/874396/crunching-numbers-with-avx-and-avx - avx SIMD introduction