Советы по привлечению, управлению и удержанию разработчиков программного обеспечения
Опубликовано: 2022-03-11Менеджмент — это все о людях. Будь то менеджеры или сотрудники, оба думают о том, как достичь своих личных и профессиональных целей. Сочетание этих целей и личных качеств вовлеченных людей формирует отношения, которые со временем могут быть позитивными, продуктивными и приносящими удовлетворение, а иногда просто стрессовыми, требовательными и склонными к конфликтам.
Конечно, в последнем случае качество продукции снижается, текучесть кадров увеличивается, а достижение поставленных целей становится все более трудным. Таким образом, поиск способа установить вознаграждающие и мотивирующие отношения между менеджерами и сотрудниками имеет ключевое значение, когда речь идет об эффективности, продуктивности и самореализации для них обоих.
Это особенно верно в отношении управления разработчиками программного обеспечения из-за технической сложности их работы и творческого характера, часто сжатого в узкие сроки для получения результатов. Как и в любых отношениях между начальником и сотрудником, здесь задействовано множество факторов, таких как:
- Личности
- Цели
- Ожидания
- Политики
- Организационная культура
- Технические детали проекта
В этой статье мы сосредоточимся на основных аспектах управления, а не на технических аспектах, которые, по нашему мнению, следует учитывать всем, кто хочет добиться успеха в управлении удержанием разработчиков программного обеспечения.
Но здесь «успех» означает не только достижение результатов и соблюдение политик компании, сроков и бюджетов, но и наличие мотивированной и продуктивной команды разработчиков программного обеспечения, которые выкладываются по максимуму и остаются в компании на долгое время.
Это подводит нас к нашей фундаментальной теме: что движет разработчиками программного обеспечения? Имея это в виду, мы представим некоторые способы удержания сотрудников, которые мы определили в успешных командах разработчиков программного обеспечения.
Привлечение нужных людей
В разработке программного обеспечения талант, которого вы нанимаете, будет иметь значение между успехом и неудачей, а постоянные изменения в команде всегда требуют больших затрат времени и денег. Таким образом, хороший процесс отбора имеет решающее значение для успеха вашего проекта.
Объявление о вакансии
Технические рекрутеры знают, что когда дело доходит до найма разработчиков программного обеспечения, все начинается с тщательно сбалансированного объявления о вакансии. Пост должен быть мотивирующим, чтобы нужные разработчики отреагировали на него — слишком много или слишком специализированные требования могут обескураживать, но если вы слишком расплывчаты, ваша компания может ожидать поток бесполезных резюме.
Указание подробных сведений о заработной плате и пакете льгот также является палкой о двух концах, потому что ваши конкуренты могут использовать эту информацию для усиления своих компенсационных планов, а разработчики могут попытаться использовать ее в качестве основы для переговоров при приеме на работу. Конечно, поскольку в процессе найма всегда должно быть место для переговоров, мы предлагаем размещать объявления о вакансиях менее конкретно, когда речь идет о вознаграждении, используя диапазоны, а не фиксированные значения.
Напротив, вакансия должна быть максимально четкой в должностных обязанностях и требованиях, как обязательных, так и приятных. Начать с надежной подгонки — лучший контекст для остальных наших стратегий удержания сотрудников.
Интервью
На этом этапе процесса рекомендуется получить несколько советов по оценке кандидатов и посмотреть, каких ловушек можно избежать в процессе собеседования. Мы также хотели бы добавить к приведенным выше рекомендациям, что заранее запрашивать у кандидатов некоторые рекомендации с их предыдущих мест работы часто является хорошим дополнением к другим способам проверки их навыков.
Предложение о работе
Прием на работу завершается предложением работы кандидату, когда компания представляет официальный документ, в котором кратко излагаются характеристики должности (имя, звание, область и т. д.), компенсационный пакет (зарплата и льготы, такие как здоровье, пенсия или образование и т. д.) , дату начала, график работы, место работы и требования для заключения трудового договора, если кандидат принимает предложение.
Хотя на этом этапе все более-менее выполнено, кандидат может захотеть оговорить какие-то условия, а компания должна их принять или торговаться. Это зависит от практики компании.
Однако, конечно, компания не захочет терять хорошего кандидата из принципа, поэтому разумные компромиссы никому не повредят. В этом случае желательно попросить кандидата о чем-то взамен каждой сделанной уступки, например, о более ранней дате начала работы, минимальном сроке пребывания в компании или о каком-либо особом требовании, которое может быть у компании.
Управление командами разработчиков программного обеспечения для достижения успеха
Как только разработчик программного обеспечения начинает работать в компании, его руководитель начинает понимать, кто он, как он работает и, самое главное, какие результаты он приносит. Тогда удержание инженеров-программистов становится очевидным приоритетом.
Вот тут-то и появляется понимание личности инженеров-программистов: они, особенно высокоэффективные, часто демонстрируют некоторые общие черты. Мы будем указывать на эти закономерности по ходу дела, но имейте в виду, что они могут не относиться в равной степени к каждому человеку. Управление проектами по разработке программного обеспечения касается как шаблонов, так и исключений.
Повышение квалификации
Поскольку разработка программного обеспечения является технической работой, она требует очень точного знания структуры, целей, процедур, политики компании (включая убеждения и деловую практику) и стандартов (технических и нетехнических). Следовательно, чем лучше разработчик понимает компанию, тем лучший продукт он сделает и тем меньше времени у него уйдет на его создание.
Это базовое обучение можно проводить с помощью документов, интерактивных курсов внутренней сети или презентаций. Но это необходимость, так как это даст ясность новому сотруднику.
Если предполагается внедрение новых технологий, обязательно проведите необходимое обучение. Разработчики программного обеспечения любят, когда им бросают вызов, но они могут негодовать, когда их бросают в новую технологию, не изучив ее должным образом.
Интернет изобилует ценными учебными материалами, и часто это первый ресурс, к которому разработчики программного обеспечения обращаются, когда им нужно изучить или переучить технические детали. Если вы хотите удержать разработчиков программного обеспечения, важно продвигать культуру самообучения и, при необходимости, выделять на это рабочее время. Таким образом, команда будет в курсе самых современных технологий и методов, что разработчики программного обеспечения часто очень ценят.
Ресурсы
Некоторые думают, что разработчики программного обеспечения ищут самые современные технологии для выполнения своей работы с наилучшими техническими характеристиками, доступными в отрасли. Вместо этого мы думаем, что это зависит от выполняемой работы. Например, если компания разрабатывает игры от первого лица, необходимо предоставить разработчикам самые современные вычислительные мощности. Но если задача заключается в разработке серверных веб-сервисов для транзакционной системы, может быть достаточно менее мощного компьютера.
Что действительно важно, так это предоставить разработчику все необходимые инструменты для выполнения своей работы и быть открытым для его предложений по новым инструментам. Логично предположить, что каждый новый инструмент, предлагаемый разработчиком, должен быть одобрен (возможно, даже протестирован ранее) и лицензирован компанией. Однако это того стоит: наличие адекватных ресурсов является ключевым фактором мотивации и результатов разработчиков. (Вы не можете рассчитывать на сохранение инженеров-программистов, если вы настроите их на провал!)
Организация
Разработчики программного обеспечения любят работать в местах, где поощряют и уважают их творческие усилия, потому что их работа заключается в создании чего-то из ничего, несмотря на то, что они руководствуются дизайном, стандартами и ИТ-политикой. Поэтому разработчики должны быть достаточно уверены в том, что они принадлежат к подразделению, где вся бюрократия и ограничения сведены к минимуму, если они соблюдают политику компании и соответствуют ее убеждениям.
Это не означает, что разработчики программного обеспечения должны иметь какие-то особые привилегии по сравнению с остальной частью компании, а скорее то, что их менеджер помогает им преодолевать или решать бюрократию, когда это необходимо. Очень важным аспектом удержания разработчиков программного обеспечения является то, что их начальник открыт для их личных требований и помогает им, когда это необходимо.

