My general advice is to start with programming small games and creating small projects.
You need to learn how to program first, but you can learn programming while making small, simple games.
I recommend making the following games in roughly this order (although this is just a suggestion).
1. A guess the random number game.
2. Pong
3. Breakout
4. Asteroids
5. Tetris
6. Pacman
7. A 2d side scroller like Mario
Guess the number teaches random number generation and if statements.
Pong teaches collision detection, drawing graphics to the screen, making objects move and how to make objects collide with one another. It also teaches basic "AI".
Breakout teaches managing collections of objects in addition to using all of the same concepts from Pong. Breakout also teaches how to have multiple levels (potentially).
Asteroids teaches how to make projectiles, how to randomly generate levels, how to handle the ship leaving the outside of the window, and how to generate asteroids and/or play animations.
Tetris teaches how to use arrays, how to code game logic, and how to increase difficulty level.
Pacman teaches how to construct levels, 2d collision detection, and a reasonable amount about game AI.
Mario teaches scrolling, defining complex levels, and managing game states.
After making these games you will have a pretty solid background from which to start designing and creating your own games.
This is just my recommendation.
Also I will agree with ByteTroll: You will not gain proficiency in programming by reading books. The only way to get good at programming is to program. You must write lots and lots of programs and to really learn things well will take time. It will very likely take you years of working with languages to really get a solid grasp on what you are doing and why.