Несколько статей назад я немного рассказал о коммуникациях. Пора сделать перерыв в технических вещах и продолжить благодатную тему простого человеческого общения в таком непростом процессе, как создание программ.
Софт крайне редко разрабатывается программистом-одиночкой, уединившимся в келье. В большинстве проектов есть несколько разработчиков, специалисты по тестированию, развертыванию, дизайнеры, художники, менеджеры, заказчики, клиенты — и все эти ребята постоянно общаются. Причем общаются с совершенно разными целями: один хочет применить недавно услышанную на конференции технологию, другой — уйти пораньше домой, ну а третий — показать инвестору бурную деятельность. Из всего многообразия коммуникаций я хочу рассказать о тех, которые сосредоточены на создании самого программного проекта. Остальное неплохо описано в черной книге менеджера.
Кривое зеркало языка
Разговорный и письменный язык — опасные штуки. Мы с детства привыкли, что если Вася написал на бумаге «мне нужна черная ручка», то Петя, прочтя этот текст, сможет принести страдальцу письменную принадлежность с черными чернилами. На практике оказывается, что Василий имел в виду маркер для доски с зелеными чернилами, у которого на корпусе черная полоска. Мы не обращаем на это внимания, списывая на «единичные курьезы». А мозг, как может, защищает нашу картину мира, на ходу придумывая объяснения вроде «ну какой же он тупой» или «вот это я прикольно оговорился».
Специфика нашей отрасли, как обычно, только усугубляет проблему:
- Отсутствие фундаментального образования и устоявшихся терминов. Я часто наблюдаю, как неплохие разработчики часами спорят о «высоких материях», при этом говоря об одном и том же. Просто немного разными словами.
- Отсутствие прямых и понятных аналогий с физическим миром. Если в бухгалтерском учете можно легко упростить до «представь, что Петя одолжил Васе три рубля», то в разработке программ это просто не работает. Даже если удастся подобрать удачную аналогию для частичной специализации шаблонных классов, то сломается такая аналогия очень быстро и с печальными последствиями.
- Отсутствие устоявшихся процессов. Для неспециалиста, вовлеченного в разработку программ, очень трудно понять, что именно происходит между эскизом приложения на салфетке и его появлением в сторе. Спринты, технический долг, гибкость архитектуры, рефакторинг и десятки других важных вещей для человека со стороны звучат менее понятно, чем заклинания из книг о Гарри Поттере.
Как поймать льва в пустыне
Самый простой и популярный способ что-либо объяснить — заключить объясняемое в клетку из слов. В меру своего понимания, объясняющий начинает возводить вокруг идеи стены из слов:
- «Я хочу такую штуку» — говорит заказчик, и первая стена отсекает его желание от всего того, что «штукой» не является. Например, от театральных выступлений.
- «Чтобы когда человек звонил по телефону» — задумчиво продолжает он, и вторая стена широким полукругом очерчивает время и место. Чего-бы он не хотел, это происходит во время телефонного разговора.
- «Было видно кто звонит!» — радостно заканчивает рассказывающий, а третья стена отсекает его идею от всего постороннего, заключая ее в клетку из трех стен.
В зависимости от умения формулировать свои мысли, клетка из слов может точно поймать идею, а может, как в этом примере, очертить огромную область. Самым интересным в работе клеток является то, как их воспринимают слушатели. Ведь клетка проецируется на их картину мира, очерчивая в ней еще одну область — «как поняли сказанное». Для разных людей понимание описанного выше может различаться от «бред какой-то, о чем он?» до «а, ну это он хочет интеграцию с мобильной CRM, сделаем за неделю, вот счет». Рассказывающий берет некую точку в своей картине мира и строит вокруг нее клетку из слов, которая проецируется на картину мира слушателя, где тот волен выбрать наиболее «подходящую» точку. Не очень надежный способ объяснять, не правда ли? Зато очень популярный. Больше половины учебников так написано.
Особенно плохо клетки из слов работают в IT. Огромное количество плохо описанных технологий, слабое понимание «как это все работает» среди неспециалистов, плюс общая молодость индустрии. Все это порождает описания как в примере выше. Нередки ситуации, когда два очень хороших специалиста в разных областях имеют менее чем десять процентов пересечения знаний. Ну а фраза «это не баг, а фича» стала уже притчей во языцах.
Проверка клеток на прочность
Что же делать, если в команде никто никого не понимает? Учиться строить клетки! Как я уже много раз писал, понимание происходящих процессов помогает нам эффективно пользоваться даже не очень удобными инструментами. Чем может помочь знание о клетках менеджерам и разработчикам?
Чем больше стен — тем меньше клетка. Написали задачу разработчику или вопрос заказчику? Теперь представьте себе, что текст читает кто-то, кто не знает, что вы хотите сказать. Сможет ли он по вашему короткому предложению догадаться, о чем идет речь? Напишите еще несколько предложений — у вас это займет несколько минут, зато клетка получится не в пример меньше, а риски быть непонятым заметно снизятся.
Устно рассказали команде, что надо сделать? Попросите их пересказать задачу своими словами. Будете очень удивлены, обещаю.
Заказчик долго и мучительно строил клетку из общих слов и наконец-то уверен, что вы его поняли? Воспользуйтесь волшебной фразой «правильно ли я понял, что…» и перескажите его идею своими словами. Будете очень удивлены оба.
Вы прочитали этот список и подумали — «вот же капитан, я всегда об этом знал!». Поздравляю, скорее всего, вы стали жертвой ретроспективного когнитивного искажения. О том, что это такое и как с ним бороться, можно прочитать здесь. А пользуясь знанием о том, как работают клетки, вы сможете сами придумать еще не один десяток таких приемов.
Bullshit Bingo Bonus
Подозреваю, что вы не раз замечали огромное количество «общих слов» в рекламных буклетах крупных компаний, которые не очень понятно, чем занимаются. Но явно чем-то айтишным. Все эти «наше интегрированное бизнес решение позволит вам повысить эффективность внутренних процессов и сфокусировать усилия вашей команды для наилучшего соответствия поставленным перед бизнесом целям»? У меня есть гипотеза, что это не что иное, как «клетка из слов» для ловли определенных клиентов. «Ключевые слова», как ракеты, нацелены в картину мира предполагаемого клиента. И призваны очертить клетку вокруг его проблем, даже не зная о них. А потом клиент приходит и говорит — «знаете, у меня есть вот такая проблема в бизнесе. Сможете решить?» — на что крупный системный интегратор важно кивает и отвечает — «конечно, сможем!».