Ask HN: What did you do to become an expert in C++?
1–10 of 12 posts
Re: Ask HN: What did you do to become an expert in C++?
#2I worked with a lot of really good C++ programmers and had them do my code reviews. The best way to learn is to expose yourself to people who know more than you do and give you feedback.
As one of my coworkers is fond of saying, "If you work with people better than yourself, you'll get better. It just happens naturally."
Re: Ask HN: What did you do to become an expert in C++?
#3Re: Ask HN: What did you do to become an expert in C++?
#4My best advice would be to just do it. Don't focus on memorizing the syntax of pointer-to-member functions or the stupidly complicated overload rules. C++ is powerful but a lot of it is quite useless in practice.
Instead, you should be writing DNS servers, hiding text as bit patterns in JPEGs, or whatever other thing you find intellectually interesting. Sprinkle in some Google and bake for a few years.
I'm sorry to say that like with most things in life, there aren't any shortcuts here.
Re: Ask HN: What did you do to become an expert in C++?
#5Re: Ask HN: What did you do to become an expert in C++?
#6You can read as much as you want but it will never make you an expert. To fully understand a language you have to live in it for a while.
Re: Ask HN: What did you do to become an expert in C++?
#7Re: Ask HN: What did you do to become an expert in C++?
#8Re: Ask HN: What did you do to become an expert in C++?
#9Re: Ask HN: What did you do to become an expert in C++?
#10The most important skill is general problem solving, and for this a variety of tools is helpful. So in the C++ world, focus on a few language features that are most different from one another. Make sure you know basically how templates work, but don't fret if you've never seen a specialization or any of the 44 corner cases that are unsupported or undefined. Learn at least common STL containers like vectors, sets and maps, and learn basic_string. Expose yourself to at least one algorithm like fill_n(), and recognize how it is different for vectors versus C arrays. Learn ostringstream. Use namespaces, and learn about the "using" keyword. Learn the basics of classes, constructors and destructors, and the RAII technique. Master all of this before exploring the messes that are inheritance and exception handling.