Все права на текст принадлежат автору: Эд Салливан.
Это короткий фрагмент для ознакомления с книгой.
Время — деньги. Создание команды разработчиков программного обеспеченияЭд Салливан

Эд САЛЛИВАН ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения

Посвящается Джейн, Мэту и Ханне — тем, кого я люблю и буду любить всегда;

и всем сотрудникам, работавшим и работающим в NuMega: без вас эта книга никогда не появилась бы на свет.

Предисловие

Предупреждаю: эта книга особенная. Управлению проектами посвящено множество книг. Здесь же речь пойдёт о реальных приёмах создания и выпуска программ, причём особое внимание уделяется ситуации начинающей организации. Своевременный выпуск продукта — единственное, что имеет значение в этом бизнесе, поэтому книга сосредоточена на решении этой задачи. Её автор — не просто счастливчик, которому повезло выпустить удачную программу. Под его руководством был выпущен целый ряд замечательных программ, но важнее всего, что он воспитал плеяду менеджеров, повторивших его успех. Ими создано столько программ, сколько большинству организаций даже не снилось. В этой отрасли практически невозможно воспитать менеджера проекта, умеющего успешно работать. Однако Эд многократно справлялся с этой трудной задачей, и в этой книге вы найдёте те методики, которые он передавал своим ученикам.

В разработке ПО управление проектами значит больше, чем в какой-либо другой отрасли, поскольку в наше «время Интернета» всем приходится работать в очень напряжённом темпе. С другой стороны, группы стремятся сэкономить время за счёт управления проектом. В итоге — постоянные срывы графика и куча ошибок в выпускаемых программах. Эта проблема особенно характерна для небольших фирм, спешащих поскорее использовать даже минимальную возможность, чтобы протиснуться на рынок. Такая ситуация не редкость и в компаниях-«мастодонтах», которые в погоне за постоянно ускользающими сроками разработки продукта ведут проекты без нормального управления.

Можно думать, что руководители проекта просто не выдержали сроки выпуска, однако корни проблемы намного глубже. Во всех образовательных учреждениях мира курс информатики даёт очень мало или вовсе не даёт навыков управления проектами. Поэтому большинству разработчиков приходится заниматься самообразованием или перенимать опыт менеджеров, которые сами с трудом представляют себе этот предмет. Написать код программы — это лишь малая часть любого проекта, но в большинстве компаний этого до сих пор не поймут. К счастью, книга, которую вы держите в руках, даёт представление об остальной, большей части работы; такого материала вы больше нигде не найдёте. Здесь нет теории управления проектами — лишь описание приёмов, сработавших или не сработавших в весьма успешной молодой компании.

Нетрудно заметить, что по ходу изложения многократно подчёркивается важность командной работы. Структура большинства компаний представляет собой отдел программирования, отдел тестирования и, возможно, отдел разработки документации, которые со временем превращаются в удельные княжества. Формируется совокупность индивидуумов, собранных для работы над продуктом (я даже не могу назвать её командой в строгом смысле этого слова), подотчётных разным группам с разной структурой и уровнем полномочий. В силу этого большинство компаний с самого начала обречены на неудачу из-за врождённых недостатков организации. Эд создал в NuMega команду в истинном смысле этого слова, где программисты, тестировщики, инженерные психологи и разработчики пользовательской документации были собраны под началом единственного менеджера проекта. Даже когда NuMega разрослась настолько, что пришлось менять организацию в соответствии с традиционной структурой, Эд не отступал от концепции единой команды и отстаивал её в боях с оппонентами. В рамках принятой в NuMega структуры организации, все специалисты, необходимые для создания продукта, приписаны только к этому продукту. Такая структура позволила NuMega справиться с массой искусственных проблем, обычно встающих на пути у других компаний. Её дополнительное преимущество в том, что она позволяет каждому своими глазами видеть, насколько работа других участников проекта важна для выпуска успешного продукта. Это разительно отличалось от стиля отношений, принятого в большинстве компаний, который можно назвать скорее конфронтацией (что особенно характерно для отношений между разработчиками и тестировщиками).

Конечно, собрать команду и не допустить её раскола — задача не из лёгких. Практически ни один отчёт о состоянии дел в программной индустрии не обходится без упоминаний о постоянной нехватке кадров. Одним желанием, как бы велико оно ни было, хорошую команду не создать, если нет людей, способных стать её участниками. Один из экстраординарных подходов компании NuMega — включение в персонал компании «непрофессиональных» разработчиков. Как говорит Эд, один из важнейших секретов успеха NuMega — подбор и сохранение ценных кадров. Результатом стала возможность мгновенной мобилизации сил и своевременного выпуска продукта на рынок. У Эда есть и собственная исключительная черта: набрав толковых сотрудников, он уходит с дороги, чтобы не мешать им в полной мере проявить свои способности. Порой такие сотрудники могли неделю работать, не встречаясь и не советуясь с менеджером проекта. Характерным качеством Эда было то, что он позволял менеджерам учиться на своих ошибках и, что самое важное, поощрял их, когда они извлекали уроки.

Если набрать толковых людей и правильно организовать их, решать остальные задачи управления проектом становится намного легче. Важно тщательно следить за балансом управления (и Эд подчёркивает это в своей книге): нельзя ни распускать коллектив, ни слишком «закручивать гайки», управления должно быть ровно столько, сколько нужно. Разделы, посвящённые планированию и исполнению проектов составлены из описания тех самых методов, которые он передавал менеджерам, обучая их основам методики успешной работы. Выпустить качественный продукт вовремя нелегко. Изложенные в этих разделах принципы — тяжкий опыт многих ошибок, заставлявших скрипеть зубами от досады, а порой доводивших до слёз!

