Когда последовательность важнее правильности

Пост будет холиварный, читайте с осторожностью.

Представьте ситуацию: приходит задача дополнить валидацию данных пользователя, которую писали до вас. Вы открываете код и видите:

const validateUserData = (userData) => {
  const {socialNumber, email} = userData
  return validateSocialNumber(socialNumber)
    || validateEmail(email)
}

Вы знаете, что все поля обязательные, и вам непонятно, почему возвращается истина если валидно хотя бы одно значение, а не всё вместе.

Вы открываете код функций validateSocialNumber и validateEmail и видите, что они возвращают истину, если в данных есть ошибка. Откуда делаете вывод, что и validateUserData возвращает истину, если есть ошибка (наверное, на то были причины ¯\_(ツ)_/¯). Беглый просмотр кодовой базы показал, что таких функций много, они встречаются в разных модулях, и быстро исправить всё не получится.

Ваша задача — добавить проверку почты и сделать это «ВЧЕРА!!!». Из‑за сроков отрефактироить код перед этим не успевается (напомню, подобных функций много). Вы понимаете, что правильнее — написать новую функцию так, чтобы она возвращала истину, если ошибок нет…

Но прямо сейчас последовательность — важнее правильности, и первый шаг — сделать по аналогии, сделать «неправильно»

Иначе с добавлением «правильной функции» схожие сущности (функции, которые названы по одному принципу) начнут вести себя по‑разному. Из‑за чего сильно вырастет когнитивная нагрузка, ведь придётся постоянно держать в голове, какая функция возвращает истину при ошибке, а какая — при валидном значении.

Когда задача решена, уже можно (и нужно) отправиться в рефакторинг‑поход и всё переделать. Но до этого момента между последовательностью и правильностью, стоит выбрать первое.

Знакомьтесь — я. Послесловие

Я сидел на диване, обложенный подушками с головы до ног.

— Не думал, что их аж 8 получится.

Доктор пожал плечами, мол, всяко бывает. Время сеанса подходило к концу.

— Ты же понимаешь, что это просто инструмент, а не панацея ото всех бед?

— Конечно, понимаю, — отмахнулся я.

Я смотрел перед собой, приставив большой палец к верхней губе — делаю так, когда думаю.

— Отдавать кому‑то приоритет ведь будет неправильно? — возник у меня вопрос.

— А что такое «правильно»? — последовал ответ.

Я улыбнулся — и правда, а как будет «правильно»?

Работы предстояло ещё очень много.

Знакомьтесь — я. Часть 4

Сердце билось чересчур сильно, ладони потели, колени дрожали, но голос — логик старался все силы тратить на то, чтобы его голос не дрожал. Слишком важный был момент. Слишком важное происходило в этой комнате сейчас, чтобы дать своему голосу даже возможность дрогнуть.

За окном уже полностью стемнело. Свет в комнате был тусклым и бледным, отчего каждая морщинка на лицах присутствовавших, казалось, была выведена чернилами. Логик видел всё, что происходило на лицах каждого из них. Он незаметно посмотрел в зеркало, чтобы убедиться, что всё ещё держит маску беспристрастия.

— Я понимаю, что вам страшно экспериментировать. Я понимаю, что признавать своё несовершенство в ваших лагерях очень больно. Я понимаю, что менять привычные шаблоны — не похоже ни на что, что мы делали раньше. Но если есть шанс, что это поможет изменить наше состояние, сделать его в среднем лучше, то мы просто обязаны это попробовать.

Он подошёл к пофигисту и положил ему руку на плечо.

— Расскажи, пожалуйста, что тебя больше всего расстраивает? — спросил логик мягко.

— Ничего, — пожал плечами пофигист.

Комната буквально трещала от напряжения. Казалось, никто не верил в то, что услышал.

— В смысле? — воскликнул романтик.

— Вот‑вот, — прищурив взгляд поддакивал циник.

— Я тоже не понимаю, — присоединился меланхолик.

Пофигист спрыгнул с подоконника, пожал плечами и продолжил:

