Mobile Developers Roadmap
Карта развития разработчика поможет максимально эффективно прокачаться от Junior до Middle и от Middle до Senior в изучении мобильной разработки. В данном репозитории собраны темы и ресурсы, которые помогут вам в освоении hard skills.
Что с этим делать? Начните изучение материала с самого нижнего уровня – это необходимо, поскольку даже опытные разработчики порой забывают многие нюансы базовых навыков, если длительное время не сталкиваются с ними в своей работе. После изучения блока материала, когда вы будете уверены в том, что вы понимаете темы, затронутые в выбранном вами блоке, сообщите об этом своему руководителю отдела, чтобы согласовать день для technical assessment (технического интервью/тестирования).
После успешной сдачи уровня, вы также сможете:
- Перейти к изучению следующего блока этой карты
- Принимать участие в tech assessment своих коллег на данный уровень
- Принимать участие в обсуждении вопросов сданного блока и предлагать свои дополнения.
Градации
Ниже приведены наши субъективные представления стандартных уровней мастерства разработчиков.
Junior mobile developer
- Умеет решать локальные задачи, которые хорошо декомпозированы и укладываются в принятые в проекте соглашения и архитектурные принципы.
- Хорошо знает основной инструментарий — swift/kotlin/js.
- Уверенно владеет основным стеком проекта (React Native, UIKit и т.д.) на уровне, который позволяет решать абсолютное большинство стандартных задач, связанных с интерфейсами.
- Умеет ясно излагать свои мысли в письменной и устной форме, понимает важность проактивности для командной работы.
Middle mobile developer
- Отлично знает инструментарий, включая 1-2 фреймворка или библиотеки (React Native, UIKit/SwiftUI, Svelte и т.д.).
- Имеет навыки проектирования и знает основные принципы разработки поддерживаемого продукта, т.е. владеет ООП, ФП, понимает DDD и SOLID.
- Умеет спроектировать небольшого и среднего размера стандартные проекты (интерфейс для проекта до ±100k строк с командой до ±10 участников).
- Умеет эффективно решать задачи в рамках заданной архитектуры (MVC, MVP, MVVM и др.).
- Знает, как решить нетривиальные локальные задачи, чаще всего не связанные с интерфейсами напрямую, например, написать небольшую библиотеку для удобного API по работе с URI.
- Понимает бизнес-ценность своей работы, может предложить пересмотр требований задачи для лучшего достижений этих ценностей, может предложить убрать задачу из бэклога, * аргументировав возможными альтернативами или даже доказав ее низкий приоритет.
- Умеет декомпозировать и довольно точно оценить объем работ для небольших работ (до 2-х человекомесяцев). Умеет явно увидеть области риска при оценке, сузить их наименьшими усилиями и явно фокусировать внимание команды на них.
- Проявляет эмпатию, не перебивает, умеет выслушать, понять точку зрения оппонента и предложить аргументированные альтернативы.
Senior mobile developer
- Отлично понимает весь контекст проекта, включая пользователей (и их цели), бизнес, всю команду разработчиков.
- Понимает бизнес-ценности всего продукта и всей команды.
- Может помочь ясно сформулировать требования к задаче, учитывая стратегические цели компании.
- Может спроектировать верхнеуровневую архитектуру продукта учитывая весь контекст (пользователи, бизнес, 3rd party services etc).
- Сам может выбрать необходимый стек для всего комплекса решений, который может состоять из нескольких больших проектов.
- Умеет самостоятельно эффективно разбираться в неизвестных и достаточно объемных областях, применять изученное для решения поставленных проблем там, где это эффективно (например, быстро изучить meteor.js и предложить создавать проект на нем, если он действительно лучше подходит).
- Умеет давать оценки даже для существенного объема работ, запросить все необходимые требования, доработать их при необходимости, заложить риски.