Будучи участником многих таких ситуаций и пережив всё, о чём здесь говорится, я не понаслышке знаю, что ценность опыта, изложенного в этой книге, намного больше отданных за неё денег. Я начинал программистом в составе команды, работавшей над BoundsChecker 3.0 под началом Эда, бывшего в ту пору менеджером проекта. В конце концов я дослужился в NuMega до менеджера проектов по разработке программных продуктов из серии TrueTime и TrueCoverage. Эд в это время был уже начальником отдела разработки NuMega. Без методик, представленных Эдом в этой книге, группы, отвечающие за создание TrueTime и TrueCoverage, никогда бы не сделали эти продукты такими успешными, какими они стали.

Я во многом завидую читателям этой книги, потому что, когда они будут учиться приёмам мастера, сроки сдачи не будут дышать им в затылок. Однако мне гораздо больше повезло, поскольку меня научил этим приёмам сам мастер. Эд помог мне вырасти от начинающего программиста до состоявшегося технического специалиста и менеджера проекта (я думал, что никогда им не стану), чью помощь в управлении проектами используют компании по всему миру. Я никогда не смогу полностью отблагодарить Эда за то, что он был моим самым лучшим руководителем. Он всегда шутил, что достаточно знает о наших успехах в программировании, чтобы мы оставались честны с ним. И всё же я могу сказать, что почти всему, что касается успешного создания программ, меня научил Эд.

Когда Эд попросил меня написать предисловие к этой книге, я был просто ошеломлён, ведь это такая честь для меня! Но он сказал, что эта книга полностью на моей совести, поскольку я подал ему идею и постоянно стимулировал её написание. Я тут же с радостью признал свою вину! Когда я работал в NuMega, мне часто задавали один и тот же вопрос: «Как этим ребятам в NuMega удаётся выпускать столько замечательных программ?» Теперь для ответа мне достаточно сослаться на книгу Эда. Я чувствую приятное волнение от того, что теперь у каждого есть шанс узнать, как один из лучших в своей отрасли менеджеров проектов снова и снова создавал программы, значение которых для разработчиков трудно переоценить.

Джои Роббинс Холлис, Нью-Гэмтиир Январь 2001 года

Благодарности

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

• Джона Робинса, бывшего товарища по группе и одного из основателей Wintellect Inc., вдохновлявшего меня в течение более чем двух лет во время написания этой книги. Его неисчерпаемый энтузиазм и поддержка в конце концов сделали своё дело. Спасибо за дружбу и веру в меня!

• Группу редакторов и рецензентов: Барбару Морланд и Дэниель Бёрд из Microsoft Press, а также Габриэль Hoунэст и Нэнси Дэппер из Online Training Solutions, Inc. Они проделали огромную работу по сведению содержимого этой книги в единое целое и внесли значительный вклад в каждый этап работы над ней.

• Фрэнка Гроссмана и Джима Москана, совместно с которыми была основана компания NuMega Technologies, Inc. Они преподали мне уроки разработки замечательных программ и составили компанию я практическом освоении этого искусства. За это я всегда буду им благодарен.

• Команду разработчиков BoundsChecker 3.0, 4.0 и 5.0. Большая часгь материала этой книги взята из их достижений. Ребята, вы — лучшая команда разработчиков из известных мне. И перестаньте, наконец, скандировать моё имя!

• Боба О'Брайена, менеджера NuMega по связям с общественностью, и Клайда Хакима, менеджера по экономическим связям. Вы постоянно привлекали внимание к нашей работе, благодаря вашим усилиям мы выглядели намного лучше, чем мы есть на самом деле. Ваш вклад вместе с остальными участниками группы маркетинга заслуживает такую же благодарность, как и вклад остальных.

• Моих родителей, Эда и Лору Салливан, научивших меня жизни и всему, что в ней важно.

• Мою жену Джейн, сына Мэтью и дочь Xaнну, позволивших мне работать над книгой по ночам и в выходные. Благодаря вашему энтузиазму и поддержке, оказанной в моменты, когда я больше всего нуждался в ней, я мог продолжать работу. Вы — самое драгоценное, что у меня есть, и я каждый день благодарю за это Бога.

Ну наконец-то все!

Введение

Я пришёл в NuMega Technologies летом 1994 года. Работая над BoundsChecker, продуктом для обнаружения ошибок в программах для Windows, я совмещал должности руководителя разработки и менеджера по маркетингу продукта. Тогда в NuMega было всего лишь 14 сотрудников: кроме двух основателей компании — три программиста, руководитель административной службы, четверо специалистов по сбыту, один администратор в офисе, один посыльный, три специалиста по технической поддержке и менеджер по маркетингу. Мы были небольшой компанией, по всем статьям подходящей под определение начинающей. Каждому приходилось совмещать несколько должностей и выполнять массу обязанностей. Однако, несмотря на небольшие размеры NuMega, у нас были большие планы и надежды. Мы твёрдо намеревались создавать замечательные программы и хотели собрать элитную группу специалистов, способную создавать лучшие в мире инструменты для разработки ПО.

