[Перевод] Строители и архитекторы: два типа программистов
Возможно, вам знакомо такое ощущение: программист из вашего окружения, или тот, с которым вы общаетесь в интернете, кажется, просто вас не понимает. Это происходит даже тогда, когда такой программист явно неправ. Подобное приводит к тому, что вы чувствуете себя непонятым, расстроенным и, что там говорить, это вас даже злит.
Я постоянно сталкиваюсь с такими программистами. Например, читаю твит, а сам думаю: «А он ведь совершенно не понимает того, о чём говорит». Меня это злит — ведь такие твиты вводят читателей в заблуждение. В них могут встретиться антипаттерны или некие выводы, испорченные недостаточно хорошим пониманием каких-то концепций.
Я, правда, извлёк из подобных ситуаций некоторые уроки, сделал для себя кое-какие выводы, которыми сегодня хочу поделиться с вами. Я не смогу сказать вам о том, кто прав, а кто нет (если об этом вообще можно говорить), а вам, кроме того, понадобиться приложить некоторые усилия для того чтобы применить на практике то, о чём я буду говорить.
Какая вам от этого польза? Это — лучшее понимание того, почему ваш коллега (или кто-то с Reddit) мыслит совсем не так, как вы. Это — более эффективное управление проблемными ситуациями. Те знания, которыми я с вами поделюсь, позволят вам быть выше конфликта и превратиться из того, кто создаёт проблемы, в того, кто их решает.
Здесь я расскажу о ментальной модели, которая поможет программистам справляться с подобными конфликтами. Начнём разговор с упрощённого примера.
Строители и архитекторы в мире программирования
Представим себе два типа программистов: строителей и архитекторов.
Если вы когда-нибудь работали в командах — в школе, на работе, занимаясь любимым делом с единомышленниками, то вы, возможно, знакомы с этими типами людей.
Первые, строители, это программисты, которые что-то создают. Они эффективно делают дело. Помимо обычной работы у них имеются замечательные домашние проекты. Для внешнего мира они выглядят как люди, для которых написание кода — это совершенно естественно.
А другие программисты — это архитекторы. Они озабочены тем, чтобы код был бы надёжным и обладал бы прочной конструкцией. Они тратят часы, а иногда и дни, обсуждая правильный способ решения некоей задачи.
Эти два типа программистов кажутся полными противоположностями друг друга. Программисты из одной группы, глядя на программистов из другой, часто именно так и думают. Они используют разные способы для решения одних и тех же проблем. Программист, принадлежащий к одной из этих групп, может думать так: «То, что предлагают другие, так отличаются от того, что предложил бы я, что их идея просто не может быть правильной. По крайней мере, похоже на то, что это так».
Строители часто считают архитекторов слишком косными и консервативными. Они ведь следуют правилам только ради того, чтобы следовать правилам, не думая о каких-то практических выгодах. А архитекторы, в свою очередь, полагают, что строители небрежны и слишком стремятся получить результат, не думая о возможностях по долгосрочной поддержке проектов.
Это противоречие часто ведёт к конфронтации между представителями разных групп. Это случается и в офисах, и в интернете. Достаточно интересно здесь то, что в ходе соответствующих дискуссий целью оппонентов является изменение точки зрения друг друга. Я и сам не без греха. Мне и не вспомнить — сколько раз я вёл себя именно так.
В этих ситуациях, однако, можно усмотреть одну интереснейшую вещь. Дело в том, что практически всегда спорщики не понимают тех перспектив, которые открывают их отличия друг от друга.
Вместо того чтобы в таких спорах упираться в то, в чём мы друг с другом не согласны, давайте применим другой подход. Давайте, на минуту, попытаемся поддержать другую сторону конфликта. И обратите внимание вот на что: надо не просто согласиться с чужим мнением ради прекращения дискуссии. Нужно попробовать по-настоящему помочь оппоненту решить его проблему, применив здесь свои знания и навыки.
Вот как это выглядит. В то время как архитекторы с наслаждением предаются абстрактным размышлениям, они часто испытывают сложности в реализации своих идей на практике. Они сталкиваются с проблемами, которых не ожидают. Или случается так, что реализация того, что они придумали, оказывается слишком сложной, и они теряют мотивацию. Строители, с другой стороны, с удовольствием работают в условиях, когда им чётко видна цель. Их вдохновляет то, как проект превращается во что-то осязаемое. Давайте усадим строителей и архитекторов за один стол и объединим их достоинства.
Полагаю, у нас получилось достаточно простое описание проблемы строителей и архитекторов. Правда, профессиональные программисты всё ещё слишком часто попадают в ловушку бесконечных дискуссий. На самом деле, многие представители рода человеческого полагают, что все в мире, который их окружает, думают так же, как и они. Когда реальность доказывает ложность этой мысли, возникают конфликты.
Тот, кто знает о вышеописанных личностных особенностях программистов, проявляющихся и у него самого, и у других, может воспользоваться этим знанием ради всеобщей выгоды. В реальности большинство людей будет смотреть на вещи иначе, чем вы. Лучше будет принять эту реальность, а не сражаться с ней.
MBTI
Один из способов различения типов личностей представлен типологией Майерс — Бриггс (Myers–Briggs Type Indicator, MBTI). В рамках этого подхода различаются 16 типов личностей. Конечно, каждый человек уникален. Но определение типа личности позволяет получить намёки, касающиеся того, как человек думает, как реагирует на различные ситуации, как подходит к решению проблем.
В рамках MBTI классификация личности осуществляется с применением 8 шкал, объединённых попарно:
- Шкала E-I: Extroversion — Introversion (экстраверсия — интроверсия).
- Шкала S-N: Sensing — Intuition (ощущение — интуиция).
- Шкала T-F: Thinking — Feeling (мышление — чувство).
- Шкала J-P: Judging — Perception (суждение — восприятие).
Как я уже говорил, все люди уникальны. Поэтому человек не может быть абсолютным интровертом или абсолютным экстравертом. Он не может полагаться исключительно на мысли или на чувства. Тот или иной аспект личности человека можно охарактеризовать показателем, находящимся где-то между полюсами шкал. Но, основываясь на MBTI, можно лучше понять то, почему для разных людей характерны столь сильно различающиеся подходы к решению одних и тех же проблем.
Например, строитель будет сильнее полагаться на интуицию и восприятие. А архитектор — на ощущения и суждения. Строитель одарён богатым воображением и гибкостью. Архитектор организован и практичен. Нет смысла пытаться выяснить, кто из них превосходит другого. Лучше сделать так, чтобы они поддерживали бы друг друга.
Обладая подобными знаниями о себе и о своих коллегах, можно сделать команду более динамичной. На моей предыдущей работе мы, примерно 25 коллег, построили и проанализировали свои MBTI-профили. Однажды мы решили обсудить результаты. Как оказалось, большинство людей узнавало себя в своих профилях. Кроме того, профили показывали личностные проблемы и скрытые фрустрации, о которых раньше никто вслух не говорил. Всё дело в том, что никто не знал о том, что с ними делать. А благодаря MBTI мы об этом узнали.
Итоги
В итоге мне хотелось бы обратить особое внимание на одну деталь. А именно, я не стремился в этом материале пропагандировать MBTI. Я рассказал здесь об этой системе для того чтобы навести читателя на размышления о том, что люди отличаются друг от друга, и о том, что это может вести и к конфликтам, и к новым возможностям. MBTI — это всего лишь пример системы, которая позволяет описывать различия между людьми.
То, что в мире есть разные люди, люди, которые думают не так, как вы, кажется очевидным. Но мы видим то, что происходит в интернете. Мы сталкиваемся с недостаточно эффективными командами, или с командами, которые представляют собой скопление слабо связанных друг с другом людей. Всё это показывает нам то, что принцип, который невероятно легко понять, крайне сложно внедрить в практику.
Вы, если хотите, можете по-настоящему изменить то, как ведёте себя в межличностных конфликтах. Даже несмотря на то, что вы, возможно, можете быть правы, попытайтесь изыскать способы поддержки оппонента. Даже ценой проигрыша в споре. Вас удивит то, что вы будете именно тем, кто сильнее всего выиграет от подобного разрешения конфликта.
Если вы хотите построить свой собственный MBTI-профиль — вы можете пройти бесплатный тест в интернете. Но, опять же, этот профиль не сообщит вам о том, кто вы, на самом деле, такой. Он лишь поможет вам увидеть разницу между вашей личностью и личностями других программистов.
Кто вы в мире программирования: строитель или архитектор?