План такой:
1. Учишь базу языка, ну чтобы пришло понимание, хоть смутное, как что примерно работает. Это Рихтер, Скит и компания.
2. Много литкода, чтобы понимать, как алгоритмически оптимально писать.
3. Разбираешься с профилировщиками, нагрузочным тестированием и так далее, чтобы уметь моделировать и анализировать различные ситуации. Ты же не просто так оптимизацией занимаешься, а чтобы добиться определенного результата.
4. Далее смотришь видео с конференции различных, вот Гольштейна порекомендовали, тоже неплохо.
5. Повторяешь это цикл несколько раз, и вот уже интуитивно начинаешь понимать, как писать стоит или не стоит. Но в подавляющем числе случаев пригодятся только 3 первых пункта.