Книга: Джоэл и снова о программировании
Назад: Глава вторая. Как искать выдающихся
Дальше: Глава четвертая. Три способа управления (введение)

Глава третья. Классификатор мест работы для программистов

7 сентября 2006 года, четверг

 

К сожалению, вы можете дать объявления во всех нужных местах, организовать практику на самых лучших условиях, провести собеседование со всеми, с кем только пожелаете, но если выдающиеся программисты не захотят у вас работать, они не станут у вас работать. Данная глава служит своего рода определителем разработчиков: к чему они стремятся, что им нравится и не нравится на рабочем месте, и что нужно сделать, чтобы стать лучшим выбором для лучших программистов.

Личные кабинеты

В прошлом году я был в Йеле на конференции по вычислительным наукам. Один из выступавших, ветеран Силиконовой долины, бывший основателем или руководителем солидного списка стартапов с венчурным капиталом, показал присутствующим книгу «Peopleware» («Человеческий фактор») Тома Демарко (Tom DeMarco) и Тимоти Листера (Timothy Lister), Dorset House, 1999.
«Вам знакома эта книга, — сказал он. — Это библия управления софтверной компанией. Это самая важная из всех существующих книг об управлении софтверными компаниями».
Я согласен, «Peopleware» — выдающаяся книга. Одна из наиболее важных и спорных тем этой книги — утверждение о том, что высокую продуктивность программистов можно получить, только обеспечив им достаточ-
но места и тишину — по возможности, отдельные кабинеты. Авторы много рассуждают на эту тему.
Когда оратор закончил выступление, я подошел к нему.
— Согласен с вами насчет «Peopleware», — сказал я. — Скажите, пожалуйста, во всех ваших стартапах у программистов были отдельные кабинеты?
— Разумеется, нет, — отвечал он. — Капиталисты никогда не пошли бы на это.
Н-да.
— Но ведь это одна из важнейших тем этой книги, — сказал я.
— Да, но нужно оценивать свои силы. Венчурный капиталист просто решит, что вы пускаете его деньги на ветер.
В Силиконовой долине всегда считали, что надо запихнуть множество программистов в один большой зал, хотя я неоднократно приводил на своем сайте убедительные свидетельства того, что отдельные кабинеты значительно повышают их продуктивность. Кажется, я никого не убедил, потому что программисты любят общаться, даже в ущерб производительности, стало быть, моя задача оказалась неподъемной.
Мне даже приходилось слышать от программистов: «Да, мы работаем в кабинках, но так работают все, даже шеф!»
— Шеф? Ваш CEO работает в кабинке?
— Ну, у него кабинка, но, раз уж вы заговорили об этом, есть и большой конференц-зал, где он проводит все важные совещания...
Да-да. Типичное для Силиконовой долины явление: CEO демонстративно работает в кабинке, как простой смертный, хотя есть вот эта комната для совещаний, которую он обычно приватизирует («только на случай конфиденциальных переговоров», хотя, как ни идешь мимо, — вечно он там сидит один и болтает по телефону с приятелем из гольф-клуба, при этом его штиблеты Cole Haan парят над столом для совещаний).
Тем не менее сейчас мне не хочется опять пускаться в рассуждения о том, почему благодаря отдельным кабинетам программисты работают продуктивнее, или почему когда программист надевает противошумные наушники, качество его работы, как оказалось, падает, и почему в действительности устройство отдельных кабинетов для программистов не требует таких уж больших дополнительных расходов. Все это я уже говорил. Сегодня речь пойдет о найме работников и роли отдельных кабинетов в этом деле.
Что бы вы ни думали относительно производительности и равных условий работы, бесспорны две вещи:
1. Отдельные кабинеты котируются выше.
2. Кабинки и прочие виды совместно используемого пространства могут вызывать социальный дискомфорт.
Из этих двух фактов я делаю вывод, что программисты предпочитают ту работу, где им предоставляется отдельный кабинет, особенно с дверью и хорошим видом из окна.
Сложность в том, что некоторые решения, способные облегчить вам задачу привлечения новых сотрудников, не всегда зависят именно от вас. Даже у главы фирмы и ее соучредителей может не быть отдельных кабинетов, если они зависят от венчурного капиталиста. В большинстве компаний переезд на новое место или реорганизация пространства происходят не чаще, чем раз в 5-10 лет. Небольшие начинающие компании не всегда могут позволить себе устроить отдельные кабинеты. Поэтому, как я убедился, отговорок находится столько, что практически нигде, кроме наиболее передовых компаний, вы не найдете отдельных кабинетов для программистов, и даже там решение о том, куда переезжать и где будут работать люди, принимается раз в 10 лет комиссией в составе секретаря офисменеджера и скромного сотрудника архитектурной фирмы, которому в колледже напели о том, что открытые пространства — это открытые компании или что-то в этом роде — практически без какого-либо участия самих разработчиков.
Это довольно позорное явление, и я буду с ним бороться, а между тем проблема отдельных кабинетов решаема: мы, как правило, обеспечивали отдельными кабинетами всех своих программистов, работающих на полной ставке, даже в Нью-Йорке, где арендная плата одна из самых высоких в мире, и, безусловно, благодаря этому людям гораздо приятнее работать в Fog Creek, так что если все против — так и быть, пусть это конкурентное преимущество остается за мной.

