Как конфликты помогают совершенствовать инженерные навыки

Kirill K.
3 min readFeb 12, 2015

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

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

Следующим шагом, таким образом, будет умение искренне понять точку зрения другого человека (а не просто допустить возможность ее существования). Я считаю, что инженеры, которые имеют больше всего проблем с этим, часто больше всего не уверены в своих технических навыках. Это трудно, но это правда. Гораздо, гораздо легче быть упрямым и настаивать на своем решении, чем признать, что может быть другой и даже лучший подход. И если вы признаете, что другой человек может быть прав, то на вас можно положиться — должно быть, у вас есть необходимые навыки, чтобы действительно понять другую точку зрения и уметь взаимодействовать эффективно! А что, если у вас не получается? Может быть, вы не так хороши, как вы утверждаете, и тогда вас разоблачат! (Я здесь преувеличиваю красного словца ради, но для большинства людей это ощущение реально, по крайней мере, на подсознательном уровне. Почти у всех, в какой-то степени, есть “синдром самозванца”).

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

Окончательный уровень инженерного просветления — понимание, что иногда просто не существует “правильного” решения, и что “более-менее правильное” решение, даже если оно не твое, предпочтительнее, чем отсутствие решения. Иногда лучшее, что вы можете сделать, это построить прототип на основе другой точки зрения и посмотреть, чему вы научитесь. Часто лучшие инженеры позволят другому парню "выиграть", потому что его решение, вероятно, будет правильным, и лучше писать код, чем говорить про написание кода.

Я понимаю, что это, вероятно, звучит забавно. Это же программирование? Здесь же все доказуемо и опирается на факты? Да, но только до определенного момента. А дальше лежит истинное величие в качестве инженера: умение слушать, думать, учиться, быть скромным, и двигаться вперед, чтобы решить поставленную задачу.

Ищите еще интересные истории, чтобы почитать в течение недели?
Подписывайтесь на Medium · Twitter · Facebook · VK

--

--