Re: What's your C++ skill level?
phlip2005@gmail.com (Phlip) wrote (abridged):
9 - wrote a book with leading-edge techniques in it
8 - published a used library with leading-edge techniques
(or wrote a generic tutorial with standard techniques in it)
7 - have invented leading-edge techniques & blogged about them
I don't think the difference between those has much to do with C++
expertise. Non-experts can write books.
6 - have architected entire successful C++ applications
5 - have unit-tested, maintained, and debugged C++ apps
These seem to be more about being an expert programmer than an expert in
C++. We can use C++ successfully while only knowing a small sub-set of
it.
4 - know how to factually avoid undefined behavior
3 - obey a sane subset so narrow most of my behavior is defined!
A lot of emphasis on undefined behaviour. There's more to C++ than that.
My own hierarchy would be more oriented around language features and
techniques.
2-3 At the bottom end are people who mostly stick within the
C/C++ subset, perhaps using new/delete and std::vector<>.
4-5 Next are the ones who know when to use references in their
own code, and who can implement classes with virtual functions.
They know the std collection classes quite well.
6-7 Next comes some facility writing their own templates. They
can use std::algorithms, but may choose not to. They can use
local classes and predicates and pointers to member functions.
They may be considered experts by their colleagues. They may
have some awareness of the dark corners of C++, in which case
they are probably aware of how much they don't know.
8-9 Next comes the people who understand books like "Modern C++
Design", and are comfortable with notions like typelists.
They know what "SFINAE" means and why it matters, and why
perfect forwarding has been problematic. They probably follow
the evolution of the C++ standard.
10 Finally we have the ones who can contribute to the state of
the art (whether through books or otherwise). Who can make
worthwhile criticisms or suggestions for proposals such as
r-value references or lambdas or concepts.
On that scale I'd probably put myself around 8. Most people who come to
interview at my employers are below 4. If you ask them, "what is a
reference and when would you use one?" they are floored.
Idealy the chief architect for a project would at least be at 6-7, that
is, would know when to design using templates rather than virtual
functions. The rank and file can be below that. You don't need to be an
expert to be a useful C++ programmer.
oskarmellow wrote:
Ever since then, I find myself always trying to determine my skill
level. And in the process of doing so, my self-assessed rating
keeps getting lower and lower.
That's what I had in mind at 6-7. You get to know enough that colleagues
start coming to you with obscure compiler errors, and you can help them,
so you think you are the local expert. And then you get exposed to the
wider world, such as some of the debates in this newsgroup, and you
realise how much you don't know.
-- Dave Harris, Nottingham, UK.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]