Физическое рабочее пространство

Физическое рабочее пространство не ограничивается отдельным кабинетом. Придя в компанию на собеседование, кандидат осматривается, замечая, как работают люди, и пытаясь представить себя в этой среде. Если офис выглядит приятно: светлый, расположен в хорошем районе, все новое и чистое — у кандидата возникают приятные мысли. Тесный офис с затоптанными полами и некрашеными стенами, на которых развешаны плакаты с изображением команды гребцов и надписью крупным шрифтом МЫ ОДНА КОМАНДА, порождает мысли в духе Дилберта.
Многие технические специалисты удивительно мало внимания обращают на общее состояние своего офиса. Даже те, кто ценит офисный комфорт, могут не замечать отдельные недостатки собственного офиса, поскольку вполне к ним привыкли.
Поставьте себя на место кандидата, который к вам пришел, и ответьте честно:
Что он подумает о местонахождении фирмы? Как Буффало выглядит в сравнении, скажем, с Остином? Захочется ли кому-то переехать в Детройт? Если вы располагаетесь в Буффало или Детройте -не попробовать ли хотя бы проводить собеседования в сентябре?
Что видит тот, кто приходит к вам в офис? Восхитительное чистое помещение? Фойе с пальмами и фонтаном — или нечто похожее на бесплатную зубную клинику в трущобах, с засохшим букетом и старыми номерами «Newsweek»?
Как выглядит ваше рабочее место? Все новенькое и блестит? Или у вас все еще висит гигантский пожелтевший плакат TEAM BANANA, распечатанный матричным принтером на перфорированной бумаге в те годы, когда еще существовали такие понятия, как перфорированная бумага и матричные принтеры?
Какие у вас рабочие столы? Что на столах у программистов — несколько больших плоских экранов или один электронно-лучевой монитор? Какие стулья — Aeron или Staples Special?
Пара слов о знаменитых офисных креслах Aeron, которые выпускает Herman Miller. Стоят они около 900 долларов. Это на 800 долларов дороже дешевого офисного кресла, купленного в Office Depot или Staples.
Они гораздо удобнее дешевых кресел. Если правильно выбрать размер такого кресла и отрегулировать его, можно легко просидеть на нем целый день. Спинка и сиденье сделаны из сетки и пропускают воздух, поэтому не потеешь. Превосходная эргономичность, особенно у последних моделей с опорой для поясницы.
Они долговечнее дешевых кресел. Они у нас уже шесть лет и выглядят как новенькие — предлагаю всем сравнить те, которые мы купили в 2000 году и три месяца назад. Они легко продержатся десяток лет. Дешевые кресла начинают разваливаться буквально через месяцы. За то время, что прослужит Aeron, кресла по 100 долларов придется сменить как минимум четырежды.
Стало быть, Aeron обойдется вам всего в дополнительные 500 долларов на десять лет, или по 50 долларов в год. Доллар в неделю на программиста.
Рулон хорошей туалетной бумаги стоит примерно доллар. На каждого вашего программиста нужен примерно рулон в неделю.
Следовательно, переход на кресла Aeron обойдется буквально во столько же, сколько фирма тратит на туалетную бумагу, и, поверьте, если вы придете в бюджетную комиссию с заявкой на туалетную бумагу, вам строго укажут, чтобы вы не отвлекали людей пустяками.
К сожалению, за креслом Aeron закрепилась репутация неэкономности, особенно для начинающих компаний. Оно почему-то стало символом бездарно растраченных во время дотком-бума капиталов, что несправедливо, поскольку с учетом долговечности оно не так уж дорого. В самом деле, ведь в нем проводишь по восемь часов в день, так что даже самые навороченные модели с поддержкой поясницы и этим чертовым хвостовым оперением кажутся такими дешевыми, что, покупая их, практически получаешь прибыль.