— Да я как‑то и сам не знаю, как так можно. Просто меня не особо задевает, когда что‑то идёт не так, — он начал оглядывать каждого по кругу. — Мне всё равно, если на меня не обращают внимания другие люди; если задача не решается; если что‑то не совершенно или не идеально; если не ладятся отношения с кем‑то; если у чего‑то нет решения вообще. Мне просто от этого никак. Я не знаю, как это работает; оно просто работает.

Он посмотрел на потолок, поджал губы, а потом продолжил:

— Меня просто забавит, что моё отношение позволяет мне махнуть рукой на всё. Ну окей, если мы в чём‑то виноваты, можно что‑то с этим сделать? Да — хорошо, делаем; нет — ну что ж теперь.

Глаза перфекциониста и меланхолика расширились; циник ухмыльнулся.

— Или вот кто‑то сказал, что мы ничего не стоим. Его мнение важно для нас? Да — ну примем к сведению; нет — ну и шут с ним. Что тут такого‑то? Есть кто‑то лучше нас? Ну и бога ради, что мне‑то с того?

В комнате всё ещё царило непонимание. Никто не осознавал, как это возможно, как это существует.

— Конечно, я не могу появляться постоянно. Для меня все события — одинаково никакие. Это вряд ли будет продуктивно, если я буду решать, что важно, а что нет. Это, как говорит логик, не моя задача. Честно говоря, я не особо знаю, в чём моя задача, но меня и это как‑то не особо парит на самом деле.

Он уселся на полу посреди комнаты и замолчал. Внимание каждого было приковано к нему, а он молчал. Смотрел в окно и молчал. Это длилось долго, никто не осмеливался нарушить тишину. Даже цинику было неловко начать говорить. Он чувствовал, что в этом что‑то есть. Ему была близка философия пофигиста, но…

Логик закрыл форточку, чтобы не дуло по полу. На самом деле он просто хотел перевести дух и скрыть лицо, дать себе возможность на секунду улыбнуться. План работал. Когда он повернулся, на его лице снова была маска беспристрастия.

— Как это вижу я: философия пофигиста нас не раз выручала.

Все переглянулись и согласились. Да, это было действительно так.

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

Напряжение в комнате спадало, дышать становилось проще. Возможно, так было потому, что комнату проветрили, а возможно, по какой‑то другой причине. Отрицать нельзя было одного — ладони логика перестали потеть, колени больше не дрожали.

— Я не могу вам гарантировать, что решение поможет. Возможно, оно не сработает. Возможно, нам придётся собраться ещё раз всем вместе. Возможно, станет только хуже. Я не знаю, — он внимательно следил за реакцией каждого; никто не отводил взгляд, никто не ухмылялся; все слушали. — Но я готов предложить возможный вариант решения.

Он снова вышел в центр комнаты, поправил очки и продолжил:

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

Он смотрел на пофигиста, который всё ещё сидел на полу и смотрел на него, но как‑то отрешённо. Как будто всё, что происходило здесь, имело не большее значение, чем решение, с чем сделать бутерброд на завтрак.

— Я хочу попросить каждого из вас, чтобы когда вы почувствуете себя озадаченными, вы не решали проблему привычными для вас методами. Попробуйте прийти к кому‑то ещё. К человеку, к которому до этого вы не ходили. Попробуйте выслушать его точку зрения. Попробуйте придать ей такое же значение, как вы придаёте точке зрения тех, к кому вы ходите за помощью обычно.

Теперь он говорил свободно и легко. Самое сложное осталось позади.

— Романтик, меланхолик и перфекционист, попробуйте спросить пофигиста или исследователя, что они думают о ситуации. Исследователь, попробуй понять циника и оценить, действительно ли решение может сработать, хватает ли ресурсов, возможно ли его претворить в жизнь. Меланхолик, старайся не закапываться в себе, почаще говори с пофигистом и исследователем. Нарцисс, не забывай о романтике и пофигисте. Перфекционист, обсуждай проблемы с исследователем и циником.

Сейчас логик чувствовал себя достаточно уверенно, чтобы наконец произнести:

— И, разумеется, я буду рад помочь каждому, кто придёт обсудить ситуацию со мной. Поймите, что мнение каждого из нас одинаково важно. Мы все появились не спроста. У каждого есть потребности и цели, но мы не сможем добиться этих целей, если не будем работать сообща.

