Agree learnopengl.com is a good place to start, but I think people should really write a software renderer from scratch before venturing too far on Vulkan / D3D12. It's easier, more fulfilling, and much more helpful.
Pragprog has a really good tutorial for building a software based ray-tracer. its language agnostic. I'm following it in rust but you can use anything that can output to a canvas.