Игрушки

Та же логика применима и к другим игрушкам, которыми пользуются разработчики. Нет никаких причин не купить для них лучшие модели компьютеров, хотя бы пару больших (21 дюйм) ЖК-дисплеев (или один 30-дюймовый), и предоставить свободу заказывать на Amazon.com любую нужную им техническую литературу. Очевидно, что это повышает их продуктивность. Но сейчас, когда мы обсуждаем, как набирать работников, важнее как раз то, что такие вещи производят впечатление на кандидатов, особенно в условиях, когда большинство компаний относится к программистам как к расходному материалу или как к машинисткам — «Ну зачем им большой монитор, и чем плоха 15-дюймовая трубка? Вот когда я был молодым...» и т. д.

Общественная жизнь программистов

Разработчики программ не столь уж сильно отличаются от обычных людей. Разумеется, мне известно распространенное представление о программистах как о гиках с синдромом Аспергера, которым совершенно чуждо межличностное общение, но это совсем не так. Даже гиков с синдромом Асперегера интересуют социальные аспекты их рабочего места, рассмотренные ниже.

Как организация относится к программистам?

Как к искусным мастерам или как к простым машинисткам? Есть ли в руководстве компании инженеры или бывшие программисты? Если разработчики летят на конференцию, оплачивают ли им первый класс? (Можете считать это пустой тратой денег. Звезды летают первым классом. Привыкайте к этому.) Если они прилетают на собеседование, присылают ли за ними лимузин или они должны самостоятельно добираться до офиса? При всех прочих равных условиях разработчики предпочтут организацию, которая носится с ними как со звездами. Если ваш президент — ворчливый выходец из отдела продаж, которому непонятно, почему эти примадонны от программирования постоянно требуют себе то подушечки под запястья, то большие мониторы, то удобные кресла — кем они себя возомнили?! — вашей компании, скорее всего, требуется корректировка поведения. Выдающиеся разработчики не станут работать у вас, если вы не будете относиться к ним с уважением.

Что представляют собой их коллеги?

Большое внимание программисты, прибывающие на собеседование, обращают на то, с какими людьми они встречаются в этот день. Приятно ли с ними общаться? Еще важнее: умны ли они? Когда-то я проходил летнюю практику в Bellcore, дочерней компании Bell Labs, и все, с кем я встречался, повторяли одно и то же: самое замечательное в Bellcore — это люди, с которыми там работаешь.
Поэтому если у вас есть хмурые программисты, от которых вам никак не избавиться, хотя бы не привлекайте их к участию в собеседованиях, а веселых и общительных включите обязательно, если такие есть. Имейте в виду, из-за того, что кандидат встречал в вашей компании одни лишь угрюмые лица, он не вспомнит о ней с теплом, когда вернется домой и будет решать, где ему работать.
Кстати, сначала мы в Fog Creek руководствовались при приеме программистов заимствованным у Microsoft правилом «Smart, and Gets Things Done» (умный и доводит дело до конца). Но еще не приступив к делу, поняли, что нужно добавить еще одно условие: «Not a jerk 5» (порядочный). Припоминаю, что для получения работы в Microsoft это требование не было обязательным; хотя, уверен, там стали бы разглагольствовать о том, как важны добрые отношения между людьми, но, тем не менее, никому не отказали бы в приеме на работу лишь по той причине, что он наглец. На самом деле, иногда похоже на то, что отсутствие порядочности — нечто вроде пропуска в высшее руководство. С точки зрения бизнеса, это не такой уж недостаток, а с точки зрения приема новых работников — да, потому что кто же захочет работать в компании, где терпят наглецов?

