Идеальная IT-компания. Как из гиков собрать команду программистов - Брайан Фитцпатрик
Шрифт:
Интервал:
Закладка:
Миф о гении
Для начала скажем прямо: мы не поклонники спорта. Когда наши жены ликуют во время просмотра бейсбольных или футбольных матчей по телевизору, мы чешем затылки, недоумевая по поводу такого накала страстей. Тем не менее в 1990-е годы мы были свидетелями чемпионатов с участием «Chicago Bulls» (это баскетбольная команда, к слову). В то время мы оба жили в Чикаго, и национальные СМИ на протяжении многих лет были наполнены статьями об этой удивительной команде.
О чем же больше всего рассказывало телевидение и писали газеты? Не о команде, а о суперзвезде – Майкле Джордане. Каждый баскетболист в мире мечтал быть им. Мы наблюдали, как он «танцует» вокруг других игроков и участвует в рекламных роликах. Мы ходили на дурацкие фильмы, где он играл в баскетбол с картонными персонажами. Он был звездой, и каждый ребенок, кидающий мяч в кольцо, втайне мечтал вырасти и пойти по его стопам.
Программисты подчиняются тому же инстинкту – искать идолов и поклоняться им. Линус Торвальдс, Ричард Столлмэн, Билл Гейтс – все это герои, изменившие мир своими подвигами. Линус ведь создал Linux своими руками, не так ли?
Избегайте естественного инстинкта идолизации вещей
На самом же деле Линус написал лишь прототип Unix-подобного ядра и опубликовал его в списке рассылки. Это была непростая задача, и ее решение, безусловно, впечатляет, однако это всего лишь верхушка айсберга. Операционная система Linux разрабатывалась сотнями квалифицированных людей. Настоящее достижение Линуса в том, что он руководил этими людьми и координировал их работу; Linux же – блестящий результат их коллективного труда (сам Unix был создан небольшой группой специалистов Bell Labs, а не исключительно усилиями Кена Томпсона и Дэнниса Ричи).
Продолжим рассуждение: являются ли все программы Free Software Foundation результатом творчества исключительно Столлмэна? Он написал первое поколение Emacs, однако сотни других людей отвечали за создание bash, цепочки инструментов GCC и других программ, работающих на Linux. Стив Джобс руководил целой командой, создавшей Macintosh; главное достижение Билла Гейтса, известного автора интерпретатора BASIC для первых домашних компьютеров, заключается в создании успешной компании вокруг MS-DOS. Тем не менее все эти люди стали лидерами и символами своих коллективных достижений.
А как на счет Майкла Джордана?
С ним – та же история. Мы делаем из него идола, но он не выигрывал все баскетбольные матчи сам. Его гениальность заключается в его работе со своей командой. Тренер команды, Фил Джексон, будучи очень умным человеком и талантливым наставником, понимал, что один игрок никогда не выигрывает чемпионат, и поэтому создал целую «команду мечты» во главе с Джорданом. Эта команда была подобна хорошо смазанному механизму и производила не меньшее впечатление, чем сам Майкл.
Так почему же во всех этих историях мы постоянно идолизируем одного человека? Почему люди покупают продукты, рекламируемые знаменитостями? Почему мы хотим купить платье как у Мишель Обама или кроссовки как у Майкла Джордана? Знаменитость всегда на первом месте. Естественный инстинкт людей – искать лидеров и ролевые модели, идолизировать их и пытаться подражать им. Для вдохновения всем нам нужны герои, и такие герои есть и в мире программирования. Феномен «знаменитого технаря» уже почти стал частью мифологии. Мы все хотим создать нечто способное изменить мир, как Linux, или разработать очередной выдающийся язык программирования.
В глубине души все мы тайно мечтаем быть гениями. Самая большая мечта компьютерного энтузиаста – быть озаренным потрясающей новой идеей. Вы проводите в «Пещере Бэтмена» недели и месяцы, тратя все силы на совершенное воплощение своего замысла. Наконец, вы демонстрируете свои программы миру, шокируя гениальностью всех и каждого. Коллеги в восторге от вашего мастерства. Люди выстраиваются в очередь за вашими творениями. Слава и успех ждут вас за порогом.
Давайте сравним желаемое с возможным. Скорее всего, вы не гений. Мы ни в коем случае не пытаемся обидеть вас и уверены в том, что вы – очень умный человек. Однако понимаете ли вы, как редко встречаются настоящие гении? Да, вы пишете код, и, вероятно, это умение ставит вас выше значительной части человечества. Однако, даже если вы гений, этого недостаточно. Гении тоже совершают ошибки, и наличие великолепных идей и выдающихся навыков программирования не гарантирует, что ваши программы ждет успех. Условием побед или поражений в карьере является то, насколько хорошо вы сотрудничаете с другими людьми. Оказывается, что «миф о гении» – лишь еще один аспект нашей незащищенности. Большинство программистов боится делиться незавершенной работой, поскольку коллеги, увидев их ошибки, узнают о том, что автор кода – не гений. Вот цитата программиста, написавшего в блог Бена:
Я знаю, что сильно комплексую по поводу людей, которые видят то, что еще не закончено. Мне кажется, что они строго осуждают меня и считают идиотом.
Этот комплекс очень распространен среди программистов, и естественная реакция на него – спрятаться в пещеру и работать, работать, работать. Пусть никто не видит ваши промахи: есть шанс исправить их, прежде чем вы представите свой шедевр миру. Спрячьтесь подальше до тех пор, пока все не станет идеальным.
Еще один фактор, побуждающий прижимать карты к груди, – это страх, что другой программист воплотит вашу идею раньше, чем вы сумеете ее реализовать. Держа замысел в секрете, вы контролируете его.
Мы знаем, о чем вы сейчас думаете: «Ну и что? Разве нельзя дать людям возможность работать так, как они хотят?» На самом деле нет. Мы утверждаем, что в этом случае вы поступаете неправильно, и это важно. Попробуем объяснить, почему.
Скрываться вредно
Работая в одиночку, вы увеличиваете риск неудачи и уменьшаете потенциал роста.
Откуда вы знаете, правильным ли путем идете?
Представьте, что вы увлекаетесь проектированием велосипедов и однажды вам в голову приходит великолепная идея о совершенно новом устройстве переключателя передач. Вы заказываете детали и неделями не вылезаете из гаража в попытке создать прототип. Когда сосед, который тоже увлекается велосипедами, интересуется, чем вы заняты, вы решаете не говорить ему об этом. Вы не хотите, чтобы кто-либо знал о проекте до тех пор, пока он не будет доведен до полного совершенства. Через несколько месяцев выясняется, что вы не можете заставить прототип работать как надо, но обстановка строгой секретности лишает вас возможности получить совет от друзей, разбирающихся в механике.
В один прекрасный день ваш сосед выезжает из своего гаража на велосипеде с совершенно новым механизмом переключения передач. Выясняется, что он занимался тем же, чем и вы, но с помощью друзей из велосипедного магазина. Вы упали духом и показываете ему свою работу. Он говорит, что в вашей модели было несколько простых ошибок, которые можно было устранить в первую неделю, если бы вы показали ему свою модель.
Работа в изоляции приводит к разочарованию
Из этой истории следует извлечь несколько уроков. Скрывая великолепную идею от внешнего мира и отказываясь демонстрировать кому-либо результаты до тех пор, пока они не будут «блестеть», вы очень рискуете. В начале работы легко допустить фундаментальные ошибки в проектировании. Вы пытаетесь заново изобрести колесо, а также лишаетесь преимуществ совместной работы: видите, насколько быстрее двигался вперед ваш сосед, сотрудничая с другими людьми? Именно поэтому люди трогают воду, перед тем как нырнуть в глубину: вам нужно удостовериться, что вы работаете над подходящей идеей, делаете это правильно и никто не сделал этого раньше вас. Вероятность неверного шага в начале пути высока. Чем больше отзывов вы получите в начале работы, тем больше снизите этот риск. Запомните проверенный практикой принцип: «ошибайтесь рано, ошибайтесь быстро, ошибайтесь часто». Мы подробно обсудим важность ошибок позднее в этой книге.
Демонстрация результатов работы на ее ранних стадиях не только проверит идеи и предотвратит ваши ошибки. Но и увеличит то, что мы называем автобус-фактором проекта.
Автобус-фактор (сущ.): число участников проекта, которые должны быть сбиты автобусом, чтобы проект потерпел окончательный крах.
Каков автобус-фактор вашей команды?
До какой степени распределены знания и ноу-хау в вашем проекте? Если вы – единственный человек, который понимает, как работает код прототипа, это может быть хорошей подстраховкой от увольнения, но с другой стороны, если проект потерпит крах, то вас «собьет автобус». Работая с другом, вы удваиваете автобус-фактор. При наличии команды, которая проектирует и строит прототип общими усилиями, ситуация еще лучше: проект не закроется с исчезновением одного участника команды. Запомните: если участники команды не попадают под автобус в буквальном смысле, то это не исключает других непредсказуемых событий, происходящих в жизни. Кто-то может жениться или выйти замуж, переехать, уволиться или оказаться вынужденным ухаживать за заболевшим родственником. Необходимо обеспечивать успешный ход проекта в будущем, управляя его автобус-фактором.