Я чувствую, что важно продолжать практиковать мои навыки решения проблем. Написание собственных мини-проектов - это один из способов, а другой - попытаться решить проблемы, размещенные в Интернете. В Интернете легко найти интересные тесты по программированию, для решения которых требуется применение умных алгоритмов - Project Euler - один из хорошо известных примеров.
Однако во многих реальных проектах разработка программного обеспечения, особенно на начальных этапах, оказывает большое влияние, и на более поздних этапах его нельзя настроить так же легко, как простые алгоритмы. Чтобы улучшить эти навыки, я ищу любую коллекцию проблем дизайна.
Когда я говорю «дизайн», я имею в виду абстрактный дизайн программного решения - например, какие модули будут и какие между ними зависимости, как данные будут передаваться в программе, какие данные должны быть сохранены в проблемы с базой данных и т. д. Проблемы проектирования - это те проблемы, которые необходимо решить на ранних этапах любого проекта, но их решение представляет собой диаграмму в виде доски без единой строки кода.
Конечно, такого рода проблемы не имеют единственно правильного решения, но я буду особенно рад любому месту, где также представлены плюсы и минусы типичных решений, которые могут быть использованы для решения проблемы.