Все приходит исключительно с опытом. Возможно, ты и сам замечал, что лицо красное от фейспалмов, когда смотришь на свой же код, написанный год тому назад.
Самый лучший совет получить мощный буст опыта в программирование это устроится на работу программистом. Пообщаться с сеньорами, они расскажут как лучше и почему. Вот ты и соберешь по крупицам свой опыт.
Очень много людей по выходу из учебных заведений ищут работу 100к+ потому что "Ну а что. Я же крутой. Есть диплом программиста", но это подход не правильный.
Самый лучший способ как по мне это взять проект на гитхабе, строчек так на 1к+- и в тупую его переписать, время от времени собирая и фикся вылезающие ошибки, после этого получаешь +121212 к скилу моментально.
Поймёшь как работает софт, как его пишут, ну и плюсом хороший стиль кода все дела.
Не увидел чтобы кто-то написал про самое главное, как, собственно, писать программы. Самое простое: рисуешь на бумажке в виде подобия блок-схемы алгоритм решения задачи, потом идёшь В IDE и начинаешь писать код, реализовывая то, что у тебя записано. А теорию я лично изучаю когда мне нужно что-то реализовать, а я не знаю методов решения этой подзадачи. That's all).