Независимость и самостоятельность

Когда в 1999 году я уходил из Juno, — перед тем, как создать Fog Creek Software, — в отделе кадров провели со мной стандартное собеседование в связи с увольнением, и тогда я поддался соблазну расказать кадровику об ошибках руководства компании — не сомневаясь, что это лишь повредит мне, я, тем не менее, высказал все, упирая на свойственный Juno стиль «молниеносного» управления. Обычно менеджеры не мешали людям спокойно делать свое дело, но временами они вдруг влезали в самые мелкие детали, требуя сделать что-то в точности так, как они хотят, а потом, не дожидаясь нелепых результатов выполнения своих указаний, перескакивали к следующей задаче микроуправления. Помню, например, особо досадный эпизод, когда в течение двух-трех дней все, от непосредственного начальника до главы компании, указывали мне, как должны вводиться даты в форме для регистрации на сайте компании. Они не были специалистами по пользовательскому интерфейсу, но и не стремились обсудить со мной проблему, чтобы понять, почему в данном случае прав я, и все было бесполезно: руководство не отступалось от проблемы, не внимая при этом моим доводам.
В принципе, собираясь нанимать толковых работников, вы должны быть готовы дать им возможность проявить свое мастерство в работе. Менеджеры могут давать советы, что приветствуется, но они должны тщательно следить за тем, чтобы их «советы» не воспринимались как приказы, потому что в любом техническом вопросе руководство, как правило, разбирается хуже, чем рядовые сотрудники, особенно если, как я сказал, вы наняли толковых людей.
Разработчики хотят наниматься в качестве профессионалов, чтобы, признавая их мастерство, им позволяли принимать решения в той области, где они являются специалистами.

Никакой политики

Фактически, политика появляется всюду, где собирается вместе больше двух человек. Это естественно. Говоря «никакой политики», я имею в виду «никакой нездоровой политики». У программистов очень острое чувство справедливости. Код либо работает, либо нет. Нет смысла спорить, есть ошибка или нет, поскольку это определяется путем тестирования кода. Мир программирования очень справедлив и строго упорядочен, и многие приходят в программирование в первую очередь потому, что хотят пребывать в справедливой и добропорядочной среде, где ценятся заслуги, а в споре побеждает тот, кто действительно прав.
И такую среду вы должны создать, если хотите заполучить программистов. Когда программист жалуется на «политику», совершенно ясно, что он имеет в виду ситуацию, в которой личные предпочтения доминируют над технической целесообразностью. Ничто так не возмущает разработчика, как указание использовать определенный язык программирования (не самый подходящий для решаемой задачи) только потому, что этот язык нравится начальнику. Ничто так не бесит, как карьерное продвижение благодаря умелым интригам, а не личным достоинствам. Ничто так не удручает программиста, как необходимость реализовать технически слабое решение, на котором настаивает кто-то вышестоящий или обладающий личными связями с руководством.
Ничто не приносит такого удовлетворения, как победа в споре благодаря техническим аргументам, особенно если политическая обстановка угрожала поражением. Когда я начал работать в Microsoft, основной разработкой там был неудачный проект под названием MacroMan, посвященный созданию графического языка макропрограммирования. Этот язык стал бы сплошным разочарованием для профессиональных программистов, потому что его графическая природа не позволяла создавать циклы и условные операторы, да и непрограммистам он бы не очень помог, потому что они, по моему мнению, не привыкли мыслить алгоритмически и вообще ничего не поймут в MacroMan. Когда я поведал об этом своему начальнику, он сказал мне: «Этот паровоз тебе не остановить. И не пытайся». Но я продолжал доказывать, и доказывать, и доказывать — а ведь я был вчерашний студент, и едва ли у кого-то в Microsoft было меньше личных связей, чем у меня тогда, — в конечном итоге к моим аргументам прислушались, и проект MacroMan был закрыт. Неважно, кем я был, — важно, что я был прав. Такая неполитическая обстановка очень радует программистов.
В конечном счете, забота о социальной динамике вашей организации имеет решающее значение для создания здоровой, комфортной рабочей обстановки, которая удержит ваших программистов и привлечет новых.