Спустя несколько лет, благодаря заботам основателей и усилиям первоклассной группы менеджеров, компания выросла: теперь в ней больше 150 сотрудников. Вместе с компанией рос и я, дойдя до поста начальника отдела разработки. В первые четыре года мы создали шесть основных выпусков наших приоритетных продуктов, BoundsChecker и SoftICE, приобрели два новых продукта и ещё четыре создали для внутреннего применения. Почти все эти продукты были выпущены в расчётный срок. Объём прибылей быстро рос, и компания стала очень рентабельной. Наши продукты хорошо принимали, и они смогли завоевать ряд отраслевых наград:

2000 г.

• Приз «Лучший компонент или утилита для обеспечения качества ПО», присуждаемый Vbxtra за DevPartner® for Visual Basic.

• Приз «На гребне волны», присуждаемый Рrogammer’s Paradise, в номинации «Самый продаваемый инструмент для тестирования и отладки» за BoundsChecker VC++ Edition.

• Приз «Выбор читателя» журнала VBPJ за CodeReview™ 6.1.

• Приз «Выбор читателя» за FailSafe™ 5.21 журнала VBPJ.

1999 г.

• Журнал Software Developmem Magazine присудил DevPartner Studio приз Jolt Cola «За отличное качество продукта».

• DevPartner Studio заслужил 5 звёздочек в рейтинге Software Development.

• Java Developer's Journal присудил приз «JDJ World Class Award» программе DevPartner for Java™.

• SmartCheck 6.01 получил приз «Выбор читателя» журнала VBPJ.

• CodeReview 6.1 получил приз «Выбор читателя», присуждаемый журналом VBPJ.

• DevPartner 6.1 for Visual Basic получает приз «Выбор читателя» журнала VBPJ.

• Приз «Выбор читателя» присуждается журналом VBPJ программе TrueTime®

1998 г.

• DevPartner for Visual Basic получает от Vbxtras приз «Thunderbolt».

• SmartCheck и TrueTime объявлены «Выбором редакции» журнала Visual Basic Programmer's Journal.

• SmartCheck и TrueTime получают приз «Выбор читателя» журнала Visual Basic Programmer's Journal.

• DevPartner for Visual Basic получает от SoftwareDevelopment приз Jolt Cola «За производительность».

1997 г.

• BoundsChecker становится первым экспонатом в зале славы «Jolt Hall of Fame». Программа у всех на устах, как завоевавшая многочисленные награды за высокую производительность.

• TrueTime Visual Basic Edition завоевала на выставке Comdex приз «Best of Show» журнала BYTE.

• Еженедельник PC Week присуждает приз «Выбор аналитика» программе SmartCheck

• BoundsChecker второй год подряд получает от журнала Visual Basic Programmer’s Journal приз «Выбор читателя».

1996 г.

• Журнал Windows Tech Journal присуждает приз «Star Tech» программе CodeReview™ как одному из наиболее значительных инструментов для разработки ПО.

• BoundsChecker получает приз журнала PC Magazine «Выбор редакции», опередив конкурентов по многим параметрам.

• BoundsChecker для Windows NT получает приз «За лучший и наиболее технически совершенный инструмент для разработки» от журнала PC Magazine.

• BoundsChecker получает приз Jolt Cola «За высокую производительность и отличное качество» на конференции Software Development West'96.

• BoundsChecker становится обладателем приза «Выбор читателя» журнала Visual Basic Programmer’s Journal.

1995 г.

• Windows Tech Journal присуждает свой приз «Star Tech» программе BoundsChecker, как одному из наиболее значительных инструментов для разработки ПО 1995 года.

• BoundsChecker для Windows NT получает приз Jolt Cola «За отличное качество продукта» на конференции Software Development West'95.

1994 г.

• BoundsChecker для Windows получает приз Jolt Cola «За отличное качество продукта» на конференции Software Development West'95.


Неплохой список, да? Однако нам пришлось столкнуться с теми же проблемами, с которыми сталкивается любая группа разработчиков ПО. Конфликтующие задачи, напряжённый график, нехватка ресурсов и сил, плохо налаженный обмен информацией — лишь несколько пунктов из длинного списка проблем. Но нужно было своевременно выпускать качественные программы — в противном случае нас бы просто вытеснили из бизнеса.

Самое большое препятствие — неэффективное управление группами разработчиков и проектами. Сейчас это самая распространённая проблема в индустрии программных средств. Она особенно актуальна для начинающих компаний — они сталкиваются с ней ежедневно. И решать её надо, иначе — банкротство. Способность справиться с этой проблемой — один из важнейших факторов успеха NuMega Technologies.

Цель этой книги — поделиться с вами принципами. приёмами и методиками разработки коммерческого ПО в растущей среде начинающей компании, найденными в результате нелёгкого труда. В книге будут раскрыты самые важные и фундаментальные принципы, позволяющие выпускать качественные программы. Я не буду отвлекаться на праздные дискуссии или перечислять сотни возможных способов решения той или иной проблемы, а расскажу лишь о подходах, которые были с успехом использованы для разработки коммерческого ПО в начинающей компании. Я также расскажу об опыте моей работы в NuMega: как мы воспитывали своих специалистов и создавали наши продукты, находясь в начале пути.

Думаю, что среда начинающей компании практически тождественна небольшим и средним проектам (в которых занято до 30 человек). Мала или велика ваша организация, занимается она Интернет-услугами или информационными технологиями, являетесь вы гуру Ассемблера или Web-программистом, — нужно выпускать качественные программы и делать это вовремя. Вы постоянно находитесь под давлением этой необходимости, вам приходится иметь дело с идентичными проблемами, и вы тоже стремитесь к успеху. В конце концов, когда последний раз ваша группа смогла избежать конфликта задач, накладок с графиком, нехватки ресурсов и других «радостей» типичного цикла разработки ПО?

