Fullstack-разработчик

Кто такой fullstack-разработчик и чем он занимается?

Чтобы понять, чем занимается fullstack разработчик, необходимо разобраться, как работают современные веб-сервисы. Они состоят из двух частей:

  • Frontend – все, что видит пользователь на своем экране. Дизайн сайта, кнопки, формы, личный кабинет на сайте и т.д. Версткой и программированием этих элементов занимаются frontend-программисты.
  • Backend – все, что связано с сервером, хранением данных на нем и вычислениями на сервере. Например, когда вы задаете поисковый запрос в Яндекс, результаты поиска формирует сервер. Это – задачи backend-разработчиков.

Во frontend и backend имеются свои технологии и языки программирования, которыми нужно владеть. Если программист разбирается в обоих направлениях и может выполнять задачи по frontend и backend – он называется fullstack разработчиком.

Поэтому fullstack программист – это некий универсальный специалист, который может и сверстать дизайн сайта, и настроить работу форм и кнопок, и написать серверную часть, а заодно настроить и сам сервер. Он может в одиночку создать веб-сервис и заменить 3-4 узких специалистов.

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

Освоить необходимые технологии для работы fullstack разработчиком можно на курсе «Веб-разработчик с нуля» в онлайн-университете Нетология. Занятия проводятся онлайн, поэтому учиться можно из любого города. Помимо теории, выполняются практические задания, что позволяет получить опыт реальной работы для дальнейшего поиска работы. Также Нетология способствует трудоустройству студентов в крупные ИТ-компании.

Как стать Full Stack разработчиком и куда двигаться дальше

Большинство Full Stack разработчиков — это выходцы из Back-end, которые по мере необходимости сталкиваются с Front-end задачами и учатся их решать.

Самые распространенные стеки технологий — .NET, PHP или Node.js + JavaScript. Но конфигурации могут быть какими угодно, лишь бы позволяли разрабатывать весь продукт целиком.

Чтобы стать Full Stack, разработчики советуют изучать код всего проекта, вникать в обсуждение всей архитектуры, не бояться задавать вопросы о логике принятия тех или иных решений.

«Самый простой способ стать Full Stack разработчиком — попробовать самостоятельно разработать пет-проект, который решает какую-то проблему. Это может быть плагин, сайт, утилита, бот — что угодно. После нескольких успешных проектов освоите концепцию или же поймете, что это не ваше» (Владимир Сподарик, Senior Full Stack Developer).

Конкретные рекомендации о том, как стать Full Stack разработчиком, зная Back-end, Владислав Фурдак собрал в отдельной статье.

Насчет того, стоит ли развиваться как Full Stack разработчикам-новичкам или же сначала дорасти хотя бы до Middle-позиции по какому-то одному направлению, мнения расходятся:

«Я бы, наверное, не советовал новичкам сразу становиться Full Stack разработчиками. Лучше начинать с чего-то одного: Front-end или Back-end, а дальше уже по мере необходимости осваивать смежные области. Потому как при попытке развиваться „в ширину“ можно недобрать достаточной „глубины“ и в итоге превратиться в „разнорабочего“, который умеет делать все, но недостаточно хорошо» (Вячеслав Лобода, Senior Full Stack PHP Developer).

Разделились мнения опрошенных программистов и насчет зарплат:

«Я работаю на фрилансе, позиционирую себя как Back-end разработчик с дополнительными навыками Front-end. Эти дополнительные навыки позволяют мне более эффективно решать задачи и, соответственно, несколько повышают ценность меня как программиста. Если грубо прикинуть, это дает увеличение рейта на 15%» (Вячеслав Лобода, Senior Full Stack PHP Developer).

На момент публикации на DOU открыто 223 вакансии по направлению Full Stack, причем в 157 из них ищут специалиста с опытом от трех лет. По отдельным специализациям вакансий больше: например, 240 по .NET, 296 по PHP, 434 по Front-end.

Из Full Stack специалистов получаются хорошие тимлиды, способные решать кросс-командные проблемы, а также лид-разработчики, способные «тащить» проекты в одиночку. Также можно бесконечно развиваться «по горизонтали»: изучать новые технологии, устраиваться на более сложные проекты.

