Как стать full-stack разработчиком
Традиционно разработчики делятся на frontend и backend разработчиков; это обусловлено разделением ответственности между внешним представлением проекта (frontend) и внутренними технологиями (backend). Очень грубо обобщая, можно сказать, что фронтенд разрабатывает интерфейс, который видят пользователи, а бэкенд делает «начинку», т.е. программно-аппаратную часть. Такое деление является логичным и создано для упрощения разработки проекта. Однако все чаще в IT-среде появляются full-stack разработчики. О том, кто они такие и какие технологии актуальны для фулстек-разработчика, я расскажу ниже.
Определение
Full-stack developer (или фулстек-разработчик) – это разработчик, который должен разбираться во всем стеке технологий и используемых в проекте компонентов, как в части фронтенда, так и бэкенда. При этом такому разработчику совсем не обязательно быть senior во всех технологиях, которые используются при разработке приложения.
Как правило, фулстек-разработчик должен полностью закрывать весь стек разработки, в том числе разбираться в серверах, операционных системах и разных базах данных, а также PaaS.
Фулстек разработчик имеет свои планы и минусы.
Плюсы :
- Знание многих технологий дает возможность выбрать, куда двигаться дальше; ему проще перепрофилироваться.
- Работа разнообразна, так как есть возможность менять проекты, пробовать разные варианты и технологии.
- Fullstack-разработчики понимают работу многих технологий, и поэтому могут выбрать хорошее решение для проекта, исправить недочеты существующих проектов и так далее.
Минусов , конечно, тоже хватает:
- По сравнению с узкоспециализированным разработчиком, у фулстек-разработчика меньше знаний в каждой из областей (то есть его знания работают вширь, а не вглубь).
- Из предыдущего пункта вытекает то, что ему сложнее развиваться – приходится осваивать все и сразу, а не концентрироваться на развитии в одном направлении.
- У Fullstack-разработчика часто отсутствует фиксированная зона ответственности, и из-за этого его еще сложно заменить другим специалистом.
- Нужно уметь хорошо планировать свою работу для того, чтобы все и везде успевать – иначе появится риск перегрузки задачами.
Если, несмотря на это, вы все равно решили стать фулстек-разработчиком, то ниже я перечислю актуальные (на данный момент) технологии, которые вам обязательно нужно выучить.
HTML/CSS
HTML и CSS – основа основ. Любой веб-разработчик должен знать HTML и CSS. HTML позволяет добавлять контент на сайт, а CSS отвечает за стиль этого контента. Темы, которые чаще всего затрагиваются при разговоре о HTML/CSS во время собеседования:
- Семантическая верстка HTML.
- Блочная (боксовая) модель CSS.
- Преимущества предпроцессоров CSS : LESS, Sass, Stylus и другие.
- Медиа-запросы CSS.
- Bootstrap (фреймворк с инструментами, необходимыми для создания веб-сайтов и приложений).
JavaScript
JavaScript (JS) – язык, который с каждым годом становится все популярнее и обрастает все большим количеством библиотек, фреймворков и инструментов.
Интересно, что в опросе Stack Overflow 2016 года JS стал самым популярным языком во всех трех областях: fullstack, frontend и backend. В опросе 2017 года JS просто стал самым популярным языком среди всех языков программирования. Ничего удивительного в этом нет – JS единственный язык программирования, который используется и в браузере, и в качестве серверного языка (благодаря Node.js). В качестве фулстек-разработчика нужно разбираться в следующих темах:
- Работа с DOM . Также желательно знать, что такое и уметь использовать JSON .
- Важные особенности языка: композиция функций , наследование классов , делегирование событий , функции высшего порядка .
- Порядок обработки событий (в том числе асинхронный), промисы и колбэки (функции обратного вызова).
- Правильное структурирование кода и работа с модулями .
- Знание webpack , browserify и gulp .
- Знание хотя бы одного популярного фреймворка ( React , AngularJS …). Вообще, понимание самого JS важнее, чем знание фреймворков, т.к. в любом из них тогда будет несложно разобраться.
- Знание jQuery .
- Автоматическое тестирование.
Язык бэкенда
Теперь надо перейти к бэкенду, который отвечает за работу с базой данных, аутентификацию пользователей и логику работы приложения в целом. Не так важно, какой язык вы выберете, главное – это действительно понимать его и знать все нюансы. Если задать на какой-нибудь популярной площадке вопрос о том, какой язык бэкенда лучше всего выучить, то разброс ответов будет широким: про каждый язык вы услышите и хорошее, и плохое.
Поэтому ниже я перечислю все популярные языки и технологии бэкенда.
-
: хороший вариант, т.к. это просто окружение JS (то есть при знании JS не нужно будет учить новый язык программирования). А самый популярный для изучения и создания приложений фреймворк – это Express . : еще один популярный для бэкенда язык. Самые популярные фреймворки: Ruby on Rails и Sinatra . : популярные фреймворки – Django и Flask . : сейчас Java уже редко изучают для применения в бэкенде, однако существуют компании, которые его до сих пор используют, поэтому найти работу можно и с этим языком программирования. : сейчас является краеугольным камнем в вебе, но конкретно в бэкенде используется нечасто.
Базы данных и веб-хранилища
Во время изучения веб-разработки вы рано или поздно придете к тому, что данные нужно где-то хранить. А также нужно иметь возможность получить к ним доступ позже.
Поэтому обязательно нужно углубиться в следующие темы, касающиеся БД и хранения данных:
- Преимущества реляционной модели данных , SQL . , например MongoDB .
- Умение подключать выбранную базу данных к выбранному языку бэкенда (например, MongoDB и Node.js ).
- Преимущества СУБД в оперативной памяти : Redis , Memcached . для хранения сессий, куков и кэша в браузере. , ACID , ORM .
HTTP и REST
HTTP – это протокол передачи данных прикладного уровня, он обеспечивает взаимодействие сети и пользователя. Например, если JS-код делает какой-либо AJAX-запрос к бэкенду на сервере, то это происходит посредством HTTP. Важные в этой части темы перечислены ниже:
- Что такое REST .
- Использование REST API .
- Запросы POST и GET .
- Использование Chrome DevTools .
- Работа с SSL-сертификатами. , SPDY , WebSocket .
Архитектура веб-приложения
После того как вы познакомитесь с HTML/CSS, JavaScript, бэкендом, базами данных, а также HTTP/REST, настанет время перейти к архитектуре веб-приложения. Для того чтобы создать сложное приложение, вам нужно знать, как правильно структурировать код, как разделять файлы, где держать большие медиафайлы, как структурировать данные в базе данных и так далее.
Конечно, обо всем этом можно прочитать в сети, однако наилучшим решением будет практика, ведь лучше всего работать не одному, а в команде.
Поэтому не факт, что человек, который занимается разработкой более 7 лет, знает CSS или JS лучше разработчика с двухлетним опытом работы. Однако чем больше опыт у специалиста, тем с большим количеством приложений он работал, а значит, работая с ним в команде, появляется возможность узнать больше об архитектуре и дизайне приложений (помимо других важных вещей). Опыт дает возможность увидеть картинку целиком.
Однако пока вы в начале пути, ознакомьтесь со следующими темами:
-
, например Heroku, AWS и Hostman.
- MVC.
А вот вам одно познавательное видео (на английском):
Git – это система контроля версий, которая позволяет разработчикам, работающим над одним проектом, следить за изменениями в коде. Научиться использовать Git несложно, для этого посмотрите:
-
для начинающих. .
- Основные команды.
Заключение
Теперь вы знаете все основные темы, в которых нужно разбираться для того, чтобы носить звание фулстек-разработчика. Конечно же, теория – это хорошо, но в мире программирования наибольшую роль играет практика, так что не забывайте все прочитанное и услышанное обязательно пробовать и использовать в своей работе.