Напряжение пропало окончательно.

— И именно поэтому — я вам и предлагаю работать сообща.

Он больше не смотрел на них, он смотрел на свет от лампы. Его план действительно работал; он закончил говорить.

Он закончил говорить, а они молчали. Но это молчание не было пустым, просто слова им пока что были больше не нужны.

Они молчали; и молчание длилось вечность.

Знакомьтесь — я. Часть 3

— Расскажи, пожалуйста, почему тебе не нравится идея экспериментов, — обратился логик к перфекционисту.

— Потому что это приводит к ошибкам, неправильным решениям, всё всегда идёт не по плану.

— А потом… — не выдержал меланхолик. — Потом… Потом нам надо отвечать за эти ошибки.

Происходило что‑то важное. Но логик не мог понять, что именно.

— У меня два вопроса. Первый к тебе, — он обратился к перфекционисту, — включают ли твои планы пункт «собрать обратную связь»?

— Ну, да, конечно.

— Но этот пункт не подразумевает отрицательную обратную связь, верно?

— Конечно, откуда ей взяться, если всё должно быть сделано идеально?

Логик кивнул.

— Второй вопрос к тебе, — указал на меланхолика, — почему ответственность так тебя страшит?

— Она меня не страшит…

 «Потом нам надо отвечать за эти ошибки». Почему тебе не нравится идея отвечать за ошибки?

— Мы слабые… — очень тихо ответил меланхолик. — Мы слабые, мы не умеем нести ответственность. У нас никогда это не получалось. И никогда не получится.

— Хорошо, давай мы определимся с тем, что такое ответственность?

— Ну, это когда что‑то идёт не так, как хотелось, и нас считают виноватыми…

— Мне кажется, это называется вина, — поднял бровь логик. — А что такое ответственность?

Романтик поднял голову и очень неуверенным голосом ответил:

— Уговор?

— Разверни?

— Ну, ответственность появляется, когда кто‑то с кем‑то о чём‑то условился, но не выполнил этих условий.

— Хорошо, когда именно человек отвечает за конкретную ошибку? — логик обратился к меланхолику; он хотел, чтобы именно тот ответил на этот вопрос.

Вопрос остался не отвеченным. Логик обратился к исследователю и попросил его вспомнить, читал ли он об этом что‑нибудь.

— Да, читал. Это называется эффектом эгоцентричности. Людям свойственно считать себя центром вселенной, по факту они и являются центром вселенной — своей вселенной. Проблема только в том, что они не являются центром вселенных других людей. Не каждая ошибка происходит по вине конкретного человека, но винить во всём себя — всегда очень удобно. Я пока не особо понял, что это даёт в нашем случае, но меланхолик очень часто получает подобную обратную связь — это я заметил.

Было видно, что хоть исследователя и не принимали до сих пор всерьёз, эти слова как‑то подействовали.

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

— Но как я пойму, за что мы виноваты, а за что нет? — меланхолик был сбит с толку.

— У меня скорее другой вопрос, — произнёс логик, — зачем тебе это знать?

Повисло молчание. Каждый в комнате знал ответ, но никто не решался его произнести.

— Чтобы разрешить себе самобичевание? — логик продолжал давить.

— Я… я не…

— Но зачем тебе измываться над собой? Почему тебе это важно?

— Просто, я… Я не знаю, как иначе!

Логик отвёл голову и развернулся. Он прошёл в центр комнаты, делая глубокий вдох. План работал, но ему было трудно вести этот разговор. Казалось, что одно неловкое действие и башня развалится. Он собрался с мыслями и выдал:

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

Он старался сохранять беспристрастное лицо, это было нелегко.

— У нас нет других механизмов работы с ответственностью и виной, потому что у нас нарушена коммуникация. Любая отрицательная обратная связь от мира попадает напрямую к меланхолику, перфекционисту и цинику. Они решают, как к ней относиться. И к сожалению так случается, что чаще всего решение принимает меланхолик. Мы думаем, что ситуация — безвыходная, всё плохо и решить эту проблему невозможно.

