Best bet is probably to start by making a game. One option is to start by building a simple game using an existing engine, and eventually get deeper and deeper into the libraries you're using until you decide to contribute back to that engine, or create your own. Alternatively you could just start by making something incredibly simple, a Pong or NES Mario clone, and then work your way up through the generations to something more modern. The first approach is probably easier, as you'd have lots of tutorials from the community around the modern engine.