Questions like these are very hard to answer, blender is a very very large and diverse codebase. If you are counting on there’s these X number of things you need to know and you’ll be a “successful blender developer” and can do anything in blender, that’s just not how it works.
To be a successful blender developer
-
learn how to build and run it (You don’t even need to understand how the build system works, but being able to build it is the bare minimum you need)
-
Know some basic C/C++ , No need to know by heart what methods std:vector
has or what order the parameters for strcmp
go in, most IDE’s will help you there anyway. This information can be looked up, Just know enough to being able to write “code that builds” and if it doesn’t build you should be able to figure out what you did wrong.
-
Learn how to use the debugger on your platform, it is your friend it will always be there for you when things are not working
Don’t get me wrong , sure an advanced C++17 course would be great and you’ll learn many valuable skills, but for any project regardless if is blender or not. The following core fundamentals will always be needed. learn how to build it, learn how to make a small change, learn how to debug it. Unless you got those skills down, there is no high concept development course you can take to make your life easier.
Also it is important to understand you’ll never understand “all of blender” and you really don’t need to, find a niche area in blender you like and learn what you need for it, maybe it’s python, maybe it’s c99, maybe it’s an older piece of blender code using mostly C++98, maybe it’s a new area leaning heavily into C++17 maybe it’s GLSL or CMake.
Sure you could be a master of all these things, and that be great! You’d be a great developer to have around, but it’s not what is needed to thrive as a developer, many of us have specialized and that is perfectly alight.
@fclem probably can’t debug a compiler codegen bug, I wouldn’t know where to start solving a GLSL shader issue as long as there’s someone around with the skills required it’ll all work out, no reason this all needs to be a single developer.
So yeah, rather than going, “what do I need to learn?” Just pick an area you want to work on and go for it! You’ll be contributing to blender in no-time!