0
\$\begingroup\$

so the other day I was looking for jobs in the gaming industry (software engineer/game programmer/gameplay programmer, etc) just to get a look at what are some of the requirements. Most of these jobs require 5+ years of experience with C++, and to be an "expert" in this language. My question is, what does exactly an expert in C++ need to know, apart from pointers, STL, memory allocation, inheritance, polymorphism? Do you need to know the programming language from A to Z? Every bit of the language? Or what are some of the most important topics that you need to know in order to qualify as a "C++ expert"?

\$\endgroup\$
4
  • 2
    \$\begingroup\$ One thing I like to tell people who are just past "mount stupid" (as they say) is that it is just as important to know when not to use a certain feature or pattern as it is to know when to use it. However, this is a purely subjective question so it's probably not going to be able to stay up. \$\endgroup\$
    – jmegaffin
    Sep 25, 2014 at 6:17
  • 2
    \$\begingroup\$ In an industry with no formal accreditation - 'expert' is a purely subjective position. What one person thinks makes you an expert, may not be the same to the next. \$\endgroup\$ Sep 25, 2014 at 7:19
  • 1
    \$\begingroup\$ The "requirements" in job postings are often written by HR who have no idea what the real requirements are, so don't take those "requirements" as a hard baseline. \$\endgroup\$
    – JarkkoL
    Sep 25, 2014 at 12:32
  • \$\begingroup\$ It probably means it requires a lot of experience and not knowledge of a specific "feature" that can be learned from a book. I am pretty sure they mean hands on experience. This would probably include programming principles that are sometimes not limited to the realm of c++. Read about SOLID programming principles for instance. en.wikipedia.org/wiki/SOLID_(object-oriented_design) \$\endgroup\$
    – AturSams
    Sep 26, 2014 at 5:11

2 Answers 2

2
\$\begingroup\$

C++ is really a family of languages that are all in one compiler, so it's difficult to be truly a master of everything. There's a 'core' language which is a 'better C', there's an objected oriented langauge (i.e. classes, inheritance, virtuals, etc), the Standard Library (including but not limited to the STL), and a meta-programming template language. Add in the complexities of evolution from C++98 to C++11 to C++14 and it can be a bit daunting.

Personally, I'd suggest once you have the basics of C++ down, read the three Scott Meyer's books: Effective C++, More Effective C++, and Effective STL. Then read his blog for the notes on what he thinks is most important about C++11. I think his list is pretty good, but I wish he'd have mentioned std::unique_ptr which I've found to be extremely useful. You may also find the content in my article Dual-use Coding Techniques for Games useful even if you are not targeting Microsoft platforms in particular.

Being a really great coder in any language requires experience mostly learned 'on the job'. Looking at examples of code can also be a good way to learn it. You may want to dig into some existing code that has been well code reviewed by peers and generally judged to be 'good code' in terms of style. I've had lots of good feedback on DirectX Tool Kit, DirectXTex, and DirectXMesh which all make use of C++11 standards and have been though many peer reviews.

Of course, being an "expert in C++" doesn't mean much if you are not also proficient in whatever specific area of computer science or technology you are supposed to be addressing with your "expert C++" code. There's many well-known classic books in each field, so figure out which one is most relevant to your job search.

\$\endgroup\$
0
\$\begingroup\$

I think this is subjective and a way to highlight someone who has both the experience in the language and the experience in the chosen industry. In that example, someone with 5+ years using C++ and working in the game industry may imply they are an expert and should apply. Another assumption is that you meet the same qualifications in the example above, but have the self-confidence in yourself as being an expert in the language, but not a master.

But for me, it's more than just knowing the language. In my humble opinion, anyone can learn a language. It's more about the experience of working with said language in the desired industry the language is being applied.

Think of it like this. Even though you can read and write in your spoken language. It doesn't mean you are a professional writer or that it means you can write a best-selling novel. Expert implies that you know the language, have used the language in a professional capacity and that capacity includes the specific industry for the opportunity.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged .