Книга: Джоэл и снова о программировании
Назад: Глава первая. Мое первое «рецензирование БиллГ»
Дальше: Глава третья. Классификатор мест работы для программистов

Глава вторая. Как искать выдающихся

6 сентября 2006 года, среда

Куда подевались выдающиеся разработчики?

У вас впервые открылась вакансия, и вы пошли обычным путем, размещая повсюду объявления, изучая крупные сетевые сайты и получая тысячи резюме.
Просматривая их, вы замечаете: «Хе, этот может подойти», или: «Ни в коем случае!», или: «А смогу ли я убедить его переехать в Буффало?» Но вот чего никогда не случится — могу дать голову на отсечение, — так это что вы воскликнете: «Вот это специалист, просто золото! Мы должны получить его любой ценой!» На самом деле, вы можете прочесть тысячи резюме — если допустить, что вы знаете, как их читать (а это непросто), — и тысячи объявлений о поиске работы, но так никогда и не найти выдающегося программиста. Ни одного.
И вот почему.
Выдающиеся программисты — да и лучшие специалисты в любой отрасли — просто никогда не появляются на рынке.
В среднем, выдающийся программист может сменить за свою карьеру примерно четыре места работы.
Тот, что блестяще окончил колледж, попадает на стажировку благодаря своему профессору, имеющему связи с производством, а затем получает предложение от этой компании, даже еще не начав искать работу. Если он и уйдет из компании, то, скорее всего, только затем, чтобы открыть собст-
венное дело на пару с приятелем, или перейдет в другую компанию вместе с боссом, или ему очень захочется поработать, скажем, с Eclipse, потому что Eclipse — это круто, и он ищет работу с Eclipse в BEA или IBM, и, конечно, получит ее, потому что это действительно блестящий специалист.
Если вам повезет — по-настоящему повезет, то нужный вам человек может мелькнуть на свободном рынке — например, если его жена решит пройти интернатуру в Анкоридже, и он пошлет свое резюме в те немногие места в Анкоридже, которые сочтет достойными своего внимания.
Но большинство видных разработчиков (и это почти тавтология)... заметны среди других (OK, пусть будет тавтология), и будущие наниматели быстро замечают их выдающиеся качества, а это значит, что они, в сущности, могут работать там, где захотят, поэтому им нет нужды рассылать массу резюме или предлагать свои услуги во многих местах.
Хотели бы вы принять на работу такого человека? Наверняка.
Следствием закона, по которому выдающихся специалистов нет на рынке, является то, что рынок переполнен плохими — совершенно неквалифицированными — работниками. Их постоянно увольняют, потому что они не справляются со своими обязанностями. Их компании терпят неудачи — обычно из-за того, что кроме них в такой компании еще куча горе-программистов, — но иногда они оказываются настолько неквалифицированными, что способны довести компанию до краха и в одиночку. Да, бывает и так.
К счастью, таких на редкость неподготовленных людей редко берут на работу, но, продолжая искать ее, они идут на Monster.com и регистрируются на 300 или 1000 вакансий сразу в надежде выиграть в этой лотерее.
Выдающихся работников очень мало, и они никогда не появляются на рынке рабочей силы, в то время как некомпетентные работники, хотя и встречаются почти столь же редко, в течение своей трудовой карьеры пытаются устроиться в тысячи разных мест. Так что — возвращаясь к той кипе резюме, которые вы набрали на Craigslist, — не стоит удивляться, что большинство из них не от тех, кого вы хотели бы принять на работу.
Внимательный читатель, скорее всего, заметит, что я еще ничего не сказал о самой большой группе — о надежных и компетентных работниках. Их на рынке больше, чем выдающихся, но меньше, чем некомпетентных, и в целом несколько их резюме найдется в вашей пачке из 1000 штук, но обычно такая пачка, которая есть у каждого менеджера по подбору персонала в Пало-Альто, окажется все тем же набором из 970 резюме от тех же 970 некомпетентных, кто подает заявление на все вакансии, какие только есть в Пало-Альто, и может делать это всю жизнь, и только 30 резюме, которые вообще стоит рассматривать, и лишь изредка одно-два из них принадлежат выдающимся программистам. Найти эту иголку в стоге сена можно, но, как мы увидим, нелегко.