Другие варианты — уйти в архитектуру, менеджмент или даже стать СТО стартапа. Широкие знания Full Stack разработчика помогут видеть сильные и слабые стороны проектных решений. К тому же за время карьеры человек накопит много знаний по самым разным технологиям и ему будет из чего выбрать при планировании проекта.

Иллюстрации Ульяны Патоки

Підписуйтеся на Telegram-канал редакції DOU, щоб не пропустити найважливіші статті.

Особенности подбора

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

Full stack-developer не заменит всю командуЕсли касаться разработки, то тут он универсален. Но стоит помнить о таких задачах, как, например, дизайн и тестирование продукта. Лучше взять дизайнера и тестировщика в команду и не тратить время full stack-разработчика на такие задачи. Команда, в которой есть сотрудники из смежной области, более результативные. 

Универсальность и широкие знанияВажно понимать, что если нужен программист с узкими знаниями и большим опытом работы с конкретной технологией — full stack-разработчик на такую роль не подходит. Большая загруженностьFull Stack-разработчики часто работают на нескольких проектах одновременно

При таком раскладе даже самый организованный специалист может столкнуться с авралом. Перегрузка отражается не только на сроках, но и на качестве. Задача рекрутера — выяснить занятость разработчика и сколько времени он будет выделять проекту, если у него их несколько

Большая загруженностьFull Stack-разработчики часто работают на нескольких проектах одновременно. При таком раскладе даже самый организованный специалист может столкнуться с авралом. Перегрузка отражается не только на сроках, но и на качестве. Задача рекрутера — выяснить занятость разработчика и сколько времени он будет выделять проекту, если у него их несколько.

Сложный анализ резюмеИногда резюме Full Stack-разработчика напоминает книгу, разобраться в которой непросто. Да и не во всем, что перечислено в резюме, разработчик одинаково хорош. Например, он занимался JavaScript три года назад, а сейчас использует другие технологии. Обозначьте суть проекта сразу и будет понятно, насколько с таким специалистом вам по пути.

Интерес к проектуНасущная проблема: как начать диалог с таким сотрудником? Не стоит заманивать перспективами роста и развития. На первом плане — интерес к разрабатываемому продукту, поэтому расскажите о проекте подробнее.

Почему JavaScript

Причин может быть много, вот мой топ лист:

  • Простота: В основном, библиотеки в Node имеют простые API с которыми легко разобраться и которые работают интуитивно понятным образом. Если не получилось с одной библиотекой, как правило, несложно найти хорошую альтернативу.

  • Контроль: Программист сам строит инфраструктуру проекта, выбирая и объединяя небольшие модули для конкретных задач. Это требует больше времени, но результат стоит того. Разобравшись один раз, полученный опыт легко применять в дальнейшем.

  • Универсальность: JavaScript изначально работал только на клиенте. Вначале вместе с Node он перебрался на сервер, а совсем недавно на нем стало можно успешно писать десктопные (Eletctron) и мобильные приложения. Причем, для мобильных приложений есть опция гибридных приложений (используется обертка над браузером (Cordova)) или приложений с нативным интерфейсом (ReactNative, NativeScript). Для Node существует огромное множество библиотек и его легко интегрировать с другими технологиями, базы данных, облачные технологии, различные форматы и протоколы, найдется все.

  • Легкое развертывание: Node очень легко разворачивать на сервере: как на Linux, так и на Windows. После многих лет работы с .NET, деплоймент каждый раз был для меня неприятным испытанием, на Node этот процесс даже приносит удовольствие. Это просто надо попробовать.

  • Производительность: Node асинхронен и не блокирует процесс выполнения во время длительных операций, таких как вычитка файла или обращение к базе данных. Это позволяет достичь высокого уровня производительности при использовании единственного потока (single threaded environment). C другой стороны, вычисления в JavaScript медленнее чем в статически типизированных языках. Для большинства проектов это не проблема. Если нужны вычисления, а не просто преобразования данных, то лучше написать отдельный сервис на чем-то другом.

  • Один язык на сервере и клиенте: Это удобно, так как позволяет, без усилий переносить код между клиентом и сервером, легче в разработке и поддержке.

  • Язык JavaScript: JavaScript очень гибок и прост в использовании, многие недостатки языка исправлены в последней версии ES6, типизацию опционально можно добавить, используя TypeScript.

