Посмотрите на любую компанию, достигшую больших успехов в разработке ПО – Google, Apple, Microsoft, Oracle, – и вы увидите, что у каждой из них есть особая культура с корнями, которые создали ее основатели и первые сотрудники. По мере роста и развития культуры этих компаний изменялись, но продолжали сохранять уникальность, которая воплощалась почти во всем, что касалось разработки продуктов, отношения к сотрудникам и конкуренции с другими компаниями.
Зачем заботиться о культуре?
Говоря кратко, вам следует заботиться о культуре потому, что если вы не станете прилагать усилия к ее формированию и поддержке, то вашей командой завладеет сильная личность, которая посеет в ней свою культуру. Возможно, эта культура окажется продуктивной, здоровой и приведет к созданию огромного количества отличного кода, но, скорее всего, вы в один прекрасный момент обнаружите, что значительное количество вашей энергии, которое раньше тратилось на проектирование и написание кода, будет уходить на споры и внутреннюю борьбу. Более того, важно иметь культуру, которую ваша команда будет ценить и защищать. Если команда не ценит культуру, то становится сложно формировать единство команды и коллективное чувство гордости за работу; кроме того, новичок сможет с легкостью превратить вашу культуру в нечто непотребное.
Первая ошибка, которую делает большинство инженеров, – считать, что руководитель команды курирует командную культуру. Это очень большое заблуждение: несмотря на то что основатели и лидеры обычно поддерживают культуру команды в здоровом виде, каждый ее участник интегрирован в культуру и несет ответственность за ее определение, поддержку и защиту. Когда в команду приходит новый участник, он перенимает культуру не только от руководителя команды, но и от всех ее участников, с которыми он взаимодействует. Например, если вы внимательно изучаете код, написанный новичком, и объясняете ему, почему ваша команда разрабатывает код определенными способами, то он быстро начинает понимать, что именно в базе кода представляет ценность для команды. Он также постигает вашу культуру, наблюдая за тем, как остальная часть команды работает, взаимодействует и разрешает конфликты.
Сильная культура – это культура, открытая для изменений, улучшающих ее, но при этом устойчивая к радикальным изменениям, наносящим ей вред. В самых успешных культурах основные усилия команды сконцентрированы на создании высококлассного ПО. Если ваша команда сфокусирована на чем-либо другом (например, на вечеринках, посещении мероприятий или конкуренции), то ее участники, возможно, будут тесно сплочены, но в результате вы не достигнете успеха в разработке ПО. Если вам больше всего нравится создавать код и выпускать продукты, то, безусловно, в ваших интересах найти команду, которая ценит это, и работать над поддержанием такой среды. Конечно, нельзя утверждать, что вы не можете создать продукт без сильной и продуктивной культуры, но без такой культуры выпуск продукта будет стоить вам значительно