/developers-roadmap

How to learn front-end or back-end development

Primary LanguageHaskell

Developers roadmap

Как изучить front-end или back-end разработку? Как максимально эффективно прокачаться от junior к middle и от middle к senior? Какие ресурсы выбирать по каким темам?

Введение

В одном репозитории мы собрали темы и ресурсы, которые помогут вам вырасти как front-end или back-end разработчику. Мы советуем выбрать одно из этих двух направлений и максимально сфокусироваться на нём. Только после уверенного овладения одной из областей при большом желании можно начинать переходить на другую, либо оставаться в своей области и изучать её ещё глубже.

Перед тем как создавать pull request, изучите требования к оформлению вопросов и ресурсов.

Статус

Сейчас программа находится в фазе активного переноса с прошлой платформы, где мы её писали (rizzoma.com), поэтому многие куски пока что ещё упущены, структура материала не окончательно заполнена.

Градации

Ниже приведены наши субъективные представления стандартных уровней мастерства разработчиков.

Junior frontend developer

  • Умеет решать локальные задачи, которые хорошо декомпозированы и укладываются в принятые в проекте соглашения и архитектурные принципы.
  • Хорошо знает основной инструментарий — html, css, javascript.
  • Уверенно владеет React.JS на уровне, который позволяет решать абсолютное большинство стандартных задач, связанных с интерфейсами.
  • Умеет ясно излагать свои мысли в письменной и устной форме, понимает важность проактивности для командной работы.

Middle frontend developer

  • Отлично знает инструментарий, включая React.JS.
  • Имеет навыки проектирования и знает основные принципы разработки поддерживаемого продукта, т.е. владеет ООП, ФП, понимает DDD и SOLID.
  • Умеет спроектировать небольшого и среднего размера стандартные проекты (интерфейс для проекта до ±100k строк с командой до ±10 участников).
  • Умеет эффективно решать задачи в рамках заданной архитектуры (например, следуя парадигме от React+Redux).
  • Знает, как решить нетривиальные локальные задачи, чаще всего не связанные с интерфейсами напрямую, например, написать небольшую библиотеку для удобного API по работе с URI.
  • Понимает бизнес-ценность своей работы, может предложить пересмотр требований задачи для лучшего достижений этих ценностей, может предложить убрать задачу из бэклога, аргументировав возможными альтернативами или даже доказав её низкий приоритет.
  • Умеет декомпозировать и довольно точно оценить объем работ для небольших работ (до 2-х человекомесяцев). Умеет явно увидеть области риска при оценке, сузить их наименьшими усилиями и явно фокусировать внимание команды на них.
  • Проявляет эмпатию, не перебивает, умеет выслушать, понять точку зрения оппонента и предложить аргументированные альтернативы.

Senior frontend developer

  • Отлично понимает весь контекст проекта, включая пользователей (и их цели), бизнес, всю команду разработчиков.
  • Понимает бизнес-ценности всего продукта и всей команды.
  • Может помочь ясно сформулировать требования к задаче, учитывая стратегические цели компании.
  • Может спроектировать верхнеуровневую архитектуру продукта учитывая весь контекст (пользователи, бизнес, 3rd party services etc).
  • Сам может выбрать необходимый стек для всего комплекса решений, который может состоять из нескольких больших проектов.
  • Умеет самостоятельно эффективно разбираться в неизвестных и достаточно объемных областях, применять изученное для решения поставленных проблем там, где это эффективно (например, быстро изучить meteor.js и предложить создавать проект на нем, если он действительно лучше подходит).
  • Умеет давать оценки даже для существенного объема работ, запросить все необходимые требования, доработать их при необходимости, заложить риски.

Рекомендация

Советуем для удобного чтения установить расширение Octotree.

Обучение с 0 до Junior

Наша команда также разработала систему обучения по front-end и back-end разработке с нуля. Изучить подробности и заполнить форму, чтобы начать изучение программы, можно на нашей странице.