Читать.
Нет, правда, читай.
Прочитайте все об алгоритме и дизайне, которые вы можете найти. Там есть феноменальные книги. Книги по алгоритму Седжвика хороши. Руководство по разработке алгоритмов от Skiena также хорошо. Вместе эти книги следуют за мной на каждой книжной полке на каждой работе, на которую я иду, наряду с Мифическим Человеком-Месяцем.
Затем спроси.
Поговорите с людьми, которых вы уважаете. Спросите их, какие точки принятия решений они имели и почему они приняли решения, которые они сделали. Хорошие всегда будут в состоянии сказать вам: «Я решил сделать X, потому что это лучше, чем A, B в этих отношениях. Я мог бы пойти с C, но я чувствовал, что это был лучший выбор из-за этого».
Далее делай.
Сборка вещей. Создавайте вещи, которые вы никогда не будете использовать. Создавайте вещи, которые вам никогда не понадобятся. Иди напиши программу, которая решает головоломку судоку. Теперь иди, сделай это снова. И снова. Постройте его 5 совершенно разными способами. Создайте программу, которая генерирует головоломки Судоку и подайте ее в решатели. Найти, какой решатель является самым быстрым. А потом...
Узнайте почему.
«Что» почти никогда не важно. Я имею в виду, да, очень важно завершить проект под рукой, но в конце концов, если вы знаете «что», не зная «почему», то вы, возможно, так и не сделали бы этого в первую очередь. Вы получили пулю в своем резюме. Иди принеси печенье и поздравь себя. «Почему» гораздо важнее, чем «что».
И для протокола судоку был примером. Я провел много свободного времени, выполняя это упражнение с кучей логических головоломок в Kongregate, и многому научился на этом пути.
http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/
http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/
http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/