C++ knowledge ratings...

Started by
26 comments, last by Extrarius 18 years, 12 months ago
I was recently asked to rate my C++ skill level from 1 to 10 with 10 being the highest. I've been programming in C++ for a little over 4 years now with most of that coming from my undergrad education at VT. I was just curious what you all thought you should know at certain levels. level 1 - you should know this level 2 - you should know that . . . level 10 - you're a c++ guru [Edited by - fartocci on April 25, 2005 6:05:35 PM]
Advertisement
Well i had to rate myself in the same way for a placement application and i put myself as 7. The thought behind this was that i know most, if not all of the basics and am well in to learning the more advanced stuff. What i dont do is know the best patterns and perfect syntax for nearly all OO problems.

ace
Of interest.

There are no markers for knowing a language apart from how competently you can write a program that you intend to write. The only way I know of doing that is by trying to do it and seeing how well you do.

For example, you could write a text editor.
Quote:Original post by flangazor
Of interest.

There are no markers for knowing a language apart from how competently you can write a program that you intend to write. The only way I know of doing that is by trying to do it and seeing how well you do.

For example, you could write a text editor.


I suppose a better question may be: What topics in c++ programming can be considered novice, intermediate, and advance?

Which subgroup would namespaces, templates, polymorphism, inheritance, overloaded functions, overridden functions, overloaded operators, virtual and pure virtual functions, abstract classes, concrete classes, etc etc be considered? Thats what I'm wondering. That was an interesting article...

A good starting point is probably the Guru of the week series of articles. These are rated on a scale of 1-10, although the author does note in the associated books that what some folks find a 4, others might find a 9 (and vice versa).

I think a lot of people also underestimate just how flexible a lot of C++ is, and how much you can do with it. The most complex stuff I've read is probably the Modern C++ Design stuff (ie the Loki library) and some of the more esoteric Boost libraries - be interesting to see what level some of those are considered to be.

Jim.
Heh, those sort of "how would you rate yourself on a scale from 1 to 10?" questions are given as interview questions by my current manager. It's always a kick to hear a "level 8" unix admin flounder to the question "how do you list current running processes?" Especially at interviews, nobody answers low.


I now think that most of the things in that list are novice. Intermediate depending on what the templating actually involves. Most of the things that make a programming guru are not language features, but design, debugging and algorithmic skill.
If you know all the basics (making destructors virtual, etc), including multiple inheritance and basic STL usage, I think you should rate yourself a 5. A 7 would be able to explain in detail about the last time he was bit by the Koenig look-up rule. A 9 could re-implement boost::mpl from scratch on the whiteboard without bugs :-)

Here's another way of thinking about it:

Consider the C++ standards document. It's about 1000 pages, and it defines anything from "here's what an if() statement does" to "here are all the member functions of the strstream standard library class". If I were to take a random page out of those 1000 pages, what are the chances that you would be comfortable with the topic covered on that page? 100% == rate 10; 50% == rate 5.


PS: Actually, the standards document does NOT define what "most specialized" actually means for template function selection. Grr.
enum Bool { True, False, FileNotFound };
Thanks everybody... I always hate the self rating questions and just wanted some input on what others thought.
Level 1 - I know how to write a simple program (loops, structures, memory allocation, cout, etc...)
Level 2 - I understand virtual functions & inheritence
Level 3 - I know how to use the STL (stringstream, deque, vector, map, set, etc...)
Level 4 - I know how to customize the STL (adaptors, functors, allocators, etc...)
Level 5 - I can write (useful) Standard C++ code that MSVC6 cannot compile
Level 6 - I have knowledge of all features (bitfields specifiers, koenig look-up, & other esoteric things)
Level 7 - I grok virtual inheritence (interfaces)
Level 8 - I grok advanced template topics such as partial ordering
Level 9 - I have several bug patchs credits in boost, ACE, Loki, etc...
Level 10 - You have to pay me six-digits to talk to you


Hehe, I'm a 9 with this list ;)


I think metatemplates are rated a higher complexity than they really deserve - the meta-template algorithms are not that complicated, it's the implementation that's a pain only because advanced templates require you to know some of the more esoteric rules.



When they ask these questions I think they are more looking for you to critically assess yourself. A sign of gross incompetence is to greatly over-rate your capabilities.
Virtual inheritance isn't really that complicated is it? o_O

:: makes mental note to find himself a good reference on the implementation of that stuff. ::

This topic is closed to new replies.

Advertisement