Горло пересохло. Он сделал паузу, почесал нос и продолжил:

— И получается, что отрицательная обратная связь проходит мимо одного из трёх лагерей. Эта обратная связь становится проблемой вселенского масштаба, потому что мы не воспринимаем её как задачу. У задач — есть решения.

Исследователь подался вперёд, пофигист повернул голову в сторону логика.

— Исследователь и я можем помочь изменить отношение к проблемам. Мы умеем превращать их в задачи, чтобы потом искать решения. Пока что я не понимаю, почему от нас скрывают отрицательную обратную связь, но у меня есть предположение.

Говорить становилось всё сложнее, пульс участился, голос угрожал задрожать, логик сделал выдох.

— Мне кажется, что проблема вот в чём. Представим, что мы имеем доступ к отрицательной обратной связи и можем превращать проблемы в задачи. Что будет, если случается что‑то плохое? — он смотрел прямо перед собой, но казалось, что взгляд расфокусирован. — Мы с исследователем представляем проблему, как задачу, исследователь придумывает несколько возможных решений. Что дальше?

Логик закрыл глаза.

— А дальше, ребята, надо работать. Перфекционисту — надо признать и принять, что не всё прошло идеально; меланхолику — что самобичевание не решает эту проблему; им обоим — что надо прилагать усилия и расти. Но для этого, нарцисс и перфекионист, вам нужно признать, что расти есть куда, что ситуация показывает, в чём мы не так хороши, как думали, что есть что развивать.

Логик открыл глаза.

— Та же история и с тобой, романтик. Когда случается что‑то неприятное, ты идёшь напрямую к меланхолику или даже цинику, чтобы получить от них поддержку. Снять ответственность с себя, передать её им, ведь тебе кажется, что они умеют с ней работать. Я тебя не виню, разбираться с ответственностью — не твоя задача, но как оказалось, это и не задача циника или меланхолика.

Он не ожидал этого, но каждый внимательно смотрел на него. Они ждали, что будет дальше, они были заинтересованы.

— Как нам видно из прошлого опыта, наше самочувствие ухудшается, когда ответственностью занимаются меланхолик, перфекционист и циник. Но отдать это нам с исследователем им страшно. И я это понимаю, — он посмотрел на них. — Но если мы хотим, чтобы нам становилось проще переносить такие ситуации, нам надо допустить возможность, что есть и другие варианты работы с ответственностью и виной.

— Отдать их вам? — смотря в окно перебил циник.

— Да. Отдать часть обратной связи нам.

Пульс логика всё ещё был очень высоким. Но план, кажется, действительно работал.

Знакомьтесь — я. Часть 2

В комнате пахло напряжением. Они смотрели друг на друга. Логик чувствовал что‑то противоречивое. Он хотел докопаться до корня проблемы, но сейчас ему начинало казаться, что это было плохой идеей.

«Воу‑воу, сейчас — самое неподходящее время, чтобы отдавать руководство меланхолику; выдохни, продолжай, » — закрыв глаза рассуждал логик.

Тишину нарушил перфекционист:

— Я всего лишь имел в виду, что всегда есть, куда расти, и я уверен, что мы можем лучше, если постараемся… — виновато произнёс он.

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

— Вот то‑то и оно! — с едким безразличием встрял циник. — Сам ты ничего не сделал, но хвастаешься направо и налево. А иногда ещё и мягко говоря приукрашиваешь.

— Я просто делаю то, что у меня получается лучше всего! — возразил нарцисс. — А что ты предлагаешь, чтобы ты рассказывал о нас другим людям?

— А почему бы и нет?

— И что ты расскажешь? Что ничто не имеет смысла, что всё, что мы делали всё равно исчезнет, и сами мы тоже?

— Эм… ну… но разве это не так?

— Но разве это важно?

— Да, блин, кому не пофиг на то, что мы сделали?

Вопрос остался висеть в воздухе. Романтик сидел, открыв рот, но ничего не сказал. Исследователь следил за ними с интересом, вглядываясь в лица каждого из споривших. Меланхолик продолжил разговор:

