Following up on this: How would you recommend digging into the technical details? Learning c++ first and reading through the whole project?
Understanding C++ definitely makes it a lot easier to start to contribute, but reading the whole project would probably be difficult and not that useful. I find that the people who found an issue in Bitcoin Core that they were motivated to solve due to their own interest tended to succeed most often. They tend to be looking at a narrow area of the codebase and their goal allows them to feel that they are progressing in the limited area they have set themselves.