Пожалуйста, имейте в виду, что эта книга — не исчерпывающее пособие по какому-либо предмету. Книг, посвящённых подробному анализу узких вопросов: набору кадров, технологии разработки ПО, тестированию, инженерной психологии и др. — хватает. Уверен, на собственном опыте вы уже убедились, что во время цикла разработки редко удаётся полностью реализовать какой-либо отдельный этап. Поэтому важно отличать главное от второстепенного. Нужно овладеть основами и не беспокоиться о мелочах. Если можно сэкономить время, силы или средства, экономьте! Но если нет иного способа решить задачу, кроме трудного, все равно беритесь за эту задачу.

С другой стороны, эта книга — не обзор оценок способов решения различных задач. Вы не найдёте здесь критики всех разнообразных стратегий решения конкретных задач. Вместо этого я расскажу вам о наших испытанных методах и покажу, как быстро и эффективно связать их воедино в цикле разработки. Хотя есть ещё целый ряд замечательных идей, ждущих своего воплощения, я сосредоточусь только на подходах, опробованных на деле.

Как пользоваться этой книгой

Я не хочу сказать, что изложенные в этой книге идеи подойдут для каждой группы и будут работать в каждой компании. Однако я глубоко убеждён, что большинство этих идей будет полезно самым разным организациями при работе над широким спектром проектов. Надеюсь, вы сможете адаптировать под нужды ваших проектов как можно больше информации из этой книги. Описанный подход к созданию программ не единственный, но он испытан в деле и с успехом применялся.

Для кого предназначена эта книга

Если вы занимаете (или надеетесь занять) руководящую должность в проекте по созданию ПО, то эта книга — для вас. К целевой аудитории книги также относятся:

• верхние эшелоны управления техническими подразделениями (вице-президенты компаний, начальники отделов, руководители групп);

• руководители проектов;

• ведущие разработчики;

• архитекторы ПО;

• менеджеры продуктов;

• менеджеры групп технических писателей;

• ведущие технические писатели;

• менеджеры групп тестировщиков;

• ведущие тестировщики;

• менеджеры по эргономике;

• ведущие специалисты по эргономике;

• менеджеры групп технологов по разработке ПО;

• ведущие технологи по разработке ПО.

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

Структура книги

В книге три части, и в каждой описан один из критических аспектов управления созданием ПО.

Часть 1. Люди, организация и методы

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

кадры — как найти и удержать нужных специалистов;

организацию — какова роль и обязанности каждого участника группы;

инструментарии — ключевые инструменты для разработки и способы их использования;

тестирование — как вести тестирование параллельно с разработкой;

технологию разработки — как поддерживать целостность программы и обеспечивать её пригодность к использованию на протяжении цикла разработки.

Часть 2. Формулирование и планирование проекта

Если вы всерьёз намерены выпустить программу в срок, то прежде, чем приступать к её созданию, нужно понять, что и как должно быть создано. Даже самым талантливым людям требуется иметь представление о планируемых результатах проекта, намеченных для использования технологиях и конечном облике продукта. В связи с этим нужно:

• сформулировать основные требования к проекту:

• определить технологии, которые лягут в основу проекта:

• создать модель использования проекта.

Решив эти задачи, можно составить график, в котором задачи проекта приведены в равновесие с доступными кадрами и уровнем их способностей. В определённой степени можно быть уверенным, что при таком подходе будет создан реалистичный график создания именно такой программы, какая нужна.

Все четыре предмета — требования, технологии, использование и график работ — тесно связаны, поэтому если ваша цель — успешный проект, их нельзя рассматривать в отрыве друг от друга. Без них придётся полагаться только на догадки, допущения и игнорировать ключевые элементы проекта, внося неприемлемый риск, часто ведущий к возникновению проблем и срывам графика. Помните: почти все самые большие ошибки делаются в первые несколько недель работы над проектом, при планировании.

Часть 3. Исполнение проекта

Планирование закончено — всё готово для создания продукта. При наличии толковых людей, верных технологических приёмов и хорошего плана, шансы уложиться в срок весьма велики. Однако необходимо следить за тем, чтобы и на завершающих стадиях проекта всё шло должным образом.

В третьей части я рассказываю о моделях исполнения проекта, управляющих повседневными работами по разработке продукта. Мы рассмотрим:

исполнение — как не дать проекту сбиться с курса, обнаруживая и решая проблемы как можно раньше;

бета-тёсmирование — как с помощью бета-тестирования получать из внешнего мира отзывы о программе и расширить возможности тестирования;

работа с кандидатами на выпуск — как управлять заключительными этапами проекта и обеспечить готовность продукта;

закрытие проекта — что это такое, зачем оно нужно и как его провести.

Дополнительная информация

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

Кроме того, по ходу изложения есть врезки под заголовком «Из собственного опыта», иллюстрирующие применение некоторых принципов и концепций в компании NuMega. Эти врезки позволили мне кое-что прокомментировать, рассказать несколько интересных, а порой анекдотичных историй, благодаря которым разработка ПО является таким весёлым занятием.

Как со мной связаться

