Как изучить front-end или back-end разработку? Как максимально эффективно прокачаться от junior к middle и от middle к senior? Какие ресурсы выбирать по каким темам?
В одном репозитории мы собрали темы и ресурсы, которые помогут вам вырасти как front-end или back-end разработчику. Мы советуем выбрать одно из этих двух направлений и максимально сфокусироваться на нём. Только после уверенного овладения одной из областей при большом желании можно начинать переходить на другую, либо оставаться в своей области и изучать её ещё глубже.
Перед тем как создавать pull request, изучите требования к оформлению вопросов и ресурсов.
Сейчас программа находится в фазе активного переноса с прошлой платформы, где мы её писали (rizzoma.com), поэтому многие куски пока что ещё упущены, структура материала не окончательно заполнена.
Ниже приведены наши субъективные представления стандартных уровней мастерства разработчиков.
- Умеет решать локальные задачи, которые хорошо декомпозированы и укладываются в принятые в проекте соглашения и архитектурные принципы.
- Хорошо знает основной инструментарий — html, css, javascript.
- Уверенно владеет React.JS на уровне, который позволяет решать абсолютное большинство стандартных задач, связанных с интерфейсами.
- Умеет ясно излагать свои мысли в письменной и устной форме, понимает важность проактивности для командной работы.
- Отлично знает инструментарий, включая React.JS.
- Имеет навыки проектирования и знает основные принципы разработки поддерживаемого продукта, т.е. владеет ООП, ФП, понимает DDD и SOLID.
- Умеет спроектировать небольшого и среднего размера стандартные проекты (интерфейс для проекта до ±100k строк с командой до ±10 участников).
- Умеет эффективно решать задачи в рамках заданной архитектуры (например, следуя парадигме от React Redux).
- Знает, как решить нетривиальные локальные задачи, чаще всего не связанные с интерфейсами напрямую, например, написать небольшую библиотеку для удобного API по работе с URI.
- Понимает бизнес-ценность своей работы, может предложить пересмотр требований задачи для лучшего достижений этих ценностей, может предложить убрать задачу из бэклога, аргументировав возможными альтернативами или даже доказав её низкий приоритет.
- Умеет декомпозировать и довольно точно оценить объем работ для небольших работ (до 2-х человекомесяцев). Умеет явно увидеть области риска при оценке, сузить их наименьшими усилиями и явно фокусировать внимание команды на них.
- Проявляет эмпатию, не перебивает, умеет выслушать, понять точку зрения оппонента и предложить аргументированные альтернативы.
- Отлично понимает весь контекст проекта, включая пользователей (и их цели), бизнес, всю команду разработчиков.
- Понимает бизнес-ценности всего продукта и всей команды.
- Может помочь ясно сформулировать требования к задаче, учитывая стратегические цели компании.
- Может спроектировать верхнеуровневую архитектуру продукта учитывая весь контекст (пользователи, бизнес, 3rd party services etc).
- Сам может выбрать необходимый стек для всего комплекса решений, который может состоять из нескольких больших проектов.
- Умеет самостоятельно эффективно разбираться в неизвестных и достаточно объемных областях, применять изученное для решения поставленных проблем там, где это эффективно (например, быстро изучить meteor.js и предложить создавать проект на нем, если он действительно лучше подходит).
- Умеет давать оценки даже для существенного объема работ, запросить все необходимые требования, доработать их при необходимости, заложить риски.
Советуем для удобного чтения установить расширение Octotree.
Наша команда также разработала систему обучения по front-end и back-end разработке с нуля. Изучить подробности и заполнить форму, чтобы начать изучение программы, можно на нашей странице.