Один из вариантов описания
- Отлично знает инструментарий — html, cssm, js, ts, работу сети... Знает и понимает все основные возможности языка, синтаксис, основные приёмы...
- Имеет навыки проектирования и знает основные принципы разработки поддерживаемого продукта, т.е. владеет ООП, ФП, понимает DDD и SOLID.
- Умеет спроектировать небольшого и среднего размера стандартные проекты (интерфейс для проекта до ±100k строк с командой до ±10 участников).
- Умеет эффективно решать задачи в рамках заданной архитектуры (например, следуя парадигме от React+Redux).
- Знает, как решить нетривиальные локальные задачи, чаще всего не связанные с интерфейсами напрямую, например, написать небольшую библиотеку для удобного API по работе с URI.
- Понимает бизнес-ценность своей работы, может предложить пересмотр требований задачи для лучшего достижений этих ценностей, может предложить убрать задачу из бэклога, аргументировав возможными альтернативами или даже доказав её низкий приоритет.
- Умеет декомпозировать и довольно точно оценить объем работ для небольших работ (до 2-х человекомесяцев). Умеет явно увидеть области риска при оценке, сузить их наименьшими усилиями и явно фокусировать внимание команды на них.
- Проявляет эмпатию, не перебивает, умеет выслушать, понять точку зрения оппонента и предложить аргументированные альтернативы.
- Хорошо умеет гуглить, в том числе на английском
- В достаточной мере знает английский, чтобы читать тех. документацию и вести деловую переписку в чате. Ок, с помощью переводчика. Кстати, возможность беседовать с англоязычной командой на ежедневном митинге по тех. вопросам — тоже очень желательна.
- Обладает базовыми soft-skills — регулярно проводит code-review junior-разработчиков (не вгоняя их в недельную депрессию), умеет задавать вопросы, может эффективно общаться со старшим руководством и клиентами, помогает менее опытным коллегам, может подготовить и провести учебный семинар, выступить с докладом на конференции...
- Ему можно доверить в работу отдельную фичу. Т.е. составную задачу, отвечающую за часть функциональности продукта — например авторизация (интерфейс, модальное окно, авторизация по почте, по соц. сетям, запрос на сервер, хранение данных в browser API и т.д.). И при этом не надо дотошно проверять каждый его коммит.
Требования к разработчику уровня Middle
- от 1-1,5 года опыта на комплексных проектах;
- работает почти самостоятельно, периодически консультируется со старшими товарищами (на старте проекта и не очень часто при возникновении нетиповых ситуаций);
- в принципе знает про планирование и оценки, но на практике применяет редко (если не попросят), получается не очень хорошо;
- не занимается управлением требованиями (соответственно сроками, качеством и составом фичи);
- обычно делает, что просит менеджер или смежники, и редко предлагает оптимизировать задачу (на основе технических знаний о надежности и технологичности, а также экспертизы по платформе);
- способен решать типовые продуктовые задачи, содержащие: верстку, анимации, взаимодействие с бэком, взаимодействие с существующей инфраструктурой приложения;
- обычно достигает результата, который внешне устраивает заказчика;
- результат содержит дефекты, проявляющиеся в краевых случаях и при расширении функциональности приложения.
Требования к разработчику уровня Middle +
- плюсом ко всем навыкам «Middle»
- в среднем от 2+ года опыта;
- работает самостоятельно, нетиповые ситуации решает самостоятельно, редко велосипедит, эскалирует вопросы редко и при наличии реальной необходимости;
- умеет планировать и оценивать задачи, активно практикует эти навыки;
- чаще управляет требованиями, чем нет, обычно получается неплохо;
- старается решить задачу/проблему, с которой к нему пришли, не воспринимая требования менеджера/заказчика как истину в последней инстанции;
- способен проводить технические исследования;
- умеет оценивать профессиональный уровень разработчиков, проводит собеседования;
- способен решать продуктовые задачи любой сложности, при этом учитывает неочевидные моменты: – гибкость, расширяемость, совместимость с существующими компонентами, – интернационализация, – темная/светлая тема, – медленная сеть / офлайн режим, – энергопотребление, – производительность, – работа в разных окружениях (устройства, операционные системы);
- почти всегда достигает результата, который устраивает заказчика и даже превосходит его ожидания;
- результат редко содержит дефекты, проявляющиеся в краевых случаях и при расширении функциональности приложения.
Требования к разработчику уровня Senior
- плюсом ко всем навыкам «Middle +»
- 3+ года опыта;
- уровень знания кода/технологий: гуру;
- улучшает процессы, инструменты и сотрудников вокруг себя;
- внедряет новые технологии;
- проводит крупные рефакторинги;
- проектирует крупные проекты, в том числе кроссфункциональные;
- способен организовать работу небольшой группы разработчиков.
Ссылки
- Как перестать быть джуниором и начать жить
- MetaLamp - Roadmap. Frontend & Backend (GitHub)
- MetaLamp - Roadmap. Frontend (GitHub)
- IT-Kamasutra - Как пройти испытательный срок? (YouTube)
- YouTube - Что такое soft-skills по-русски
*[Legmo, 2019-2023](https://github.com/Legmo/notes/)*