И это далеко не полный список.

Разновидности fullstack-разработчиков

Фулстек-программисты делятся на категории в соответствии с тем языком программирования или платформой, с которой работают. Например, есть PHP-fullstack-developer или Java-fullstack-developer и так далее.

Фронтенд-часть у них во многом схожа. Они работают с:

  • HTML и CSS;
  • языком программирования JavaScript;
  • библиотекой jQuery;
  • метаязыком SASS;
  • языком стилей LESS;
  • фреймворками;
  • DOM, AJAX, JSON.

Различия видов fullstack-разработчиков видны на уровне бэкенд-программирования.

Node.js-fullstack-разработчик. Использует в работе:

  • язык программирования JavaScript;
  • программную платформу Node.js;
  • фреймворки, подходящие Node.js, например, Express.js;
  • пакетные менеджеры для JavaScript;
  • Web Sockets и REST API.

Java-фулстек-developer. Работает на основе следующих технологий:

  • язык JavaScript;
  • спецификация API Java EE;
  • фреймворк Spring;
  • HTTP-сервер Apache;
  • облачные сервисы Google Cloud или Azure;
  • сервлеты, JSP и микросервисы.

ASP.NET-фулстек-программист. Эти разработчики используют в качестве инструментария:

  • язык программирования C#;
  • инфраструктуру .NET;
  • платформу ASP.NET MVC / ASP.NET Core;
  • облачный сервис Azure;
  • язык T-SQL;
  • RESTful API.

PHP-fullstack-developer. PHP-разработчику достаточно владеть:

  • языком программирования PHP;
  • фреймворками Yii2/Symfony/Laravel.

Python-фулстек-разработчик. Программист работает с:

  • языком программирования Python;
  • фреймворком Django/Flask;
  • REST API;
  • ОС Linux и веб-сервером Nginx;
  • облачными сервисами.

Есть же категории fullstack-разработчиков, которые не связаны с языками программирования. Например, фулстек-дизайнер.

Все разновидности – это “упрощенные версии” фулстек-разработчиков. Опытный специалист понимает и владеет минимум двумя языками программирования, и может проектировать и реализовывать веб-ресурс на основе этих серверных языков.

Плюсы и минусы профессии full stack разработчик

Среди положительных моментов работы можно отметить:
ведение всего проекта самостоятельно;
возможность принимать решения самостоятельно;
отсутствие необходимости в длительных согласованиях и переговорах с другими разработчиками, если ведешь весь проект самостоятельно;
большой объем заказов для фрилансеров: на биржах чаще ищут людей, способных сделать весь проект самостоятельно;
более высокая скорость работы, например, фронтедеру приходится ждать, когда бэкендер выполнит свою часть, а только потом приступать к своей разработке, при внесении правок аналогичная ситуация, фулл стек никого не ждет: он берет и делает;
разнообразие задач;
рутины практически нет, поэтому выгорания происходят реже;
широкие возможности при построении дальнейшей карьеры, можно выбирать горизонтальное или вертикальное развитие: Full-stack всегда может перепрофилироваться в разработчика FrontEnd или BackEnd, стать менеджером проектов, архитектором приложений и пр.;
возможность создать и развить собственный продукт;
легче находить и исправлять ошибки, т. к. разработчику виден весь проект;
постоянное развитие: full stack должен ориентироваться в разных областях, поэтому постоянное обучение необходимо, специалист будет получать навыки и знания о самых разных вещах;
востребованность профессии и хорошая оплата труда;
возможность работать в офисе или дома, как удобно.

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

Еще разработчикам нередко приходится встречаться с такой проблемой: работодатели хотят заполучить универсального бойца, но часто не верят, что 1 человек может владеть таким количеством стеков и не приглашают на работу. Поэтому при создании резюме не стоит указывать абсолютно все, достаточно перечислить основные навыки или наиболее интересные и перспективные.

