Как стать full-stack разработчиком в 2018 году
From: Community TimewebВремя чтения - 13 минут.

Full-stack developer (или фулстек разработчик) – это разработчик, который должен разбираться во всем стеке технологий и используемых в проекте компонентов, как в части фронтенда, так и бэкенда. При этом такому разработчику совсем необязательно глубоко знать абсолютно все технологии, то есть речь не идет о том, что быть senior во всех технологиях, которые используются при разработке приложения.
Как правило, фулстек разработчик должен полностью закрывать весь стек разработки, в том числе разбираться в серверах, операционных системах и разных базах данных, а также PaaS.
Но если и упрощенное понятие фулстека: фулстек разработчик WordPress – это разработчик, который может делать и развертывать сайты на WordPress.
В общем, определение такого разработчика и требования к нему могут разниться.
Фулстек разработчик имеет свои планы и минусы.
Плюсы:
- знание многих технологий дает возможность выбрать, куда двигаться дальше, проще перепрофилироваться;
- в целом работа разнообразна, так как есть возможность менять проекты, пробовать разные варианты и технологии;
- фулстек разработчики понимают работу многих технологий и поэтому могут выбрать хорошее решение для проекта, исправить недочеты и так далее.
Минусов, конечно, тоже хватает:
- по сравнению с узкоспециализированным разработчиком, у фулстек разработчика меньше знаний в каждой из областей (то есть его знания работают вширь, а не вглубь);
- из предыдущего пункта вытекает то, что ему сложнее развиваться – приходится осваивать все и сразу, а не концентрироваться на развитии в одном направлении;
- у фулстек разработчика часто отсутствует одна, фиксированная зона ответственности, и из-за этого его еще сложно заменить другим специалистом;
- нужно уметь хорошо планировать свою работу для того, чтобы все и везде успевать – иначе появиться риск перегрузки задачами (когда везде надо успеть все посмотреть, все сделать и т.д.).
Если, несмотря на это, вы все равно решили стать футстек разработчиком, то ниже я перечислю актуальные (на данный момент) технологии, которые вам обязательно нужно выучить.
HTML/CSS

Это – основа основ. Любой вебразработчик должен знать HTML и CSS. HTML позволяет добавлять данные, контент на сайт, а CSS отвечает за стиль этого контента. Темы, которые чаще всего затрагиваются при разговоре о HTML/CSS во время собеседования:
- Семантическая верстка HTML
- Блочная (боксовая) модель CSS
- Преимущества предпроцессоров CSS: LESS, Sass, Stylus и другие
- Медиа-запросы CSS
- Bootstrap (фреймворк с инструментами, необходимыми для создания веб-сайтов и приложений)
JavaScript

JavaScript (JS) – язык, который с каждым годом становится все популярнее и обрастает все большим количеством библиотек, фреймворков и инструментов.
Интересно, что в опросе Stack Overflow 2016 года JS стал самым популярным языком во всех трех областях: full stack, frontend и backend. В опросе 2017 года JS просто стал самым популярным языком из всех языков программирования. Ничего удивительного в этом нет – JS единственный язык программирования, который используется и в браузере, и может использоваться в качестве серверного языка (благодаря Node.js). В качестве фулстек разработчика нужно разбираться в следующих темах:
- Работа с DOM. Также желательно знать, что такое и уметь использовать JSON
- Важные особенности языка: композиция функций, наследование классов, делегирование событий,функции высшего порядка.
- Порядок обработки событий (в том числе асинхронный), промисы и колбэки (функции обратного вызова)
- Правильное структурирование кода и работа с модулями
- Знание webpack, browserify и gulp
- Знание хотя бы одного популярного фреймворка (React, AngularJS…). Вообще понимание самого JS важнее, чем знание фреймворков, т.к. в любом из них тогда будет несложно разобраться
- Знание jQuery
- Автоматическое тестирование
Язык бэкенда
Теперь надо перейти к бэкенду, который отвечает за работу с базой данных, аутентификацию пользователей и логику работы приложения в целом. Здесь есть такой момент, что, по сути, не так важно, какой язык вы выберете, главное – это действительно понимать его и знать все его нюансы. Если задать на какой-нибудь популярной площадке вопрос о том, какой язык бэкенда лучше всего выучить и использовать, то разброс ответов будет широким: про каждый язык вы услышите и хорошее, и плохое.
Поэтому ниже я перечислю все популярные языки бэкенда.
Важное уточнение: вне зависимости от того, какой язык вы решите в итоге изучать, главное – продолжайте изучать именно его и узнавать все его тонкости, а не распыляться сразу на несколько вариантов.
- Node.js: хороший вариант, т.к. сам по себе Node.js – это просто окружение JS, то есть при знании JS не нужно будет учить новый язык программирования. А самый популярный для изучения и создания приложений фреймворк – это Express.
- Ruby: еще один популярный для бэкенда язык. Самые популярные фреймворки: Ruby on Rails и Sinatra.
- Python: популярные фреймворки – Django и Flask.
- Java: сейчас Java уже редко изучают для применения в бэкенде, однако компании, которые его до сих пор используют, существуют, поэтому найти работу можно и с этим языком программирования.
- PHP: сейчас является краегольным камнем в вебе, но конкретно в бэкенде используется нечасто.
Базы данных и веб-хранилища
Во время изучения веб-разработки вы рано или поздно придете к тому, что данные нужно где-то хранить, а также нужно иметь возможность получить к ним доступ позже.
Поэтому обязательно нужно углубиться в следующие темы, касающиеся БД и хранения данных:
- Преимущества реляционной модели данных, SQL
- NoSQL базы данных, например MongoDB
- Умение подключать выбранную базу данных к выбранному языку бэкенда (например, MongoDB и Node.js)
- Преимущества СУБД в оперативной памяти: Redis, Memcached
- Веб-хранилище для хранения сессий, куков и кэша в браузере
- Масштабирование баз данных, ACID, ORM
HTTP и REST
HTTP - это протокол передачи данных прикладного уровня, он обеспечивает взаимодействие сети и пользователя. Например, если JS-код делает какой-либо AJAX-запрос к бэкенду на сервере, то это происходит посредством HTTP. Важные в этой части темы перечислены ниже:
- Что такое REST
- Использование REST API
- Запросы POST и GET
- Использование Chrome DevTools
- Что такое SSL-сертификаты
- HTTP/2, SPDY, WebSocket
Архитектура веб-приложения
После того, как вы познакомились с HTML/CSS, JavaScript, бэкендом, базами данных, а также HTTP/REST, время перейти к архитектуре веб-приложения. Для того, чтобы создать сложное приложение, вам нужно знать, как правильно структурировать код, как разделять файлы, где держать большие медиа-файлы, как структурировать данные в базе данных, где выполнять сложные задачи и так далее.
Конечно, обо всем этом можно прочитать в сети, однако наилучшем решением будет практика - и лучше всего работать не одному, а в команде.
Поэтому человек, который занимается разработкой более 7 лет, совсем необязательно знает CSS или JS лучше разработчика с двухлетним опытом работы. Однако чем больше опыт у специалиста, тем с большим количеством приложений он работал, а значит, больше узнать относительно архитектуры и дизайна приложений (помимо других важных вещей). Опыт дает возможность увидеть картинку целиком.
Однако пока вы в начале пути, ознакомьтесь со следующими темами:
- Платформа как услуга, например Heroku и AWS.
- MVC
- Максимально изучать опыт других разработчиков (видео на английском):
Git
Git - это система контроля версий, которая позволяет разработчикам, работающим над одним проектом, следить за изменениями, которые были внесены в код. Научиться использовать Git несложно, для этого посмотрите:
- Руководство для начинающих, учебник по Git
- Основные команды
Заключение
Теперь вы знаете все основные темы, в которых нужно разбираться для того, чтобы носить звание фулстэк разработчика. Конечно же, теория - это хорошо, но в мире программирования наибольшую роль играет практика, так что не забывайте все прочитанное и услышанное обязательно пробовать и использовать в своей работе.
Источник: http://timeweb.com/ru/community/articles/kak-stat-full-stack-razrabotchikom-v-2018-godu-1
Хотите больше новостей о хостинге, IT и Web?
Подписывайтесь на наc: https://t.me/timewebru