«Чтобы всё успевать, я практически не сплю»: как стать очень крутым мобильным разработчиком
Выступать, писать статьи, преподавать и работать — может ли один человек успевать всё это? Оказалось, может, если очень хочет развиваться в профессии.
Иллюстрация: Rilley68 / Pexels / Anastasia Lebedeva / Wikimedia Commons / Colowgee для Skillbox Media
Анна Жаркова
Lead Mobile Developer в компании Usetech. Пишет приложения нативно под iOS (Swift/Objective-C) и Android (Kotlin/Java) и кросс-платформенно (Xamarin, Xamarin.Forms, Kotlin Multiplatform). В мобильной разработке больше восьми лет. Тимлид и ментор. Kotlin GDE. Преподаватель в Otus на курсах iOS Basic и Pro.
Автор на «Хабре» и Medium (SwiftUI, Kotlin Multiplatform, iOS). Пишет статьи, выступает на конференциях и митапах, (Mobius, Ontico, MobiFest, Android Worldwide, Swift Heroes, Podlodka Android и iOS и так далее). Член ПК Mobius, CodeFest, Podlodka Android. Амбассадор Woman Techmakers и компании Usetech. В свободное время изучает иностранные языки (китайский и немецкий). Увлекается живописью и участвует в выставках.
Я задумалась о выборе специальности, когда пришло время готовиться к поступлению в вуз. Чтобы определиться с профессией, прошла профильное тестирование, и мне порекомендовали присмотреться к IT. Оказалось, что это направление идеально подходило моем психотипу, склонностям и характеру.
Чтобы подготовиться к экзаменам, я перешла в технический класс с углублённой математикой и физикой и сразу после школы поступила в Алтайский политех на «Защиту информации».
Почти год после университета училась программировать
В университете мне не хватило погружения в программирование, поэтому я осваивала его самостоятельно: первые полгода пробовала себя в тестировании и изучала разные языки. Начала с C# — хотя мне неоднократно намекали, что стоит посмотреть на Java, но душа к нему тогда не лежала.
Как и многим новичкам, мне казалось, что я уже опоздала и все ниши для работы заняты. Хотелось чего-то новенького, оригинального, с перспективами трудоустройства — и этим «новеньким» стала мобильная разработка. На вход в неё мне понадобилось ещё около трёх месяцев.
Училась по курсам и книгам:
- Книги Флёнова по С#, например Библия C#, справочники Албахари — по ним я практиковалась.
- Курсы Георгия Могелашвили по С#. Они не только позволили освоить язык, но и показали, как развиваться в программировании дальше, помогли прокачать навыки самообучения.
- Сайт Start Android. Этот ресурс позволил мне начать погружение в разработку под Android. Занималась по заданиям параллельно с учёбой в магистратуре АлтГУ. Однако этого было недостаточно: можно изучить технологию, но теория без качественной практики не научит вас правильно структурировать проект и писать хороший код.
- Сайт для обучения Android-разработке Алексея Климова.
- Курсы от Coursera по Android-, iOS-разработке и введение в Kotlin для Java-разработчиков. Это практические курсы с различными заданиями, где вы не только изучаете технологию, но и последовательно пишете целый проект. В конце идёт отдельное финальное проектирование. В программе Coursera несколько курсов объединяются в единую специализацию. Поэтому, пройдя их все, вы сможете считать себя уже настоящим разработчиком (хоть и джуном).
После обучения я пробовала себя в роли тестировщицы в одной из IT-компаний, но быстро поняла, что это не моё. Хотелось заниматься именно разработкой, поэтому я всё взвесила и ушла с этой работы, полностью занявшись самообучением. Благо у меня была такая возможность.
На тот момент я считала себя ещё довольно неопытной и даже не знала, есть ли в моём городе компании, которые занимаются мобильной разработкой. Однако в одной из компаний, куда меня пригласили прособеседоваться на позицию QA, оказалась открыта вакансия разработчика мобильных приложений. И так как у меня в резюме были указаны навыки и опыт работы с Android, мне предложили попробовать. Им нужны были Android-разработчики, чтобы писать нативные приложения и работать с Xamarin.
Я прошла несколько собеседований, выполнила пару тестовых и уже через пару недель работала в этой компании. С этого и начались мой вход в IT и развитие в роли мобильного разработчика.
Я сразу погрузилась в работу. Когда вы, будучи джуном, начинаете делать рабочие проекты, обязательно продолжайте учиться. Да, свободного времени практически не остаётся, потому что днём нужно работать, а вечером — учиться. Но только так можно быстро прокачать навыки.
Тогда на YouTube было мало уроков, а многих современных учебных платформ, курсов и подкастов ещё не существовало. Я продолжала читать книги по паттернам и пробовала примеры оттуда применять на практике. Потом стала самостоятельно изучать и Java, которым я владела на тот момент ограниченно только в базовых рамках, необходимых Android-разработчику. В это время мне уже было интересно, как писать код не только рабочий, но и аккуратный, стабильный и эффективный.
Выучила iOS, чтобы стать фулстеком
Когда разобралась с Android, у меня возникла мысль изучить iOS-разработку. Я взяла на Coursera курс для начинающего iOS-разработчика и посмотрела базовые уроки.
Как раз в это время на работе увольнялся iOS-разработчик и надо было поддержать платформу.
Мне нравятся и iOS, и Android, я не выбираю между ними. Считаю, что мобильный разработчик, особенно тимлид, должен развиваться как фулстек и знать обе платформы. Ведь задачи тимлида — подсказать верное архитектурное решение, направить и проконтролировать членов команды.
Освоила Kotlin Multiplatform
Как именно разрабатывать — кросс-платформенно или нативно — не так важно, ведь у разных проектов разные потребности. Если нужно наиболее простое и эффективное решение и в проекте нет сверхъестественных и сложных вещей, подойдёт кросс-платформа. Многим это решение понравится — оно так популярно, потому что экономит время и деньги заказчика.
Нативно создают более сложные решения: организовать общую работу с тем же UI, датчиками на кросс-платформе займёт гораздо больше времени. Знание обеих технологий позволяет мне более гибко и оперативно переключаться между разными проектами.
Единственный минус — много времени уходит на обновление навыков. Например, я сейчас в своём основном проекте Android-лид и архитектор Android-направления, поэтому iOS там не занимаюсь. Если я не буду подтягивать знания по iOS самостоятельно, то неминуемо отстану. На помощь приходит преподавание в Otus на курсе по iOS — это позволяет оставаться в тонусе, актуализировать знания по платформе.
Чтобы всё успевать, я мало сплю. Сильно выручает удалёнка — экономит время на дорогу до работы и обратно. Это несколько часов, которые можно потратить на личные дела или хобби. У меня, как и у многих айтишников, всё, что не работа, — хобби. Даже если это тоже IT.
В 2017 году Kotlin стал основным языком разработки под Android, рекомендованным Google, — до этого приложения для Android писали на Java.
С 2019 года с появлением Flutter пошёл новый всплеск моды на кросс-платформенные технологии. Мобильные разработчики всегда ищут, на чём сэкономить время, и кросс-платформы помогают в этом. Одни появляются, другие исчезают, но сама идея мультиплатформенности никогда не умрёт.
Пару лет назад, когда мне захотелось попробовать что-то новое, я обратила внимание на Kotlin Multiplatform. Она стала набирать популярность среди энтузиастов практически сразу, ещё до выхода стабильной альфы. Меня даже как-то спросили об опыте работы с ней. Этот вопрос тогда вызвал у меня недоумение, потому что статья о мультиплатформе от JetBrains вышла совсем недавно и просто невозможно было успеть чему-то по ней научиться.
В 2020 году весной я написала серию статей по Swift UI. Переложила в статьи доклад, который не попал в программы CodeFest и Mobius из-за схожести тематики с другими докладами. А ещё у DevRel моей компании появилась идея — она хотела, чтобы я написала интересную статью для Tproger. А их как раз заинтересовал материал о Kotlin Multiplatform.
Я решила внимательно разобраться, что это за технология, — ведь до этого я читала о ней буквально пару статей на AppTractor и GeekBrains. Естественно, я стала изучать примеры работы, а одного лишь «Hello, world!» мне было недостаточно. Поэтому я взяла полноценное приложение и подробно его рассмотрела, сделала пример с общим кодом и нативным UI.
Три дня и три ночи промучилась с этим проектом из-за проблемы реализации обработки многопоточности. В результате нашла решение, сделала проект и на основе своего опыта написала статью. Получился рабочий сэмпл и хороший туториал.
Благодаря этому опыту я глубоко погрузилась в работу Kotlin Multiplatform. Примерно в то же время начала преподавать iOS на курсе Otus. Открытые уроки и live coding на тему Kotlin Multiplatform в рамках курса провожу именно я. На них я в режиме реального времени показываю студентам, как создать с помощью этой технологии простое рабочее приложение.
Мультиплатформа затягивала всё сильнее — и когда вышла её новая версия, я решила сделать полноценный доклад. Для этого глубже погрузилась в мир Kotlin-потоков и Kotlin Native — специальную версию Kotlin для iOS. Это заняло много времени, но по итогам получилось несколько серий статей для «Хабра».
Статьи получились необычными и интересными, отозвались у аудитории и получили много откликов, поэтому с этим материалом и докладами по iOS я параллельно выступила не нескольких конференциях. 2020 год стал годом онлайн-удалёнки — и эта удалёнка подарила спикерам больше возможностей для выступлений на конференциях.
Стала GDE по Kotlin Multiplatform
После серии удачных выступлений на меня вышла Екатерина Винниченко, региональный менеджер Google. Она предложила попробовать подготовиться к собеседованию и получить статус Google Developer Expert по этой технологии. Эта программа объединяет квалифицированных специалистов и энтузиастов технологии по всему миру и позволяет им делиться своими знаниями с большим количеством людей и эффективнее заниматься развитием технологии. На тот момент как раз экспертов по Kotlin и тем более по Kotlin Multiplatform в РФ не было, так как они переместились в другие регионы мира по работе.
Я решила, что это интересная возможность, и согласилась. Екатерина меня познакомила с Лаурой (Laura Morinigo) из офиса Google в Лондоне, экспертом по технологии Firebase. Хотя она и не была экспертом по технологии Kotlin Multiplatform, но стала моим ментором и помогла подготовиться — в её задачи входило направить меня, рассказать, куда и как двигаться, как правильно подаваться, писать и оформлять статьи, где публиковаться. По её рекомендации я завела блог на Medium в дополнение к Telegram-каналу «Записки разработчицы» и твиттеру, начала писать про разработку в своём аккаунте в Twitter.
Лаура также порекомендовала мне больше выступать на иностранных митапах, и я последовала её совету — ведь онлайн-формат сделал зарубежные события более доступными. Например, я уже несколько раз выступала на Android Worldwide Meetup.
Видео моего доклада для Android Worldwide Meetup
Параллельно я продолжала делать доклады, пет-проекты, писать статьи. Весной 2014 года выступала на Mobius с докладом по Kotlin с Dependency Injection. Практически любая задача в Kotlin Multiplatform, связанная с работой с общим кодом под разные платформы, требует особого решения. Для организации общего DI в Kotlin Multiplatform нужно решить такие вопросы, как работа с многопоточностью, синхронизация, оптимизация работы с памятью, автоматическое создание объектов классов iOS под Kotlin и тому подобное. В качестве практической реализации я разработала мою библиотеку di-multiplatform-lib.
Я не только GDE, но и член Women Techmakers. Этой весной я выступила в качестве ментора на Women Developer Academy, где помогала девушкам-айтишницам прокачиваться в публичных выступлениях: рассказывала о правильной подаче и подготовке докладов, выборе темы.
Но моё знакомство с WDA началось с собственного участия. Также прошлой весной я, как кандидат в GDE, приняла, по рекомендации Лауры и Екатерины, участие в Road to GDE. В рамках этой инициативы менторы из экспертов Google уже по твоей технологии позволяют лучше подготовиться к собеседованию. Подсказывают, как собрать свой опыт, что ещё нужно добавить, на чём сфокусировать внимание. Мой второй ментор Никола Корти здорово мне помог.
Это реальная проблема. Люди с большим опытом, у которых за плечами вебинары и подкасты, которые пишут свои библиотеки, преподают, не могут оформить анкету так, чтобы их приняли, и в итоге получают отказ.
В общем, Road to GDE — это не обучение технологии, а именно программа подготовки. Многим кандидатам из СНГ часто необходимо подтянуть английский — именно знание языка является основным препятствием для прохождения собеседования. Также очень полезно иметь в копилке хотя бы несколько выступлений на международных мероприятиях.
За две недели я прошла два собеседования. Первое было с Джоном О’Рейли — техническим экспертом, — у него есть прекрасный блог по технологиям Kotlin. Он работает в компании Neat — это один из основных контрибьюторов в технологию Kotlin Multiplatform, а он сам внёс огромный вклад в развитие технологии. У нас в России этой технологией много занимаются, например, компания IceRock и Алексей Гладков из «Леруа Мерлен».
Второе интервью — с Муратом Йенером, тоже Kotlin GDE, который должен был провести финальный этап интервью. Я волновалась, но меня спросили то, что я готовила, — за пару дней до этого я выступила с докладом на KotLand, и все вопросы оказались на ту тематику, на которую был мой доклад. На мой вопрос о результатах мне сказали, что нужно две недели, но буквально через пять минут после интервью я получила письмо с текстом: «Поздравляем вас, вы Kotlin GDE».
Я и дальше планирую развиваться как тимтехлид. Моё развитие в качестве менеджера — обязательный и правильный этап, но я не хочу оставлять технический стек.
Статус GDE даётся не навсегда. Каждый год комиссия Google проверяет, чем занимались эксперты. Если человек получил лычку эксперта и перестал обновлять знания и выступать, его этой лычки могут лишить. И это справедливо. Статус Google Developer Expert означает признание вашего уровня владения технологией и способности пропагандировать её в IT-сообществе: вести курсы, писать книги и статьи, снимать уроки, предлагать новые, интересные решения, контрибьютить в проекты.
Например, у Google есть специальная общедоступная Dev Library, где можно опубликовать свой пример использования технологии как официально одобренный корпорацией. У меня там выложена библиотека по Dependency Injection — di-multiplatform-lib.
Я планирую развиваться как Kotlin Developer Expert и дальше — участвовать в различных мероприятиях, выступать на конференциях и митапах. Ещё я хочу получить статус Android-эксперта, потому что Android занимаюсь дольше всего.
Как стать GDE
Тем, кто хочет стать экспертом, я прежде всего советую определиться с направлением. Чтобы выбрать дорогу, нужно знать, куда ты идёшь. При этом выбранное направление не мешает развиваться и в других сферах. Например, я занимаюсь Kotlin Multiplatform, но это не означает, что я не смогу изучить Flutter и использовать его для своих пет-проектов или работы.
Вот что я рекомендую.
Следить за развитием технологий. Когда определились с направлением, посмотрите, какие форматы обучения и материалы доступны. 2020 год открыл нам большое количество подкастов, курсов, митапов. Рекомендую посмотреть, что из актуальных материалов есть в открытом доступе, и выбрать самое интересное:
- Книги. Рекомендую электронные. К сожалению, печатные издания часто устаревают ещё до того, как их опубликуют. Например, так было с JPEG Compose: каждая его версия сильно отличалась от предыдущей, поэтому поддержание актуального уровня знаний требовало внимательности и усилий.
- Броадкаст по Android Кирилла Розова, специалиста по Android и Kotlin из Беларуси.
- Подкаст Mobile People Talks про iOS-разработку Даниса Тазетдинова, Владимира Иванова и Александра Денисова.
- Подкаст и конференции от Podlodka. Я состою в ПК Podlodka Android Crew и участвую в конференциях по iOS и Android.
Выступать. Попробовать себя в конференциях и митапах обязательно должен каждый специалист, который претендует на звание эксперта. Не обязательно сразу идти подаваться на Mobius — участвуйте в маленьких, локальных митапах.
Если есть возможность сделать доклад на английском и ответить на вопросы, то можно податься на Android Worldwide или Swift Heroes. Swift Heroes — это конференция, которая проводится в Италии, в Турине, с возможностью участвовать удалённо. В некоторых городах есть Google Developer Community, которое проводит локальные митапы, можно попробовать выступить там.
Следить за новостями в Twitter и Telegram. Новости о технологиях лучше всего мониторить там. Я советую подписаться на экспертов по вашей технологии — не только Google-экспертов, но и просто известных или авторитетных в индустрии людей.
Полезный аккаунт — Mobileunderhood. Через него можно узнавать людей из IT-индустрии. А ещё Twitter часто рекомендует интересные аккаунты по интересующим пользователя запросам. Можно подписаться всего на один контакт и уже через месяц благодаря рекомендациям получить приличную базу людей, которые занимаются конкретными технологиями.
В Telegram тоже есть множество тематических каналов, включая мой — «Записки разработчицы».
Читать «Хабр» и другие сайты. Кто бы ни говорил, что современный «Хабр» — токсичное место, там всё ещё очень часто публикуют анонсы и рассказывают про новые технологии. Ещё рекомендую заглядывать на AppTractor.
Писать собственные проекты. Теория без практики — это скучно. Нужно делать пет-проекты по технологии и не стесняться выкладывать их на GitHub. Можно ещё попробовать завести собственный Telegram-канал или блог, чтобы фиксировать в нём свой прогресс.
Не все хотят или могут развиваться как авторы статей: не всем это интересно и не у всех это получается. Также не у всех есть возможность завести собственный подкаст или броадкаст. Например, у меня сейчас нет такой технической возможности и времени — я просто не буду успевать работать. А работать всё-таки надо, какими бы весёлыми и интересными ни были конференции, митапы и другие мероприятия.