Базы данных и веб-хранилища

Во время изучения веб-разработки вы рано или поздно придете к тому, что данные нужно где-то хранить. А также нужно иметь возможность получить к ним доступ позже.

Поэтому обязательно нужно углубиться в следующие темы, касающиеся БД и хранения данных:

  • Преимущества реляционной модели данных, SQL.
  • NoSQL базы данных, например MongoDB.
  • Умение подключать выбранную базу данных к выбранному языку бэкенда (например, MongoDB и Node.js).
  • Преимущества СУБД в оперативной памятиRedis, Memcached.
  • Веб-хранилище для хранения сессий, куков и кэша в браузере.
  • Масштабирование баз данных, ACID, ORM.

Работа Full Stack-специалистом

Работа фулстек-программистом может быть как в команде, так и в одиночку. Также специалист может исполнять свои обязанности удаленно или находясь в офисе. Так как он отвечает за множество составляющих проекта, и зачастую ведет его, удобнее всего работать в офисе рядом с другими сотрудниками.

В редких случаях таких программистов нанимают на проектной основе, например, чтобы разработать сайт или веб-приложение. Но в основном fullstack-разработчиков принимают в штат, не ограничиваясь сотрудничеством на один проект.

Заработок

Фулстек-специалисты получают высокую заработную плату, которая в большинстве своем начинается от 90 тысяч рублей (есть и вакансии с 60-90 тысячами рублей в месяц и меньше, но их не так много). Это неудивительно, ведь на такую работу берут разработчиков широкого спектра, которые способны выполнять разноплановые действия, в число которых входит и создание пользовательского интерфейса, и архитектура серверной составляющей.

Вывести среднюю зарплату сложно, так как каждый работодатель предлагает свою сумму. Много вакансий от 90 до 150 тысяч рублей, чуть меньше предложений от 150 до 250 тысяч рублей, есть работа с зарплатой 300, 400, 500 тысяч рублей и более. На момент написания статьи максимальная заработная плата в месяц, предложенная на самом популярном сайте по поиску вакансий в России HeadHunter, составляла 12 тысяч долларов США (880 тысяч рублей) в месяц. Общее количество вакансий в стране — 950 (на момент написания статьи).

Для сравнения, в США full stack-разработчики в среднем получают 60-100 тысяч долларов в год. Информация составлена на основе вакансий на портале Indeed. К слову, востребованность в Америке огромная — целых 16 тысяч вакансий по словосочетанию “Full Stack Developer”.

Поиск вакансий

Найти работу full stack-разработчиком можно на популярных российских сайтах с вакансиями, в частности, на Trud и HeadHunter. Немало предложений и на узкоспециализированных порталах: Habr и GeekJob. На этих сайтах встречаются вакансии европейских и даже американских компаний и студий.

Если фулстек-программист middle (среднего) уровня и выше, можно попробовать найти работу за границей. Там хватает и своих разработчиков, но многие специалисты из России и стран СНГ успешно находят вакансии в Европе и США, со временем перебираясь туда на постоянное место жительство.

Что нужно знать, чтобы стать Python-разработчиком?

Учиться нужно постепенно: сначала освоить базу любого программиста — HTML, CSS и Javascript. HTML и CSS отвечают за расположение элементов на веб-странице и информацию о стиле: шрифты, начертание текста, отступы, Javascript добавляет интерактива: на этом языке можно вписать в страницу анимированные элементы. Это уровень верстальщика — первая ступень разработки.

Следующая ступень — фронтенд, создание внешней оболочки сайта и разработка взаимодействия пользователя и сайта. Можно остаться на ней, но если хочется большего — например, создать собственное приложение, развернуть сервер, написать свою CMS, — здесь подключается бэкенд, то есть серверная часть. Чем дальше, тем чаще для написания бэкенда используют именно Python, а не привычный PHP.

