Признание: на прошлой неделе я потратил все утро на настройку аутентификации по SSH-ключу в нашей корпоративной учетной записи Github. Я перепробовал все, что мог придумать, но продолжал получать ошибки аутентификации. Когда я был окончательно измотан и у меня закончились идеи, я позвал коллегу. Она решила мою проблему за две минуты. Шутки в сторону. Пара минут.

Я знал, что она успешно настроила SSH-ключи на своей машине только на прошлой неделе. И все же я боролся один часами. Из высокомерия. Из страха выглядеть глупо. Из гордости.

Я был рад, что проблема решена, но меня осенило: мы все время совершаем одну и ту же ошибку. Мы часами работаем над проблемами, которые кто-то может решить за считанные минуты.

Вы уже много раз были на другой стороне этого взаимодействия. Вы видели, как коллеги часами борются с простыми проблемами. Вы подходите и спрашиваете: «Как дела?», Но обнаруживаете, что это фундаментальный недостаток дизайна, который можно быстро устранить.

Ключевой принцип: команда умнее человека

Итак, сегодня моя команда пробует новую привычку: ограниченные по времени препятствия. Как это работает? Просто: Подождите только один час, прежде чем обратиться за помощью.

Один час. Вот и все. Если застрял, запустите таймер. Как только он погаснет, пора протянуть руку помощи. Препятствия ограничены по времени, поэтому мы не тратим часы на решение проблемы, которую мог бы решить кто-то другой.

Парное программирование - это здорово, но это не значит, что парное программирование разрешено. Это просто обязательство обсудить препятствие, рассмотреть возможные пути продвижения вперед и проконсультироваться с другими, кто может помочь в выборе следующих шагов.

Помидор препятствия

Техника помидора имеет простую предпосылку: работайте в короткие сроки, чтобы повысить концентрацию внимания. Философия ограниченных по времени препятствий работает по той же причине. Когда вы находитесь в окне времени, вы сосредотачиваетесь на часах.

Я выключаю свой телефон, Твиттер, электронную почту и падаю головой во время помидоров. Это особенно важно, когда я попал в ограниченное по времени препятствие. Мне нужно сосредоточиться, потому что у меня есть час до того, как я должен проглотить свою гордость и попросить кого-нибудь высказаться.

Почему час?

Здесь действует тщательный баланс. Если окно слишком короткое, разработчик упускает возможность учиться через исследование. Решения коллеги по работе менее ценны в долгосрочной перспективе, чем самостоятельное обучение. Почему? Потому что в поисках ответа вы склонны изучать множество других концепций. Один час - это отправная точка, которая уравновешивает потребность в исследованиях с эффективностью.

Добейтесь успеха в категории "Резиновый утенок"

Ограниченные по времени препятствия - это форма решения проблемы резиновой уточки. Когда мы застреваем, вербализация нашей ситуации задействует новую часть нашего мозга. Это заставляет нас по-другому взглянуть на проблему.

Когда-либо подходил к коллеге и говорил: «Эй, Боб, я действительно в тупике. Каждый раз, когда я устанавливаю точку останова, API идет… Ого, неважно, я знаю проблему. Спасибо!". Боб улыбается, когда вы уходите, чувствуя себя довольным тем, что он помог вам, просто слушая.

Вы когда-нибудь начинали писать вопрос о StackOverflow только для того, чтобы добраться до середины и понять решение?

Эти сценарии демонстрируют принцип «резиновой утки» в действии.

Документирование того, почему вы застряли, открывает новые пути решения проблемы, путем принудительного обоснования ваших методов.

И еще одна причудливая причина регулярно обращаться за информацией: Мы лучше решаем проблемы других людей, чем свои собственные. Исследования показали, что мы более креативны, когда думаем, что решаем проблему за кого-то другого. Так что, если вы застряли, найдите кого-нибудь еще!

Что делать, если я удален?

Это работает и для удаленных сотрудников. На самом деле это даже более важно, потому что так легко решить проблему, когда вы сидите в одиночестве. Timeboxing побуждает удаленных сотрудников обращаться к вам. Есть много отличных инструментов для удаленного сотрудничества, включая Hangouts, Skype, GoToMeeting, Join.me, Zoom.us и полезные интеграции Slack Sketchboard. Я даже предпочитаю парное программирование при дистанционном управлении, потому что код легче увидеть, когда я сижу прямо перед монитором, а не неловко зависаю в стороне.

Итог: в следующий раз, когда вы застрянете, запустите таймер.

Кто-нибудь делает это?

Вы пробовали такой подход? Как ты это называешь? Работает? Я хотел бы услышать отзывы.

Кори Хаус является автором Создание приложений с React и Redux в ES6, Чистый код: написание кода для людей и множества других курсов по Pluralsight. Он является архитектором программного обеспечения в VinSolutions, Microsoft MVP и обучает разработчиков программного обеспечения на международном уровне таким методам разработки программного обеспечения, как фронтенд-разработка и чистое кодирование.