Как айтишнику научиться не усложнять — в работе и в жизни
easy

Как айтишнику научиться не усложнять — в работе и в жизни

Будь проще и не парься

В программировании есть принцип KISS — расшифровывается как Keep It Simple, Stupid («Делай проще, дурачок»). И хотя этот принцип знает большинство айтишников, многие продолжают усложнять не только в работе, но и в жизни. Так происходит из-за глубинных установок в наших головах, а сформировались эти установки ещё в те времена, когда не было ни ТЗ, ни тасков, ни программирования как такового. Если понять, что заставляет нас раз за разом усложнять простые вещи, можно со временем научиться перестать так делать. В общем, продолжаем перепрограммировать сами себя, чтобы облегчить себе жизнь.

Почему мы любим усложнять

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

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

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

Разберитесь в задаче

Чётко определите требования и то, какая задача решается. Понимание тонкостей проблемы даст ясность в отношении того, как разработать наиболее простое и элегантное решение. Это поможет отсеять ненужные детали, сосредоточиться на самом важном и избежать лишней работы и избыточных функций. Помните о принципе YAGNI (You Aren’t Gonna Need It, или «Вам это не понадобится»).

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

Разобраться в задаче можно таким образом:

  • определить цели и ожидаемые результаты;
  • собрать всю информацию, которая относится к этой задаче;
  • задавать вопросы и консультироваться.

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

Разделите задачу на подзадачи

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

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

Составьте план работы

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

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

Не подменяйте цели

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

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

Делайте достаточно хорошо, а не идеально

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

Верьте в себя

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

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

Просите помощи и обратной связи

Когда мы усложняем, мы попадаем в цикл лишних рассуждений, который тратит наше время. Если вы застряли на выборе какого-то решения, но оно кажется слишком сложным, попробуйте описать его коллеге, руководителю или другому специалисту и спросить, не слишком ли вы усложняете. Так можно увидеть ситуацию со стороны и найти более простое решение.

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

Не бойтесь ошибаться

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

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

Не переставайте учиться

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

  • Писать больше кода (не по объёму, а по разнообразию).
  • Показывать свой код коллегам и другим специалистам, например на форумах.
  • Практиковать парное программирование.
  • Изучать чужие практики — смотреть, как другие решают похожие задачи.

Не откладывайте дела на потом

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

Не путайте простое с лёгким, а сложное — с трудным

Что-то может казаться сложным только потому, что мы к этому не привыкли. Но тогда это скорее не сложное, а трудное. Например, может быть тяжело работать с новой библиотекой, но не из-за того, что это сложно, а потому, что мы знакомимся с чем-то новым и поначалу это может быть трудно. Со временем трудное становится лёгким.

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

Стремитесь к простоте

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

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

Редактор:

Инна Долога

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
easy