Можно их как-то найти?

Да!
Пожалуй, Можно!
Скажем так, Если Повезет.
Вместо процедуры «собрать резюме/отсеять резюме» следуйте процедуре «выследить лидеров и найти способ поговорить с ними».
У меня для этого есть три главных метода:
1. Поход в горы.
2. Производственная практика.
3. Создание собственного сообщества.*
(«Создание собственного сообщества» помечено у меня звездочкой как задача повышенной трудности — вроде той знаменитой математической проблемы, которую Джордж Данциг решил, потому что опоздал на занятие и не знал, что она считается неразрешимой.)
Конечно, у вас могут возникнуть собственные идеи. Я расскажу о том, что приносит успех мне.

На гору, Дживз!

Подумайте, где можно встретить людей, которых вы хотите принять на работу. В каких конференциях они участвуют? Где они живут? В какие организации входят? На каких веб-сайтах бывают? Не закидывайте большую сеть на Monster.com, лучше на сайте «Joel on Software» зайдите на форум, посвященный работе, ограничив поиски теми умными людьми, которые читают мой сайт. Посетите действительно интересные технические конференции. Выдающихся разработчиков для Маков вы найдете у Apple на WWDC. Выдающиеся программисты для Windows будут у Microsoft на PDC. Есть несколько хороших конференций open source.
Посмотрите, какие новые технологии сегодня в моде. В прошлом году это был Python, в этом — Ruby. Побывайте на соответствующих конференциях, и вы найдете там людей, которые интересуются новинками, любят быть первопроходцами и стремятся все усовершенствовать.
Покрутитесь в коридорах, заговаривая со всеми, ходите на технические совещания и после приглашайте выступавших на кружку пива, и если обнаружите кого-то толкового — АГА! — тут уж дайте волю флирту и безудержной лести. «Оо-о, как это интересно! — говорите вы. — Невероятно, до чего ты умен. И красив, к тому же. Я забыл, где ты работаешь? Где? Хммм... А ты не думал, что для тебя нашлось бы место получше? По-моему, у меня в компании сейчас ищут специалиста.»
Следствие из этого правила: не размещайте свои объявления на крупных широкопрофильных сайтах поиска работы. Как-то летом я случайно поместил на MonsterTRAK наше предложение летней практики, заплатив немного больше обычного за то, чтобы наше предложение было видно в каждой школе США. В итоге мы получили буквально сотни резюме, ни одно из которых не прошло во второй круг. Мы потратили кучу денег, получив кучу резюме практически без шансов найти тех людей, которые были нам нужны. После нескольких дней такой работы мне пришло в голову, что MonsterTRAK — не то место, откуда мы могли бы получить резюме нужного нам кандидата. Аналогично, когда Craigslist только появился, и его посетителями были пионеры интернет-индустрии, мы нашли замечательных людей, публикуя рекламу в Craigslist, но сегодня этим сайтом пользуются все, кто мало-мальски умеет обращаться с компьютером, поэтому оттуда поступает слишком много резюме, а соотношение иголка/сено слишком мало.

Производственная практика

