Разработчики проводят огромное количество времени в тупняках. После многих лет работы разработчиком и менеджером я думаю, что тупняк это дефолтное состояние. Мы, разработчики, лишь иногда выходим из тупняка, решаем наконец поставленную задачу и почти сразу попадаем в следующий тупняк. Абсолютно все попадают в такие ситуации, от мала до велика, но не все умеют из них самостоятельно выходить. Опытные разработчики могут быстрее осознать, что у них начался тупняк, и начать предпринимать активные действия по выходу из него. Умение найти выход - это навык, который можно прокачать, и в этой статье я предложу практические советы, как это делать. Но для начала давайте коротко пройдемся по тому, как работает наш мозг. Поскольку мы используем наш мозг для поиска решений, было бы неплохо иметь хотя бы базовое понимание, как он работает. Разумеется, тема это весьма сложная, и то, что я предложу ниже - достаточно примитивный концепт, основанный на моем ограниченном понимании. Тем не менее, я думаю, этот концепт все равно может быть полезен, потому что на нем можно выстроить работающий фреймворк для решения сложных проблем. Например: Нет, это не видео выше, прошу прощения, если спровоцировал вас кликнуть. Но если бы это было видео, и если вы смотрели Звездные Войны, уверен - вы ожидали бы услышать тяжелое дыхание Дарта Вейдера, потому что оно прочно ассоциируется с его внешним видом. Другие ассоциации с ним включают световые мечи, космические корабли, Люка Скайуокера и проч. Размышляя, мы следуем уже известным нам ассоциациям между разными объектами и находим новые. Как говорил Стив Джобс, “Creativity is just connecting things”. Чтобы найти решение задачи, нам нужно установить соответствующие ассоциации в своей голове. Мы говорим, что задача “сложная”, если не можем быстро найти решение. Что в этой чашке? Моя первая мысль - “кофе”, но… это же может быть и что-то другое, верно? Крепкий черный чай? Может быть. Кока-кола? Вряд ли, но тоже возможно. Сырая нефть? Ну… очень маловероятно, но все же в теории возможно. Почему я сказал “кофе”? Потому что я очень часто видел подобные чашки с кофе. Из-за частого использования эта ассоциация очень сильна в моем мозгу, и я следую ей, даже не успевая задуматься.  Это один из фундаментальных принципов работы нашего мозга - чем чаще мы следуем определенной ассоциации, тем сильнее она становится, и тем вероятнее мы будем следовать ей снова. Ассоциации в нашем мозгу подобны дорогам: некоторые из них - едва заметные тропинки, другие - как широкополосное скоростное шоссе.  Когда мы достаточно долго размышляем над какой-то проблемой, в какой-то момент мы начинаем ходить по кругу. Наш мозг следует одним и тем же ассоциациям, и чем больше мы им следуем, тем сильнее они становятся, и тем сложнее оказывается увидеть другие ассоциации. Осознав это, становится очевидно, что худшая вещь, которую мы можем сделать, попав в тупняк - “просто продолжать думать”. Это не только не работает, но и контр-продуктивно. Чем больше мы “думаем”, тем больше ходим по кругу, изматывая себя, но не находя новые идеи. Время попробовать что-то другое. Чтобы найти решение, нужно сперва как следует понять задачу, верно? Кажется очевидным, но удивительно часто мы пытаемся найти решения для задач, которые полностью не понимаем. Это происходит из-за неприятной особенности нашего мозга: нам кажется, что мы понимаем что-то, в то время как в реальности это не так. Отличный способ проверить наше понимание - записать его. Помогает сразу с двух сторон: Кто ясно мыслит, тот ясно излагает. Если мы действительно четко понимаем решаемую задачу, то не должно быть сложно изложить ее письменно. Однако частенько именно в этот момент и начинают всплывать всякие нестыковки и пробелы в нашем понимании. Если вы их обнаружили - исправляйте описание задачи до тех пор, пока оно не станет кристально ясным. Правильно поставленный вопрос - половина ответа, так что эти усилия окупятся. Письменное изложение мыслей разгружает мозг. Как и у компьютеров, у людей есть разные виды памяти. Наша кратковременная память, где информация хранится в самом легкодоступном виде, очень ограничена. Исследование, известное как Кошелек Миллера, утверждает, что мы можем удержать в нашей кратковременной памяти всего лишь около 7 элементов. Совсем немного, особенно для ситуаций, когда мы пытаемся решить какую-то сложную задачу. Излагая наши мысли письменно, мы перестаем бояться забыть что-нибудь важное, потому что все важное записано и точно не пропадет. Это освобождает кратковременную память и облегчает поиск решений. Как мы говорили выше, наша кратковременная память очень ограничена. У сложной задачи может быть столько нюансов, что их сложно все удержать в памяти, да и даже если удается - у нас не остается свободной памяти для поиска решений. В таких случаях полезно разбить большую задачу на несколько более мелких, выписать их все, и затем начать решать по одной. Решать несколько более простых задач зачастую проще и эффективнее, чем пытаться атаковать одну огромную. Чаще всего мы работаем над задачами в областях, в которых уже до нас работали другие люди. Их опыт может быть бесценным источником идей, и кто знает - может, даже и готовых решений.  Не бойтесь заимствовать чужие идеи. Как говорится, “Хорошие художники копируют, великие художники воруют”. Я, конечно, не имею в виду, что никогда не стоит изобретать свой велосипед. Иногда стоит. Однако желательно, чтобы для этого были причины. Как мы узнаем, что наш велосипед лучше других, если мы даже не взглянули на другие? Сегодня благодаря Интернету информация доступна как никогда раньше. Час, потраченный на гугление - время проведенное с пользой. Обсуждение с другими людьми - мощный инструмент для поиска решений. Есть несколько причин, почему он помогает: Другим людям проще взглянуть свежим взглядом. Как упоминалось выше, после того, как мы потратили какое-то время на размышление о задаче, наш мозг начинает ходить по кругу. Другие люди пока что не затронуты этим, так что им проще увидеть что-то, что мы сами не видим. Однако, если мы проведем некоторое время в обсуждениях с ними, то заметим, что и они тоже начали ходить по кругу. Если так произошло, и подходящее решение все еще не найдено - значит надо найти еще кого-нибудь, с кем это можно обсудить :) Парадокс Соломона - люди дают более мудрые советы, когда дело касается чужих проблем, и хуже справляются со своими собственными. Звучит иррационально, но таковы люди. Они могут помочь, даже если не понимают о чем речь. Даже если наши собеседники не предлагают решений, они могут задавать уточняющие вопросы, или у них могут быть случайные мысли о вашей задаче, которые могут натолкнуть на новую идею. Они могут видеть проблему под другим углом, и это шанс для нас самих взглянуть на нее под другим углом. HINT: этот совет отлично комбинируется с советом №1 для достижения синергетического эффекта. Опишите задачу, которую вы решаете, и запостите ее куда-нибудь для обсуждения с другими людьми, например, в командный чат. Мы в ivelum называем это “Эффект Чатика Животворящего”, ибо он правда чудодейственный. Вы, возможно, слышали истории о программистах, которые говорят с резиновой уточкой, и это помогает им решать сложные проблемы. Я уверен, есть люди, которым это помогает, но в то же время думаю, что этот совет несколько переоценен, и по возможности лучше все же говорить с живыми людьми. В большинстве случаев двусторонний обмен информацией будет более продуктивен, чем односторонний. Тем не менее, резиновая уточка может помочь. Как? Оказывается, за письменную и устную речь отвечают разные части нашего мозга. Когда мы переключаем способ коммуникации, в нашем мозгу активируются другие нейроны, и мы начинаем думать несколько иначе. Мы можем использовать такой хак для своей пользы. Если мы записали задачу, но ничего полезного из этого не родилось, можно попробовать поразмышлять вслух, вдруг так получится. Рисование - еще один способ коммуникации. Наброски, диаграммы, майнд-мапы визуализируют наши идеи, вместо того, чтобы представлять их только на словах, и это бывает очень полезно для многих типов задач. Переключение типов коммуникации используется в популярном инструменте, который многие любят использовать для брейншторма - досках для рисования. На маркерной доске можно писать, рисовать и обсуждать то, что получается с другими людьми - отличное комбо. Если вы заметили, что уже давно ходите по кругу, перерыв может помочь “перезагрузить” ваш мозг. Как говорится, “Утро вечера мудренее”, и неспроста. Сон - естественный перерыв. Утром вы можете проснуться не только со свежими силами, но и со свежим взглядом на решаемую задачу. Временное переключение на другую активность тоже может помочь. После того, как вы “загрузили” задачу в мозг, она может продолжать жить там в фоновом режиме, пока вы занимаетесь чем-то еще. Потом в какой-то момент вы можете наткнуться на что-то, и вдруг вспомнить вашу задачу: “подождите, а вот эта штука не сможет ли помочь?” Эта тема заслуживает отдельной статьи, и я не чувствую себя достаточно компетентным, чтобы рассуждать о ней в деталях. Тем не менее, я все же хотел бы ее кратко упомянуть, чтобы подчеркнуть важность вопроса и подтолкнуть вас к самостоятельному изучению. Наш мозг - наш самый важный инструмент. Поддержание его в хорошей физической форме не только полезно для здоровья, но и помогает в умственной работе. На что стоит обратить внимание: Хороший сон критически важен. Есть много исследований на эту тему и куча рекомендаций, как улучшить свой сон. Я предпочитаю хороший матрас и подушку, полную темноту и легкую прохладу в спальне, и стараюсь не использовать спальное место ни для чего другого, кроме сна. Физические упражнения, активно задействующие дыхание (прогулки, бег, велосипед, плавание, дыхательная йога, и т.д.) укрепляют здоровье сразу несколькими способами, и в том числе улучшают работу мозга и помогают справляться со стрессом. Качество воздуха. Стоит наблюдать за уровнями CO2 и PM2.5, а также влажностью. Подумайте о том, чтобы установить датчик CO2 на вашем рабочем месте. Высокое содержание CO2 наблюдается в плохо проветриваемых помещениях, включая дома и офисы, и ведет к риску для здоровья и снижению умственной производительности. Разумеется, это не исчерпывающий список, но я думаю, что эти пункты среди самых важных для здоровья мозга. Попадать в тупняк - это нормально, все это делают. Более того, если вы, как разработчик, никогда не попадаете в тупняк, то я бы сказал, что вы не занимаетесь по-настоящему сложной работой. Избежать попадания в тупняки можно только, занимаясь тривиальными задачами. Есть разница между опытными и начинающими разработчиками в том, как они работают со сложными задачами. Я уверен, что умение выходить из тупняков - это навык, который можно прокачать. В своей жизни я встречал немало людей, владеющих им в совершенстве. В этой статье я привел наблюдения и практические советы, которые помогали и мне лично, и моим знакомым. Разумеется, ни одна из этих техник не дает 100% гарантии результата, но может значительно повысить шансы найти решение быстрее. Удачного брейншторма! P.S. А как вы подходите к решению сложных проблем? Поделитесь в комментариях!