Как делал я.
Просто брал и начинал писать. Всё, что угодно - игры, программы расчётов, обработку изображений, 3D-графику, OpenGL, работу с файлами, сетью, многопоточкой, опять игры, парсеры...
Берёшь любую задачу и делаешь её. Нет идей - беру любую понравившуюся программу и делаю её копию.
Сначала получается говнокод (ты этого не осознаёшь, но это так). А потом, когда начинаешь развивать или поддерживать свой код, то он начинает глючить, разваливаться.
И вот тут уже садись за книжки умные и читай про архитектуры, паттерны, методологии.
И тогда ты начнёшь понимать, что ты в старом коде делал не так и почему так делать нельзя.
Ну а дальше по кругу - снова код, снова книжки...
И да, это работает ТОЛЬКО в том случае, если тебе всё это действительно интересно. Никто заставлять тебя не будет.
Без тяги ко всему этому аду ничего не получится