# How to study?

The main thing that can be advised is that you should understand that only you are responsible for your development. Of course, you will find many enthusiasts around who will be happy to help you with advice, but no one will produce specific tasks or training programs for you. The best friend in this business is you, Google search, and the tutorials.

## How to study new C++ 11/14/17/20 standards?

Beginners can be advised not to focus too much on standards at the beginning of their journey. Pick up books from the [Beginner's List](Books/PreJunior.md) and learn the fundamentals. Modern books for beginners contain little information about the capabilities of the C++ 11 and newer standards. At first, you should not focus on the new language standards.

A natural question arises: "Why is it like that?" It is like that because modern standards are focused on three main things:

- fixing issues
- syntactic sugar
- new functionality

If with fixing problems and with syntactic sugar everything is obvious (in the first case, new constructions are introduced that correct the problems of old standards, and in the second, new abstractions appear that simplify writing repetitive code and so on), then with new functionality it's a bit more complicated.

C++ develops in the same way as all other languages: it takes some popular idea from computer science or a successful feature from other languages and introduces it into the language. It is important to study such constructs and use them, if necessary, but in the beginning it is necessary to study the foundations that were created by the older standards (C++11/C++14). They are described in most modern books for beginners.


## Where to get an overview of the latest C++ standards features?

- Presentations among [C++ conferences](CommunitySources.md)
- On the main page of the [CppReference](https://en.cppreference.com/w/cpp) you will find links to pages with overview lists of the newest features
- You can read the following book by [Bjarne Stroustrup - A Tour of C++](https://www.amazon.com/Tour-2nd-Depth-Bjarne-Stroustrup/dp/0134997832). Regularly check the book republication as it's updated when a new C++ standard is released
- Professional forums/chats/discussions/etc.
- Overview videos on YouTube by community

## Training recommendations

- Learn at your own pace and at any age! Do not get fooled by stories: "I'm a programmer from the cradle". Most of these stories are [survivorship bias](https://en.wikipedia.org/wiki/Survivorship_bias) or an attempt to flatter their vanity at your expense. You have enough ability to learn programming from scratch including C++!
- Most of the problems you run into are likely already solved. If you cannot find the answer on the Internet, try reformulating your request in a different way. Eventually, you will come to the right answer. If the answer still didn't come, then try to solve the problem in a simpler way.
- Remember, you should be learning the language at first and not struggling with the work environment instead. Fighting with the environment can lead to complete frustration and loss of motivation.
- Remember that many experienced developers run into problems too and can get stuck in "obvious" places. Just take a break, do something else, and then return to the task after a break.
- Find like-minded people who are also starting their learning path. So, it will be more interesting for you to immerse yourself in learning the language together as well as share knowledge and experience with each other. It will also help to develop teamwork skills. The days of "free artists" have ended. Almost everywhere you will have to work as a team.
- Try to find yourself an experienced mentor. Under his guidance, you will be able to avoid various typical traps and wasted time on them.
