Читать книгу Идеальная IT-компания. Как из гиков собрать команду программистов - Брайан Фитцпатрик - Страница 22
Глава 2. Формирование высокой командной культуры
ОглавлениеКомандные культуры очень разнообразны и отражают широкий спектр ценностей и приоритетов. Одни культуры вносят большой вклад в успех команды, другие – в ее неудачу. Как это ни странно, но успешные команды могут формироваться как очень эффективными культурами, в которых основное внимание уделяется разработке ПО, так и культурами, в которых отвлечение от текущих задач является обычным делом. В этой главе мы поговорим о командной культуре, в которой серьезное внимание уделяется различным коммуникационным техникам, направленным на достижение успеха. Мы расскажем о том, как эти техники позволяют вести эффективную разработку ПО с помощью команды первоклассных инженеров.
Что такое культура?
Когда вы слышите слово культура, вы, скорее всего, представляете себе вечер в театре либо чашку Петри с питательной средой, на которой растут колонии бактерий. На самом деле культура команды инженеров отличается от чашки Петри с бактериями совсем не так сильно, как кажется на первый взгляд.
Вам нужна хорошая закваска
Если вы когда-либо пробовали великолепный хлеб на закваске и общались с тем, кто умеет его выпекать, то вы знаете, что основным ингредиентом такого хлеба является закваска, содержащая дрожжи и молочнокислые бактерии, которые питаются углеводами и водой. Хлеб поднимается на дрожжах, а бактерии придают ему характерный замечательный аромат. Человечество знает много вариантов заквасок, применяемых в хлебопечении, – одни создают более приятный аромат, чем другие, и когда пекарь находит закваску (то есть смесь бактериальной культуры и дрожжей), дающую лучший аромат, он стремится поддерживать и выращивать именно эту культуру, подпитывая ее мукой и водой. Затем пекарь добавляет закваску при приготовлении теста, и – ура! – у него получается отличный хлеб! Эта технология работает потому, что культура в закваске не только создает требуемый вкус, но и обладает достаточной силой для того, чтобы победить другие, «дикие» виды дрожжей и бактерий, присутствующие в ингредиентах для приготовления хлеба и воздухе пекарни.
Благодаря хорошей закваске новички усваивают вашу культуру
Культура вашей команды очень похожа на хорошую буханку хлеба: закваска (основатели команды) прививает культуру тесту (новичкам), и с ростом дрожжей и бактерий (участников вашей команды) получается отличная буханка хлеба (ваша команда). Если у вас сильная закваска, то, скорее всего, она победит нежелательные «дикие сорта» культур, которые привносит с собой новый участник команды.[6] Если же закваска слабая, то ваша команда уязвима для неизвестных штаммов культур, приносимых новичками. Неизвестные культуры приводят к непредсказуемым результатам, поэтому проще начинать с закваски, которую вы знаете.
Культура команды – это не просто методы создания программного кода и общения друг с другом, которыми пользуются участники команды; это набор знаний, ценностей и целей, уникальных для каждой команды инженеров. Основатели команды или компании определяют наибольшую часть командной культуры, однако культура продолжает изменяться и развиваться на протяжении всего времени существования команды.
Элементы, составляющие командную культуру, очень разнообразны. Некоторые из них непосредственно касаются написания ПО – например, рецензирование программного кода, разработка на основе тестирования и создание хорошей проектной документации перед началом создания больших объемов кода. Некоторые элементы ориентированы на людей: например, выходы на ланч в определенный ресторан по четвергам или выпивка в любимом баре по пятницам. Какие-то элементы могут показаться глупыми или нелепыми внешнему наблюдателю: например, технический офис Google в Питтсбурге находился рядом с железнодорожными путями, по которым ходили товарные поезда, и каждый раз, когда поезд проходил мимо (а это, как вы знаете, сопровождается сильным шумом), все сотрудники вскакивали с мест и кидались друг в друга дротиками.[7] Все эти вещи образуют командную культуру и влияют на ее продуктивность и способность привлекать и удерживать хороших участников.
Посмотрите на любую компанию, достигшую больших успехов в разработке ПО – Google, Apple, Microsoft, Oracle, – и вы увидите, что у каждой из них есть особая культура с корнями, которые создали ее основатели и первые сотрудники. По мере роста и развития культуры этих компаний изменялись, но продолжали сохранять уникальность, которая воплощалась почти во всем, что касалось разработки продуктов, отношения к сотрудникам и конкуренции с другими компаниями.
Зачем заботиться о культуре?
Говоря кратко, вам следует заботиться о культуре потому, что если вы не станете прилагать усилия к ее формированию и поддержке, то вашей командой завладеет сильная личность, которая посеет в ней свою культуру. Возможно, эта культура окажется продуктивной, здоровой и приведет к созданию огромного количества отличного кода, но, скорее всего, вы в один прекрасный момент обнаружите, что значительное количество вашей энергии, которое раньше тратилось на проектирование и написание кода, будет уходить на споры и внутреннюю борьбу. Более того, важно иметь культуру, которую ваша команда будет ценить и защищать. Если команда не ценит культуру, то становится сложно формировать единство команды и коллективное чувство гордости за работу; кроме того, новичок сможет с легкостью превратить вашу культуру в нечто непотребное.
Первая ошибка, которую делает большинство инженеров, – считать, что руководитель команды курирует командную культуру. Это очень большое заблуждение: несмотря на то что основатели и лидеры обычно поддерживают культуру команды в здоровом виде, каждый ее участник интегрирован в культуру и несет ответственность за ее определение, поддержку и защиту. Когда в команду приходит новый участник, он перенимает культуру не только от руководителя команды, но и от всех ее участников, с которыми он взаимодействует. Например, если вы внимательно изучаете код, написанный новичком, и объясняете ему, почему ваша команда разрабатывает код определенными способами, то он быстро начинает понимать, что именно в базе кода представляет ценность для команды. Он также постигает вашу культуру, наблюдая за тем, как остальная часть команды работает, взаимодействует и разрешает конфликты.
Сильная культура – это культура, открытая для изменений, улучшающих ее, но при этом устойчивая к радикальным изменениям, наносящим ей вред. В самых успешных культурах основные усилия команды сконцентрированы на создании высококлассного ПО. Если ваша команда сфокусирована на чем-либо другом (например, на вечеринках, посещении мероприятий или конкуренции), то ее участники, возможно, будут тесно сплочены, но в результате вы не достигнете успеха в разработке ПО. Если вам больше всего нравится создавать код и выпускать продукты, то, безусловно, в ваших интересах найти команду, которая ценит это, и работать над поддержанием такой среды. Конечно, нельзя утверждать, что вы не можете создать продукт без сильной и продуктивной культуры, но без такой культуры выпуск продукта будет стоить вам значительно больше времени и энергии. Сильная культура формирует концентрацию, эффективность и мощь – элементы, из которых состоит удовлетворенная команда.
Интересный аспект командной культуры в том, что сильная культура начинает сама осуществлять отбор людей. В области открытых исходных кодов проекты, основанные на скромности, уважении и доверии и сконцентрированные на написании понятного, элегантного и удобного в сопровождении кода, привлекают инженеров, заинтересованных в (сюрприз!) работе с теми, к кому они испытывают уважение и доверие, а также в написании понятного, элегантного и удобного в сопровождении кода. Если же ваша команда строится на культуре агрессии, дедовщины и личностных атак, то вы привлечете больше людей с соответствующими качествами.
Мы многократно наблюдали культуры с самоотбором в организации Apache Software Foundation. Множество команд разработчиков, работающих в ней, объединены в сообщества и сотрудничают на принципах консолидации. Множество новичков появлялись в списке рассылки и своим безразличным или агрессивным поведением нарушали правила, принятые в командной культуре. Участники сообщества обычно пытались обучить их (иногда деликатно, иногда не вполне), и если они не переставали игнорировать принципы работы ASF, то, как правило, отправлялись восвояси в поисках более подходящего проекта.
В корпоративной сфере команды осуществляют самоотбор во время найма: неявно – через наиболее ценные навыки и преимущества соискателей либо явно – через определение совместимости кандидата с командной культурой в процессе найма. Google при найме придерживается «явного» подхода и оценивает культурную совместимость с кандидатом во время собеседования. Если соискатель своим поведением напоминает рок-звезду, но неспособен работать с группой людей или требует крайне регламентированной рабочей среды, то интервьюеры поднимают красный флаг в процессе обратной связи.
Если вы не проявляете внимание к культурной совместимости при приеме сотрудников и берете на работу неподходящих людей, то вам придется потратить немало энергии на то, чтобы адаптировать новичка либо заставить его уйти. Каким бы ни был результат, цена настолько высока, что, безусловно, есть смысл позаботиться о том, чтобы новые участники эффективно срабатывались с существующей командой.
Единственный способ удостовериться в том, что новый участник подходит к вашей культуре, – это провести целенаправленное интервью. Во многих компаниях (таких как Google) культурная совместимость является одним из критериев, учитываемых интервьюерами при собеседовании с претендентом. Чтобы избежать ошибок при найме, некоторые компании идут в своих поисках еще дальше: они проводят отдельные интервью, посвященные культурной совместимости, раньше, чем технические интервью, поскольку не хотят даже рассматривать людей, которые соответствуют их техническим требованиям, но не разделяют их культуру. Этот способ вовлечения в процесс важен для формирования и сохранения сильной культуры и не происходит случайно; обычно основатели и первые сотрудники компании намеренно осуществляют его.
Культура и люди
Написание ПО отличается от штамповки деталей на конвейере. Некоторые виды работ можно выполнять после нескольких дней тренировки при помощи простых инструментов, и если ваш работник уходит из компании или не справляется с обязанностями, то вы просто нанимаете другого, и работа продолжается. Конвейерные рабочие выполняют элементарные задачи, часто механически, с минимумом творческого мышления и без необходимости применять навыки решения проблем. В сфере ПО от инженеров, работающих над программным продуктом, требуется творческое мышление,[8] и если вы хотите создать отличный продукт, то для этого требуются первоклассные инженеры. Для того чтобы эти инженеры отлично работали (и не уходили), создайте культуру, которая позволит им уверенно делиться своими идеями и иметь голос при принятии решений.
Конец ознакомительного фрагмента. Купить книгу
6
Разумеется, сильная культура всегда может и интегрировать в себя подходящие «дикие сорта», которые появляются вместе с новичком.
7
Это чертовски напугало Фитца, когда он впервые оказался в питтсбургском офисе Google.
8
Некоторые люди считают, что могут нанять суперархитектора, нескольких заурядных программистов и создать хороший продукт. Мы полагаем, что это возможно, но более скучно, чем работать с командой отличных людей, которые вдохновляют вас, спорят с вами и расширяют ваши знания.