Я бы хотел услышать ваши соображения и комментарии по поводу этой книги. Кроме того, было бы интересно, если б читатели поделились своими уроками, которые они извлекли из собственного опыта, а также оригинальными способами создания программ в срок. Пишите мне по адресу: eds_books@botmail.com

Часть 1 Люди, организация и методы

Глава 1 Замечательные люди и как их найти

Замечательные люди создают замечательные программы. Они формулируют требования, отлаживают технологию и придерживаются графиков. Они тестируют, документируют и сопровождают продукт. Их идеи, профессионализм и энтузиазм определяют успех или провал разработки. Поскольку на судьбы проекта больше всего влияет «человеческий фактор», очень важно нанимать самых подходящих людей.

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

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

Определение «замечательных»

Прежде всего нужно понять, кого же вы ищете. Если вы не можете определить, кто вам нужен, как вы узнаете, что нашли того, кого искали? Как отличить классного разработчика, потрясающего технического писателя и cупep-тестировщика от не столь выдающихся? Критериев оценки масса, но я выделил шесть основных.

Квалификация

Каждый потенциальный кандидат должен иметь признание в своей области. Разработчик должен иметь квалификацию в своей специфической технической области, технический писатель — опыт в создании учебных материалов, инженер по обеспечению качества — владеть методами автоматизированного тестирования.

Я говорю не просто о компетентности, а о мастерстве. Кандидат должен в совершенстве (ну, почти) владеть предметом, относящимся к потребностям проекта. Он должен быть способен «с лёту» рассказать о своей теме и в любой момент продемонстрировать глубокое понимание того, что и как было сделано. Разработчик, например, должен доказать, что его технические познания соответствуют предлагаемой ему должности. Вот некоторые возможные темы:

• C++ объектно-ориентированное проектирование;

• создание СОМ-компонентов;

• MFC и разработка пользовательского интерфейса;

• ассемблер и внутренняя организация Windows;

• разработка драйверов устройств;

• разработка сетевых протоколов;

• оптимизация производительности.

Почему это важно? Во-первых, если человек в совершенстве овладел хотя бы одним предметом, он, вероятно, при необходимости освоит и другие. Технология меняется быстро, и способность к обучению и постижению сложных предметов — очень важное качество.

Во-вторых, в мощных командах важно взаимоуважение друг к другу её членов, а оно зачастую основывается на знаниях и способностях. Каждый должен иметь квалификацию в одной или нескольких областях, в которые он может внести такой же или больший вклад, чем другие.

Значит ли это, что каждый разработчик должен иметь учёную степень и 20-летний опыт разработки ПО? Нет, конечно. Но если вы решили нанять начинающего разработчика для поддержки и сопровождения, вы должны быть уверены, что он выделится на своём месте, а не просто будет ему соответствовать.

На собеседования с кандидатом вам нужно основательно потрудиться, чтобы удостовериться в его квалификации и в том, что она соответствует вашим текущим или будущим потребностям. (О собеседовании мы поговорим ниже.)

Преданность

Разработка практически любого проекта переживает плохие времена. Кто знает, какие проблемы вас ждут впереди: ваш конкурент объявит о выпуске своего продукта первым, ведущий разработчик заболеет, производительность продукта окажется плачевно низкой — мало ли что! Но именно преданность ваших людей и их вера в то, что они делают, доведёт проект до конца. Они будут демонстрировать свою приверженность делу, не прекратят работу и будут помогать, пока не добьются своего. Самые преданные люди стремятся к завершению проекта и готовы пожертвовать чем угодно во имя победы.


Из собственного опыта

Прекрасный пример того, на что способна преданная и целеустремлённая команда, — разработанный NuMega продукт BoundsChecker 4.0. В декабре 1995 г., в самом начале Интернет-революции, Билл Гейтс рассказал о планах Microsoft относительно Интернета. 8 декабря, на следующий день после его заявления, нам позвонили из Microsoft и спросили, хотим ли мы поддерживать их Sweeper SDK и новые инициативы, сплошные с Интернетом. Если да, то представьте совместные пресс-релизы и демонстрации на предстоящей в начале марта выставке Software Devetopment West. Для начинающей компании предложение было превосходным, но у нас оставалось менее трёх месяцев, а наш проект был готов наполовину, у нас была малюсенькая команда, и начинался сезон отпусков... Реакция коллектива была удивительной. Все увидели выгоду этого предложения и решили рискнуть. К полудню у нас был план разработки, учитывающий новую ситуацию. Конечно, он был далёк от совершенства — это был некий зародыш плана, над которым мы продолжали трудиться. Следующие три месяца весь коллектив работал засучив рукава... И выставка прошла великолепно!

Отношение к делу

Хорошие специалисты зачастую проявляют завидное усердие и недюжинную энергию. Они самоуверенны, но не циничны и сосредоточены на хорошем. Их трудно выбить из колеи: они оптимисты и легко адаптируются. Ищите их. Тяните в свою команду. Они будут поддерживать её моральный дух во всё время работы над проектом, особенно в тяжелые времена. Их энтузиазм воодушевит коллектив.

Поведение

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

Умение работать в команде

Для разработки ПО нужны люди, способные делиться идеями, мнениями и опытом. Только тогда можно решать сложные проблемы. Только так человек способен помочь другому. Только так создаётся ощущение, что работа кончается тогда, когда закончен весь проект. ПО создаётся командой. Если у вас нет хорошей команды, вы не создадите хорошего ПО.

