This Q&A is part of a weekly series of posts highlighting common questions encountered by technophiles and answered by users at Stack Exchange, a free, community-powered network of 80+ Q&A sites.

darkman asks:

I've just been hired as a member of a group that is developing in C++. For the last 11 years, I'd been coding on and off (some C, some Fortran, some C++).

The coding I'd done was mostly maintaining and adding new features to one of our systems. The code, being 10 years old, did not contain all the modern C++ stuff. Lo and behold, my new job is filled with programmers with 5-10 years experience of pure coding and they all use the most modern aspects of C++ (C++11, template, lambda, etc, etc).

They are expecting someone with that same experience... which I have: I've been working for 15 years total, but when I look at their code, I can't understand half of it! :-|

Anyone been in that situation? What would you recommend?

Related: "Why would I learn C++11, having known C and C++?"

Answer: Be Confident, Be Smart, Be Open (20 Votes)

carleeto replies:

The key is just to never forget that they and you were writing "Hello World" once. You all wrote crappy code once and you all got better.

Modern code does not equal well-written code. Experience in years does not either.

The best thing for you to do is to have an open attitude to learning. Don't ask questions that Google would give you the answer to or that you could figure out with a quick prototype piece of code.

Just ask smart questions and learn quick. Your biggest danger here is yourself—experience often makes us cynical and can compel us to resist modern methods. Fight that impulse and approach anything new with an openness to learning. The rest will just fall into place.

Answer: Try Five (4 Votes)

Yoni replies:

I found myself in the exact same situation a few years back; also with C++ though before C++11. The solution for me turned out to be the following:

1. Read, read, read! Ask your colleagues or scour the net for books that explain the things you're struggling with. As you're learning about these concepts, constantly refer back to your colleague's code and check your understanding. I must have read almost a dozen books the first year I worked with C++.

2. Stop worrying about sounding like a newbie and ask questions. Only do this after reading about the concept so that you're asking for clarification specifically regarding the code, and not something you could just Google (kind of like the concept behind this site). Most programmers love to talk about their code, especially if they're using some snazzy new technique. It lets them sound like experts and show off their skills. I've encountered very few people who found my newbie questions to be a negative reflection on me as long as I showed some basic understanding I gained elsewhere.

3. Attend as many code reviews as you can; even if the code isn't directly related to what you're doing. In teams where code review was done in person I learned a great deal, especially since its a perfect chance to ask your questions.

4. Find out if your company is willing to send you to training. We had an internal course twice a year, but I'm sure you'll be able to find some 3rd party training.

5. Finally: give it time. As you must know by now, programming languages are full of features and nuances that take a long time to learn. And as Bjarne Stroustrup himself put it, "C++11 feels like a new language". It's important to keep in mind that learning these things will take time and in a few months you'll feel much more comfortable than you do now.

Some resources you might want to check out:

Related: "Is there any reason to use C++ instead of C, Perl, Python, etc.?"

Answer: Pair Up & Take Ownership (2 Votes)

Luhar replies:

If possible try and pair up with one of the more experienced developers on your team and work on a project together. This may be a "Friday afternoon" type of project, but it will be useful for you to see how they put the code together and an opportunity to ask questions about specific patterns or techniques that you are not familiar with.

You could also try to take ownership of a small project already in production, learn how it works, and try to fix any small outstanding bugs. Most project teams track open issues or feature requests. You might want to get used to working with existing code (get your code reviewed) which, I think, is the best way of getting used to new techniques or code styles.

Related: "Best way for a senior programmer to switch languages/jobs in next job?"

Think you know how to get along with more experienced programmers? Disagree with the opinions expressed above? Bring your expertise to the question at Stack Exchange, a network of 80+ sites where you can trade expert knowledge on topics like web apps, cycling, scientific skepticism, and (almost) everything in between.