Над чем я работаю?

Иногда можно привлечь новых разработчиков, предложив им интересную задачу Но выбор задачи не всегда в ваших силах: если вы разрабатываете программное обеспечение для производства песка и гравия, то не сможете выдать себя за крутой новый веб-проект, чтобы привлечь программистов.
Еще программистам может понравиться, если им предлагают работать над достаточно простыми и популярными вещами, о которых можно поговорить с тетушкой Ирмой, навестив ее в День благодарения. Тетушка Ирма, вестимо, физик-ядерщик и не очень-то понимает в программировании на Ruby для песчаных карьеров.
Наконец, для многих сотрудников важна общественная значимость компании, где они работают. Работа в компании, поддерживающей социальную сеть или блог, помогает людям общаться и не загрязняет окружающую среду, поэтому пользуется популярностью, тогда как работа в военной промышленности или в сомнительных с этической точки зрения компаниях, известных финансовыми махинациями, менее популярна.
К сожалению, я не уверен, что смог бы подсказать обычному менеджеру, как использовать данный фактор для привлечения новых работников. Можно попытаться изменить номенклатуру продукции, включив в нее что-то «крутое», но ваши возможности здесь ограничены. Тем не менее вот ряд приемов, которые применяют некоторые компании, пытаясь действовать в этом направлении:

Позвольте лучшему из кандидатов самому выбрать проект

Долгие годы в Oracle Corporation существовала программа MAP (Multiple Alternatives Program — программа нескольких альтернатив). Она предлагалась выпускникам колледжей, которые считались лучшими кандидатами в каждом классе. Идея заключалась в том, что они могли прийти в Oracle, потолкаться там неделю-другую, посещая все группы, где есть свободные места, а потом выбрать из них ту, где им больше понравилось.
Думаю, идея была хорошей, но только в Oracle знают, оказалась ли она успешной.

Применяйте крутые новые технологии не только по необходимости

Крупные инвестиционные банки Нью-Йорка считаются достаточно суровыми местами для программистов. Условия работы ужасны: долгий рабочий день, шум, тираническое начальство; программисты здесь явно граждане третьего сорта, тогда как элитой считаются лопающиеся от тестостерона человекообразные, которые продают финансовые инструменты, получая премии по 30 000 000 долларов и обжираясь чизбургерами (за которыми могут послать оказавшегося поблизости программиста). Таков стереотип, и удержать лучших программистов инвестиционные банки могут двумя способами: платить им кучу денег и дать возможность почти бесконечно переписывать все заново на тех модных языках программирования, которые им понравятся. Хочешь переписать все приложение торгов на Lisp? Да на чем угодно. Только принеси мне чертов чизбургер.
Некоторым программистам совершенно безразлично, на каком языке писать, но большинство с восторгом отнесется к возможности поработать с интересными новыми технологиями. Сегодня это может быть Python или Ruby on Rails; три года назад это был C#, а еще раньше — Java.
Я вовсе не отговариваю вас использовать для каждой задачи лучший инструмент и не предлагаю каждые два года переписывать приложение на самом модном языке, но если вы изыщете возможность дать разработчикам поработать с новыми языками, средами и технологиями, они будут счастливы. Даже если вы не рискнете переписать свое базовое приложение — что мешает запустить учебный проект и переписать внутрифирменные инструменты или менее критичные приложения на каком-нибудь замечательном новом языке?

Могу ли я отождествить себя с компанией?

