Ричард Хикки (создатель языка программирования Clojure) провел очень интересный доклад о решении задач под названием «Разработка через гамак». Ричард говорил больше с личной (эмпирической) точки зрения. Это пока не очень признано академично, но вписывается в некоторые исследования в области мозга. Поэтому доклад не особо научный, но в то же время дает достаточно хорошую пищу для размышлений.
[youtube video=»f84n5oFoZBc»]
Выводы:
-
Не бросайтесь сразу программировать. Лучше для начала:
- Определите задачу которую вы хотите решить. Цель разработчиков это решение задач и между делом создавать функции(программы) которые их решают. Ричард рекомендует начинать работу над задачей путем ее озвучивания команде или даже лучше записать ее (что, впрочем, применим к любому шагу описному ниже).
- Поймите задачу полностью
- Факты - что вы знаете о задаче? (например, требования бизнеса).
- Контекст - соответствующая справочная информация. (например, ваша команда использует эту ОС/фреймворк, и они смогут быстро разобраться в подобном)
- Ограничения - неявные жесткие требования. (например, система должна быть масштабируемой до 10к конкурентных пользователей или должна быть 99.99% доступной)
- Существуют ли вещи о которых вы не знаете? (например: откуда берутся данные? что случиться когда сервис не будет доступен?)
- Есть ли решения для похожих задач? (например: применимая открытая библиотека адресов)
- Глубоко изучите потенциальные решения:
- Какие могут быть проблемы у ваших решений?
- Какие здесь компромиссы? (все имеет компромиссы)
- Вопросительные знаки. (что вы еще не знаете?)
- Переключайтесь между изучением и отдыхом.
- Дайте задачу своему подсознательному: изучить много (читайте статьи, ищите схожие задачки и рецензируйте их решения)
- Позвольте подсознательному впитать: никакого изучения, просто медитируйте или сосредоточьтесь на полученной информации.
- Выспитесь хорошенько - пускай мозг сделает свою важную работу!
- Выспитесь хотя бы одну ночь перед принятием важных решений.
- Фокусировка на вещах требует времени. Вы неизбежно допустите ошибки на определенных вещах, это нормально. Но скажите людям, что вам нужно сфокусироваться на чем-то.
- Не опирайтесь на обратный отзыв при разработке (например при ТДД) - это определенно важно, и вы пройдете через итерацию, но вместо того, чтобы полагаться на обратный отзыв, лучше фокусироваться на предыдущих шагах.
- Не бойтесь делать ошибки. Требования изменятся. Вы придумаете лучшую идею - и это нормально.