Вот почему необходимо поддерживать сплочённость команды. Исключений здесь быть не должно. Если суперспециалист не способен сработаться с другими, его ценность для коллектива становится заметно ниже. В худшем случае люди такого типа могут даже разрушить команду. На первом месте — забота о коллективе.

Жажда знаний

Ищите жаждущих знаний, тех, кто постоянно занимается самообразованием, поиском новых интересных способов применения технологий. Они интересуются новинками и знают, что происходит в их индустрии; они не дают своим знаниям устареть. Они понимают, что происходило с ПО раньше, что творится сейчас и что его ждёт в будущем. Наличие таких людей при выработке перспективных решений трудно переоценить. Это поможет вашей команде быстро и легко переходить к новым технологиям, инструментам и методам.

Замечательные люди или совершенные люди?

Совершенных людей не бывает. Так что не надейтесь, что найдёте кандидата идеального во всех отношениях.

Скажем, подходит ли вам прекрасный специалист, демонстрирующий заинтересованность в проекте, хорошо работающий в команде и читающий всё, что ему попадёт, но вялый и не уверенный в себе? Как знать. Во всяком случае, если с ним нет других проблем.

Ещё один важный фактор — способность кандидата к росту. Посмотрите на его потенциал: его способности, отношение к делу. То, что он знает в первый день, не так важно в сравнении с тем, что он будет знать через три, шесть месяцев и через год. Убедитесь, что вы правильно оценили способность кандидата к росту, даже если он не столь ярок, как другие члены вашей команды. Не бойтесь взять подающего надежды талантливого человека и вырастить его.


Из собственного опыта

В NuMega мы часто оцениваем людей по их стремлению и возможности учиться: если человеку не сидится на месте и он постоянно хочет совершенствовать свои знания, у него есть два важнейших качества, необходимых для успеха в будущем. Обнаружив такие черты у молодых кандидатов, мы принимаем их на работу. Мы устраиваем их на начальные технические должности, в техническую поддержку или контроль качества — туда, где нам нужна помощь и подходит их опыт. Кандидат может не знать столько, сколько другие сотрудники, но он должен быстро набираться знаний и может со временем обогнать других.

Паршивая овца…

Иногда просчёт при выборе кандидата может обернуться серьёзными проблемами.

Неспособность адекватно выполнять поручения

Допустим, это было сделано не по злому умыслу — просто кто-то не приложил достаточно усилий, чтобы оценить квалификацию нового сотрудника, но он принят на должность, для которой не годится.

Изоляция от коллектива

В сплочённых командах очень важно, чтобы каждый тянул свою лямку. Работник, не способный справиться со своей работой, часто становится изгоем: люди редко советуются, просят помощи или оценки у отстающего. Им кажется, что он «сидит у них на шее». Если у вас более одного неуспевающего, коллектив раздробится на группировки, начнутся интриги… Чтобы команда функционировала нормально, каждый должен вносить свой ощутимый вклад и общее дело.

Неустойчивый моральный дух

Если с одним из членов команды невозможно работать, боевой дух всей команды начнёт стремительно падать. Нужно проверять, что любой кандидат — особенно претендующий на роль лидера, — хорошо вписывается в команду.

Отставание от технологического прогресса

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


Финансовые затраты

Теперь посмотрим, как неправильный выбор сотрудника сказывается на финансах. Вот пример одно— и двухгодичных выплат одному разработчику:

$90 000 Зарплата

$5 000 «Подъёмные»

$20 000 Комиссионные агентам по найму

$30 000 Социальное страхование, льготы, обучение

Итого:

$145 000 Затраты за первый год

$175 000 Затраты за первый и второй год (включая небольшой рост, без премий)

Куча денег! И только на одного человека. Так как зачастую оплата труда является крупнейшей статьёй расходов при разработке ПО, возникает вопрос: стоит ли тратить столько же времени и сил на оценку новых кандидатов, как на новые технологии и средства разработки?

В обоих случаях вы хотите быть уверены. В том, что удовлетворены ваши сегодняшние и будущие потребности. И в том, что сделали надёжный выбор, который облегчит вашу деятельность. Очевидно, что вы должны выбирать новых сотрудников не менее тщательно, чем оборудование.

Влияние плохого кадрового обеспечения

Одно неверное решение при подборе сотрудников, конечно, не очень приятно, но не имеет фатального влияния на проект. Гораздо сложней преодолеть последствия серии неудачных решений при подборе персонала, в результате которых команда формируется из посредственностей.

Низкая производительность

Низкая производительность для слабой команды — норма. Трудно рассчитывать на череду успехов, победы кратковременны, и проект начинает пробуксовывать. Сбиваясь с пути, слабая команда начинает бессмысленную борьбу, поскольку не может понять суть проблем и сменить курс быстро и решительно.

Невнимательность к деталям и качеству

Слабая команда часто выпускает «сырой» продукт. У людей нет стремления сделать своё дело наилучшим образом и страстного желания создать солидный продукт, удовлетворяющий пользователя. В плохой команде люди не остаются после работы и не прихватывают обеденное время, чтобы чуть повысить производительность программы, прогнать лишний тест или переписать параграф документации. Без таких мелочей время работы увеличивается, а его качество значительно ухудшается.

Задержка в выпуске продукта

Плохой команде трудно спланировать график выпуска продукта. Исполнители зачастую не осознают сложность технологий, с которыми имеют дело, не способны предвидеть возможных проблем и не желают жертвовать во имя своевременного завершения работы. Сама по себе задержка проекта не значит, что у вас плохая команда. Но я убеждён, что для плохой команды это в порядке вещей и что эти проблемы часто являются следствием плохо организованного кадрового обеспечения.

