Система грейдов разработчиков — программист на android

android developer

Ранее рассмотренные темы: грейды общими словами, хард-скиллы, грейды full-stack и back-end разработчиков, грейды front-end программистов

Взглянем на последний пример: грейды android разработчика с языками: Java, Kotlin

Итак, с разбивкой по уровням

  1. Джуниор

Комментарии: принимаем на этот уровень новичков без значимого опыта. На этот уровень не подымаются по системе грейдов.

  1. Джуниор+
  • Средний уровень знания в следующих технологиях  и инструментах: Kotlin  / Git / Android SDK
  • Базовое понимание Activity, Service, Broadcast Receiver, Content Provider

Комментарии: по сути, это основы. С чего начинают android разработчики приложений.

  1. Джуниор++
  • Разбирается в основном проекте
  • Начальные знания языка Java
  • Сильная экспертиза в следующих технологиях  и инструментах:
  • REST API, Firebase, ViewModel, Lifecycle, coroutines, Retrofit, Okhttp, Room, Flow / RxJava, xml

Комментарии: чтобы подняться на этот уровень, начинаем углубляться в android разработку. Разбираемся в самых необходимых библиотеках и подходах. Изучаем Java (уже считается легаси)

  1. Мидл
  • Разбирается в основном проекте на уровне, что может пояснять бизнес процессы коллегам
  • Помощь менеджерам в формировании более полных требований с технической точки зрения  
  • Уверенное знание Java и Kotlin
  • Сильная экспертиза в следующих технологиях  и инструментах: Dagger 2, Hilt, MVI, MVC / MVP / MVVM
  • Базовое понимание Compose
  • Создание модулей Dagger 2 или Hilt,
  • Создание архитектурных компонентов в связке ViewModel + View или Presenter + View

Комментарии: Мидл разработчик должен обладать более высокими компетенциями, чем Джуниор. Он может принимать «решения». Например, разрабатывать архитектуру новых экранов с процессами. Так же, он более самостоятелен в работе и, постепенно, становится экспертом в своей области. Владеет более сложными технологиями. Значительно углубляемся в основные языки. Применяет подходы на практике

  1. Мидл+
  • Приличная экспертиза по непрофильным android проектам. Уверенное выполнение задач
  • Сильная экспертиза в следующих технологиях  и инструментах: Android Jetpack, Gradle 
  • Уверенное знание Compose, Recomposition, State
  • Созданы оптимизированные сборки приложений, с использованием инструментария обфускации ProGuard
  • Знание и применение Unit тестов
  • Придерживается принципов программирования: YAGNI (You Ain’t Gonna Need It)

Комментарии: Еще глубже погружаемся в разработку. Работаем с пакетными менеджерами и сборками. Экспертиза мидлов не ограничивается кодированием, т.е. активно применяет общепринятые принципы программирования и чистого кода

  1. Мидл++
  • Разбираться в бизнес-процессах одного из непрофильных продуктов на уровне чтобы передать знания
  • Сильная экспертиза в следующих технологиях  и инструментах: Android runtime (art) and dalvik, Application security, Memory Management
  • Умение использовать функционал Window Manager, Package Manager, Telephony Manager и Native C/C++ Libraries
  • Необходимо выполнить одно из условий: «Написать таск с использованием HWAddressSanitizer» ИЛИ «Создать сервис по анализу и оптимизации расхода памяти» ИЛИ «Провести оптимизация приложения с использованием garbage collection»
  • Выполненное условие должно привести к количественной оптимизациии в минимум 20%. Например, сервис оптимизирует количество запросов за одную сессию, уменьшив их на 20%. Или количество используемой оперативной памяти снижено на 20%.
  • Придерживается принципам программирования: KISS (Keep It Simple, Stupid)

Комментарии: Более сложные технологии для android, которые увеличивают гибкость реализации задач. Вопросы хорошего кода, безопасного и понятного кода, который легко поддерживать. Огромная польза от ускорения приложений

  1. Сеньор
  • Не менее 5 лет работы в программировании (включая предыдущий опыт)
  • Сильная экспертиза в следующих технологиях  и инструментах: Graphics architecture (Canvas, Custom View)
  • Написан новый крупный компонет или приложение. Или сделан рефакторинг крупного приложения.
  • Наставничество: ученик был повышен с Джуна+ или Джуна++ до Мидла
  • Придерживается принципам программирования: DRY (Don’t Repeat Yourself)