Что нужно знать будущему фулстек-разработчику: 

  1. Основы Python: как писать код, как подключать библиотеки и работать с разными видами файлов.
  2. Как работают фреймворки. Это программы, которые облегчают создание бэкенда и его базовой логики. Они связывают в одну систему URL-адреса, части кода на Python, базы данных и HTML-страницы. Самые популярные фреймворки для работы с интерактивными сайтами сегодня – это Bootstrap и Django. 
  3. Как подключить базу данных при помощи SQL. Чтобы сервис отвечал требованиям бизнеса, он должен собирать данные о клиентах. Для этого нужно знать, как именно их собирать, хранить и передавать. Это задачи для языка SQL.
  4. Работа с docker-контейнерами и ОС Linux. Контейнеры помогают упаковать приложение вместе со средой запуска в файл, который без проблем откроется на другом компьютере. Так вы сможете передавать приложение заказчику безопасно и просто. А разворачивать сервер, на котором будет работать ваше приложение, будете на Linux — для этого нужно понимать, как работает эта система.

Перечисленные навыки можно получить за 9-12 месяцев на комплексном курсе и чуть дольше – собирая материалы самостоятельно. Набрав базу для уровня junior, за два года практики вы сможете стать уверенным миддлом. 

2014: «Full-stack developers» (Mike Loukides)

Наконец, наткнулся в процессе гугления на популярный текст 2014 года в блоге на сайте издательства O’Reilly. Здесь уже не просто отдельное мнение, а попытка осмыслить различные предыдущие выступления по теме и добавить к ним что-то своё.

Одно из добавлений: вот здесь говорится, что JavaScript к 2014-му страшно разросся и усложнился, так что от фуллстек-разработчиков теперь требуется и понимание всяких ангуляров.

А ещё Майк предлагает к списку «знаний фуллстека» предлагает добавить CVS (ну, сегодня бы уже даже не стал упоминать, наверное), облака, распределённые вычисления… Как он сам признаёт, результат в таком случае получается не вертикальным «стеком», где всё опирается друг на друга, а разветвлённым «деревом», где много вещей «в сторону».

И ещё он признаёт, что если добавить это всё к списку от Лоренса, получается совсем уж длиннющий перечень. Поэтому не требует магического абсолютного мастерства во всём сразу. А вместо этого впрямую произносит слово «T-shaped», призывая специализироваться на чём-то, но в то же время и заглядывать в другие сферы: «я не требую от разработчиков разбираться в сетевых вопросах на уровне сетевиков, но уметь обсуждать эти вопросы надо».

Из забавного: в тексте есть фраза «I sincerely hope that “full stack” doesn’t appear in job titles anywhere». Майк, пишем тебе из будущего, не хочется расстраивать, но тут такое дело…

Инструменты

GitHub. Система управления версиями и платформа социальных сетей для разработчиков

JavaScript. Прототипно-ориентированный сценарный язык программирования

Docker. Система для автоматизации развертывания и управления приложениями в средах с поддержкой контейнеризации

React. Библиотека JavaScript для создания web-интерфейсов

Bootstrap. Открытый HTML, CSS и JS фреймворк, использующийся для создания web-приложений

DOM (Document Object Model). Язык разметки, позволяющий программам и скриптам получить доступ к содержимому HTML-, XHTML- и XML-документов

Visual Studio Code. Один из наиболее популярных редакторов исходного кода

PhpStorm. Кросс-платформенная интегрированная среда разработки

Grunt. Специальный менеджер задач для автоматического выполнения рутинных действий (объединение файлов, минификация и т. п.)

Backbone.js. Программа, позволяющая создавать легкие и гибкие клиентские приложения, работающие в web-браузере

Adobe Photoshop. Графический редактор, необходим для разделения макетов на составные элементы

Чарльз Делекторских
Fullstack-разработчик

Новичкам имеет смысл отправлять резюме в некрупные компании или небольшие web-студии. Вакансии можно найти на порталах по поиску работы. После того как будет получен необходимый практический опыт, разработчик сможет сотрудничать с более крупными работодателями, а при хорошем знании английского языка – и с зарубежными.