Хороший способ перехватить выдающегося работника, которого нельзя найти на рынке труда, это найти его тогда, когда он еще и не подозревает о существовании такого рынка, — пока он еще учится.
Некоторые менеджеры против того, чтобы брать практикантов. Они считают, что те еще не сформировались и недостаточно квалифицированны. В известном смысле, это правда. У практикантов нет опыта, как у штатных работников (откуда ж ему у них взяться!). Они требуют больше внимания и только некоторое время спустя достигнут требуемого уровня. Правда, приятная особенность нашей профессии состоит в том, что многие выдающиеся программисты начинают писать программы в 10-летнем возрасте. И пока все их сверстники играют в футбол (это такая игра для тех, кто не умеет программировать; в ней нужно ударять ногой по круглому объекту под названием «мяч» — довольно странное занятие), они, забравшись в комнату отца, пытаются скомпилировать ядро Linux. Вместо того чтобы бегать за девчонками, они яростно доказывают в телеконференциях полную ущербность тех языков программирования, в которых отсутствует механизм вывода типов наподобие имеющегося в Haskell. Они не организовывают рок-группу в своем гараже — в это время они мастерят крутой хак, который перевернет вверх тормашками все изображения на вебстраницах у соседа, коварно подключавшегося к их беспроводной точке доступа Wi-Fi. БУ-ГА-ГА!
Так что, в отличие от таких областей, как, скажем, право или медицина, на втором или третьем году обучения в колледже эти ребята уже могут быть очень неплохими программистами.
Наверное, каждому приходится подавать заявление о приеме на работу — хотя бы одно, первое, и большинство молодых людей задумывается об этом только на последнем году обучения. При этом они, как правило, не особо мудрствуя, пишут заявление только тогда, когда в учебном городке случается какая-нибудь кампания по найму. В хороших колледжах студенты обычно получают достаточно хороших предложений работы от рекрутеров, охотящихся в студенческих городках, чтобы искать других работодателей, не затрудняющих себя присутствием в кампусах.
Вы можете принять участие в этом безумии, найме на работу в кампусах, — в чем, поймите меня правильно, нет ничего дурного, — либо пойти против этой системы, попытавшись заполучить толковых ребят за год или два до окончания ими учебы.
Подобный метод помог мне достичь больших успехов в Fog Creek. Каждый раз процедура начинается в сентябре, когда с помощью всех доступных мне ресурсов я начинаю охотиться за лучшими студентами факультетов вычислительной науки, имеющихся в стране. Я рассылаю письма по добрым двум сотням факультетов Computer Science. Я просматриваю все списки студентов по специальности CS, которым на тот момент предстоит еще два года учиться (скорее всего, чтобы получить эти списки, вам понадобится свой человек на факультете — преподаватель или студент). Затем я пишу личное письмо каждому обнаруженному мной студенту по специальности CS. Не электронное, а настоящее письмо на бланке Fog Creek с моей подписью. Очевидно, что им нечасто приходят такие письма, поэтому они не оставляют их без внимания. Я сообщаю, что у нас есть места для практикатов, и предлагаю подать заявление. Я посылаю электронные письма преподавателям CS и бывшим сокурсникам, которые обычно участвуют в каких-нибудь почтовых списках рассылки для обучающихся по специальности CS, куда они и пересылают мои письма.
В итоге мы получаем массу заявок на эту летнюю практику и можем выбирать. В последние годы я получал по 200 заявлений на каждое место практиканта. Обычно мы просеиваем эту кучу заявлений примерно до 10 на место и приглашаем оставшихся на телефонное интервью. Из тех, кто прошел телефонное собеседование, двоих-троих мы обычно приглашаем в Нью-Йорк для личной беседы, оплачивая расходы.
Ко времени личной беседы вероятность того, что тот или иной человек нам нужен, уже весьма высока, и тут начинается полноценная вербовка. В аэропорту их ждет лимузин с водителем в униформе, который, получив багаж, отвозит их в центр модного района, где по улицам в любое время суток разгуливают модели, в довольно крутой отель, которого они, возможно, в жизни не видели, а в ванной комнате там приспособления, как из Музея современного искусства (дай им бог справиться с зубной щеткой). В номере отеля кандидата ждет подарочный набор: фирменная футболка, маршрут пешеходной экскурсии по Нью-Йорку, составленный сотрудниками Fog Creek, и фильм о прошлогодней летней практике, уже заряженный в DVD-плеер, — и они тут же могут узнать, как приятно провели время их предшественники.
После собеседований, проводящихся в течение дня, мы предлагаем им остаться в Нью-Йорке на пару дней за наш счет, чтобы осмотреть город, а затем лимузин отвозит их обратно в отель, а после в аэропорт, откуда они возвращаются домой.
Даже если все проверки прошел только один из трех претендентов, добравшихся до личного собеседования, очень важно, чтобы у них остались положительные впечатления. Те, кто не прошел собеседование, вернутся в кампус с тем впечатлением, что мы — классный работодатель, и расскажут друзьям о шикарном отеле в Большом яблоке, и друзья подадут заявления на следующую летнюю практику — хотя бы ради приятного путешествия.
Собственно, во время этой летней практики студенты обычно задумываются: «OK, прекрасная работа на лето, полезный опыт и, может быть, чем черт не шутит, это закончится зачислением в штат». Мы смотрим немного дальше. Летом мы решаем, нужны ли они нам как постоянные работники, а они решают, хочется ли им работать в нашей фирме.
Мы даем им реальные задания. Трудные. Наши практиканты работают над реальным промышленным кодом. Иногда им достаются самые интересные новые задачи, чему могут завидовать некоторые постоянные сотрудники, но это жизнь. Однажды летом у нас было четыре практиканта, которые сделали совершенно новый продукт с нуля. Эта практика окупила себя за считанные месяцы. Даже если продукт, над которым они работают, не совсем новый, они пишут реальный код, поставляемый клиенту и обеспечивающий какую-нибудь важную функцию, за которую они полностью отвечают лично (разумеется, не без помощи опытных наставников).
Кроме того, мы стараемся, чтобы они хорошо провели время. Мы устраиваем вечеринки и дни открытых дверей. Мы бесплатно поселяем их в довольно милом местечке неподалеку, где они могут познакомиться со сверстниками из других компаний или учебных заведений. Каждую неделю у нас проводится какой-нибудь общественное мероприятие или культпоход: Бродвейский мюзикл (в этом году они были в восторге от «Avenue Q»), кинопремьера, музейная экскурсия, водная прогулка вокруг Манхэттена, посещение матча Yankees. Не поверите, но в этом году огромным успехом пользовалось «восхождение на скалу» (то есть на крышу какого-нибудь высотного здания на Манхэттене). Никто представить не мог, что это восхождение способно вызвать у них такой душевный подъем. В каждом таком мероприятии участвуют несколько сотрудников Fog Creek.
В конце лета всегда найдется несколько практикантов, сумевших убедить нас в том, что они из тех замечательных программистов, которых мы просто обязаны взять. Подчеркиваю: не всех. Кто-то из них — отличный программист, таких мы готовы принять, а прочие могут прекрасно проявить себя где-то еще, помимо Fog Creek. К примеру, в нашей компании сильно развито самоуправление и у нас мало менеджеров среднего звена, поэтому мы предполагаем, что наши сотрудники работают самостоятельно. За всю историю летней практики нам пару раз встречались практиканты, которые прекрасно работали под чьим-то руководством, но в Fog Creek, без достаточного контроля, они бы не справились.
Если мы действительно хотим кого-то принять на работу, то нет смысла тянуть с этим. Мы делаем предварительное предложение о приеме на полный рабочий день при условии, что сначала они закончат учебу. Это щедрое предложение. Мы хотим, чтобы они вернулись к себе в колледж, поговорили со своими друзьями и поняли, что предлагаемое им начальное денежное вознаграждение выше, чем у кого бы то ни было.
Не переплачиваем ли мы им? Нисколько. Дело в том, что при назначении жалованья принимаемому работнику обычно учитывают риск того, что он окажется бесполезен. Но мы уже проверили этих ребят и знаем, что они могут работать, так что риска нет. Мы знаем, на что они способны. Поэтому, принимая их на работу, мы знаем их лучше, чем любой другой предприниматель, у которого есть одни только данные собеседования. Следовательно, мы можем платить им больше. Мы лучше информированы, поэтому и готовы платить больше, чем работодатели, не владеющие такой информацией.
Если мы хорошо постарались, как обычно и бывает, то к этому моменту наш практикант легко принимает предложение. Иногда требуются дополнительные меры убеждения. Порой им трудно отказаться от других возможностей, но благодаря тому, что предложение Fog Creek остается в силе, когда им потребуется встать в 8 утра и надеть костюм для собеседования в Oracle, весьма вероятно, что, проснувшись по звонку будильника, они скажут себе: «А какого черта мне вставать в 8 утра, надевать костюм и идти в Oracle, если меня и так ждет отличная работа в Fog Creek?!» И, надеюсь, они так и не доберутся до этого собеседования.
Прежде чем продолжить, я должен дать некоторые разъяснения относительно практики в области вычислительной науки и разработки программного обеспечения. Сегодня в нашей стране работа практикантов повсеместно оплачивается, и выплачиваемое жалование обычно достаточно привлекательно. В различных других областях — от издательской деятельности до музыки — практика чаще бесплатная, мы же платим 750 долларов в неделю плюс оплачиваем проживание, обед и проезд на метро, не говоря об оплате переезда и прочих выгодах. Сумма в долларах несколько ниже средней, но зато бесплатно предоставляется жилье, поэтому в итоге условия несколько выше средних. Я решил сказать об этом, потому что всякий раз, когда я рассказываю о практике на своем сайте, кто-нибудь обязательно неправильно понимает меня и заключает, что я получаю прибыль за счет рабского труда или что-то в этом роде. Эй ты, салага! Ну-ка отожми мне холодного апельсинового сока, да поживее!
Программа производственной практики создает конвейер, по которому мы получаем отличных работников, но это достаточно долгий конвейер, и многие теряются по дороге. Обычно мы исходим из того, что для получения одного полноценного работника нам нужно пригласить двух практикантов, и если брать на практику тех, кому осталось год учиться, то между началом набора и временем, когда они впервые выйдут на работу в качестве сотрудника компании, пройдет два года. В результате, каждое лето мы набираем столько практикантов, что в наших офисах почти не остается свободного места. Первые три года мы старались брать на практику только тех, кому осталось учиться один год, но стало понятно, что так мы теряем часть более юных способных студентов, поэтому была открыта программа для студентов любого года обучения. Я подумываю даже над тем, как нам привлечь старшеклассников, — к примеру, установить компьютеры, на которых после уроков они могли бы зарабатывать на колледж, -чтобы войти в контакт с новым поколением выдающихся программистов -даже если конвейер растянется до шести лет. Я далеко смотрю.