Поиск и привлечение достойных кандидатов

Как же их найти? Основных методик девять. В NuMega мы использовали практически все. Кто скажет, откуда возьмётся хороший кандидат! Так что мы решили задействовать все имеющиеся механизмы. Каждая методика имеет свои плюсы и минусы, но некоторые работают лучше других, особенно для начинающих компаний (табл. 1-1).


Табл. 1-1. Каналы для поиска новых сотрудников.

Web-узлы поиска кадров

Сегодня Интернет предоставляет, пожалуй, самые широкие возможности для найма сотрудников. Важнейшим преимуществом Интернета является его огромная популярность во всём мире и то, что он может работать на вас круглосуточно. Кроме обычной публикации объявлений в телеконференциях, один из лучших способов — работа с интерактивными узлами поиска кадров: они могут дать вам исключительную возможность найти талантливых профессионалов. Вот пара хороших узлов: www.monster.ami и www.hotjobs.com

Идея проста: вы, как работодатель, публикуете на Web-узле описание своей работы, а потенциальные кандидаты просматривают список предложений в поисках интересующих их должностей. Чтобы это работало, нужно очень чётко описать предлагаемую работу. Web-узлы обычно ограничивают описание предложения лишь парой абзацев, так что убедитесь, что оно содержит чёткое описание должностных обязанностей, технологии и рабочей обстановки.

Собственный Web-узел

Web-узел вашей компании также играет важную роль. Хотя большинство работодателей часто используют свои узлы для описания вакансий, многие из них недооценивают, насколько важны их узлы для потенциальных кандидатов.

Привлеките внимание кандидатов

Большинству малых или вновь появившихся компаний трудно привлечь кандидатов на свои узлы: о них просто мало кто знает. Поэтому маловероятно, что кандидаты обратят внимание на вашу компанию только благодаря вашему Web-узлу. Но если ваша компания побольше или широко известна, нужно использовать эту возможность. В поисках работы люди часто заходят на Web-узлы компаний, о которых они что-то слышали или об успехах которых они знают.

По мере роста вашей компании и укрепления её репутации вы будете замечать увеличивающийся трафик посещений вашего узла потенциальными кандидатами. Приготовьтесь к этому. Если компания широко известна, не упустите возможность извлечь выгоду из вашей репутации и представляйте свои вакансии всем посетителям Web-узла.

Представьте товар лицом

Независимо от возможностей компании привлекать внимание людей к Web-узлу, разместите на нём ваши предложения по трудоустройству. Нет разницы, откуда кандидату стало о вас известно (от кадрового агентства, из объявления, по рекомендации или как-то ещё), — важно, что теперь именно ваш Web-узел должен разрекламировать ваши вакансии и вашу компанию. Нужно, чтобы на посетителей узел произвёл глубокое впечатление. Профессионально ли сделан узел? Достаточно ли чётко подана информация, насколько он аккуратен, интересен и ярок? Надо не просто перечислить вакансии, надо показать, почему это так здорово — работать в вашей компании.

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

• Предоставьте ясное и точное описание предлагаемой работы:

— опишите свободные вакансии;

— опишите применяемые технологии;

— укажите требуемый опыт работы.

• Приведите описание интересных проектов или продуктов:

— объясните, что может делать программа;

— объясните, почему продукт так нужен организациям или компаниям:

— расскажите об особых навыках, приобретённых сотрудниками при работе над проектом;

— фотографии членов команды разработчиков позволят сделать знакомство менее формальным.

• Предоставьте сведения о вашей компании и достигнутых ей успехах:

— обозначьте цели компании и её виды на будущее;

— укажите, как долго работает компания;

— укажите, является ли компания государственной или частной;

— укажите, получает ли компания венчурное финансирование;

— расскажите о достигнутых успехах;

— включите один из последних пресс-релизов компании;

— покажите фотографии зданий, помещений, кафе и мест отдыха в вашей компании.

• Опишите программу предоставляемых льгот:

— опишите стандартный пакет льгот;

— опишите исключительные особенности, отличающие ваши льготы от других.

• Опишите рабочую обстановку:

— укажите, используется ли официальная форма одежды или произвольная;

— укажите, возможен ли гибкий график работы;

— укажите, есть ли возможности для активного отдыха;

— укажите, имеет ли место какая-либо особая общественная деятельность.

Рекомендации

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

Метод найма по рекомендациям основан на очень простой концепции: классные специалисты обычно образуют некое сообщество, зачастую включающее разных специалистов: разработчики ПО знакомы с техническими писателями, архитекторы с менеджерами и т.д. Ещё одна прекрасная особенность этого метода в том, что рекомендующий ручается за лицо, которое он рекомендует, демонстрируя своё желание снова с ним работать.

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

Благодаря рекомендациям, многие начинающие и малые компании растут очень быстро. Это самый дешёвый, простой и надёжный способ найма квалифицированных кандидатов. Одно «но»: маленькие компании могут легко попасть в зависимость от рекомендаций. Через какое-то время рекомендаций станет меньше, или они вообще перестанут поступать, так как все варианты будут испробованы. Нельзя слишком крепко привязываться к этому подходу, как и к любой другой методике найма работников.


Из собственного опыта

