How did you get your job as a C++ developer?
I oversaw, and now architect, a project with a heavy chunk of C++ code. We’re hiring right now, but we have the same experience requirements you’re seeing.
Typically, a project chooses a native programming language (C, C++, ObjC, etc.) for a reason. Development is slower, good developers are less common, classes of bugs exist that don’t exist in other languages (naive memory leaks, wrong instruction set extensions, bad linkage, etc.), and you’ve got a fundamentally slower-moving development environment. It simply costs more to develop in C++ than in most other languages.
So you only choose C++ when that cost buys you a net win. Our project provides a framework for in-house supercomputer-accelerated computer vision products. C++ makes sense for our core libraries because we use OpenGL for a lot of image operations, and because the libraries our scientists use are written in C++. It is more work to make those things work smoothly in a different language for our uncommon use cases than it is just to develop high-quality C++.
But most of our user-facing tools are written in Java, and most of our server-side glue is written in Python. Those are modules without any external factors pushing us toward C++, and where we value development agility over the compatibility and performance C++ offers.
Because of this, when I’m hiring somebody, I’m hiring somebody who can use C++ to write OpenGL code, or HPC code, or networking code. C++ is necessary, but not sufficient, to solve the problems we have. We’re more likely to consider somebody with years of writing distributed systems in Java, but who can pass a trivial C++ challenge, than somebody who knows a bunch of fancy C++ tricks but has only written CRUD applications.
How can a newbie C & C++ developer get a job?
You need experience.
However, a 9–5 programming job isn’t the only way of obtaining it. You can and must obtain experience by working by yourself, even if it means you will not be getting paid for it, because eventually, you will.
GitHub is your resume.
Start your own projects from scratch. Try and write tools for yourself, try to create your own mini OS, web-server middleware, etc. You may think this is re-inventing the wheel, but it is also in fact learning how to invent the wheel.
Inspire from the projects on GitHub, look at how people did things, and try to add your input even if you’re basically replicating it. The challenge is not only fun, but educating as well. Then, showcase your work on GitHub.
Read as much as you can.
Find the areas you’re interested in, for example, Enterprise Software, Embed Systems, AI and then catch up to the area. Get to know what sectors that area affects, what are the current needs/problems and try to come up with solutions.
This will enable you to think in a different way and see another part of the picture, you will always be solving problems.
Try to write along the way.
One of the biggest mistakes I’ve made is neglecting my blog, and not making notes of what I’ve learned in the past years.
Writing is a really good exercise of mind and it’ll enable you to intensify and remember what you’ve learned, what problems you’ve had and how you’ve solved them. On the other hand, you’ll be building an archive of information over time, a personal library for yourself, and if you publish your writing, you will help the rest of the world.