I learned many concepts by spending years designing, building, redesigning, and rebuilding many... many... many... times. Then I got this book:
3D game engine design: a practical approach to real-time computer graphics
By David H. Eberly
and my universe was changed forever. Pick a project that you think is worth it and go through the pains of building something that you think is beautiful. This is how you become a good programmer because your art will drive you.
Keep in mind, to become a professional is to put away the art brushes and grab a shovel because most of the problems professionals deal with are not programming related but rather drama-driven-bullshit.
3D game engine design: a practical approach to real-time computer graphics By David H. Eberly
and my universe was changed forever. Pick a project that you think is worth it and go through the pains of building something that you think is beautiful. This is how you become a good programmer because your art will drive you.
Keep in mind, to become a professional is to put away the art brushes and grab a shovel because most of the problems professionals deal with are not programming related but rather drama-driven-bullshit.