Как научиться придумывать более простые алгоритмы, для решения любой задачи?
Классический подход выглядит так: смотрим на задачу и пытаемся понять как мы будем её решать руками, рассматриваем разные варианты задачи, ошибаемся, пробуем ещё раз, знакомимся с ней одним словом. Потом полученное решение пытаемся формализовать и описать с помощью языка программирования.
Я, когда проходил этот этап, больше всего почерпнул из книги "Математика это просто": https://www.ozon.ru/context/detail/id/31172916/
Несмотря на слово "математика" в названии, там речь идёт о том, как научиться решать задачи, для которых в голове нет готового решения.
Удачи и терпения на этом нелёгком пути :)
Но я Си учил не по учебникам, просто я работаю волшебником...
ЗЫ Это внутреннее ощущение, оно появляется действительно с опытом, может пройти год или два коммерческой разработки. Ты вдруг смотришь на свой старый код и ясно понимаешь как его оптимизировать. Это магия, этому нельзя научиться.
Другое дело вы уверены, что хотите провести жизнь перед компьютером, копаясь в коде? Деньги будут, но настоящее удовлетворение и счастье вряд ли.