Почему каждая компания должна предоставлять возможности для развития junior-разработчиков и как это можно осуществить? Опытом BBC поделился разработчик Джош Тамэт.
Зачем компании нанимать джуниор-разработчиков? Джозеф Уинн, бывший главный инженер по разработке сайта BBC News, поделился своими мыслями в Twitter:
The best teams I've worked on were at least half juniors. Better knowledge sharing and higher quality productshttps://t.co/bzB0I6IaYi
— Joseph Wynn (@Joseph_Wynn) June 1, 2017
I worked in an all-senior team once. Nobody admitted not understanding something. Everyone wrote overly-complex code just to 1-up each other
— Joseph Wynn (@Joseph_Wynn) June 1, 2017
Мне, как джуниор-разработчику, было приятно это читать. Я подумал о времени, которое провел в отделе дизайна и разработки BBC News с сентября 2016 года.
Сейчас я прохожу обучение в Software Engineering Graduate Scheme. Это двухлетняя программа для людей с образованием, связанным с информатикой. Это отличный шанс попасть в BBC в качестве джуниор-разработчика, но с возможностью перейти в другую команду спустя шесть месяцев для развития разных технических и прочих навыков. Я закончил свой первый год обучения — работал в команде BBC Sport и на сайте BBC для детей.
Я не думаю, что в мире есть другая подобная программа, которая позволит вам научиться веб-разработке, разработке приложений для смартфонов и умных телевизоров, бэкенд-разработке и созданию систем за два года в рамках одной организации. Все это происходит в работе с удивительными людьми и квалифицированными командами.
Плохое первое впечатление
Во время учебы в университете я работал в двух диджитал-агентствах. Оба места дали мне реальный опыт, но в обоих агентствах разработка происходила по строгой модели водопада, и я чувствовал себя шестеренкой в машине, я был привязан к своему стулу без возможности пообщаться или пройтись, если только это не было походом в туалет или на ланч. Этот опыт был опустошающим. Я всегда любил веб-разработку, но я начал переживать, что мне не понравится работать в этой области.
Я хотел убедиться, что моя первая работа после университета будет в таком месте, где я буду чувствовать себя комфортно и работать вместе с agile-командой, которые любят свое дело и заботятся о качестве.
Я возлагал большие надежды на BBC, и это оказалось именно так, как я хотел. Культура компании достаточно расслабленная и дружелюбная, и я не чувствую себя прикованным к своему месту. Я устроился джуниор-разработчиком, но никто не ожидал от меня слишком многого и не возлагал на меня слишком мало. Никто не предполагал, что я включусь в любой проект, сразу пойму систему и начну кодить. Мой вклад ценился, а моя команда помогала друг другу развиваться.
Создание правильной культуры
Найм опытных разработчиков сложен, даже для такого большого бренда, как BBC. Но опытные разработчики не возникают из воздуха — они тоже когда-то были джуниорами. Многие компании в нашей индустрии не хотят воспитывать сотрудников самостоятельно, так что мы не должны удивляться, что найти опытных разработчиков так трудно.
Ключ к решению проблемы — культура, в которой и junior, и senior-разработчики смогут расти в организации, принося пользу компании. BBC прошла долгий путь развития, но многое из того, что мы видим в компании сейчас, исходит из наших ценностей.
Давайте посмотрим, как они влияют на диджитал-команды BBC.
Совместная работа
Чаще всего в командах я слышу слово “общение”. У нас есть множество инструментов для обсуждения того, что мы делаем. Для разработчиков особенно важно не чувствовать себя слишком стеснительными или некомпетентными, если нужно попросить совета. Во всех командах, в которых я работал, на встречах мы всегда подчеркиваем, как полезно общаться друг с другом, чтобы обсуждать решение проблем или просить о помощи. Любой сотрудник всегда готов отложить свои дела, чтобы помочь другому.
Многие команды в BBC практикуют парное программирование, фантастический способ делиться знаниями и поддерживать качество кода. При парном программировании я более сосредоточен на работе, потому что мне нужно озвучивать свои мысли.
Конечно, я работаю не только с разработчиками. В команде есть множество ролей, и каждая из них играет ключевую роль в работе. Даже в манифесте Agile говорится, что люди из бизнеса и разработчик должны работать вместе каждый день проекта. Много раз я работал с бизнес-аналитиками, чтобы конкретизировать критерий одобрения тикета, или с UX-дизайнерами, чтобы создать прототип их идеи. Сама возможность такой работы для junior-разработчика заставляет меня чувствовать себя ценным.
Самый эффективный метод передачи информации в команде разработки — разговор лицом к лицу.
Наконец, такая схема обучения позволяет разработчикам производить “перекрестное опыление”. Так как мы меняем команды каждые полгода, мы приносим с собой опыт и знания предыдущих команд. Команды рискуют застояться, если не будут общаться с другими отделами.
Уважение
Хотя BBC и является достаточно структурированной организацией, она похожа на плоскую структуру. Неважно, какую должность занимает человек, его мнение будет учтено и услышано. Этот подход имеет значение и для крупных решений, и для повседневной работы. Ни у одного менеджера нет своего кабинета, все сидят вместе и могут подойти к кому угодно.
Даже при парном программировании со старшим разработчиком, джуниор не просто смотрит, как напарник делает всю работу. Их недостаточное знакомство с системой означает возможность посмотреть на проект с другой стороны и задать нужные вопросы, так что мысли вслух и высказывание своего мнения всегда поощряется. Я думаю, плакат “It’s ok to…” хорошо подходит к работе в BBC. Часто в большой организации у команды завышенное мнение о своей работе, чего нет в нашей компании.
Здесь также применимо высказывание “не существует глупых вопросов”. Более опытные члены команды всегда готовы ответить на вопросы новых джуниор-разработчиков.
Креативность
Разработка — это творческий процесс. Существуют сотни подходов к одной задаче, и команды должны работать вместе, чтобы обсуждать лучший метод. Новые разработчики чаще смотрят на проблему под непривычным углом и реже ориентируются на то, “как мы обычно решаем такую проблему”. Для этого важно иметь культуру, в которой учитываются мысли каждого.
От разработчиков ожидают не только выполнения повседневной работы, но и готовности учиться. Многие команды применяют принцип, согласно которому 10% времени уделяется на изучение чего-то нового или на работу над сторонним проектом. Если организация желает вносить вклад в рост своих команд, эти сотрудники вероятнее останутся работать в компании на долгий срок. Джуниор-разработчики должны ставить перед собой задачи по изучению разных технологий или софт-навыков.
Качество
Исследование пользователей, обзоры кода, автоматическое и ручное тестирование — это процессы, которые подтверждают, что мы предоставляем аудитории качественный продукт, и джуниор-разработчики должны участвовать в этих процессах, чтобы не только получать, но и давать обратную связь.
Аудитория
Продукты, над которыми мы работаем в BBC, нацелены исключительно на образование и информирование нашей аудитории. Независимо от потребностей организации, на первом месте должны стоять потребности клиента. Важно понимать свою аудиторию, чтобы они видели ценность в вашем продукте.
Когда я работал в команде Children’s Web, их UX-команда часто приглашала детей оценить наши идеи и прототипы, а разработчики могли посмотреть, как дети реагировали на разные версии. Мы часто продвигали прототипы в A/B тестирование, чтобы бизнес-аналитики нашей команды могли оценить влияние изменений на поведение пользователей.
Доверие
Нет ничего хуже рабочей среды, в которой менеджеры не доверяют своим командам. По этой причине эта ценность находится в самом начале списка ценностей на наших бейджах. Наша аудитория должна доверять нашему контенту, а мы должны доверять друг другу. Это ключевой принцип нашей культуры. Без него вы не можете чувствовать себя счастливым или воплощать другие принципы.
Джуниор-разработчики, как и все сотрудники, могут управлять своим временем, работать независимо, иметь доступ к любой среде разработки или API и помогать тренировать новых членов команды. Мы не должны винить кого-то за провал, мы доверяем им и предполагаем, что они вкладывали лучшие намерения во все свои действия (и, к счастью, у нас нет систем, которые можно вывести из строя одной случайной командой).
Заключение
У джуниор-разработчиков в BBC есть удивительная платформа для развития большого количества навыков, но все это ничто без соответствующей культуры, которая ценит начинающих разработчиков и стремится дать им возможность развиваться. Думали ли вы о том, как ценности вашей организации помогают разработчикам расти?