Проект «Нашкодим», или как мы обучали сотрудников iOS-разработке
Полный цикл создания мобильного приложения – это результат слаженной работы многих сотрудников... в идеале. На практике же каждая фича имеет шансы попасть в производственный водоворот, где разрабы ругаются на усложнённый дизайн, а тестировщики бьются в истерике, не понимая, как можно было оставить столько багов.
Чтобы наладить коммуникацию между отделами и подружить все этапы разработки между собой, мы запустили серию корпоративных проектов под общим названием «Нашкодим». Первой его частью стал внутренний iOS-курс для сотрудников компании, которые не работают с кодом. О нём нам рассказал iOS-разработчик MobileUp и ментор курса Денис Сушков.
Кому и для чего это нужно?
На первый взгляд, такие навыки могут показаться избыточными. Но мы и не ставили цели превратить каждого сотрудника в потенциального разраба.
Изначальные задачи были куда прозаичнее:
- Рассказать о технической стороне процесса даже тем, кто считает себя полным гуманитарием;
- Показать, как макеты превращаются в код, как верстают разработчики и какие требования предъявляют к дизайну;
- Объяснить, откуда берутся баги и как их можно предотвратить;
- Дать представление о реальных коммерческих проектах, их масштабе и сложности;
- Сделать так, чтобы все сотрудники говорили на одном языке или хотя бы понимали, о чём говорят разрабы, когда в ход идут профессиональные термины.
Нашей целевой аудиторией в первую очередь были дизайнеры и QA. Но после объявления о запуске курса выяснилось, что поучаствовать в нем захотели менеджеры проектов, HR и даже наш редактор (но так и не смог из-за большого количества желающих – прим. ред.). Спрос оказался таким высоким, что мы решили собрать два потока.
На протяжении месяца участников курса ожидало 8 занятий, посвящённых знакомству с Xcode, вёрстке интерфейсов, взаимодействию с Figma и основам разработки. На выходе у каждого было мини-портфолио базовых iOS-приложений, сделанных своими руками.
У нас не было цели «грузить» ребят принципами ООП, SOLID’ом и правильным кодстайлом. Куда важнее было создать то самое волшебное ощущение, когда ты сам создал и запустил первое в жизни приложение! Да ещё и установил его на свой девайс, чтобы похвастаться друзьям! Такой подход оказался отличным стимулом, и мотивировал участников погружаться и вникать в аспекты разработки.
Стоимость и риски
Говоря об экономике проекта, стоит учитывать несколько факторов. Первый – разработка и подготовка программы. Готовые курсы не подходят для такого формата, поскольку рано или поздно начинают углубляться в сложные концепции и терминологию. Нашей же задачей было пойти «вширь», а не «вглубь».
В силу занятости коллег, обеспечить стопроцентную явку на каждом занятии не получится. Поэтому, помимо шпаргалки для ментора, нужно подумать и о тех, кто хочет нагнать пропущенный урок: обеспечить запись каждого занятия и снабдить их кратким текстовым содержанием со скриншотами и архивами готовых проектов. На это понадобилось около недели рабочего времени.
Второй аспект – это время обучающихся (которое, естественно, оплачивается компанией). В общей сложности курс прошли 18 человек, и на старте это казалось довольно рисковым вложением. Особенно если вспомнить, что наша главная цель – просто рассказать коллегам, как их решения влияют на работу разработчика, и наоборот.
Мы хотели показать «изнанку» всем ребятам из продакшна, кто не связан с кодом лично. Чтобы каждый в команде понимал, как работает мобильное приложение и почему оно работает именно так. На эти вопросы они могут ответить для себя, только сделав собственные проекты и написав не одну строчку кода. Мы задались целью – крутая продуктовая команда, и ни разу не пожалели об инвестируемых часах.
Сложности
Главным препятствием на пути к успешному финалу стали вовсе не внезапные созвоны (хотя и их было немало). Из-за разницы в начальном уровне программу курса не раз приходилось перекраивать на ходу. Из-за этого весь месяц был похож на прогулку по канату с постоянным балансом между объяснением простейших понятий и желанием дать как можно больше материала.
Пока первая половина потока отчаянно пытается запомнить разницу между переменной и константой, другая может откровенно заскучать. Чтобы удерживать внимание каждого участника, приходилось менять план курса, добавлять поясняющие скриншоты и буквально на ходу искать новые аналогии для удобного запоминания.
Техническая сторона курса также оказалась сложнее, чем казалась на первый взгляд. В отличие от той же Figma, использовать Xcode совместно группой из десяти человек просто невозможно. Результат – непредвиденные ошибки вроде «я не туда нажал и всё зависло». Их тоже приходилось решать на лету.
Процесс и результаты
Шаг за шагом осваивая iOS-разработку, участники курса сначала удивлялись простоте создания приложений, а затем сталкивались с новыми челленджами и постепенно меняли своё мнение.
Очень обрадовалась возможности хотя бы немного окунуться в разработку и понять, откуда что берётся. Теперь боль девелоперов при вёрстке под разные экраны ощущается острее. Курс помог чётче вникнуть в механизмы (модальные окна, вот откуда в вас баги!).
Обилие кода может запросто напугать неподготовленного человека, поэтому мы старались соблюдать баланс между наглядной вёрсткой в Interface Builder’е и реализацией интерактивности/функциональности. Каждый пример старались дополнять пояснением о том, как это повлияет на работу других отделов, усложнит или упростит им жизнь.
Побыть чуть-чуть разработчиком было интересно и полезно. Полностью созданные макеты – это не конец, а только начало. Начало, когда у разработчика может задёргаться или не задёргаться глаз. Поэтому в очередной раз напоминаю себе – всё, что делается, должно делаться качественно, продуманно и красиво.
Польза от участия сотрудников не из ЦА (куда входили дизайнеры и тестеры) казалось не самой очевидной, но на практике они были одними из первых, кто нашёл для себя плюсы от нашего курса. Более того, оценить это смогли даже люди извне.
Я часто присутствую на технических собеседованиях и если раньше некоторые вещи, которые обсуждаются во время разговора, для меня были абракадаброй, то теперь я знаю, что именно хочет услышать интервьюер. Еще могу понять, говорит кандидат по делу или нет. Помню свое удивление, когда просматривала чат iOS-разработчиков, где обсуждали какую-то ситуацию в разработке. И о боги! Я всё поняла! Похвалила себя, что решилась пойти на курс!
Дойти до конца курса оказалось несложно. Но написать и защитить своё финальное приложение – это задача, требующая большого внимания и усилий. В итоге с этой задачей справились около 35% обучающихся. Каждый из них освоил следующий стек технологий:
- Interface Builder и Auto Layout;
- Базовые типы данных;
- Основы Swift - переменные, константы, функции и классы;
- Навигация с помощью segue;
- Вёрстка по макетам из Figma;
- Использование сторонних API.
А некоторые даже решили не останавливаться на этом.
Для меня было ачивкой собрать все наши уроки в супераппу. Ребята, которые уже пробовали кодить, понимали, что я сделал что-то интересное и прикольное. А те, кто не понимали, как это строится просто радовались за меня, что я приложил усилия и что-то сделал сам. Проект дал мне понимание, что та сфера, которую я выбрал — идеально мне подходит.
«Выпускным» приложением курса стал индикатор настроения, позволяющий оценить своё состояние по стобалльной шкале, опубликовать эти данные и узнать среднюю оценку среди всех пользователей. К этому заданию многие участники подошли особенно креативно.
А что в итоге?
Нам только предстоит оценить продолжительный эффект от этого курса. Но уже сейчас можно сказать, что следующие цели были достигнуты:
- Сотрудники «гуманитарных» профессий перестали бояться технической стороны процесса разработки;
- Дизайнеры понимают, как макет может усложнить (или упростить) разработку, и согласовывать такие решения с командой;
- QA-инженеры ориентируются на масштаб и возраст проекта, зачастую даже предполагая, что могло вызвать баг;
- Коммуникация с менеджерами и HR стала эффективнее – теперь не приходится переводить с человеческого на девелоперский и обратно).
И да, вам тоже стоит погружать своих сотрудников в мобильную разработку. Главное – это обоюдное желание развиваться и развивать, и грамотный курс, который покажет лучшие стороны программирования.