Большинству программистов не свойственно браться за любую работу, лишь бы она позволяла оплачивать жилье. Они не ищут «работу без сверхурочных»: они хотят, чтобы их работа имела смысл. Они хотят отождествлять себя со своей компанией. Молодых программистов в особенности привлекают идеологические компании. Множество компаний имеют какое-то отношение к open source или к движению за свободное программное обеспечение (это не одно и то же), и это может оказаться привлекательным для идеалистически настроенных программистов. Другие компании поддерживают какие-нибудь общественные начинания или производят продукт, который можно воспринимать или изображать как приносящий пользу обществу.
Набирая сотрудников для своей компании, вы должны определить ее идеалистические аспекты и постараться ознакомить с ними кандидатов.
Некоторые компании даже пытаются создать собственное идеологическое движение. Начинающая чикагская компания 37signals активно рекламирует себя как сторонницу идеи простоты: простые и удобные приложения вроде Backpack, простая и удобная программная среда Ruby on Rails.
Для 37signals простота — это «-изм», практически международное политическое движение. Простота — это не так просто, о нет, это лето, прекрасная музыка, мир, справедливость, счастье и прелестные девушки с цветами в волосах. Создатель Rails Д. Х. Хэнссон (David Heinemeier Hansson) называет это идеей «красоты, счастья и движущей силы. Гордость и наслаждение своей работой и своими инструментами. Это не каприз, это тенденция. Это идея, побуждающая разработчика искренне и без смущения говорить о страсти и энтузиазме, потому что он действительно любит то, что делает» (www.loudthinking.com/arc/2006_08.htm!). Вознесение среды программирования веб-приложений на уровень «красоты, счастья и движущей силы» может показаться высокомерием, но это весьма привлекательно и явно выделяет компанию среди других. Идея Ruby on Rails, преподнесенная как Счастье, практически гарантирует, что хотя бы некоторые из разработчиков постараются найти работу, связанную с Ruby on Rails.
Но 37signals — новички в таких приемах отождествления. Они и в подметки не годятся Apple Computer, которая в 1984 году с помощью одного лишь рекламного ролика во время розыгрыша Суперкубка умудрилась утвердить и сохранить до сего дня свое положение как относящейся к контркультуре силы, ведущей борьбу за свободу против диктатуры, за вольность против угнетения, за цветную картину против черно-белой, за красивых женщин в ярко-красных шортах против безликих мужчин в костюмах. Боюсь, что последствия до смешного напоминают Оруэлла: гигантские корпорации манипулируют своим имиджем в обществе при помощи абсурдных средств (если это компьютерная компания — то причем тут борьба с диктатурой?) и успешно создают культуру отождествления, при которой покупатели во всем мире чувствуют, что приобретают не просто компьютер, а долю в общественном движении. Ну да, покупая iPod, вы, конечно, поддерживаете борьбу Ганди с британским колониализмом. Каждая покупка MacBook — это выступление против диктатуры и голода!
Как бы то ни было. Сделайте глубокий вдох... Цель этого раздела — побудить вас задуматься о том, что представляет собой ваша компания, как она выглядит в данное время со стороны и какой могла бы быть. Ваш корпоративный бренд так же важен для набора сотрудников, как и для маркетинга.

Что не волнует программистов

Их фактически не волнуют деньги — до того момента, когда вы испортите им жизнь чем-то другим. Если вдруг пошли жалобы на зарплату, чего раньше не бывало, обычно это признак того, что людям перестала нравиться их работа. Если кандидаты на работу требуют непомерных окладов, отказываясь снизить свои требования, не исключено, что при этом они думают: меня будет тошнить от этой работы, но я потерплю, если они мне хорошо заплатят.
Это не значит, что можно недоплачивать своим работникам, потому что они стремятся к справедливости и придут в ярость, узнав, что разным людям платят разное жалование за одинаковую работу или что в вашей фирме всем платят на 20% меньше, чем в точно такой же фирме за углом, и тогда деньги превратятся в серьезную проблему. Вы должны платить согласно общепринятым расценкам, но при всем при этом среди факторов, которые оценивают программисты, выбирая место работы, зарплата, если она достаточно справедлива, занимает далеко не первое место, и предложение высокой зарплаты оказывается удивительно неэффективным средством компенсации таких проблем, как 15-дюймовые мониторы для программистов, постоянное хамство агентов по сбыту и то, что работа связана с изготовлением ядерного оружия из бельков.

 

***

5 У этого слова много сленговых значений, в том числе «наглец», «негодяй» и «придурок». — Прим. перев.

 

Назад: Глава вторая. Как искать выдающихся
Дальше: Глава четвертая. Три способа управления (введение)