Представьте, что вам никак не даётся решение какой-нибудь сложной рабочей задачи. Вы чувствуете, что решение есть, оно где-то рядом, но у вас не получается его «нащупать». Например, вы никак не можете найти очевидный баг. Такое бывает и с обычными повседневными задачами — вроде всё просто, все данные и условия перед глазами, а ответ никак не приходит в голову. Как будто забытое слово или песня, которые вертятся на языке, но никак не вспоминаются. Обычные стандартные методы и шаблоны тут не подходят. Приходится изобретать что-то новое, но мозг никак не может «переключиться» — всё время пытается пойти по известной, наезженной дороге. Зато когда задачу всё-таки удаётся решить, мы чувствуем себя настоящими победителями — всегда приятно одолеть сложную проблему и найти для неё оптимальное решение. Что же делать в таких случаях? Как подходить к решению таких задач? Как заставить свой мозг мыслить творчески? Метод утёнка (rubber duck debugging) — это метод, который помогает найти ответ на сложный вопрос или решить трудную задачу. Смысл метода заключается в том, что вы делегируете задачу мысленному помощнику — резиновому утёнку. Утёнок может стоять на рабочем столе рядом с компьютером или вы его можете просто представить. Когда в вашей работе возникнет какой-то сложный вопрос, задайте его утёнку. Идея разговаривать с игрушечным, а уж тем более с воображаемым утёнком выглядит немного странно. Но всё встанет на свои места, когда вы вспомните, что правильная формулировка вопроса уже содержит половину ответа. Если вам, например, никак не удаётся найти ошибку в работе процедуры, вы можете шаг за шагом подробно объяснить утёнку, что делает каждая строка кода. Говорят, что это помогает быстро найти ошибочный фрагмент. Можно, конечно, пытаться объяснять что-то самому себе, но это почему-то не даёт таких же результатов, да и не так весело. Вместо утёнка можно использовать любого другого собеседника. Это может быть мини-фигурка Lego или горшок с хлорофитумом. Знаю сразу нескольких разработчиков, разместивших около своих компьютеров глиняных лягушек в смешных шляпах. У меня на рабочем столе тоже есть личный пернатый «консультант». В конце концов, вы всегда можете побеседовать со своим любимым котом. Главное, чтобы вам было комфортно рассказывать реальному или воображаемому собеседнику о вашей проблеме. На роль собеседника вы можете назначить кого-то из своих коллег, родственников или знакомых. Тут главное, чтобы исполнитель роли утёнка не имел отношения к разработке. Только в этом случае ваш собеседник не только не будет смеяться над вашими глупыми ошибками, но и сможет предложить совершенно новое и неожиданное решение вашей проблемы. Таким же способом можно дополнительно проверить готовое решение. Герой «Теории Большого взрыва» Шелдон Купер перед своим выступлением по радио как-то заявил: «Итак, это основные вопросы, которые завтра будут обсуждаться в радиопередаче. Мне необходимо убедиться в том, что они достаточно просты для понимания менее образованной публикой. Говард, почитай и скажи, что тебе непонятно». Друг Шелдона — Говард Воловиц, будучи отличным инженером, выпускником MIT и астронавтом побывавшим на МКС, после такого заявления, ясное дело, сильно расстроился. По сути Шелдон применил метод, который известный специалист по юзабилити Якоб Нильсен назвал «коридорным тестированием» (hallway testing). Суть этого метода заключается в том, чтобы попросить несведущего случайного человека протестировать прототип вашего приложения, сайта или документа. Итак, вы ловите в коридоре первого попавшегося сотрудника, желательно никак не связанного с разработкой, усаживаете его перед компьютером и настойчиво предлагаете ему поработать с вашим прототипом. Например, выполнить в программе какое-то действие. А сами в это время стоите у него за спиной и удивляетесь его непонятливости и глупости: сами-то вы уже проделали это действие сотни раз. Якоб Нильсен пишет, что с помощью «коридорного тестирования» можно обнаружить до 95% ошибок, связанных с удобством и простотой использования. Сфера применения коридорного тестирования гораздо шире, чем проверка работы приложения или сайта. Так можно проверять тексты, архитектуры, идеи. Эта методика помогает получить мнение непредвзятого, неопытного человека, который видит ваш проект впервые. Те, кто использовали методику «коридорного тестирования», говорят, что они узнали о своём детище много нового и крайне неожиданного. Если же у вас есть проблема или задача, на которую вы никак не можете найти ответ, попробуйте объяснить её своему коридорному собеседнику. Он выгодно отличается от утёнка тем, что может вам ответить. Причём ответ может быть довольно глупым, но обязательно к нему прислушайтесь. Возможно, вам захочется воскликнуть: «А что, так можно было?!» Если вам никак не удаётся найти решение какой-то сложной проблемы, то, возможно, вы смотрите на проблему слишком серьёзно? Все мы считаем себя профессионалами, у нас накоплен большой багаж знаний и умений. Мы привыкли решать сложные задачи с применением не менее сложных инструментов. Но иногда эта серьёзность играет с нами злую шутку и мешает увидеть простейшее решение проблемы. Отбросить все свои знания нелегко: просто так память и интеллект не отключишь. Но ради решения сложной задачи стоит попытаться взглянуть на неё так, как будто всех ваших знаний не существует. Тут-то нам и поможет наш коридорный собеседник. За неимением такового можно побеседовать и с утёнком. Они помогут вам найти решение из разряда «Это настолько глупо, что может сработать». В сети есть известная байка о том, как на заре космических полётов американцы долго и упорно изобретали ручку, которая нормально писала бы в космосе. В конце концов они затратили на исследования уйму средств и предложили высокотехнологичное решение. А русские просто писали в космосе карандашом. Иногда полезно на некоторое время перестать быть серьёзным профессионалом и попробовать думать проще. Стереотипы и инертность мышления часто мешают нам взглянуть на проблему под другим углом. Но нам на помощь всегда готовы прийти резиновый утёнок или коридорный собеседник. Статья была впервые опубликована на другом ресурсе 6 августа 2021.    Техлид, технический писатель, программист