В NuMega за первые три года 40% наших кандидатов попали к нам по рекомендациям. Цепочка рекомендаций получилась длинной и запутанной, и было довольно забавно её распутывать. Так, мы начали с Мэта, который ручался за Джона, который в свою очередь ручался за Бэрни, а тот — за Мэри Лу.


Сотрудники не всегда помнят о том, что им имеет смысл охотиться за бывшими коллегами. Чтобы метод найма работал, требуется регулярное общение внутри компании (собрания, доски объявлений, электронная почта) и серьёзное материальное поощрение. Выплачивайте премии за рекомендации на общих собраниях. Не забывайте информировать новых сотрудников о программе рекомендаций — сделайте это частью своей программы обучения новых сотрудников. Пусть кадровики встречаются с новыми сотрудниками через несколько недель после начала работы и узнают, не могут ли они рекомендовать потенциальных кандидатов.

Профессиональные кадровые агентства

Один из традиционных способов поиска работников — прибегнуть к услугам профессиональных кадровых агентств. Получив от вас описание предлагаемых вакансий и требуемой квалификации, агентства ищут подходящих кандидатов. Затем они посылают вам резюме, удовлетворяющие вашим требованиям. Если вы нанимаете кандидата, рекомендованного агентством, вы выплачиваете агентству в качестве комиссионных от 15 до 25% годовой зарплаты нового сотрудника.

Лучший способ работы с профессиональными агентствами — установить с ними крепкие взаимоотношения. Если вы продемонстрируете, что готовы уделять им достаточно времени, подробно опишите свои предложения, обеспечьте обратную связь — и вы достигнете лучших результатов. А ещё лучше, если вы согласны ограничить число посреднических агентств, платить большие комиссионные и покажете, что у вас хватает вакансий. У агентства будет реальный стимул, и в результате вы из самых лучших найденных ими кандидатов выберите первоклассного работника.

Достоинства кадровых агентств очевидны. Кто-то другой ищет того, кто вам нужен, а вы за это платите. Если вы знаете хорошее кадровое агентство и можете себе позволить заплатить им то, что они хотят, — все счастливы. Но хорошие агентства встречаются редко. Во многих случаях резюме, получаемые от них, выглядят неважно, а агентство не предоставляет о кандидате достаточной информации. Снова вы должны рассчитывать на самих себя.

Колледжи

Может, поискать в колледжах? У нас в NuMega не было ресурсов для поиска талантов по всей стране. Мы определили несколько ключевых учебных заведений в нашем районе и установили связи с деканами, профессурой и служащими, отвечающими за распределение выпускников. Проделав эту работу, мы вызвались на общественных началах рассказать о своей компании, отрасли и о том, чем мы занимаемся. Когда наши отношения укрепились, нам стали рекомендовать талантливых новичков на постоянную работу, а также для работы на неполный рабочий день и на время каникул.

Объявления и ярмарки вакансий

Рекламные объявления и ярмарки вакансий — пожалуй, старейшие методики найма работников. Но объявления в газетах очень дороги, и хотя в результате вы получаете много резюме, большинство из них — от неподходящих кандидатов. Обычно хорошие кандидаты не обращают внимания на объявления и не посещают ярмарок вакансий — они склонны вращаться в своём кругу. Вот почему так эффективны рекомендации. Возможно, вам удастся найти самородок в горе песка, просматривая объявления и посещая ярмарки, но приготовьтесь копаться в пачке резюме, посланных «на всякий случай».

Выставки

Поиск сотрудников на выставках может быть эффективным, но только если у вас очень специфические запросы и вы выставляетесь на соответствующей специализированной выставке. Как правило, выставки посещают люди, преданные своей компании, и не с целью найти новую работу, а узнать что-то новое. Как бы там ни было, не упускайте ни одной возможности разрекламировать свою компанию или организацию. Если у вас свой стенд, не забудьте подготовить рекламные листовки с информацией о вакансиях для потенциальных кандидатов.

Целевой поиск

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

Однако этот подход ничего не даст, если сотрудники довольны работой и зарплатой. На самом деле обычно они будут просто отказываться разговаривать с позвонившим. Понимание всего этого — лучшая защита от того, чтобы ваша компания не стала целью такого поиска. Помните простое правило: если вы не способны удовлетворить вашего сотрудника, это сделает кто-нибудь другой.

Исключительные события

К исключительным событиям относится закрытие компании и увольнение целой команды или отдела. Когда такое случается, надо действовать очень быстро. Большинство компаний, сталкивающихся с подобными трудностями, реализует программы по трудоустройству сотрудников, которых затрагивает реорганизация. Поскольку такое случается довольно редко, не стоит строить специальную программу, рассчитанную на подобные события. Однако если повезёт, вы получите несколько хороших специалистов из одной команды.

Какая методика лучше?

Итак, какой способ лучше? Начинающие компании предпочитают Интернет или рекомендации, поскольку эти методики дешевле, проще и эффективней. Вы можете построить свою политику подбора кадров, опираясь только на два этих подхода. Остальные методики менее популярны или эффективны, так как требуют больше времени, денег и усилий.

Однако поскольку суперзвёзды и высококвалифицированные кандидаты очень важны, а найти их можно любым способом, следует работать по всем описанным каналам. Просто сначала надо полагаться на самые продуктивные из них. ...




Все права на текст принадлежат автору: Эд Салливан.
Это короткий фрагмент для ознакомления с книгой.
Время — деньги. Создание команды разработчиков программного обеспеченияЭд Салливан