Также неплохим вариантом для начала карьеры станут биржи фриланса. Там можно найти разнообразные заказы, «прокачать» навыки, полученные во время учебы, и наполнить портфолио.

— Чарльз Делекторских Fullstack-разработчик

Где искать

На хороших full stack-разработчиков большой спрос и на работных сайтах их немного.

LinkedInЗдесь можно выйти на уверенного профессионала или найти через него коллег с похожим опытом.

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

РекомендацииПообщайтесь с командой или обратитесь к коллегам в профессиональных сообществах. Такие есть на Facebook, ВКонтаке и в Telegram.

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

2008: «Full Stack Web Developers» (Randy Schmidt)

Эта страница личного блога уже даже не открывается, но Internet Archive заботливо сохранил для нас Самый Первый Пост. Автор поста восхищается людьми, которых он называет «Full Stack Web Developers». И вот какое определение им он даёт:

Вот это сейчас внезапно было: первым пунктом идёт дизайн. Д И З А Й Н. (Судя по контексту, слово design тут не в значении «проектирование», а именно как графический дизайн.) А «programming» упомянуто мимоходом как единый последний пункт — хотя сегодня обсуждения строятся как раз на том, что у него есть подпункты.

Ну, с programming понятно: в 2008-м ещё не произошёл JS-взрыв, поэтому в тексте «браузерная» часть проходит как «markup, styling» (читай: HTML, CSS). Но даже если мысленно заменить слова «markup, styling» и «programming» на «фронт» и «бэк», всё равно не получится нынешних дискуссий: это разделение Шмидта как раз не сильно волновало. По-настоящему его волновало, что он не разбирается в дизайне, и ему надо вот с этим справиться, чтобы стать настоящим full stack web developer. Так что получается, что мы сейчас под «фуллстеком» понимаем вообще не то, что закладывал автор.

По сути, содержание его поста сегодня в какой-то степени актуально внутри фронтенда, где есть место и JS-программированию, и более дизайнерским вещам. Так что, оставаясь в пределах фронтенда, можно специализироваться на чём-то, а можно быть многостаночником — в прошлом году нашумел текст «The Great Divide», посвящённый как раз этой разнице специализаций.

Базы данных

SQL или NoSQL?

На этот вопрос нельзя ответить однозначно, зависит от конкретной ситуации. Самыми популярными опциями для SQL/NoSql являются PostgreSQL/MongoDb. Недавнее добавление JSON полей в PostgreSQL, делает его очень привлекательным вариантом соединяющим в себе лучшее из миров SQL/NoSql. Но, несмотря на это, MongoDb по-прежнему самая популярная база данных для Node, и может быть легче для работы, особенно для тех, у кого не было предыдущего опыта работы с SQL базами данных.

Доступ к базе данных

Работая с базой данных вы можете использовать доступ напрямую с помощью драйвера базы данных или каккую-то ORM абстракцию более высокого уровня. Если у вас не много взаимодействий с базой данных, то лучше использовать доступ напрямую или абстракцию низкого уровня, такую как Knex (для SQL баз данных).

ORM

Sequelize — самая популярная ORM для SQL баз данных. Она предоставляет высокий уровень абстракции над БД схемой и поддерживает основные SQL диалекты (PostgreSQL, MySQL, SQLite and MSSQL). Используется в Contoso Express.

Knex — это абстракция более низкого уровня. Больше как конструктор запросов, чем полоценная ORM. Поддерживает большее количество диалектов и дает больше контроля над генерируемым SQL. Имеются функции построения схемы БД и ее миграций.

Bookshelf — eще одна популярная ORM основанная на Knex, уровень абстракции ниже чем в Sequelize и многие вещи нужно определять вручную.

Mongoose — Самая популярная ORM для самой популярной в JS базы данных MongoDB

Прямое подключение

Для всех основных баз данных существуют драйверы хорошего качества, для прямого соединения. Для Postgres используйте «pg» или «pg-promise» пакеты.

Прикладные скиллы для Full-Stack Developer

Важно осознавать, что программирование связано и с другими отраслями, смежными науками. Вам может показаться, что то, что вы учили на высшей математике, не пригодится вам в жизни

