2009 г.
Руководство командой разработчиков программного обеспечения
Прикладные мысли
С. Архипенков
Назад Содержание Вперёд
Глава 7. Подбор и развитие команд
Набор сотрудников
Девиз компании SouthWest Airlines: «Мы нанимаем жизненные позиции». Необходимо помнить, что мотивация разработчиков ПО начинается с приема на работу. В старой экономике людей нанимали за умения и обучали нужному отношению к делу. В новой экономике необходимо поступать с точностью до наоборот: нанимать за нужное отношение к делу и учить необходимым умениям. Не следует более нанимать людей, которые знают и умеют, а потом заниматься промыванием их мозгов и пытаться мотивировать их на эффективную работу. Нанимаем людей с правильным отношением к жизни, ищем тех, кто хочет работать, а затем, если необходимо, помогаем им получить требуемые технические навыки. Настоящий лидер предлагает не работу, а возможности.
В идеале, конечно, следует стараться привлечь и знающих, и умеющих, и подходящих по своим жизненным позициям. Но если приходится выбирать, то правильнее выбрать жизненную позицию. Рональд Рейган говорил: «Окружите себя самыми лучшими людьми, которых вы только сможете найти, передайте им в руки власть и не мешайте им». Этот подход не столько близок мне по характеру, сколько проверен опытом.
В настоящее время нет каких-либо достоверных формальных методик определения квалификации программиста. Мой опыт показывает достаточно значимую корреляцию хороших способностей к программированию и сверхвысокого значения IQ . Высокий балл диплома и престижное математическое или техническое образование свидетельствует об общих способностях кандидата успешно осваивать новый материал. Диплом о престижном высшем образовании немаловажен для хорошего программиста, хотя и не является необходимым условием. Я знаю программиста, который, не имея высшего образование, успешно руководит командой разработчиков в представительстве известной иностранной фирмы.
Отдельно остановлюсь на тестах и практических заданиях по специальности. Относительно их необходимости у меня имеются большие сомнения. Как правило, технические тесты ориентированы на проверку узкоспециальных знаний: структур данных, алгоритмов, конкретных стандартов и API, и т.д. Правильный/неправильный ответ на вопрос: «i=1; i = i++ + ++i; чему равно i?», — мало о чем свидетельствует. Попытки давать кандидатам олимпиадные задачки по программированию, или задачки из книжки «Математические головоломки», у меня, как правило, ассоциируются со стремлением, возможно, не очень успешных вчерашних студентов к самоутверждению или с желанием продемонстрировать кандидату его несостоятельность, чтобы затем снизить предложение по зарплате. Я применял тесты по специальности — несколько десятков простых вопросов на 15–20 минут по базовым понятиям стека технологий J2EE таких, которые просто невозможно не знать, если ты имеешь практический опыт в данной области. Результаты этого теста использовались только для того, чтобы выяснить, в какой области кандидат более уверенно ориентируется и адекватнее позиционировать его среди имеющихся направлений разработки.
Технические тесты могут продемонстрировать уровень IQ и эффективность левого полушария, возможности которого подтверждены, как правило, дипломом о высшем образовании и всем успешным опытом предыдущей работы. Часто при обсуждении данного тезиса меня спрашивали: «А вдруг кандидат наврал о прошлом опыте?» На мой взгляд, одного двух вопросов с просьбой уточнить некоторые конкретные технические детали достаточно, чтобы рассеять или подтвердить подобные сомнения. И еще, если вы не в состоянии распознать то, что человек выдает себя не за того, кто он есть на самом деле, возможно, вам еще рано руководить людьми.
Креативность и эффективность человека в командной разработке зависят в первую очередь от уровня его эмоционального интеллекта, EQ и деятельности правого полушария: целеустремленность, воля, эмпатия, интуиция, способность к эвристическим суждениям. Я, к сожалению, пока не встретил достоверных тестов правого полушария. Поэтому слушаем, слушаем и еще раз слушаем. А главное слышим! При отборе кандидатов только очное интервью «глаза в глаза» и личный опыт работы с людьми позволят вам создать эффективную программистскую команду. О практике проведения интервью могу рекомендовать работы [23, 44, 45], в которых изложены подходы, во многом совпадающие с моим опытом.
При проведении технического интервью следует придерживаться следующих основополагающих принципов:
- Помните, вы ведете переговоры с потенциальным партнером по бизнесу, а не пытаетесь «купить на рынке товар подешевле».
- Каждый человек уникален и ему присуща своя ценность. Если вам нечего предложить кандидату, то это не значит, что он «лузер».
- Имейте в виду, что несправедливо обиженный кандидат — пятно на бренде компании. Сегодня это значит не меньше, чем несправедливо обиженный клиент.
- Люди не рождаются победителями, они ими становятся. Кандидата стоит нанимать только в случае, если вы сумеете предоставить ему эту возможность.
- «Программист — это не профессия, это образ мышления», (с) программисты.
Проводить интервью, желательно, вдвоем с человеком, который будет непосредственно руководить или работать с кандидатом. Это позволит быть более объективным, посмотреть на кандидата с «разных сторон» и лучше его понять.
Ваша задача при проведении интервью — получить ответ на 3 вопроса:
- Знает дело?
- Умеет его делать?
- Хочет его делать?
Обычно при проведении интервью я стараюсь придерживаться следующего сценария:
- Вступление.
- «Что Вы сделали?»
- «Что вы хотите делать?»
- «Какие у Вас есть вопросы?»
- «Я могу предложить Вам ...»
Вступление
В этой части полностью солидарен с Джоэл Сполски [23]: «Я трачу около 30 секунд, рассказывая кандидату, кто я такой и как буду проводить интервью. Я всегда заверяю кандидата, что нас интересует его подход к проблеме, а не его конкретные ответы. Кстати, в процессе интервью не стоит сидеть через стол от кандидата, поскольку это создает формальную преграду и мешает ему расслабиться. Лучше поставить стол к стене или обойти стол и сесть рядом с кандидатом».
Вспоминаем невербальные знаки: переговоры через стол — противостояние. Смена работы это всегда «стресс», который, по мнению психологов, занимает по значению 3-е место после развода семьи и пожара. Помогите кандидату прийти в себя. В противном случае вы будете беседовать с другим человеком.
«Что вы сделали?»
Вопросы:
- Что вы можете рассказать о вашем самом успешном проекте (если студент, то тема диплома или самый интересный учебный предмет).
- Что вы считаете своей наибольшей профессиональной удачей?
- Что вам меньше всего нравилось делать на прежней работе?
- Почему хотите поменять место работы?
Что оцениваем:
- Эмоции и заинтересованность кандидата при ответах. Нет «горения» — «не зачет». «Вполнакала проекты не делаются» — очень точная формулировка И. Ставинского (цитата по [46]). Вряд ли, вам удастся его «зажечь». К вашей работе он будет относиться так же.
- Логическая последовательность, лаконичность и ясность повествования. Разработка программ это наполовину общение. Умение четко формулировать и объяснять так, чтобы это было понятно 10-летнему ребенку — необходимое качество. Уточняйте детали, даже если вы знаете, что такое «комформное отображение», попросите кандидата объяснить, что он имел в виду, в двух словах.
- Зрелость личности. Если кандидат винит в своих неудачах коллег, окружение, начальство — несамостоятельная личность. Если не вспоминает коллег при рассказе о своих достижениях — возможно, недооценивает важность эффективного взаимодействия.
«Что вы хотите делать?»
Если кандидат не знает, что он хочет, его не стоит брать. Скорее всего, вы имеете дело с недостаточно зрелой личностью с человеком, который не стал лидером в своей личной жизни. Однако обязательно следует попытаться уточнить:
- Чем бы вам определенно не хотелось заниматься?
- Если бы работу выбирали вы, что бы это было?
- Какие качества вы цените/порицаете в коллегах?
- Как вы видите развитие своей карьеры?
Если кандидат объясняет к чему он стремиться, следует уточнить, адекватно ли он оценивает свои возможности. Предложите ситуации связанные с будущей работой:
- Предложите некорректную задачу (которая при заданных условиях имеет множество решений). Например, построить дом, (с) Джоэл Сполски, или «Определить количество бензоколонок в Москве» (с), rsdn.ru. Если кандидат спешит выдать первое пришедшее в голову решение — «не зачет».
- Предложите ситуацию на умение взаимодействовать, попробуйте отрицать что-то бесспорное для кандидата и поспорить с ним.
Что оцениваем:
- Целеустремленность. Если у человека есть ясное видение своих профессиональных целей и стратегии их достижения, а у вас есть проект, на котором он может свои цели реализовать, скорее всего, это «ваш человек». Даже если знаний и умений пока недостаточно. Желания «просто работать» мало. Скорее всего, человек мотивирован на избежание неудач, а не на достижение успеха. От такого трудно ожидать инициативы, поиска новых возможностей и творчества.
- Умение анализировать проблему, проводить ее декомпозицию на более простые компоненты, определять последовательность действий, синтезировать и обосновывать предлагаемое решение.
- Способность к диалогу и эффективному взаимодействию. Умение рассуждать, задавать вопросы, анализировать ответы, искать взаимовыгодное решение в конфликтных ситуациях.
«Какие у Вас есть вопросы?»
Собеседование должно быть двухсторонним. Вы пытаетесь понять, подходит ли кандидат вам. Кандидат — подходит ли ему работа, которую вы предлагаете. Если кандидат задаёт вопросы — это хорошо. Вопросы, которые обычно ожидаются:
- Что за проект, в котором предстоит работать: Какие цели? Когда начат? Каково состояние? Сколько человек постоянно на проекте? Опытность команды? Распределение ролей? Какова текучесть?
- Как организован процесс разработки ПО: Используемые технологии и подходы? Средства автоматизации? Техническое обеспечение? Принятие решений? Постановка задач? Отчетность и оценка результатов? Авралы? Сверхурочные?
- Система мотивации?
Что оцениваем:
- Факт наличия вопросов говорит об активной позиции и заинтересованности кандидата в работе.
- «Правильные вопросы» свидетельствуют об опытности специалиста.
«Я могу предложить Вам...»
Принимать решение следует сразу. Возможно, понадобится 5 мин. посоветоваться с коллегой. Не стоит откладывать решение. «Я могу предложить Вам.» Далее должны следовать описание позиции, должностных обязанностей и размера компенсации. Возможно, эта будет другая позиция, а не та, на которую, кандидат изначально позиционировал себя, если, на ваш взгляд в этой роли он будет более эффективен. Обсудите с кандидатом ваше видение его места в проекте. Не стоит предлагать кандидату другую позицию, если она с более низкой компенсацией. Будет похоже торговлю и попытку действия в духе «Выиграл/проиграл».
Если вы не смогли в ходе интервью снять все сомнения, не берите. Доверяйте своей интуиции. Лучше ошибиться и не взять достойного кандидата, чем рискнуть и получить «проблему». Будьте честны. Имейте волю отказывать: «Я могу предложить Вам.» Далее перечень конкретных отсутствующих знаний и навыков, приобретение которых позволит кандидату, занять данную позицию в будущем. Кандидаты возвращаются! Не стоит отказывать в стиле «Если будет принято положительное решение, мы Вам обязательно позвоним». Это, скорее всего, ложь. Не стоит подрывать доверие к своей компании.
Несколько советов кандидатам или Что еще оценивается в ходе интервью
Совет 1. Никогда не опаздывайте на интервью. Если вы все-таки опаздываете, предупредите заранее. Возможные негативные оценки опоздания:
- Вы распорядились чужим временем. Время одна из приоритетных ценностей делового человека, следовательно, вы проявили неуважения к его ценностям — это признак не умения эффективно взаимодействовать.
- Вы не сдержали свое слово. Возможно вы не обязательный человек.
- Вы не умеете прогнозировать риски и планировать свои действия.
Совет 2. Одежда должна быть естественной. Вы должны быть одеты так, как предполагаете ходить на работу, одежда не должна стеснять и сковывать вас. Возможные негативные оценки:
- Кандидат одет в майку и кеды, мятую, несвежую одежду — скорее всего, он не серьезно относится к работе, если не потрудился привести себя в приличный вид, собираясь на деловую встречу.
- Кандидат одет слишком помпезно: новые ботинки, костюм, дорогой галстук — по-видимому, кандидат не уверен в себе, хочет произвести впечатление внешним видом.
Совет 3. Ведите беседу с достоинством, свободно, на равных. Вы с работодателем предполагаете в будущем стать партнерами. Старайтесь слышать собеседника. Самоуверенность, но не наглость, серьёзность, но не чопорность, внимательность, но не подобострастность, вдумчивость, но не умничанье — вот, на мой взгляд, отличительные характеристики зрелой личности. Возможные негативные оценки при общении:
- Кандидат смотрит на работодателя как солдат на генерала «лихо и слегка придурковато». От готовности всегда соглашаться с начальником — жди беды.
- Кандидат рассматривает собеседование как экзамен — стремиться рассказать все, что знает по заданному вопросу и вокруг него. Старается угадать ответ. Пытается скрыть, завуалировать свое незнание чего-либо, уходя от вопроса и переводя разговор на другую тему. Кандидат, скорее всего, хочет представить себя тем, кем он на самом деле не является.
- Кандидат «растопыривает пальцы» и пытается доказать, что он «круче всех». Как правило, это не так. Возможно, это свидетельство завышенной самооценки.
- Кандидат скован. Отвечает односложно. Опасается проявлять эмоции. Скорее всего, он не уверен в себе, несамостоятелен, зависим.
- Кандидат не следит за обратной связью. Пытается продолжить повествование, даже если следуют вербальные или невербальные указания на то, что партнеру данная тема уже не интересна. Возможно, недостаточные навыки эффективных коммуникаций.
Оценка и развитие
Не думайте, что, наняв сотрудника, вы заключили с ним договор раз и не всегда. Вы должны нанимать сотрудника постоянно. Успешно работая в своей области, сотрудник приобретает новые знания и опыт, следовательно, стоимость его услуг растет. Поэтому его необходимо перекупать, пока это не сделали конкуренты, если, конечно, вы не стремитесь стать для них «кузницей кадров». С другой стороны, сотрудник сам может переоценить стоимость своего труда, исходя из своих реальных физических и психологических затрат, которые определяются качеством обеспеченности рабочего места, атмосферой в коллективе, отношением руководства и проч.
Пересмотр договора о найме, «по договоренности», без прозрачной процедуры дезориентирует и демотивирует сотрудников. В силу своей интроверсии, программист, как правило, предпочтет найти повышение зарплаты в другой компании вместо того, чтобы просить об этом свое начальство. Поэтому, настоятельно рекомендую, проводите периодический пересмотр условий договора — аттестацию.
В ходе регулярных аттестаций необходимо давать экспертную оценку следующих характеристик сотрудника:
- Квалификация — знания и опыт.
- Самостоятельность и лидерство: 1 — кодирование готовых алгоритмов; 10 — разработка стратегических решений.
- Инициативность и творчество: 1 — требует инструкции на все свои действия; 10 — ищет и предлагает новые возможности, политики, процедуры.
- Эффективность взаимодействия: способность четко формулировать и объяснять, умение конструктивно разрешать конфликты, сопереживание, взаимопомощь.
- Результативность работы: процент рабочего времени занятого в успешных проектах, количество и сложность реализованных требований к продукту, число отлаженных строк кода в час (SLOC/h), плотность ошибок на 1000 строк кода (bugs/KSLOC).2
- Достижение целей, поставленных на предыдущей аттестации.
Кто оценивает? В первую очередь, руководство: линейный руководитель и менеджеры проектов, в которых участвовал данный сотрудник. Однако, не менее важны экспертные оценки, которые ставят люди, взаимодействующие с этим сотрудником на разных уровнях, коллеги, смежники, подчиненные, клиенты. В западной литературе этот подход называется оценка по методу «360 градусов».
По результатам аттестации должен быть сделан один из следующих выводов:
- соответствует/не соответствует должности;
- рекомендуется в резерв на должность (это значит, что данный сотрудник займет эту должность без конкурса, как только такая вакансия возникнет);
- рекомендуется на повышение в должности;
Еще один важный и необходимый результат аттестации — план развития, — какую новую ступень карьерной лестницы будет достигать сотрудник и что ему необходимо сделать, чтобы на нее перейти. Что изучить и освоить: новые технологии (согласуем с личными целями и стратегическими потребностями компании), смежные специальности (снижаем риск в случае увольнения коллеги). Каких результатов добиться, например, успешно справиться с ролью руководителя группы разработчиков в проекте N.
Поставленные цели должны соответствовать широко известному в западном менеджменте критерию SMART [47], представляющему собой аббревиатуру из пяти английских слов: Specific (конкретный), Measurable (измеримый), Achievable (достижимый), Relevant (сопоставимый) и Time-bound (определенный во времени). Конкретность цели означает, что всем должно быть понятно, в чем именно состоит цель. Цель должна быть измеримой, чтобы можно было точно узнать, достигнута она или нет. Достижимой — это означает, что имеется достаточно знаний и ресурсов для достижения цели, но и не слишком простой — она должна бросать вызов (challenge) сотруднику. Сопоставимой — цель должна соотноситься с целями компании. Определенной во времени — для каждой цели должны быть четко обозначены временные рамки. Цели, которые одновременно и конкретны, и трудны, и важны, как для компании, так и для самого сотрудника, служат значимым мотивирующим фактором для самоактуализирующегося человека.
И последний вопрос, на который необходимо ответить по результатам аттестации, а надо ли повышать зарплату участнику команды? А если надо, то насколько?
2 Следует, однако, помнить, что формальные метрики лишь дополнительное средство при проведении оценок. Их стоит учитывать при сравнении сотрудников, которые достаточно длительное время занимаются сходной работой, например разработкой экранных форм пользовательского интерфейса. Если у одного разработчика при прочиз равных условиях, производительность в два раза ниже, а плотность ошибок в два раза больше, то это, по крайней мере, повод для того, чтобы проанализировать ситуацию и разобраться в проблеме.
Принятие формальных метрик в качестве одного из основных показателей эффективности творческой деятельности — зло. Вспоминается эпизод, когда в коллектив из кандидатов и докторов наук за год работы создал систему формальных показателей, которая, по их мнению, позволяла оценивать эффективность научной деятельности подразделений научно-исследовательского института. Назывался труд «Методика подведения итогов социалистического соревнования» — около 100 показателей и более 100 страниц методических указаний по их расчету. Не сработало! Уже через три месяца самые «продвинутые» руководители научились работать на методику, а не на науку, и стали получать самые большие премии.
Назад Содержание Вперёд