Создание сообщества (*трудная задача)

Идея заключается в том, чтобы создать большое сообщество сходно мыслящих толковых программистов, которые каким-то образом объединятся вокруг вашей компании, так, чтобы у вас появилась группа людей, к которой можно автоматически обратиться при появлении вакансии.
По правде говоря, именно так мы нашли многих замечательных сотрудников для Fog Creek: с помощью моего личного сайта «Joel on Software» (joelonsoJtware.com). Главные статьи с этого сайта прочли, наверное, миллионы людей, большинство из которых занимается в том или ином качестве разработкой программного обеспечения. При такой огромной и отборной аудитории мне достаточно написать на главной странице, что нужен определенный работник, и обычно я получаю приличную пачку очень хороших резюме.
Эта категория помечена звездочкой, что означает «трудная задача», потому что такой совет похож на рекомендацию «чтобы выиграть конкурс красоты: а) станьте красивой, и б) примите участие в конкурсе». Дело в том, что я не вполне понимаю, почему мой сайт стал так популярен и отчего его посетители — лучшие программисты.
Увы, ничем больше в этом деле я вам помочь не могу. Дерек Поважек (Derek Powazek) написал на эту тему хорошую книгу «Design for Community: The Art of Connecting Real People in Virtual Places» («Проект сообщества: искусство соединения реальных людей в виртуальных местах»), New Riders, 2001. Многие компании пробовали различные стратегии блогинга, но, к сожалению, им не всегда удавалось собрать подходящую аудиторию, поэтому предупреждаю, что те средства, которые оказались действенными для нас, вам могут не подойти, и я не знаю, что вам посоветовать. Я открыл сайт по занятости (jobsjoelonsoftware.com), где за 350 долларов вы можете дать объявление о работе, которое увидят посетители сайта «Joel on Software».

