Делай как вGoogle
Скачать 5.77 Mb.
|
51 людьми. Поделитесь своим видением. Разделите труд. Учитесь у других. Создайте блестящую команду. Подумайте, сколько есть примеров широко используемого ПО, написанного одним человеком? (Кто-то вспомнит «LaTeX», но вряд ли этот продукт «широко исполь- зуется», если только вы не считаете, что число людей, пишущих научные статьи, является статистически значимой частью всех пользователей компьютеров!) Высокоэффективные команды — это золотая жила и верный ключ к успеху. При- ложите все силы, чтобы создать такую команду. Три столпа социального общения Итак, если командная работа — лучший путь к созданию блестящего ПО, как создать (или найти) хорошую команду? Чтобы достичь нирваны совместной работы, сначала запомните «три столпа» соци- альных навыков. Они не только смазывают колеса взаимопонимания, но и являются основой для здорового взаимодействия и сотрудничества. Столп 1: смирение Вы не центр Вселенной (как и ваш код!). Вы не всезнающий и не безгрешный. Вы открыты для самосовершенствования. Столп 2: уважение Вы искренне заботитесь о тех, с кем работаете, относитесь к ним по-доброму и цените их способности и достижения. Столп 3: доверие Вы верите, что другие тоже компетентны, действуют правильно и вы сможете передать им руль, если понадобится 1 Если проанализировать первопричины практически любого социального конфликта, в конечном итоге можно проследить его до отсутствия смирения, уважения и (или) доверия. Поначалу это утверждение может показаться неправдоподобным, но убеди- тесь сами — поразмышляйте над какой-нибудь неприятной или неудобной ситуацией в вашей жизни. Все ли участники конфликта были смиренны? Действительно ли они относились друг к другу с уважением? Имело ли место взаимное доверие? Почему эти столпы так важны? Начиная читать эту главу, вы, наверное, не планировали записываться в группу под- держки. Сочувствуем. Социальные проблемы трудно решать: люди беспорядочны, непредсказуемы и часто раздражают своим общением. Вместо того чтобы вкладывать энергию в анализ социальных проблем и искать стратегические решения, гораздо 1 Это невероятно сложно, если в прошлом вы погорели, передав управление некомпетентным людям. 52 Глава 2. Успешная работа в команде проще пустить все на самотек. Работать с предсказуемым компилятором намного проще, не так ли? Зачем вообще погружаться в социальную сферу? Вот цитата из известной лекции Ричарда Хэмминга ( http://bit.ly/hamming_paper ): «Взяв за правило рассказывать секретарям анекдоты и проявлять немного друже- любия, я получал от них очень ценную помощь. Например, однажды по какой-то дурацкой причине все копировальные службы в Мюррей Хилл оказались заняты. Не знаю почему. Надо было что-то делать. Моя секретарша позвонила кому-то в Холмдел, прыгнула в служебный автомобиль, провела час в дороге, скопировала материал и вернулась. Это стало мне наградой за то, что я не ленился приобо- дрять ее, шутил и вообще был дружелюбен. Мне это ничего не стоило, но позже такое мое поведение окупилось. Столкнувшись с необходимостью использовать систему и изучая возможные способы заставить систему делать вашу работу, вы учитесь менять систему под себя». Вывод прост: не стоит недооценивать социальные игры. Это не обман или мани- пулирование, а выстраивание отношений, помогающих достичь цели. Отношения всегда живут дольше, чем проекты. При хорошем отношении коллеги будут готовы пройти лишнюю милю, если вам это потребуется. Смирение, уважение и доверие на практике Все эти речи о смирении, уважении и доверии звучат как проповедь. Давайте спустимся на грешную землю и подумаем, как применить эти идеи в жизни. Для начала рассмотрим список конкретных моделей поведения и примеры. Многие из этих моделей покажутся очевидными, но вскоре вы заметите, как часто вы (и ваши коллеги) не следуете им — мы заметили это в себе! Усмирите свое эго Если вы замечаете, что кому-то не хватает смирения, проще всего попросить этого человека быть скромнее. Никто не горит желанием работать с тем, кто постоянно ведет себя как самый важный человек в комнате. Даже если вы уверены в своем пре- восходстве, не показывайте этого. Подумайте, так ли необходимо, чтобы последнее слово всегда оставалось за вами? Так ли важно комментировать каждую деталь в предложении или обсуждении? Вы знаете людей, которые так себя ведут? Скромным быть важно, но это не значит, что можно показывать слабину — в уве- ренности в себе нет ничего плохого. Просто не стройте из себя всезнайку. Думайте о «коллективном» эго — старайтесь поддерживать командный дух и коллективную гордость. Например, Apache Software Foundation имеет долгую историю создания сообществ вокруг программных проектов. Эти сообщества отличает невероятно сильное самосознание: они отвергают людей, озабоченных саморекламой. Эго имеет множество проявлений и часто мешает работать. Вот еще одна замеча- тельная история из лекции Хэмминга, которая прекрасно иллюстрирует проявление личного эго (выделение наше): Весь секрет в командной работе 53 «Джон Тьюки почти всегда одевался очень небрежно. Когда он приходил в офис, руководители не сразу понимали, что перед ними первоклассный специалист, к мнению которого стоит прислушаться. Джон тратил много времени и сил на преодоление такого неприятия! Я не говорю, что вы должны соответствовать окружению, но обращаю ваше внимание, что “видимость соответствия здорово помогает”. Если вы будете утверждать свое эго, заявляя: “Это будет по-моему”, то будете расплачиваться за это на протяжении всей своей карьеры. И в других сферах жизни это будет приводить к огромному числу ненужных неприятностей. <...> Столкнувшись с необходимостью использовать систему и изучая возмож- ные способы заставить систему делать вашу работу, вы учитесь менять систему под себя. В противном случае вам придется бороться с ней постоянно и всю свою жизнь вести маленькую необъявленную войну». Учитесь критиковать и принимать критику Несколько лет назад Джо устроился на новую работу программистом. Спустя не- делю он начал копаться в кодовой базе. Его заинтересовало, какой вклад в код внес каждый член команды. Он стал отправлять им простые обзоры кода по электронной почте, вежливо спрашивая о проектных решениях или указывая места, где можно улучшить логику. Через пару недель его вызвали в кабинет директора. «В чем про- блема? — спросил Джо. — Я сделал что-то неправильно?» «У нас было много жалоб на ваше поведение, — сказал директор. — По-видимому, вы были очень резки по отношению к своим товарищам по команде, критикуя их налево и направо. Они рас- строены. Вам следует быть вежливее». Джо был совершенно сбит с толку. Конечно, он думал, что коллеги оценят и с радостью примут его обзоры кода. Однако Джо должен был проявить большую осторожность и уважительность к членам команды и использовать более тонкие средства для внедрения код-ревью в культуру — воз- можно, предварительно обсудить идеи с командой и предложить попробовать новый подход в течение нескольких недель. В профессиональной среде программной инженерии критика почти никогда не бывает личной — обычно она просто является частью процесса улучшения про- екта. Хитрость в том, чтобы убедиться, что вы (и те, кто вас окружает) понимаете разницу между конструктивной критикой творческих результатов и откровенным оскорблением чувств. Последнее — мелочно и недейственно. Первое может (и долж- но!) быть полезным, если содержит рекомендации по улучшению. И самое главное, конструктивная критика проникнута уважением: человек, выступающий с такой критикой, искренне заботится о других и хочет, чтобы они совершенствовали себя или свой труд. Научитесь уважать своих коллег и вежливо подавать конструктивную критику. Если вы действительно уважаете кого-то, у вас будет мотивация выбирать тактичные и понятные формулировки — навык, приобретаемый с опытом (глава 9). С другой стороны, нужно учиться принимать критику. Не только скромнее оценивать свои навыки, но и верить, что в глубине души коллеги действуют в ваших интере- сах (и в интересах проекта!) и на самом деле не считают вас умственно отсталым. 54 Глава 2. Успешная работа в команде Программирование — это обычный навык. Если коллега указал вам пути улучшения мастерства, разве вы воспримете это как оскорбление и принижение вашего досто- инства? Надеемся, что нет. Точно так же ваша самооценка не должна быть связана с кодом, который вы пишете, или любым творческим проектом, над которым вы работаете. Вы — это не ваш код: повторяйте это снова и снова. Вы — это не то, что вы делаете. Поверьте в это сами и заставьте коллег считать так же. Например, если у вас есть неуверенный в себе коллега, вам точно не следует гово- рить ему: «Дружище, ты совершенно неправильно понял поток управления в этом методе. Ты должен использовать стандартный шаблон xyzzy, как и все остальные». Так поступать не следует: говорить человеку, что он «не прав» (как если бы мир был черно-белым), требовать изменений и заставлять его чувствовать себя хуже других. Коллега вне всяких сомнений обидится, и его реакция наверняка окажется чрезмерно эмоциональной. То же самое можно сказать более тактично: «Знаешь, меня смущает поток управ- ления в этой части. Интересно, сможет ли применение шаблона xyzzy сделать его понятнее и проще в поддержке?» Обратите внимание, как в этом случае проявляется смирение, как акцент ставится на себе, а не на собеседнике. Вы утверждаете, что не коллега ошибся, а вы не поняли код. Этой фразой вы предлагаете лишь прояснить ситуацию для вас, что, возможно, поспособствует достижению цели устойчивого развития проекта в долгосрочной перспективе. Вы также ничего не требуете — даете коллеге возможность мирно отклонить предложение. Обсуждение сосредоточено на коде, а не на чьих-то умственных способностях или навыках. Получив отрицательный результат, повторите попытку В деловом мире существует городская легенда о менеджере, который допустил ошибку и потерял 10 миллионов долларов. На следующий день он уныло входит в офис и начинает собирать свои вещи, а когда ему звонят с неизбежной фразой: «Генеральный директор хочет видеть вас в своем кабинете», он тащится в кабинет директора и тихо кладет заявление на стол. «Что это?» — спрашивает директор. «Мое заявление об уходе, — говорит менеджер. — Полагаю, вы вызвали меня, чтобы уволить». «Уволить? Вас? — отвечает директор недоверчиво. — Зачем мне вас увольнять? Я только что заплатил 10 миллионов долларов за ваше обучение!» 1 Конечно, это весьма необычная история, но генеральный директор в ней понимает, что увольнение менеджера не возместит потерю 10 миллионов долларов, а только усугубит ситуацию потерей ценного работника, который, в чем можно не сомневаться, не повторит своей ошибки. 1 В интернете можно найти десятки вариантов этой легенды, приписываемых разным знаме- нитым менеджерам. Весь секрет в командной работе 55 Один из наших любимых девизов в Google: «Неудача — тоже вариант». Как известно, «не ошибается тот, кто ничего не делает» и «кто не рискует, тот не пьет шампанское». Неудача — это прекрасная возможность учиться и совершенствоваться 1 . На самом деле Томас Эдисон часто повторял: «Если я попробую 10 000 способов, которые не сработают, я не потерплю неудачу. Я не отчаюсь, потому что каждая неудачная по- пытка — это еще один шаг вперед». В Google X — подразделении, занимающемся прорывными технологиями, такими как беспилотные автомобили и ретрансляторы для доступа в интернет на воздушных шарах, — неудачи намеренно встроены в систему стимулирования. Люди придумы- вают диковинные идеи, а их коллегам активно рекомендуется как можно быстрее доказать невозможность их воплощения. Люди получают вознаграждение (и даже соревнуются) за опровержение определенного количества идей или одной идеи в течение определенного времени. И только когда никому не удалось опровергнуть идею, она переходит на первую стадию создания прототипа. Культура подробного анализа причин неудачи Извлечению уроков из ошибок главным образом способствует документирование неудач с помощью анализа основных причин и описания «результатов вскрытия» проблем (как это называют в Google и многих других компаниях). Будьте особенно внимательны: документ с описанием результатов вскрытия не должен быть беспо- лезным списком оправданий — он должен содержать объяснение причин проблем и план дальнейших действий и быть доступным всем, чтобы команда действительно следовала предложенным изменениям. Правильное документирование ошибок по- могает сохранить понимание того, что произошло, и избежать повторения истории. Не стирайте следы — освещайте их, как взлетно-посадочную полосу, для тех, кто следует за вами! Хорошее описание результатов вскрытия должно включать: y краткое описание события; y историю развития события от его обнаружения до расследования и получения выводов; y основную причину события; y оценку влияния события и ущерба; y перечень действий и мероприятий, предпринятых для немедленного исправления проблемы; y перечень действий и мероприятий, направленных на предотвращение повторения события; y уроки и выводы. 1 Если вы снова и снова продолжаете делать одно и то же и раз за разом терпите неудачу, то это не неудача, а некомпетентность. 56 Глава 2. Успешная работа в команде Учитесь терпению Несколько лет назад я работал над инструментом для преобразования репозиториев CVS в Subversion (а позже в Git). Из-за капризов CVS я все время натыкался на странные ошибки. Поскольку мой давний друг и коллега Карл хорошо знал CVS, мы решили поработать вместе и исправить эти ошибки. Когда мы начали парное программирование, возникла проблема: я предпочитал восходящий способ и погружался в самый низ, быстро выискивая варианты пути на- верх, минуя детали. Карл, напротив, отдавал предпочтение нисходящему способу: он стремился получить полную картину о ландшафте и погрузиться в реализацию почти каждого метода в стеке вызовов, прежде чем приступить к устранению ошибки. Это приводило к межличностным конфликтам, разногласиям, а иногда и ожесточенным спорам. Дошло до того, что мы просто не могли программировать вместе — это было слишком сложно для нас обоих. Тем не менее мы давно питали безграничное доверие и уважение друг к другу. Не- большая доля терпения помогла нам выработать новый метод сотрудничества. Мы садились вместе за компьютер, выявляли ошибку, а затем разделяли ее и атаковали сразу с двух сторон (сверху вниз и снизу вверх), а потом объединяли полученные результаты. Наши терпение и готовность экспериментировать с новыми стилями работы спасли не только проект, но и дружбу. Будьте открыты для сотрудничества Чем больше вы открыты для сотрудничества, тем выше ваша способность влиять на других и тем сильнее вы кажетесь. Это заявление выглядят противоречивым. Но практически каждый может вспомнить коллегу-упрямца — кто бы что ему ни го- ворил, он еще больше запирался в своем упрямстве. Что в итоге происходит с такими членами команды? Люди перестают прислушиваться к их мнению или возражениям, начинают «обходить» таких коллег как препятствие, от которого никуда не деться. Вы наверняка не захотите быть таким человеком, поэтому помните: это нормально, когда кто-то хочет вас переубедить. В первой главе этой книги мы говорили, что инженерия — это компромиссы. Нельзя быть правым во всем и всегда, если у вас нет неизменного окружения и совершенных знаний. Поэтому вы должны менять свою точку зрения, когда вам представят новые доказательства. Тщательно расставляйте свои приоритеты: чтобы быть услышанным, сначала выслушайте других. Собери- те аргументы коллег, прежде чем остановить обсуждение и твердо объявить свое решение, — если вы будете постоянно колебаться, меняя свою точку зрения, люди подумают, что вы слабовольный и нерешительный. Идея уязвимости может показаться странной. Если кто-то признается в своем незнании рассматриваемой темы или путей решения проблемы, на какое доверие он может рас- считывать? Уязвимость — это проявление слабости, которое разрушает доверие, верно? Неверно! Признание, что вы допустили ошибку или просто не подтвердили свой уровень, может в долгосрочной перспективе повысить ваш статус. На самом деле готовность показать уязвимость — это внешнее проявление смирения, которое Весь секрет в командной работе 57 демонстрирует надежность и готовность брать на себя ответственность, а также сообщает, что вы доверяете коллегам. В ответ люди будут уважать вашу честность и силу. Иногда действительно лучше прямо сказать: «Я не знаю». Профессиональные политики, например, печально известны тем, что никогда не при- знают свои ошибки или невежество, даже если всем очевидно, что они ошибаются или не знают предмета обсуждения. Такое поведение обусловлено тем, что политики постоянно подвергаются нападкам со стороны своих противников, и именно из-за него большинство не верит словам политиков. Однако вам, пишущим ПО, не нужно постоянно защищаться — ваши товарищи по команде являются вашими единомыш- ленниками, а не конкурентами. У вас с ними одна цель. Действовать по-гугловски У нас в Google есть собственная внутренняя версия принципов «смирения, уважения и доверия». С самого начала существования нашей культуры мы называли действия «по-гуг- ловски» (googley) или «не по-гугловски». Ни в одном словаре вы не найдете это слово, но оно означает «не будь злым», «поступай правильно» или «будь добр к другим». Со временем мы начали использовать термин «по-гугловски» как неформальный признак соответствия нашей культуре у кандидатов на должность инженера или у коллег. Люди часто выражают мнение о других, используя этот термин, например «человек пишет хороший код, но действует не совсем по-гугловски». В конце концов, мы поняли, что термин «по-гугловски» перегружен смыслом и может стать источником неосознанной предвзятости при найме или оценке работы. Если для каждого сотрудника выражение «по-гугловски» будет означать что-то свое, есть риск свести его к «совсем как я». Очевидно, что это не лучший тест для найма новых сотрудников — мы не хотим нанимать людей, которые «совсем как мы», нам нужны люди из разных слоев общества, с разными мнениями и опытом. Личное желание интервьюера выпить пива с кандидатом (или коллегой) никогда не должно рассма- триваться как признак, что кто-то является хорошим кандидатом или сотрудником и сможет добиться успеха в Google. В конечном итоге мы в Google решили эту проблему, явно определив, что под «по- гугловски» подразумевается набор черт характера, которые мы ищем, включающие сильные лидерские способности и приверженность «смирению, уважению и доверию». Развитие в неопределенности Умение, имея дело с противоречивыми сообщениями или указаниями, достичь согласия и добиться прогресса в решении проблемы, даже если окружающая среда постоянно меняется. Бережное отношение к обратной связи Умение уважительно принимать критику и давать обратную связь и понимание ценности обратной связи для личного (и командного) развития. |