Комментарии: преодолеваем новый рубеж (сеньор), усложняются требования, увеличивается отдача от программиста. В теории, можно изучить все предыдущие технологии и даже чуть попробовать их на практике, но без опыта, без большого количества рассмотренных задач, кандидат не сможет заслуженно называться сеньором. Так же, данный грейд подразумевает наставничество. Кроме опыта самого разработчика, наставничество приносит большую пользу компании

  1. Сеньор+
  • Сильная экспертиза в следующих технологиях и инструментах: Multi-module architecture, HIDL
  • Создан модульный компонент приложения
  • Написана статья об этом компоненте на общедоступном айти ресурсе с большой аудиторией (habr или чтото подобное) от корпоративного аккаунта, на этом грейде или ранее
  • Занимается релизами в проекте над которым работают 2+ человек
  • Наставник 2+ человек, делает код ревью их кода
  • Придерживается принципам программирования: SOLID

Комментарии: добавляем очень перспективные технологии, которые должны двинуть разработку за новые горизонты. Еще больше наставничества. А так же социальная активность от имени компании. Все в выигрыше.

  1. Сеньор++
  • Сильная экспертиза в следующих технологиях и инструментах: Hardware abstraction layer, AIDL
  • Создана полезная для проекта библиотека для Java/Kotlin приложений, опубликована на GitHub или аналогичном ресурсе
  • Написана статья об этой библиотеке на общедоступном айти ресурсе с большой аудиторией (habr или чтото подобное) от корпоративного аккаунта, на этом грейде или ранее
  • Наставничество: ученик был повышен с Мидла до Мидла++

Комментарии: еще больше взаимной пользы. И программисту и компании

Система грейдов разработчиков — профессиональные скиллы

Programmer hard skills

В целом, система трейдов была рассмотрена в статье Общие положения грейдов. 

А в этой статье, рассмотрим прогресс по знаниям разработчика в его профессии

  1. В общем

Самое полезное, что компания ждет от разработчика, — это его знания и опыт в выбранное профессии. Чем он опытнее, тем быстрее будет выполнять задачи. Тем самым, двигая прогресс компании и принося прибыть.

  1. Стеки технологий — специализация

Важно понимать, что не может быть универсальной системы грейдов по хард скиллам для всех разработчиков. Так как технологий и концепций программирования очень большое количество, нужно составить грейдирование хард скиллов по специализации разработчиков

Сперва разделим разработчиков на такие категории (наиболее часто встречающиеся):

  • Фронт-енд разработчик
  • Бэк-енд разработчик
  • Фул-стек разработчик
  • Разработчик десктопных приложения
  • Разработчик приложения под Android
  • Разработчик приложения под iOS

Но и теже Бекенд разработчики не знают всех бекенд языков (PHP, Python, Java, Go, Ruby, NodeJS, C# и многие другие) и технологий (Linux, Windows, Docker, Nginx, Apache, MySQL, PostgreSQL, MongoDB, MS SQL, GraphQL, React, Vue.js, Sphinx, Elastic Search, Redis, MQ Rabbit, Machine Learning и многие другие).

В первую очередь, нужно определиться в используемом стеке, поделить его на более простые или жизненно-важные технологии и более сложные или менее часто используемые. Затем, грубо-говоря, «разбросать» требования по уровням грейдов.

В следующих статьях будут примеры для PHP Бэк-енд разработчика (Linux + PHP + MySQL), Фронт-енд (JS, React, Node) и Android-разработчика, Фул-стек программиста.

  1. Общие концепции программирования

Но, есть такие технологии и концепции которые применяются во многих стеках или являются стандартном для любого стека

Это, например 

  • git, git-low, 
  • ООП, 
  • REST-Api, 
  • Agile, Scrum
  • YAGNI, KISS, DRY, SOLID 
  • Юнит-тесты
  • CI/CD
  • SSH
  • и многое другое. 

Про них не стоит забывать при составлении грейдов разработчиков.

  1. Лидерство и наставничество

На самом деле, высокие грейды редко обходятся без наставничества и лидерства.

В качестве требования для перехода на высокие уровни (мидл++, сеньор), можно включать:

  • Наставничество: повышение ученика с X на Y уровень
  • Код-ревью и Релизы
  • Статьи во внутренних (локальная wiki, Confluence) или внешних источниках (Habr, форумы, сообщества, бумажные статьи в сборниках)
  • Выступления на конференциях от имени компании

5. Вопросы безопасности кода

Уже с малых грейдов, нужно знать как писать код, защищенный от основных атак и уязвимостей