Чудаковатые и ломающие мозг правила Usenet, Burning Man и Stack Overflow
Джоел Спольски, апрель 2018
Ходит среди разработчиков популярная байка, что если у тебя не работает код, то надо взять резиновую уточку и рассказать ей — да-да, утке — как этот код должен был работать: объяснить каждую строку, что должно было произойти, что вылезло в итоге и т.п. Разработчики, которые опробовали этот лайфхак на себе, утверждают, что в процессе детального проговаривания проблемы неживому объекту часто получается найти и ее решение.
Это одна из хитростей, которая может помочь самостоятельно разрешить проблему в процессе программирования. Еще один способ — освоить отладку программы (дебаггинг) по принципу “разделяй и властвуй”. Невозможно перерыть тысячу строк кода ради одной ошибки. Зато можно разделить код на две части и посмотреть, что происходит в первой половине, а что происходит во второй. Сделай это пять-шесть раз и дойдешь до той самой строки с ошибкой.
С учетом вышесказанного любопытно почитать чек-лист Джона Скита для написания идеального вопроса. Джон спрашивает: “Прочитали ли вы внимательно вопрос, чтобы оценить его внятность и понятность для человека, который в глаза не видел ту информацию, которой вы обладаете?”. По большому счету, это и есть тест с резиновой уточкой. Другой вариант: “Если в вопрос включен код, вписали ли вы его в полную, но короткую программу?”. Акцент на короткой программе — это, по сути, проверка того, пытались Вы “разделить и властвовать” или нет.
Чек-лист Джона, грубо говоря, предлагает людям сначала попробовать сделать то, что уже пробовали опытные программисты, а потом уже обращаться за помощью к другим.
К сожалению, не каждый слышал об этом чек-листе. А может и слышал, но предпочел проигнорировать. У человека проблема с кодом, он знает, что существует система вопросов и ответов Stack Overflow, которая может ему помочь, и времени читать протокол какого-то ботана о том, как надо задавать вопросы, у него нет.