Рекомендация от сотрудника: скользкое дело

Стандартный совет по поиску выдающихся программистов — спросить у тех, кто уже работает у вас. При этом предполагается, что раз сами они толковые программисты, то и их знакомые — тоже толковые программисты.
Может, и так, но ведь они дружат и с теми, кто не очень силен как разработчик, и за всем этим кроется масса подводных камней, поэтому подбор кадров по рекомендации своих сотрудников я назвал бы одним из самых ненадежных способов.
Большой риск, конечно, связан с договорами об отказе от конкуренции. Если вы не задумывались об их значении, то вспомните случай с Crossgain, которой пришлось уволить четверть своих сотрудников, бывших работников Microsoft, когда та пригрозила судебными исками. Ни один программист, находясь в здравом уме, не должен подписывать договор об отказе от конкуренции, но большинство делают это, не веря, что его когда-либо пустят в ход, или потому, что не читают контракты, которые подписывают, или потому, что, приняв предложение о работе, уже перевезли семью с другого конца страны, а договор этот увидели только в первый день выхода на работу, и торговаться было уже поздновато. Поэтому они подписывают его, и это одна из самых гнусных уловок работодателей, потому что таким договорам можно дать законный ход, что часто и делается.
Договоры об отказе от конкуренции чреваты тем, что, принимая на работу по рекомендации своих сотрудников целую команду от одного работодателя, у которого, как вам сказали, есть классные программисты, вы серьезно рискуете.
Другая проблема связана с тем, что если у вас есть хоть какая-то система отсева кандидатов, то когда вы попросите своих сотрудников найти кого-нибудь среди их знакомых, они не предложат вам своих настоящих друзей. Никто не станет убеждать друга подать заявление о приеме на работу, если есть риск, что тому откажут и в результате пошатнется дружба.
Поскольку они не станут рассказывать вам о своих друзьях, а нанимать тех, с кем они раньше работали, рискованно, рассчитывать на обилие рекомендаций не приходится.
Но настоящая проблема со знакомыми сотрудников возникает у тех менеджеров, которые, не имея элементарных понятий об экономике, предлагают за такие рекомендации денежные премии. Такой подход не так уж редок. Расчет тут такой: если для поиска хорошего программиста воспользоваться услугами хедхантера или рекрутинговой компании, это обойдется примерно в 30-50 тысяч долларов. Если же мы заплатим своему работнику 5000 долларов за каждого, кого он приведет, или подарим дорогую машину за десяток рекомендаций, или расплатимся еще каким-то способом, то изрядно сэкономим. А 5000 сидящему на жаловании работнику кажутся немалыми деньгами. И впечатление такое, что все в выигрыше.
Беда в том, что внезапно вы обнаруживаете, как все завертелось, и ваши сотрудники тащат на интервью всех, кого только вспомнят, и у них есть сильный стимул для того, чтобы этих людей приняли, поэтому кандидатов натаскивают для прохождения собеседования, а в конференц-залах шепчутся с интервьюерами, и каждый из ваших сотрудников почему-то хочет, чтобы на работу взяли какого-нибудь соседа по общежитию, который вам совсем не нужен.
И этот метод не работает. Фирма ArsDigita прославилась тем, что купила и поставила на свою стоянку Ferrari, объявив, что получит машину тот, кто приведет 10 новых сотрудников. Никто даже не приблизился к такому результату, качество вновь принятых работников пошло на убыль, а компания прекратила свое существование, хотя, возможно, и не из-за Ferrari, который, как оказалось, был взят напрокат лишь для рекламного трюка.
Когда кто-то из сотрудников Fog Creek рекомендует нам «идеального работника», мы можем отменить только первичное телефонное собеседование. Обычно мы требуем, чтобы он прошел все собеседования, поскольку стремимся сохранить наши традиционно высокие стандарты.

Классификатор рабочих мест для программистов

На что ориентируются разработчики при поиске работы? Почему для них одно рабочее место привлекательнее другого? Как стать желанным работодателем для программистов? Читайте дальше!

 

Назад: Глава первая. Мое первое «рецензирование БиллГ»
Дальше: Глава третья. Классификатор мест работы для программистов