Повысьте уровень своей команды: проверенные методы разработки инженеров-программистов и достижения результатов
3 марта 2023 г.Развитие опыта разработчиков программного обеспечения имеет решающее значение для успеха вашей команды. Когда у вашей команды есть возможность учиться и развивать новые навыки, они становятся более эффективными и продуктивными, что приводит к более быстрому выполнению проектов, более качественной работе и меньшему количеству технических проблем, которые нужно решать позже.
Более того, инженеры, которые инвестируют в свой собственный рост и развитие, скорее всего, будут более мотивированы и вовлечены в свою работу.
Они могут охотнее идти на риск и экспериментировать с новыми подходами, что может привести к инновационным решениям и улучшениям продукта.
В Wealthsimple мы организовали двухдневное мероприятие для нашей команды R&D, чтобы сосредоточиться на их профессиональном развитии. Перед мероприятием я попросил нашу исполнительную команду, инженерных менеджеров и команду разработчиков инструментов определить ключевые навыки, на которых следует сосредоточиться.
С их помощью мы разработали индивидуальные семинары, направленные на совершенствование этих навыков.
Результат? 82% людей заявили, что они изучили или улучшили навыки, необходимые для их текущих ролей и повседневной жизни. Цитируя одного инженера: «Больше знаний о технологиях, которые использует Infraplat, позволяет мне лучше работать в своих интересах и не обременять эту команду в будущем!»
Тем не менее, вам не нужно специальное мероприятие для развития вашей команды. Как вы, как технический руководитель, можете повысить уровень своей команды и поддерживать мотивацию и вовлеченность инженеров?
Во-первых, оцените пробелы в навыках вашей команды
Начните с оценки навыков, которые необходимо улучшить вашей команде, или областей, требующих более глубоких знаний. Например, вы переходите на новую технологию, с которой знакомы лишь несколько участников?
Или ваша команда работает с устаревшей кодовой базой и не знакома с последними функциями и передовыми практиками Ruby on Rails? Возможно, вы поощряли отладку сложных проблем, и вам нужно улучшить знания команды в области методов отладки и наблюдения.
Или, возможно, вам нужно инвестировать в повышение производительности в первый раз, так как пользователи жалуются на опыт. Выявление пробелов в навыках необходимо для того, чтобы любое обучение и развитие, в которые вы вкладываете средства, также улучшали результаты вашей команды.
Теперь, когда у вас есть четкое представление о том, в какие навыки следует инвестировать, вот четыре метода, которые помогут вам повысить уровень вашей команды и развить ее инженеров-программистов.
Метод 1. Разработка пользовательской программы с использованием книг, онлайн-руководств и курсов
Сотрудничайте с отдельными членами команды, чтобы определить навыки, которые они хотели бы улучшить, что будет способствовать успеху команды. Затем поработайте с ними, чтобы выбрать подходящие книги, онлайн-уроки и курсы, чтобы углубить их знания.
Привлекайте их к ответственности за это; они с большей вероятностью найдут время и сосредоточатся на областях, которые являются наиболее полезными и актуальными. Например, один разработчик из Shopify каждый понедельник проводил час за чтением найденной нами вместе книги о последней версии Ruby on Rails.
Затем она использовала то, что узнала, для проверки кода более опытных разработчиков, не знакомых с последними рекомендациями. Это сразу же сказалось на качестве кода, который мы писали.
Если вы переходите на новый язык или внедряете новые библиотеки и фреймворки, рассмотрите возможность совместного обучения в команде. Различные команды, с которыми я работал, организовали книжные клубы и встречи для обучения и обеда.
Придумайте забавное имя и создайте повторяющуюся точку соприкосновения, либо в виде встречи, либо в виде асинхронной регистрации, где все делятся тем, что узнали. Один руководитель Wealthsimple курировал видеоролики и учебные пособия, чтобы помочь своей команде развить опыт работы с Ruby on Rails.
Они следовали этим вместе, потому что раньше они в основном разрабатывали на Java.
Когда мы наняли нескольких разработчиков с ограниченным опытом работы с Ruby on Rails, другой разработчик адаптировал учебную программу для запуска клуба Ruby on Rails, открытого для всех в Wealthsimple.
Они еженедельно смотрели, читали или заполняли обучающие материалы, а затем встречались, чтобы обсудить то, что они узнали, и получить помощь там, где они застряли.
В конце концов, я инвестировал в получение доступа к LearnEnough, и они вместе прошли соответствующие курсы. Эти инициативы часто оказывают влияние, выходящее за рамки того, что можно сразу увидеть или измерить. Инженер, возглавивший эту инициативу, сказал следующее:
<цитата>Это углубило наши знания о нашем основном технологическом стеке и сократило «время ввода в эксплуатацию» для новых инженеров в компании. Побочным эффектом стала встреча и знакомство с другими инженерами в организации, поэтому у нас были прямые контакты, к которым можно было обратиться для междоменных проектов.
Внедряя индивидуальную программу, адаптированную к потребностям каждого члена команды, и обучаясь вместе в команде, вы можете не только углубить индивидуальный опыт, но и способствовать междисциплинарному сотрудничеству и сократить время подготовки новых сотрудников.
Метод 2: парное программирование
Парное программирование — отличный способ дать возможность одному разработчику учиться у другого, более опытного в определенных навыках, которые они хотят развить. В парном программировании два разработчика работают вместе над одной и той же проблемой.
Обычно один человек пишет код, а другой вносит свой вклад и просматривает его в режиме реального времени. Более продвинутое специальное программное обеспечение для парного программирования, такое как Tuple, позволяет обоим разработчикам управлять мышью и клавиатурой.
Это эффективный метод углубления знаний, таких как изучение последних передовых практик, передовых методов отладки или навигация по определенной области кодовой базы, которая недостаточно документирована.
Это те вещи, которые разработчик может даже не подумать исследовать или активно пытаться узнать, поскольку у них есть способы, которые уже работают для них.
Я не могу сказать вам, сколько раз я слышал, как кто-то говорил что-то о быстром сценарии или хаке, который они узнали после завершения сеанса парного программирования.
Как менеджер, если вы не использовали эту технику раньше, постепенный способ начать работу — найти кого-то, кто обладает опытом в навыках, которым вы хотите помочь члену вашей команды научиться.
Если этот человек не отчитывается перед вами, вы должны проверить его у своего менеджера, чтобы убедиться, что это хорошее совпадение, и убедиться, что он выделяет для этого время.
Затем попросите члена вашей команды заблаговременно настроить парное программирование на определенное время. Обычно я рекомендую 1 тестовую сессию, а затем 1 час в неделю в течение 4–6 недель, если они оба согласны с тем, что после первой сессии это хорошее совпадение.
Если вы инженер, который никогда раньше не пробовал парное программирование, простой способ начать — заранее определить, кто, скорее всего, проверит PR, над которым вы сейчас работаете. Затем попросите организовать сеанс с ними, чтобы получить обратную связь, когда вы завершили общий план того, что вы реализуете, но еще далеко не закончили.
Если вы активно работаете над развитием определенного навыка, дайте им знать, чтобы они уделяли ему особое внимание, чтобы они работали в соответствующих областях и не скрывали отзывов.
Метод 3. Наставничество
Основываясь на вышеизложенном, наставничество может использовать дополнительные методы, чтобы помочь кому-то развить или усовершенствовать навыки. В программе наставничества наставник и подопечный также подбираются на основе их навыков, интересов и целей.
Чтобы максимально использовать программу наставничества, я рекомендую наставникам и подопечным провести формальную стартовую сессию, на которой они договариваются о целях отношений, о том, как часто они будут встречаться и как долго, а также будут ли они сотрудничать между сессиями.
Наставники могут участвовать в сеансах интерактивной доски, проводить проверки кода и отвечать на вопросы. Они также могут предоставлять регулярные отзывы, чтобы помочь в дальнейшем обучении.
Важно объяснить членам вашей команды, что они обязаны руководить и брать на себя ответственность за свое развитие, чтобы получить максимальную отдачу от опыта наставничества.
Это можно сочетать с другими материалами, такими как книги и учебные пособия, используя сеансы для ответов на конкретные вопросы и обзора работы подопечного.
В дополнение к формальным программам наставничества вы также можете использовать более неформальное наставничество для устранения пробелов в навыках или контексте в вашей команде.
Например, при работе над проектами заказов для Shopify мы запланировали сеансы интерактивной доски с экспертами о том, как работает компонент оформления заказа, чтобы провести мозговой штурм и получить отзывы об аспектах дизайна, а затем полагались на специальные проверки кода для получения дополнительных отзывов.
Это привело к тому, что один член команды приобрел гораздо более глубокие знания в области оплаты и заказов, поэтому нам не нужно было полагаться на другую команду после первоначального проекта.
Более того, наладив отношения с командой оформления заказа, мы смогли повлиять на API, которые они разрабатывали в то время, и в результате запустили более согласованные API, которые было легче интерпретировать и использовать.
Способ 4. Создание задания на растяжку
Дополнительные задания – это задачи и проекты, которые побуждают членов команды учиться и применять новые навыки. Предложение этих возможностей помогает членам команды получить ценные знания, навыки и опыт, выходящие за рамки их текущих должностных обязанностей.
Сложные задания могут повысить уровень вашей команды, повышая мотивацию и вовлеченность, поощряя творчество и инновации, а также способствуя сотрудничеству и командной работе, а также развивая новые навыки.
<цитата>"72 % высокоэффективных команд сообщают, что им даются сложные задания, по сравнению с 34 % низкоэффективных команд".
— Делойт
Для многих разработчиков эти возможности существуют в рамках команды и проектов или задач, которые уже включены в дорожную карту. Вот некоторые примеры:
* Руководство техническим дизайном и созданием прототипа проекта или функции.
* Автоматизируйте повторяющиеся задачи разработки, такие как локальная установка и анализ, чтобы сэкономить время команды.
* Настройте шаблоны для автоматических тестов и тестовых данных для проекта, чтобы каждый мог легко создавать тесты в рамках своих ежедневных запросов на вытягивание.
* Сотрудничайте с клиентом, чтобы решить проблему, о которой он сообщил.
* Повысьте производительность критического потока для пользователей вашего приложения.
Эти типы возможностей расширения часто являются отличными кандидатами для сочетания с любым из вышеперечисленных методов, чтобы гарантировать, что у них есть инструменты и поддержка для изучения новых навыков, которые они практикуют.
Вместо этого вы можете бросить вызов более опытным разработчикам программного обеспечения, чтобы решить проблемы, которые не касаются вашей непосредственной команды. Это особенно важно для старших разработчиков, которые стремятся стать штатными инженерами.
Несколько идей для начала:
- Определить и решить проблему или повторяющуюся задачу, затрагивающую всю команду разработчиков.
* Разработайте новый инструмент или библиотеку, которую можно будет использовать во всей организации. Это может включать в себя исследование, проектирование и реализацию первых вариантов использования.
* Если вашей организации необходимо начать инвестировать в повышение производительности, проведите первый нагрузочный тест, чтобы определить узкие места, уязвимости и ограничения мощности.
* Присоединяйтесь или создайте рабочую группу, чтобы взять на себя ответственность за определенную часть технологического стека; создайте резерв задач, чтобы начать работу над ними.
* Возглавьте инициативу по улучшению опыта членов ресурсной группы сотрудников.
У разработчиков часто есть отличные идеи о проблемах и возможностях, которые можно использовать в качестве расширенных заданий, но им может потребоваться наставничество, что окажет наибольшее влияние, когда над ними работать и как их эффективно масштабировать.
Например, наша команда продуктов в Shopify потратила много времени на отладку проблем с производительностью, которые часто решались путем оптимизации отдельных запросов.
Это оказалось особенно проблематичным для вызовов, сделанных через наш REST API, в котором использовалась устаревшая стратегия разбиения на страницы, переводившаяся в очень дорогие SQL-запросы.
Хотя улучшение отдельных запросов давало краткосрочные выгоды, в конечном итоге нам потребовалось бы экспоненциальное улучшение , которое можно было бы обеспечить, изменив нашу общую стратегию разбиения на страницы.
Один из наших разработчиков признал эту проблему и указал, что наших текущих оптимизаций будет недостаточно в долгосрочной перспективе.
Однако решение этой проблемы было сложной задачей, требующей изучения того, когда начинать и как ориентироваться в процессе создания прототипа, реализации и, в конечном итоге, выпуска серьезного, критического изменения API.
Это было сложное задание, которое требовало от разработчика создания и совместной работы над решением, которое затронуло более дюжины команд и сотни общедоступных приложений.
Начать сейчас
Развитие опыта разработчиков программного обеспечения в вашей команде имеет решающее значение для достижения успеха в современном быстро меняющемся и постоянно развивающемся технологическом ландшафте.
Заблаговременно оценивая пробелы в навыках вашей команды и применяя ряд проверенных стратегий обучения и развития , таких как книги, учебные пособия, курсы, парное программирование, наставничество и дополнительные возможности , вы можете эффективно повысить уровень своей команды, повысить производительность, повысить качество, и способствовать инновациям.
Кроме того, вложение средств в профессиональный рост и развитие вашей команды может сильно повлиять на ее вовлеченность и мотивацию, что в конечном итоге приведет к более высокому уровню удержания и более сплоченной и высокоэффективной команде.
Неважно, что вы пытаетесь. Как и во всех инженерных делах, просто выберите один метод и повторяйте!
Оригинал