Но опыт разработчиков  показывает, что очень даже пригодится. 

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

Особенно необходимо выделить математический анализ.

Приведу реальный пример «ненужных знаний», которыми часто пренебрегают студенты, думая что они не понадобятся.

То есть все знания можно нужно использовать по максимуму. Не стоит пренебрегать базовыми понятиями в математике, даже самой скучной теорией.

Чем занимается разработчик

Задача разработчика полного стека — быть экспертом на каждом уровне разработки продукта. Поэтому он должен уметь больше, чем специалисты по разработке фронтенда и бэкенда. Fullstack-разработчик должен знать все или многие языки программирования, владеть всеми программными технологиями и уметь организовать работу каждого члена команды. Но главное — именно fullstack-разработчик в проекте отвечает за результат.

Фуллстэк-разработчик легко может заменить 2–3 программистов.

Обязанности fullstack-разработчика:

  • разработка архитектуры внешнего интерфейса веб-сайта;
  • проектирование взаимодействия с пользователем на веб-страницах;
  • разработка серверных приложений для веб-сайтов;
  • создание серверов и баз данных для работы приложений;
  • преобразование макетов сайта для читабельности;
  • работа с CMS и фреймворками;
  • автоматизация процессов на веб-приложении;
  • устранение ошибок;
  • сотрудничество с графическими дизайнерами и другими программистами;
  • проектирование и разработка API;
  • сопровождение проекта от идеи до готового продукта и т. д.

Специалист полного стека должен обладать:

  • умением работать с HTML/CSS;
  • знанием языков программирования JavaScript,
  • умением работать в Git и GitHub;
  • отличным знанием одного из основных языков серверной части: PHP, Python, Ruby, Java;
  • знанием тонкости веб-архитектуры;
  • владением протоколами HTTP и REST;
  • работой с базами данных;
  • базовыми навыками проектирования.

А также иметь такие софт-скиллы:

Варианты языка JS

Современный JavaScript можно писать в нескольких вариантах:

  • ES5
  • ES6 / ES7 next
  • Языки компилируемые в JS (TypeScript и другие)

Стандарты JavaScript

  • ES5 — версия JavaScript от 2009 года, полностью поддерживаемая всеми современными браузерами и Node.

  • ES6 — недавнее утвержденное обновление языка. Разработка поддержки стандарта всех JS движках пока еще в процессе разработки.

  • ES7 / Next — еще не утвержденные новые фичи JS.

Взглянуть на текущее состояние поддержки ES6 можно наKangax ES6.

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

Для Node используется V8 движок, текущая стабильная LTS версия которого (4.x) не поддерживает все новые особенности ES6.

LTS (long term support) это версия NodeJs, рекомендуемая для использования на продакшeне. Следующая LTS Node ожидается в октябре 2016 и в ней уже есть поддержка большинства возможностей ES6.

Транспайлинг (transpiling)

Для того чтоб бы использовать фичи ES6/ES7 существует несколько транспайлеров которые преобразуют код написанный на ES6 в ES5.

Обратите внимание на разницу между транспиляцией и компиляцией: тут. Babel самый популярный транспайлер из ES6/Next в ES5

Babel самый популярный транспайлер из ES6/Next в ES5.

TypeScript

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

TypeScript поддерживает многие ES6/ESNext возможности и может использоваться как Транспайлер (вместо Babel).

Кроме того в TypeScript существуют дополнительные конструкции, которых нет в JS — энумы, наследование и полиморфизм в классах и прочее. Они транспилируются в JS с помощью вспомогательного JS кода.

