Разработчик по это

Как стать full-stack разработчиком в 2018 году

Традиционно разработчики делятся на front-end разработчиков и back-end разработчиков; это обусловлено разделением ответственности между внешним представлением проекта (front-end) и внутренними технологиями (back-end). Очень грубо обобщая, можно сказать, что фронтэнд разрабатывает интерфейс, который видят пользователи, а бэкенд делает «начинку», т.е. программно-аппаратную часть. Такое деление является логичным и создано для упрощения разработки проекта. Однако все чаще в IT-среде появляются full-stack разработчики. О том, кто они такие, и какие технологии актуальны для фулстек разработчика, я расскажу ниже.

Определение

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
  • Основные команды

Заключение

Теперь вы знаете все основные темы, в которых нужно разбираться для того, чтобы носить звание фулстэк разработчика. Конечно же, теория — это хорошо, но в мире программирования наибольшую роль играет практика, так что не забывайте все прочитанное и услышанное обязательно пробовать и использовать в своей работе.

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть