Идеальная IT-компания. Как из гиков собрать команду программистов - Фитцпатрик Брайан
Идеальная IT-компания. Как из гиков собрать команду программистовБрайан Фитцпатрик
Бен Коллинз-Сассмэн
В современном мире разработки ПО успех программиста во многом зависит не только от качества кода, но и от его взаимодействия с другими людьми. В этой занимательной и ироничной книге раскрываются основные закономерности и шаблоны поведения, возникающие в команде разработчиков ПО. Рассматриваются основные роли каждого из участников коллектива, паттерны их поведения и примеры организации наиболее эффективного взаимодействия внутри команды программистов. Эта книга поможет вам оценить важность человеческого фактора в процессе разработки ПО и научиться выстраивать эффективно работающую команду для IT-проекта любой сложности.
Брайан Фитцпатрик, Бен Коллинз-Сассмэн
Идеальная IT-компания. Как из гиков собрать команду программистов
– От Бена —
Моим родителям, несущим радость и надежду и научившим меня читать не только слова, но и людей.
– От Фитца —
Моему деду, Элвину «Нику» Фитцпатрику, научившему меня рассказывать истории и слушать их.
© ООО Издательство «Питер», 2014
Все права защищены. Никакая часть электронной версии этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, включая размещение в сети Интернет и в корпоративных сетях, для частного и публичного использования без письменного разрешения владельца авторских прав.
©Электронная версия книги подготовлена компанией ЛитРес (www.litres.ru (http://www.litres.ru/))
Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги.
Отзывы о книге
«Эта великолепная книга разговаривает с гиком, который живет внутри вас. Но даже если вы не считаете себя гиком, то книгу все равно стоит прочитать».
Винт Серф (Vint Cerf), главный интернет-евангелист компании Google
«Я работаю с инженерами на протяжении более чем 30 лет и за это время понял, что люди влияют на инжиниринг в такой же степени, как наука и технологии. Тем не менее большинство инженеров прилагают мало (или не прилагают совсем) усилий к тому, чтобы понять, как работать с другими людьми. Если вы хотите эффективно и продуктивно заниматься творчеством и инновациями, то эта книга для вас».
Дин Кэмен (Dean Kamen), основатель компании DEKA Research
«Бен и Фитц собрали замечательную коллекцию паттернов и антипаттернов для разработчиков ПО. Эта книга предназначена для тех, кто стремится понять, как повысить продуктивность команды программистов. Ее могут читать как сами программисты, так и их менеджеры, и другие специалисты, с которыми они взаимодействуют. В книге описаны многие черты, присущие высококлассным разработчикам ПО с открытым исходным кодом. Жаль, что у меня не было подобной книги много лет назад».
Брайан Беллендорф (Brian Behlendorf), технический директор Всемирного экономического форума
«Разработка ПО – командный вид спорта. Если вы захотите достичь в нем максимальных результатов, то сотни хороших книг расскажут вам о том, как развивать навыки разработчика, и еще несколько книг – о том, как стать хорошим менеджером. Эта книга прокладывает новый путь: она содержит все ключевые уроки, которые разработчик должен усвоить, чтобы общаться с коллегами и стать эффективным участником команды. Такая книга давно нужна сообществу разработчиков и наконец-то она появилась».
Питер Норвиг (Peter Norvig), директор по исследованиям компании Google
«Если вы стремитесь создать команду, сконцентрированную на разработке высококлассного ПО, то вам необходимо прочесть эту книгу. Бен и Фитц отлично перевели такие тонкие материи, как скромность, уважение и доверие, на язык тактических ориентировок, которые будут полезны самым скептически настроенным разработчикам».
Эрик Лант (Eric Lunt), технический директор и сооснователь компании BrightTag
«Отличная книга. Она посвящена самой сложной проблеме в программировании – работе с другими программистами. Я куплю по экземпляру этой книги для всех участников команды Samba».
Джереми Эллисон (Jeremy Allison), один из создателей Samba
«Возможно, вы встречали выражение «10X-программист», которое означает, что лучшие программисты на порядок продуктивнее, чем среднестатистические. Чтобы достичь больших результатов, нужен не только опыт и развитые технические навыки, но и умение понимать своих коллег и пользователей. Никакой интеллект и знания не способны компенсировать отсутствие последнего, однако эта книга поможет вам развить навыки межличностного общения и оставить в этом мире гораздо более заметный след».
Боб Ли (Bob Lee), технический директор компании Square
«Фитц и Бен раскрывают простое кредо – скромность, уважение и доверие – в многочисленных примерах и историях. Они делятся своим опытом и мудростью, помогая командным программистам (а к ним относится большинство из нас) быть эффективнее и продуктивнее».
Грег Бэдрос (Greg J. Badros), вице-президент по продуктам и инжинирингу компании Facebook
«Программы состоят из людей. Команда, эффективно управляемая с помощью принципов, которые описаны в этой книге, способна превзойти любого разработчика-индивидуалиста в изобретательности, кодировании и достигаемых результатах. Программисты, занимайтесь саморазвитием!»
Джонатан Найтингейл (Johnathan Nightingale), старший директор по разработке Firefox компании Mozilla
«Это вариант книги „Как завоевывать друзей и оказывать влияние на людей“ для программистов. Он содержит в себе множество понятных практических рекомендаций о том, как быть более гармоничным, продуктивным и эффективным участником команды инженеров. Книга замечательна и необходима».
Андриан Головатый (Adrian Holovaty), сооснователь Django
«Бен и Фитц рассказывают о том, что я применял на практике, но никогда не мог выразить словами».
Гвидо Ван Россум (Guido van Rossum), Великодушный Пожизненный Диктатор в Python
«Пожалуйста, пришлите один экземпляр на имя Пул-Хеннинг Кэмпа для разработчиков ядра FreeBSD, не позже марта 1994 г.»
Пул-Хеннинг Кэмп (Poul-Henning Kamp), участник проекта FreeBSD
«Бен и Фитц не восхваляют миф о программисте-одиночке, а уничтожают его. На его поминках они рассказывают истории, которые учат благоразумных инженеров обращаться с самой сложной системой, с которой они могут столкнуться, – группой людей.
Эта книга демонстрирует, что самые цивилизованные программы разрабатываются самыми эффективными командами, и рассказывает о том, как создать и то и другое».
Джон Толва (John Tolva), технический директор City of Chicago
«Это отличная книга о социологии разработки ПО, делающая акцент на создании программ с открытым кодом и крупных корпорациях. Любому инженеру, начинающему карьеру в компании, необходимо прочесть разделы, посвященные развитию собственных навыков и офисной политике. Я рекомендую эту книгу всем инженерам вне зависимости от того, где они работают. Это первая известная мне книга, в которой занятие офисной политикой изложено в легкодоступной для инженеров форме. Истории, рассказы и практические советы о работе со сложными людьми великолепны! Вы точно не найдете их ни в одной другой книге».
Пьяу На (Piaw Na), автор книг «Руководство инженера стартапа Силиконовой долины» (An Engineer’s Guide to Silicon Valley Startups) и «Руководство инженерами стартапа» (Startup Engineering Management)
«В этой драгоценной книге Бен и Фитц дают рациональный ответ на вопрос, как программистам приносить максимальную пользу в хорошей команде. Нам повезло, что эта важная тема наконец открыта для обсуждения с таким энтузиазмом и юмором.
Я бы хотел иметь эту книгу, когда мне был 21 год, и обладать достаточным здравомыслием для того, чтобы усвоить ее».
Брайан О’Салливэн (Bryan O’Sullivan), Facebook
«Эта книга – руководство по созданию здоровой культуры разработки ПО. Ее должны прочитать технические руководители и менеджеры, а также нетехнические руководители, которым необходимо разобраться в том, как динамика команды влияет на удержание наиболее талантливых инженеров и качество создаваемых ими программных продуктов».
Брюс Джонсон (Bruce Johnson), технический директор компании Google
«Навыки программирования помогут вам не остаться без работы, но если вы объедините их со способностью эффективно работать с другими людьми, то сможете изменить мир. Эта книга не о том, как стать лучше в программировании, а о том, как стать выдающимся человеком».
Клэй Джонсон (Clay Johnson), автор книги «Информационная диета» (The Information Diet)
«Эта книга представляет собой глубокое исследование создания успешных команд и продуктов. Она написана в результате работы над сложными проблемами и вопросами разработчиков, с которыми все мы сталкиваемся на протяжении нашей карьеры.
Жизнерадостный подход к преодолению инженерных и человеческих проблем в технической команде изложен в увлекательной и лаконичной форме. Эта книга должна занимать достойное место на полке любого инженера».
Джонатан Лебланк (Jonathan Leblanc), ведущий евангелист технологий разработки компании X.Commerce
«Если раньше программирование в основном имело дело с написанием кода и компьютерами, то теперь это не так. Оно все больше сводится к компоновке существующих программ новыми способами, а каждая программа связана с людьми. Авторы поняли это из своего многолетнего опыта; их совет одновременно прост и многогранен: концентрируйтесь на людях так же, как на коде, и вы не только станете счастливым программистом сами, но и сделаете счастливее других программистов. Эта книга появилась очень вовремя!»
Карл Фогель (Karl Fogel), сооснователь компании Open Tech Strategies LLC
«В течение многих лет я публиковал в блогах выступления Бена и Фитца на конференциях, поскольку очень мало людей обращает внимание на социальную сторону взаимодействия с гиками. Я рад, что мысли из их выступлений теперь можно прочитать в одной удобной книге и их больше не нужно искать в разрозненных источниках».
Роберт Кей (Robert Kaye), главный гик Musicbrainz
Цель этой книги
Цель этой книги – помочь программистам эффективнее и продуктивнее разрабатывать программы за счет развития способности понимать других людей, общаться и сотрудничать с ними.
Благодарности
Несмотря на то что на обложке книги указаны всего лишь два имени, она является результатом общения с сотнями, если не с тысячами людей, в профессиональной и частной жизни. Мы хотим выразить благодарность хотя бы некоторым людям, благодаря которым появились многие полезные фрагменты этой книги (все ошибки, как обычно? – плод наших трудов).
Спасибо сотрудникам издательства O’Reilly Media: Эди Фридману (Edie Freedman) за идею обложки, а также нашему бесстрашному редактору Мэри Треселер (Mary Treseler) – без ее энтузиазма, терпения и периодического подстегивания авторов эта книга не вышла бы в свет.
Спасибо Санни Брауну (Sunni Brown) и Эмберу Льюису (Amber Lewis) из sunnibrown.com за великолепные иллюстрации, оживившие книгу: работать с вами было сплошным удовольствием.
Спасибо нашим техническим рецензентам, которые высказали множество предложений, идей и поправок, сделавших эту книгу целостной: Дастину Бозвеллу (Dustin Boswell), Тревору Фаучеру (Trevor Foucher), Майклу Хангеру (Michael Hunger), Джонатану Лебланку (Jonathan LeBlanc), Пьяу На (Piaw Na) и Джеку Уэлчу (Jack Welch). Благодарим наших друзей и коллег, которые рецензировали эту книгу в процессе написания и обнаруживали наши грубые ошибки: Дейва Баума (Dave Baum), Мэтту Каттсу (Matt Cutts), Уилла Робинсона (Will Robinson) и Билла Дюэйна (Bill Duane). Спасибо друзьям, которые слушали нас, давали советы, и просто замечательным людям: Карлу Фогелю (Karl Fogel), Джиму Блэнди (Jim Blandy), Мэтту Брейтуэйту (Matt Braithwaite), Дэнни Берлину (Danny Berlin) и Крису Дибона (Chris DiBona). Также выражаем благодарность Линде Стоун (Linda Stone), Девитту Клинтону (DeWitt Clinton), Брюсу Джонсону (Bruce Johnson), Роланду МакГрату (Roland McGrath) и Эмиту Пателю (Amit Patel) за их идеи и предложения.
Спасибо компании Google, в особенности команде инженеров из Google Chicago, за поддержку, идеи и предложения, а также за то, что мы могли каждый день работать с этой великолепной командой.
Особая благодарность нашим старшим наставникам и учителям, коллективную мудрость которых мы постарались отразить на страницах этой книги: Биллу Когрэну (Bill Coughran), Стиву Винтеру (Steve Vinter), Алану Ойстейсу (Alan Eustace), Стью Фельдману (Stu Feldman) и Эрику Шмидту (Eric Schmidt).
Отдельное спасибо Брайану Робинсону (Brian Robinson) и Ивонне Эллисон-Сэндлер (Yvonne Ellison-Sandler) за наставничество, руководство и попечительство.
Спасибо организации Apache Software Foundation за уделенное время, внимание к профессиональному сообществу и сотрудничество.
Спасибо всем нашим близким друзьям, делающим нас богатыми, очень богатыми людьми. Не смотрите на нас так – вы сами знаете себе цену.
Значительная часть этой книги была придумана, спланирована и написана в замечательном, приветливом и уютном месте под названием Filter Cafe в прекрасном городе Чикаго.
От Фитца
Я очень благодарен своей жене Мари за огромное терпение, понимание и воодушевление – твоя человеческая проницательность и сопереживание всегда служат для меня источником вдохновения. Спасибо моей маме за постоянную поддержку и энтузиазм. Особая благодарность моей теще Рите Гамлер (Rita Gumler) за придуманную аналогию между людьми и растениями.
Бену: ты знаешь меня 14 лет, мы вместе работали в трех компаниях и написали три книги – неужели ты все еще терпишь меня? Спасибо тебе за компанию в этом безумном, фантастическом и великолепном путешествии – ты мой замечательный друг и учитель. Я с предвкушением жду продолжения нашего совместного творчества (разумеется, после нескольких месяцев глубокого здорового сна).
Наконец, я благодарю мистера Чарли МакГэннона (Charlie McGannon), научившего меня излагать свои мысли на бумаге на уроках английского в 11-м классе. В то время я считал четыре черновика эссе неоправданно большой работой, но теперь я знаю, что настоящие публикации требуют гораздо большего числа редакций!
От Бена
Мне трудно найти подходящие слова, чтобы выразить признательность моей жене Френсис за свободу, которую она предоставила, когда я занимался этой книгой и участвовал в дюжине других творческих проектов. Без ее мягкой и надежной поддержки ни один из этих проектов, скорее всего, не состоялся бы.
Фитцу: теперь, когда один из нас дописывает фразы, начатые другим, можно без преувеличения сказать, что мы похожи на семейную пару со стажем. Я никогда не думал, что делать доклады с кем-либо – столь увлекательное занятие, не говоря уже о совместном написании программ и книг. Жизнь предоставила нам поистине замечательные возможности! Спасибо, что ты так многому научил меня.
Наконец, я благодарю всех сумасшедших людей и компании Силиконовой долины: если бы вы не впустили меня в ваш экстравагантный мир, то ни одна из этих безумных авантюр не состоялась бы.
Об авторах
Брайан Фитцпатрик (Brian Fitzpatrick) возглавляет команды фронта освобождения данных (Data Liberation Front) и открытого инжиниринга (Transparent Engineering) в компании Google; в прошлом он руководил командами хостинга проектов (Project Hosting) и партнерской сети Google (Google Affiliate Network). Брайан – один из основателей технического офиса Google в Чикаго, а также идейный лидер и консультант проектов компании Google, посвященных открытым данным.
Бен Коллинз-Сассмэн (Ben Collins-Sussman) – один из первых разработчиков системы контроля версий Subversion и бывший руководитель команды, занимающейся хостингом проектов; в настоящее время он является менеджером команды инженеров партнерской сети Google. Бен один из основателей технического офиса Google в Чикаго; кроме того, он перенес систему Subversion на платформу Bigtable компании Google.
От издательства
Ваши замечания, предложения, вопросы отправляйте по адресу электронной почты [email protected] (mailto:[email protected]) (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства http://www.piter.com (http://www.piter.com/) вы найдете подробную информацию о наших книгах.
Введение
Инженерное искусство просто. Сложность – в людях.
Билл Когрэн (Bill Coughran), бывший старший вице-президент по инжинирингу компании Google
Жизнь полна неожиданных поворотов, и мы оба никогда не думали о том, что однажды напишем книгу о разработке ПО.
Как и многие компьютерные гики, мы поняли, что наше хобби и страсть – работа с компьютерами – отличный способ заработать на жизнь после колледжа. В середине 1990-х мы, подобно большинству фанатиков-программистов, собирали персональные компьютеры из комплектующих, устанавливали предварительные версии Linux с дискет и учились администрировать Unix-машины. Мы работали системными администраторами, а на заре эпохи «дот-комов» – программистами в небольших компаниях. Когда пузырь «дот-комов» лопнул, мы обосновались в выживших фирмах Силиконовой долины (вроде Apple), а затем были приглашены в стартап-компанию CollabNet в качестве штатных сотрудников для работы над Subversion – системой контроля версий с открытым кодом.
Нечто неожиданное случилось между 2000 и 2005 годами. Во время работы над Subversion наши обязанности стали понемногу изменяться. Мы больше не сидели весь день в изоляции, занимаясь написанием кода, а руководили проектом с открытым исходным кодом. В течение дня мы общались в чате с дюжиной программистов-волонтеров и следили за их работой. Мы почти полностью координировали разработку новых функций через список рассылки. В процессе этой работы мы поняли, что для успеха проекта недостаточно создавать хороший код. Не менее важно то, как люди взаимодействуют друг с другом для достижения конечной цели.
В 2005-м мы открыли технический офис Google в Чикаго и продолжили программистскую карьеру. В то время мы уже были активно вовлечены в мир открытого кода; мы не только работали над системой Subversion, но и участвовали в сообществе Apache Software Foundation (ASF). Мы перенесли Subversion в инфраструктуру BigTable, разработанную Google, и запустили службу хостинга проектов с открытым кодом (аналогичную SourceForge) под флагом Google Code. Мы начали посещать конференции для разработчиков, а затем и выступать на них – OSCON, ApacheCon, PyCon и, наконец, Google I/O. Работая в обеих корпорациях и занимаясь проектами с открытым кодом, мы незаметно собрали кладезь знаний и историй о том, как работают настоящие команды разработчиков ПО. Серия забавных докладов о неэффективных процессах разработки («Худшие практики Subversion») в конечном счете превратилась в выступления о защите команд от деструктивно настроенных людей («Как избавить проект от вредоносных участников»). Все большие и большие толпы людей собирались на наших презентациях, которые больше напоминали сеансы групповой терапии для разработчиков. Каждый участник осознавал свою причастность к проблемам, о которых мы рассказывали, и хотел поделиться ими с группой.
Спустя шесть лет в нашем арсенале было множество докладов о социальных проблемах разработки ПО, проходивших исключительно в переполненных залах. Мэри Треселер, редактор издательства O’Reilly Media, рекомендовала нам оформить эти доклады в виде книги. Остальное – достояние истории.
Если вы хотите делать отличные программы, то эта книга – для вас
Для кого предназначена эта книга
Эта книга предназначена в первую очередь для разработчиков ПО, стремящихся строить свою карьеру и создавать высококлассные программы. К целевой аудитории книги не относятся генеральные директоры, психологи, управленцы, теоретики-компьютерщики и специалисты по электронике (хотя все эти профессионалы тоже могут получить удовольствие от чтения). При написании книги мы руководствовались следующими предпосылками:
• читатель работает в команде программистов, например принимает участие в проекте с открытым исходным кодом;
• читатель получает удовольствие от разработки ПО и считает ее достойным и увлекательным занятием. Если вы преобразуете нули в единицы и обратно с целью отделаться от кредиторов, то вы вряд ли заинтересованы в саморазвитии и карьерных достижениях.
Рассматривая методы эффективного взаимодействия инженеров с другими людьми, мы касаемся вопросов, которые, как может показаться на первый взгляд, не имеют отношения к должностным обязанностям программиста. Мы говорим о том, как эффективно руководить командой, прокладывать свой «маршрут» в организации и выстраивать здоровые отношения с пользователями. Может показаться, что эти главы адресованы исключительно менеджерам, однако мы уверены, что в вашей карьере наступит момент, когда вы сами непреднамеренно окажетесь в такой роли. Отбросьте сомнения и продолжайте читать! Все, что написано в этой книге, безусловно, касается разработчиков ПО.
Внимание: эта книга не является техническим пособием
Для начала немного о том, что вы найдете в этой книге. Заинтересованные программисты любят читать книги, в которых конкретные проблемы описаны с математической точностью и для каждой приведена процедура решения.
В этой книге вы не найдете ничего подобного.
Наша книга посвящена человеческим аспектам разработки ПО. Люди – сложные существа, или, как мы любим говорить на конференциях, «огромные скопления перемежающихся ошибок». Проблемы и решения, о которых мы рассказываем, расплывчаты и с трудом умещаются в строгие логические рамки. Эту книгу следует воспринимать как серию эссе, поскольку, в сущности, так оно и есть. В каждой главе мы рассматриваем набор взаимосвязанных проблем (как правило, в виде историй), а затем переходим к изучению решений, относящихся ко всей теме в целом. Чтобы полностью усвоить материал, удерживайте в голове содержимое нескольких страниц одновременно, устанавливайте взаимосвязи с помощью правого полушария мозга или, наконец, просто спите с этой книгой!
Мы хотели бы сделать еще пару оговорок. Как мы обычно говорим на выступлениях, «изложенная информация является исключительно нашим мнением, основанным на личном опыте. Если вы не согласны с ним, то милости просим выступить с собственным докладом». Как и на устных выступлениях, мы приветствуем любые дискуссии, которые могут возникнуть вокруг тем, представленных в этой книге. Мы рады обсудить с читателями отзывы, исправления, мнения и разногласия. С нами можно связаться через сайт http://www.benandfitz.com/ (http://www.benandfitz.com/). Содержимое этой книги отражает наш личный «боевой» опыт и уроки, извлеченные из многочисленных ошибок.
Все имена, использованные в примерах, были изменены для сохранения конфиденциальности как положительных, так и отрицательных героев.
Эта книга о том, чему не учат в вузах
Большинство известных нам программистов потратило от 4 до 10 лет на обучение компьютерным технологиям и программированию. На момент написания этой книги мы не знаем ни одного курса,[1 - Мы прочитали замечательную книгу Тома Де Марко (Tom DeMarco) «Человеческий фактор» (PeopleWare), но она адресована не столько инженерам, желающим научиться эффективнее взаимодействовать с людьми, сколько менеджерам, стремящимся сделать свои команды более успешными.] обучающего студентов навыкам общения и совместной работы в команде или компании. Конечно, во время учебы большинству студентов приходится хотя бы однажды участвовать в групповом проекте, но обучать человека методам успешной работы с другими людьми и принуждать его к командной работе – совершенно разные вещи.
Читать бесплатно другие книги:
Пятеро друзей-школьников попадают в параллельный мир, называющийся «Земля». Попадают не случайно – они призваны магическ...
Круизная яхта с дочерью украинского мультимиллионера и ее свежеиспеченным супругом на борту бесследно исчезает где-то на...
Пятнадцатый век продолжается. Он насыщен невероятными событиями и войнами, в которых принимают участия молодые рыцари, б...
Книга, созданная специалистами компании Reuters, является практическим пособием для начинающих инвесторов и трейдеров по...
Любой менеджер по продажам знает, как сложно звонить незнакомым людям и предлагать свою услугу или товар. Зачастую резул...
В конце восьмидесятых в московской семье родился второй ребенок – мальчик. Он оказался не просто вторым, младшим братом,...