— Если честно, нарцисс часто мне об этом рассказывает. И я вижу, что ему это действительно неприятно.

Нарцисс кивнул ему в знак благодарности. Логик спросил:

— А что тебе помогает делать то, что ты делаешь?

— Я чувствую, что мне гораздо проще рассказывать о достижениях, когда перфекционист говорит, что всё действительно было сделано хорошо. У меня появляется что‑то, на что я могу сослаться…

— А что ты имел в виду под моей цензурой?

— Когда я начинаю рассказывать о наших достижениях, ты фильтруешь мои слова, каждое чёртово слово…

— Как ты думаешь, почему я это делаю? — он подался чуть вперёд, хотя понимал, что давление сейчас не лучшая стратегия.

— Я не знаю.

Логик молчал. Время играло ему на руку, сейчас он мог себе позволить диктовать правила.

— Ну… Может быть, потому что меня иногда заносит, и я действительно приукрашиваю, — опустив голову ответил нарцисс.

— Ха! А я ведь… — начал циник.

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

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

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

Исследователь был готов ответить, но логик проигнорировал его. Нужно было, чтобы осознание пришло к кому‑то из другого лагеря, вес такого осознания будет больше. Конечно, это опасно — исследователь мог потерять интерес в разговоре и выключиться из него, но это был оправданный риск. Логик знал, что разбудить интерес исследователя достаточно просто.

Меланхолик медленно выдохнул, поджал губы и предположил:

— Чем чаще нарциссу говорят, что достижения ничего не стоят, тем больше он в это верит, верно? — он всё ещё смотрел на пол. — Цинику и перфекционисту бы пыл усмирить…

— Давайте пока что просто обозначим проблему, — логик мягко уводил разговор от скандала. — Действительно, обратная связь, которую получает от нас нарцисс, в основном отрицательная. И если внимательно присмотреться, то из положительного он видит только обратную связь от других людей и от перфекциониста. Последняя по его словам очень редка.

Кажется, на лице циника появилась заинтересованность, исследователь с улыбкой откинулся на диване.

— Это — первая проблема, которую мы нашли, — подытожил логик.

За окном начало темнеть. Разговор обещал быть долгим. Логик включил свет в комнате и попросил пофигиста приоткрыть форточку, тот пожал плечами и выполнил просьбу. Слабый поток свежего воздуха слегка разбавил напряжение.

— Теперь, — он повернулся к исследователю, — расскажи, пожалуйста, ты, что тебя больше всего расстраивает?

— Здесь всё просто, — ответил тот, — я всё записал.

Он достал блокнот из сумки, открыл его на странице с закладкой:

— Меня расстраивает, что никому нет дела до моего подхода к решению задач, — он обращался теперь ко всем в комнате сразу. — Вот, например, у романтика есть проблемы, о которых он говорил ранее. У меня есть несколько возможных решений, которые можно проверить. Я пробую рассказать о них, но ни романтик, ни кто‑либо ещё, кроме логика, не воспринимает их всерьёз.

На лице циника появилась усмешка. На лице меланхолика — разочарование.

— Мне было интересно разобраться, почему, — тихо продолжал исследователь. — По одной из версий, мои решения не воспринимают всерьёз из‑за мгновенной критики циника. Причём, критикой это назвать трудно — это скорее просто слепое обесценивание возможных решений.

— Да потому что ты предлагаешь постоянно какую‑то дичь, — отозвался циник. — Начитался всяких книжек и пытаешься всё это в жизнь протащить. Очнись! Жизнь — это не книжка, где всё просто и понятно.

— Вот именно об этом я и говорю, — опустил голову исследователь; затем, обращаясь ко всем, — Я не говорю, что всё, что я предлагаю, сработает. Но я не понимаю, почему вы не хотите даже попробовать эти решения. Неужели вам не интересно, к чему могут приводить разные действия, неужели вам неинтересно экспериментировать?

— Нет! — вскрикнули меланхолик и перфекционист.

Теперь все смотрели на них. В лице исследователя читалось усталое «Но почему?».

— Вот мы нашли и вторую проблему, — подытожил логик.

↑ Позже Раньше ↓