Не все возможности TypeScript одинаково полезны перечислю основные категории:

  • Транспиляция ES6/ESNext — TS отлично с этим справляется, хотя и уступает Babel в некоторых моментах, например async/await в TypeScript пока только доступно если транпилировать в ES6 версию. Больше об этом в следующей статье.

  • Статическая типизация в коде приложения — это основная причина использовать TS, типы в TS опциональны, если тип не указан, предполагается тип «any», что значит в этот тип можно записать и прочитать из него любые поля, это делает перевод существующего кода JS на TS, гораздо легче, не нужно добавлять типы везде, а только там где это имеет смысл. При этом даже если вы не описываете типы в TS, у вас появляется много дополнительных проверок, которые помогают обнаруживать тривиальные ошибки-опечатки, еще до того, как вы запускаете приложение. Дополнительно у вас хорошо работают подсказки в коде и не нужно лишний раз смотреть какие методы есть у модуля и какие у них сигнатуры.

  • Типизация сторонних библиотек — TS позволяет описывать структуру сторонних библиотек (например lodash иди express), это позволяет контролировать, что вы вызываете методы с правильными параметрами и позволяет видеть методы и их сигнатуры без использования документации. К сожалению качество таких описаний часто оставляет желать лучшего и когда в описании нет нужной сигнатуры ее нужно добавлять вручную. Иногда легче не использовать сторонние описания (работать с библиотекой как с типом «any»). Проблема в том, что сейчас описания библиотек в TS и сами библиотеки чаще всего пишут разные люди. Скорее всего ситуация будет улучшаться с ростом популярности TS.

  • Возможности TS, которых нет в JS — это я бы не рекомендовал к использованию без необходимости или если вы не используете фреймворки написанные непосредственно на TS (например Angular2). Использование таких возможностей делает конвертацию TS<->JS гораздо сложнее, они чаще изменяются между разными версиями TS.

Что выбрать

Я бы рекомендовал выбирать между ES6 и TypeScript. ES6 имеет очень много полезных дополнений, которые делают разработку легче и приятнее и это стоит того, чтобы потратить больше времени на первоначальную настройку. На своих проектах я перешел на TypeScript, потому что это действительно серьезно улучшает процесс разработки, хотя и требует гораздо больших усилий по настройке и интеграции. Что бы вы не выбрали, хорошо если вы делаете осознанный выбор, поработав и с тем и с другим.

Курсы

Онлайн-университет Skillbox

В университете можно получить образование по направлению «Fullstack-разработка на JavaScript». В программу курса включены базы данных, фреймворки, Git, верстка и другие не менее полезные темы. Длительность обучения достигает 12 месяцев, каждый слушатель получает работы для портфолио.

GeekBrains

В GeekBrains открыт факультет fullstack JavaScript для всех, кто хочет обучиться профессиональной разработке. Длительность курса составляет 15 месяцев, после его завершения выпускники будут иметь работы для портфолио, опыт управления проектами, а также им предлагают помощь в трудоустройстве.

Чем он занимается

Единого мнения на счет фулстек-разработчика и его функций нет. Кто-то даже считает, что такой должности вовсе не существует. Поэтому и в вакансиях пишут всегда разные должностные обязанности.

В задачи fullstack-специалиста может входить:

  1. Планирование, управление и реализация проекта на определенном языке программирования.
  2. Переговоры с клиентами.
  3. Тестирование готовой интернет-платформы и отладка багов.
  4. Контроль качества сайта или приложения.
  5. Техническая поддержка всех специалистов, работающих над веб-сервисом.
  6. Работа с базами данных, файловыми системами, облачными хранилищами и сетевыми ресурсами.
  7. Создание визуального дизайна.

Должность фулстек-программиста во многом схожа с профессией проект-менеджера. О ней вы можете прочитать в отдельной статье на блоге.

Связь с frontend и backend-разработчиками

Frontend-разработка – это создание того, что пользователь видит на веб-ресурсе. Визуальная часть создается при помощи HTML, CSS и JavaScript.

Результат backend-разработки, наоборот, скрыт от глаз обычного читателя. Вся работа с сервером, логикой сайта, базой данных входит в должностные обязанности бэкенд-программиста.

Fullstack-разработчик же трудится над задачами и первого, и второго специалистов. Он работает как с внешней, так и с внутренней сторонами веб-разработки.

10–15 лет назад не было разделения на бэкенд и фронтенд-части. И разработчики по умолчанию числились как фулстек-программисты. Да и определения этой деятельности не было, как и самого слова “fullstack-разработчик”.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector