Перевод статьи «Avoid COGNITIVE OVERLOAD when programming in 4 simple ways».
Программирование может быть очень трудной деятельностью. Вам нужно запоминать, что вы делаете. Помнить контекст и внутреннюю работу приложения или системы. Помнить синтаксис и строительные блоки языка, на котором пишете код. Помнить местонахождение кода, чтобы при необходимости вернуться к нему позже. Помнить, какие шаги вы прошли, чтобы достичь цели. А одновременно вам зачастую нужно изучать новую кодовую базу, технологию, язык и домен.
И все эти вещи, которые вам нужно держать в памяти, борются за место в вашей голове. В результате вы можете чувствовать себя подавленным, вам может казаться, что ваш мозг уже превратился в кашу. Слишком много ему, бедолаге, нужно помнить и обрабатывать одновременно. В результате он начинает пропускать мячи. Вам становится сложно принимать решения, потому что вы слишком интенсивно все обдумываете, анализируете и усложняете. Вы забываете, что собирались делать сейчас и что планируете сделать после. Это умственное переутомление.
Наш мозг не предназначен для постоянного хранения и обработки такого количества информации. К счастью, вы можете кое-что предпринять, чтобы снять с него лишнюю нагрузку.
1. Записывайте всё
Первое, о чем я хочу рассказать, это методика «Getting Things Done» Дэвида Аллена. В своей книге, посвященной этой методике, Дэвид рассматривает распространенную проблему: слишком много вещей в нашей жизни нам приходится отслеживать и организовывать. Эти вещи могут касаться работы, друзей, хобби, семьи. Все они обычно хранятся у нас в голове и, как следствие, управлять ими тяжело.
Самая важная идея заключается в том, что наш мозг — не лучшее место для хранения информации. Куда лучше и продуктивнее использовать его как источник идей. Как место для творческого мышления.
А самое лучшее, что можно сделать для этого, — избавить мозг от необходимости запоминать лишнее.
Решение просто до гениальности: записывайте всё, что нужно помнить. Мы можем записать, как работает приложение. Мы можем записать базовые синтаксические правила языка программирования. Мы можем составить список задач, внеся в него все, что должны не забыть сделать.
Чем больше у вас записано, тем меньше мозгу нужно хранить в памяти и обдумывать. Изымая из мозга информацию, которую можно хранить где-то еще, мы снижаем умственную нагрузку.
2. Делайте закладки, чтобы иметь возможность вернуться
Вам случалось вносить какие-то изменения в код и обнаружить технический долг или какой-то баг? А потом, закопавшись в текущей работе, просто забыть, где именно вы видели тот долг и баг?
Каждый отвлекающий нас момент во время программирования это еще одна вещь, которую нужно запомнить. Но при этом исправление багов, улучшение качества кода и возврат технических долгов это и правда важно.
И опять-таки, решение очень простое: каждый раз, когда нас тянет отвлечься от задачи, которой мы заняты, следует сделать пометку. Попытки запоминать все это просто не сработают, а кроме того увеличат нагрузку на мозг. Заняться обнаруженной проблемой сразу же тоже не слишком хорошая идея. Вы отвлечетесь от своей задачи, а затем можете отвлечься и от того, что вас отвлекло. Например, заняться техническим долгом и обнаружить баг.
Я это представляю в виде стопки тарелок разных форм и размеров, которую мы должны удерживать в равновесии. Держать одну тарелку не сложно. Но каждый раз, когда мы на что-то отвлекаемся, к нашей стопке прибавляется еще одна тарелка. Постепенно стопка становится тяжелой и неустойчивой, и ее все труднее удерживать в равновесии. Если бы, беря каждую новую тарелку, мы откладывали старую на стол (записывая ее), нам приходилось бы удерживать только одну тарелку. Нагрузка бы уменьшилась. И наш мозг мог бы сосредоточиться на текущей задаче, а не на удержании тарелок в равновесии.
3. Отдыхайте от работы
Есть одна широко распространенная теория о том, что сон помогает мозгу избавиться от застойных явлений. Во сне мозг стирает неважные воспоминания и сохраняет важные. Так же, во сне, мозг разбирается в сложных мыслях и чувствах.
Наш мозг — сложное устройство. Мы все еще не до конца знаем, как он работает и что делает.
Но вот эта идея насчет избавления от застойных явлений во сне приводит нас к другой — о том, что наш мозг умеет работать «в фоне». Нам не нужно активно обдумывать проблему, чтобы наш мозг ее переварил. Это объясняет, почему многие искрометные идеи рождаются во время пробежек или принятия душа.
Но понимать мало. Мы должны непременно использовать фоновую работу мозга. Зачем биться головой о стену, пытаясь решить задачу, если можно сделать перерыв и просто дать мозгу возможность разобраться?
4. Разговаривайте с людьми
Вы когда-нибудь слышали об «утином дебаггинге»? Суть этого подхода в том, что, столкнувшись с проблемой, программист объясняет свой код, иногда строчку за строчкой, резиновой уточке. Таким образом он ставит себя в позицию учителя и объясняет, что должен делать код и что он делает на самом деле. При этом часто удается определить, в чем проблема.
Резиновая уточка, будучи неодушевленным предметом, выступает в роли благодарного слушателя и позволяет не отвлекать живых людей. Но при этом вы теряете многие преимущества, которые дает разговор с другим человеком. Ведь человек может:
- задавать вопросы, которые заставят вас переосмыслить ваш подход,
- посоветовать, с какой стороны подступиться к задаче,
- предложить альтернативные решения,
- обеспечить другой взгляд на проблему,
- зачастую — поделиться опытом,
- рассказать об уже существующих решениях.
Кроме того, умение поделиться знаниями с коллегами это ценный навык. Когда над задачей думают два человека, умственные усилия, направленные на ее решение, удваиваются. В результате можно получить лучшие решения (именно на этом основано парное программирование).
Заключение
Программирование это сложная деятельность. Программистам зачастую приходится удерживать в своей памяти очень много всего. А ведь при этом от них ожидается, что они смогут моментально выдавать на-гора креативные решения сложных проблем. Все это ведет к умственным перегрузкам.
Решение этой проблемы довольно простое. Нам нужно максимально снять нагрузку с мозга, позволив ему концентрироваться только на текущей задаче. Для этого мы можем:
- записывать все важное,
- делать закладки, чтобы позже вернуться к чему-то важному,
- проводить какое-то время не за программированием, чтобы мозг мог восстановиться,
- менять перспективу и обмениваться мыслями с другими людьми.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]