Ключевую роль здесь также играет внутренняя организация отдела разработки. Часто существует группа тестирования, и в обязанности менеджера по программной инженерии входит поддерживать подвижность командной работы между разработчиками и тестировщиками. Этого можно достичь, просто имея четкие методологии и процессы. Разработчики, как правило, очень хорошо работают с тестировщиками, если есть правила, которым должны следовать обе стороны, чтобы конфликты были минимальными или отсутствовали.
Коммуникация (периодические встречи)
Если вы хотите удержать разработчиков программного обеспечения, важно держать их в курсе событий. Все члены команды должны периодически получать информацию о целях, корпоративных ситуациях, влияющих на них, стратегиях, изменениях в организации и, что не менее важно, о достижениях команды.
Даже если несколько членов команды поделятся некоторыми важными моментами, это будет хорошо для укрепления сплоченности команды и командной работы. Обычно такие встречи команды — не более двух часов — следует планировать регулярно (возможно, еженедельно), а также по особым случаям, например, на заключительном этапе проекта, в критической ситуации и т. д.
Помимо общения с командой, менеджер должен установить способ быть в курсе ситуации каждого члена, будь то связанная с работой, техническая или личная.
- Связанные с работой – это все возможные аспекты взаимоотношений работника с компанией.
- Технические ситуации возникают, когда разработчик застрял в проблеме и по каким-то причинам не обращается за помощью.
- Если разработчик делится ими, личные ситуации , с которыми он сталкивается, могут повлиять на его работу и отношения с коллегами.
Обычно 30-минутное еженедельное совещание с каждым членом команды позволяет менеджеру определить эти ситуации и оказать помощь, тем самым предотвращая потенциальные кадровые кризисы и повышая моральный дух члена команды в компании.
Просто для ясности: мы не говорим о создании отдела развития, ориентированного на встречи, поэтому необходима строгая дисциплина собраний (пунктуальность, уважение, участие, продолжительность). Более того, эта дисциплина демонстрирует разработчикам, что они работают в очень профессиональной организации, что они обычно ценят.
Постановка целей и последующая деятельность
Нет смысла назначать ежегодные общие цели или подобные руководящие принципы оценки.
Это очевидный фактор при работе с разработчиками программного обеспечения: какова бы ни была их роль (сбор требований, архитектура, дизайн, программирование, тестирование и т. д.), цели должны быть поставлены перед ними с максимально возможной ясностью, поэтому нет смысла при назначении ежегодных общих целей или аналогичных руководящих принципов оценки. Поскольку предполагается, что разработчики работают в проектах, т. е. с определенными масштабами и временными рамками, лучший способ поставить задачи — это поставить цели в начале проекта и указать, как будут оцениваться достижения и, если применимо, как они будут признаваться.
К счастью, в настоящее время существуют методологии, целью которых является максимально быстрое получение результатов, такие как Agile и Scrum, которые упрощают последующие действия и контроль над проектом. Иногда это может даже сыграть важную роль в удержании талантливых программистов: многие разработчики любят эти методологии, потому что они могут быстро приносить результаты, давая им чувство достижения на регулярной основе.
Более того, разработчики часто предпочитают более легкие методологии. Они знают, что высококлассные продукты, такие как Rational, где конечный продукт создается после длительного проекта разработки требований, проектирования, разработки, тестирования и внедрения, сопряжены с риском и могут быть болезненными.
Управление конфликтами
Это относится как к командам разработчиков программного обеспечения, так и к любым другим командам: менеджер по разработке программного обеспечения должен быстро и эффективно разрешать конфликты, иначе он может выйти из-под контроля и разрушить моральный дух, командную работу и эффективность всего подразделения.
Предполагая, что конфликтующие разработчики профессиональны и действуют из лучших побуждений, встречи менеджера с вовлеченными лицами для начала четкого диалога с последующим быстрым разрешением должно быть достаточно, чтобы позволить команде двигаться дальше. Также иногда необходимо дать им четкое предупреждение, что конфликт на личном уровне, если до этого дойдет, не будет принят.
В любом случае, в конце этого примирения очень важно, чтобы обе стороны почувствовали справедливость решения, даже если одной из них оно не нравится. Конфликты иногда являются частью жизни, но сохранение таланта программиста означает достойное отношение ко всем, когда возникают такие ситуации.
Мотивация
Хотя мы коснулись многих факторов, влияющих на мотивацию разработчика, есть еще один ключевой аспект. Это не эмоционально и не технично. Речь идет о размере вознаграждения за их работу.
Несмотря на склонность к идеализму, разработчики программного обеспечения часто любят блага материального мира. Для компании всегда лучше убедиться, что зарплаты и компенсационные планы соответствуют рынку труда — отраслевые исследования легко найти — и, возможно, даже немного выше для их должностей.
Кроме того, большинство разработчиков программного обеспечения неравнодушны к привилегиям и призам, в том числе к курсам и технологическим мероприятиям, на которых они могут освоить полезные приемы для обогащения своей работы.
Когда речь идет об удержании разработчиков программного обеспечения, важно поддерживать их рост внутри компании, независимо от ее конкретного направления. Когда инженеры-программисты не проявляют особого желания продвигаться к руководящим должностям или управлению, они вместо этого ценят продвижение в технической области. Это включает в себя более старшие сертификаты и формальные академические программы, такие как степень магистра или даже докторскую степень. Знания являются для них очень сильным двигателем.
Однако, когда они стремятся вырасти до руководящих должностей, рекомендуется провести тщательный анализ личности кандидата и его истории в компании. Это может быть сделано с помощью отдела кадров или других подразделений компании, поскольку хорошее управление требует совершенно другого набора навыков, помимо технических знаний.
Как сохранить талант программиста: заключительные замечания
У вас могут быть самые лучшие намерения, и вы можете следовать всем приведенным выше советам, но вам все равно не удастся удержать разработчиков программного обеспечения в 100% случаев — иногда внешние факторы просто оказывают большее влияние. Но мы считаем, что текучесть кадров может быть здоровой и полной возможностей, если:
- Это не часто. Если да, то это признак того, что что-то не так на организационном уровне.
- Это происходит только с самыми ценными ресурсами. В данном случае это может означать, что они используют вашу компанию как трамплин, т. е. они с вами просто для того, чтобы набраться опыта перед переходом в другие компании.
Стратегии удержания сотрудников должны быть закреплены в политике компании, а не просто реакция, когда ценный человек хочет уйти в отставку. Реакционное удержание очень дорого обходится и имеет недостатки: человек может согласиться остаться, но думать про себя: «Я проработал здесь X лет только для того, чтобы при увольнении мне предложили двойную зарплату — они только что признали, что не платят мне». достаточно!"
Каким будет следующий шаг этого человека? Они могут искать другую работу, но уже с удвоенной зарплатой как минимум. На данный момент пытаться сохранить инженеров-программистов любой ценой, скорее всего, не стоит. Если человек не является абсолютно важным (и незаменимым) для компании, возможно, лучше договориться о периоде уведомления и немедленно найти замену.
Это недетерминированная задача
Привлечение и удержание разработчиков программного обеспечения — сложная и недетерминированная задача, как и в случае любой роли в технологической отрасли. Есть много компаний, которые ищут ценных разработчиков программного обеспечения, но, к счастью, цель здесь не в том, чтобы победить эти компании, а в том, чтобы привлечь хороших людей, которых нам удастся сохранить в нашей компании.
Процессы отбора могут занять много времени и усилий. Если подойти к этому в спешке, велика вероятность, что вы окажетесь не с теми людьми, а кто захочет удерживать инженеров-программистов, которые токсичны для своей команды? Вместо этого потратьте время, чтобы сделать это правильно.