Sign in to follow this  
KnightBlade

Master C++

Recommended Posts

KnightBlade    218
I see this requirement on job descriptions for game development. What does it mean? What kind of thigns should one know as a master of C++? I would like to aim for this. Any good must-have books to read to get to this state? Thanks.

Share this post


Link to post
Share on other sites
acw83    174
I would think 4+ years of experience would be sufficient, provided you really know C++ well. Knoe what your best strengths and weaknesses are in the language, and be prepared to answer if they ask you this.

The problem with job requirements is that they are often written by HR people who don't know much about development technicalities. For example, back in 2001, I remember seeing job ads "requiring" 5+ years of Windows 2000 experience... you do the math on that one.

Share this post


Link to post
Share on other sites
me22    212
I'd phrase a "C++ Master" more in terms of more intangible things. Someone Advnaced in C++ would been to know pointers, memory, classes, templates, and all that. To get to "Master" I'd say it'd be more in conceptual things, like design: using RAII properly, knowing when to use run- or compile-time polymorphism, being able to limit physical dependances, decoupling components, ...

Share this post


Link to post
Share on other sites
Stani R    1070
To add to what has been said above, you probably also ought to be proficient with a whole bunch of algorithms, so have a solid grounding in computer science theory. This is unqualified advice, but it's common sense.

Ideally, you're an entry level 20-yr-old programmer with a Ph.D. in Computer Sciene and 10+ years of work experience :-D

Share this post


Link to post
Share on other sites
jdhardy    469
Quote:
Original post by KnightBlade
Any good must-have books to read to get to this state?


Stroustrup - The C++ Programming Language, 3rd Ed.
Josuttis - The C++ Standard Library
Meyers - Effective C++, Effective STL
Alexandrescu - Modern C++ Design

Also, Herb Sutter's GOTW columns are an excellent resource.

The C++ FAQ has answers to almost every question you'll come across while learning C++.

Share this post


Link to post
Share on other sites
Zefrieg    316
Quote:
Original post by acw83
I would think 4+ years of experience would be sufficient, provided you really know C++ well. Knoe what your best strengths and weaknesses are in the language, and be prepared to answer if they ask you this.

The problem with job requirements is that they are often written by HR people who don't know much about development technicalities. For example, back in 2001, I remember seeing job ads "requiring" 5+ years of Windows 2000 experience... you do the math on that one.


It is surprising how often you see stuff like that. I've seen ads that ask for people with 10 years .NET experience.

Share this post


Link to post
Share on other sites
JD    208
When I see nonsense like that I run the other way because the folks have no clue and when their HR is this messed up the rest isn't pretty either. Also, in terms of C++, nobody is a master because that lang. is unbounded. Meaning folks are doing things with it that the original author never have though of. However, even if by some miracle you managed to learn all there is about C++ you still have to develop algorithms in it. So who knows what they mean. Do they mean that you know C++ specs well or do they mean that you're good problem solver or both? Afterall, xlating your algos into other langs. isn't that big of a deal. Like wanting a DirectX expert and not realizing that an OpenGL expert is as good if not better because after all, technology is made from algos and if you know them then you can do them mostly in any modern lang.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
i think when you understand what's exactly going on in the more wicked boost libraries and you'd be able to write that kind of quality code yourself you could think about using the term master. however i somewhat refrain from the term "master" as i think true masters of the c++ language are very rare... you can count them on a few hands.
definitely recommending the "c++ template metaprogramming - concepts, tools and techniques from boost and beyond" book by abrahams and gurtovoy.

that said, i don't believe that this is what the industry is seeking if looking for someone who's mastering c++... not to the extent of being a language guru. (i'm stil recommending the abrahams/gurtovoy book, though :) )

regards,
simon

Share this post


Link to post
Share on other sites
Trienco    2555
Quote:
Original post by JD
Also, in terms of C++, nobody is a master because that lang. is unbounded.


Maybe that's their trap? Remember that old greek guy knowing that he knows nothing? I found that many people claiming to have "mastered" C++ after just a few years or even months (meaning they probably just finished with "C++ in 21 days") are still far from the point of actually realizing just how much there is to know about C++. Oh, and I agree on that staying away thingy about companies asking for 10+ years of .NET experience. That's even worse than asking for knowledge in "the HTML programming language".

Share this post


Link to post
Share on other sites
dbzprogrammer    100
Heh... C++ is a quite complex language. Knowing how to code C++ is part of becoming a C++ "Master." The other part is knowing exactly what it's doing... If you have some code where you use all aspects of the language and can explain almost what all of it does inside the computer, you're on your way. For example, you know that templates can take any kind of type, but what actually do they do? They create code copies for each type for you, instead of you coding it all yourself. It's the millions (exagerated) of minor things like that that will make you more professional. I don't know if there's any standard for a "Master," but coding some cool stuff is usually good enough proof for most people.

Share this post


Link to post
Share on other sites
Trienco    2555
Quote:
Original post by dbzprogrammer
For example, you know that templates can take any kind of type, but what actually do they do?


With my last program the question is usually a different one. It's using specialized versions of derived templates, which always feels like I'm just doing it because it's cool. What for? Creating popups, edit windows, handle drag/drop exchange of items/skills/penalties in an RPG tool. They have nothing in common, no common base class, but consistent use of add/remove/whatever function names.

And everytime I look at it and think "god, that's awful coding, let's do it 'right' with polymorphism and 'clean' oo". And every single time it takes about 15min to arrive at the point where I go "ooooh, damn, that won't work... right, THAT was why I used templates in the first place". Short: lousy memory is not helping with that whole mastering C++ thingy. In a job interview I would fail miserably because I couldn't even start to articulate the thoughts and more complex issues leading me to use them. How, if I tend to forget them myself all the time?

Personal rule of thumb: as long as you ask yourself "how do I do that" you're far from being good. When you start asking "what might be the best way to do it in this case" you're starting to get there. Also, if your most frequently asked question is "what's the C++ command to do X", don't apply for any programming jobs.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this