Full stack фреймворк что такое
Этот материал поможет понять, какую ценность представляют веб-фреймворки для начинающих и опытных разработчиков. Мы посмотрим, какие существуют фреймворки, какие задачи они решают и как среди них выбрать подходящие инструменты.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Веб-фреймворк — это каркас для написания веб-приложений. Он определяет структуру, задаёт правила и предоставляет необходимый набор инструментов для разработки.
Бэкенд
Грубо говоря, это место, где хранятся данные, полученные через фронтенд. Например, когда пользователь создаёт твит, тот проходит через сервер и сохраняется в базе данных.
Бэкенд разработчики обычно выполняют следующие задачи:
- Создание API для фронтенда (обычно с помощью JSON);
- Разработка проверочной и бизнес-логики;
- Интеграция со сторонними API;
- Работа с базой данных.
Кто такой Full Stack разработчик?
Разумно ли ожидать, что простые смертные будут владеть всеми аспектами разработки? Скорее всего нет, но в Facebook могут попросить об этом. На OSCON (O’Reilly Open Source Convention — ежегодный съезд, посвящённый обсуждению открытому и свободному программному обеспечению) один из сотрудников Facebook сказал, что они нанимают только Full Stack разработчиков. Что это значит?
Для меня Full Stack разработчик — это человек с хорошим пониманием каждого уровня разработки и искренне интересующийся всеми программными технологиями.
Хорошие разработчики, знакомые со всем стеком, знают, как облегчить жизнь тем, кто их окружает. Вот почему я так против разрозненности на рабочем месте. Конечно, политические и коммуникационные проблемы мешают в больших организациях. Я думаю суть политики найма в Facebook заключается в том, что если умные люди используют свои головы и слушаются своего сердца, то лучший продукт создается за меньшее время.
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». Майк, пишем тебе из будущего, не хочется расстраивать, но тут такое дело…
REST API и JSON
Одна из основных задач бэкенд разработчика — создание качественного REST API. Вам нужно знать:
- Что означают различные глаголы и как их применять;
- Как установить надёжную обратную связь;
- Как обрабатывать запросы;
- Как работать с авторизационными запросами;
- Как создавать документацию к API.
REST API — мостик между бэкендом и фронтендом, поэтому для вас очень важно понимать, как он работает.
JSON — основной язык, используемый для передачи данных посредством REST API. Данные представлены Объектами и Массивами. Если вы уже освоили JavaScript, эта работа покажется вам знакомой.
Архитектура веб-фреймворков
Архитектура почти всех популярных веб-фреймворков основана на декомпозиции нескольких отдельных слоёв (приложения, модули и т.д.). Это означает, что вы можете расширять функциональность, исходя из своих потребностей, и использовать изменённую версию вместе с кодом фреймворка или добавлять сторонние приложения.
Существует множество open-source сообществ и коммерческих организаций, которые создают приложения или расширения для популярных фреймворков, например, Django REST Framework, ng-bootstrap и т.д.
MVC — Модель, Представление и Контроллер (Model-View-Controller) — три составляющих каждого веб-фреймворка.
Модель MVC используется во всех веб-фреймворках
- Модель содержит все данные и уровни бизнес-логики, её правила и функции.
- Представление отвечает за визуальное отображение данных.
- Контроллер преобразует входные данные в команды для Модели и Представления.
Они неотделимы друг от друга, поэтому важно как следует во всём разобраться, чтобы избежать ошибок во время работы приложения.
Развёртывание и размещение
Фронтенд разработчик должен знать, как развернуть веб-приложение на хостинге и управлять им. Это хорошо для вашего портфолио и в конечном итоге для поиска работы. Возможно, имеет смысл использовать управляемые сервисы, позволив кому-то сделать за вас тяжёлую работу. Вот примерный список:
- GitHub Pages;
- Heroku;
- Netlify;
- Digital Ocean;
- AWS;
- Firebase.
Каждый из этих сервисов предоставляет базовый бесплатный доступ. Отрицательная сторона их использования в том, что они не предоставляют полный доступ к некоторым функциям, которые могут понадобиться некоторым разработчикам. Например, к службе электронной почты, SSH или FTP. Если вы не понимаете, о чём речь, вероятно, они вам и не понадобятся, и базового доступа будет вполне достаточно.
Особенности веб-фреймворков
Теперь давайте посмотрим на некоторые общие особенности, которые делают фреймворки для веб-приложений многофункциональными и удобными на практике.
Веб-кэширование — помогает хранить разные документы и позволяет избежать перегрузки сервера. Пользователи могут использовать его в различных системах при соблюдении нескольких условий. Он также работает на стороне сервера. Например, вы можете заметить ссылки на кэшированный контент на странице результатов поиска Google.
Скаффолдинг — веб-фреймворки могут автоматически сгенерировать типичные части приложения или даже всю структуру проекта, это важно для начинающих. Такой подход позволяет существенно увеличить скорость разработки и стандартизирует кодовую базу.
Система веб-шаблонов — набор разных методологий и программного обеспечения, реализованных для создания и развёртывания веб-страниц. Для обработки веб-шаблонов используются шаблонизаторы. Они являются инструментом фреймворка, отвечающим за веб-публикацию.
Безопасность — есть множество средств для идентификации и разрешения или отклонения доступа к различным функциям веб-фреймворка. Инструменты безопасности также помогают распознать профили, которые используют приложение, чтобы избежать кликджекинга — механизма обмана, при котором злоумышленник получает доступ к конфиденциальной информации пользователя и даже его устройствам.
Сопоставление URL — если вы хотите упростить индексацию поисковыми движками, в то же время используя привлекательное название для сайта, то эта функция фреймворков — то, что вам нужно. Также сопоставление URL может облегчить доступ к адресам ваших сайтов.
Приложения — фреймворки позволяют разрабатывать разные веб-приложения. Наиболее распространённые инструменты используются для создания блогов, форумов, универсальных веб-сайтов, систем управления контентом (CMS)
Фронтенд
Фронтенд разработчик обычно выполняет следующие задачи:
- Реализация дизайна с помощью HTML/CSS;
- Работа с DOM посредством JavaScript;
- Взаимодействие с API с помощью Fetch API или подобных средств.
Рассмотрим каждый пункт подробнее.
Бэкенд-фреймворки
Это фреймворки веб-разработки, которые работают на серверной стороне. В основном они отвечают за отдельные, но критически важные части приложения, без которых оно не сможет нормально работать. Вот несколько самых популярных фреймворков, а также языки, с которыми они работают:
- Django — Python;
- Symfony, Laravel — PHP;
- Express.js — JavaScript;
- Ruby on Rails — Ruby.
Правила и архитектура серверных фреймворков не даёт возможности разработать веб-приложение с богатым интерфейсом. Они ограничены в своей функциональности, однако вы всё равно можете создавать простые страницы и разные формы. Также они могут формировать выходные данные и отвечать за безопасность в случае атак.
Что нужно знать
Независимо от намеченного пути и карьерных целей, есть вещи, которые должен знать каждый разработчик:
- Управление версиями кода/Git. Любой хороший разработчик, особенно работающий в команде, должен знать, как использовать Git. Нужно знать, как клонировать репозитории, делать коммиты, создавать ветви и проводить слияние кода;
- Отладка. Баги будут всегда, работаете вы над фронтендом или бэкендом. Освойтесь с отладочными инструментами вашей IDE. Кстати, об IDE…
- IDE. Из множества интегрированных сред разработки выберите себе одну и изучите её. IDE — ваш лучший друг, знание её инструментов и горячих клавиш прокачает вас как разработчика. Автор гайда рекомендует VS Code;
- Методы управления разработкой (Agile/SCRUM/Kanban). Вполне вероятно, что, работая в команде, вы столкнётесь с методами управления разработкой, поэтому постарайтесь ознакомиться с их принципами работы.
Фуллстек-фреймворки
Если фреймворк решает задачи и на серверной, и на клиентской стороне, то он относится к категории фуллстек. В качестве примера можно назвать Meteor. Обе его стороны — серверная и клиентская — работают на JavaScript. Поэтому вы можете создавать и использовать для них один и тот же код. Следующая особенность — «режим реального времени». Когда вы что-то меняете в одном интерфейсе, изменения происходят и в остальных.
К фуллстек также относятся фреймворки Next.js и Nuxt. Первый создан поверх React.js, а второй работает на базе Vue.js. Такие веб-фреймворки могут быть сложными для начинающих.
Можно работать и с серверной, и с клиентской стороной веб-приложения
Уровни Full Stack разработки:
Сервер, сеть и среда хостинга
A. Это включает в себя понимание того, что может сломаться и почему, не принимая никаких ресурсов как должное.
B. Необходимо надлежащее использование файловой системы, облачного хранилища, сетевых ресурсов, а также понимание избыточности и доступности данных.
C. Как приложение масштабируется с учетом аппаратных ограничений?
D. Как насчет многопоточности и состояния гонки? Скорее всего вы не примените их в своей разработке, но они используются в мире.
Моделирование данных
A. Если модель данных несовершенна, бизнес логике и более высокие уровни начинают нуждаться в странном (уродливом) коде, чтобы компенсировать случаи, которые модель данных не охватывает.
B. Full stack разработчики знают, как создать разумно нормализированную реляционную модель, дополненную внешними ключами, индексами, представлениями, таблицами поиска и т.д.
С. Full stack разработчики знакомы с концепцией нереляционных баз данных и понимают в чем они превосходят реляционные базы данных.
Бизнес логика
A. Понимание ценности, которую представляет приложение.
B. Знание твердых объектно-ориентированные принципов.
С. Знание фреймворков, которые могут использоваться.
Уровень API / Уровень действий / MVC
A. Как внешний мир влияет на бизнес логику и модель данных.
B. Фреймворки должны активно использоваться на этом уровне.
С. Full stack разработчики имеют способность писать четкие, последовательные, простые в использовании интерфейсы. Меня отталкивает степень запутанности некоторых API.
Пользовательский интерфейс (UI)
A. Full stack разработчики: а) понимают, как сделать читаемый макет, или b) признают, что им нужна помощь художников и графических дизайнеров. В любом случае, реализация хорошего визуального дизайна является ключевым моментом.
B. Владение HTML5 / CSS.
С. JavaScript это перспективный язык будущего и в мире JavaScript делается много захватывающих проектов (node, backbone, knockout. ).
Пользовательский опыт (UX)
A. Full stack разработчики ценят, что пользователи просто хотят, чтобы всё работало.
B. Хорошая система не дает своим пользователям синдром запястного канала или воспаления глаз.
Понимание что нужно клиенту и бизнесу
A. Сейчас мы размываем черту архитектора, но это слишком большая роль.
B. Full stack разработчики имеют представление о том, что происходит, когда пользователь использует программное обеспечение. Они также имеют представление о бизнесе.
Другие важные моменты
- Возможность писать качественные модульные тесты. Кстати, в наши дни даже JavaScript может иметь модульные тесты.
- Понимание повторяющихся автоматизированных процессов построения приложение, его тестирования, документирования и масштабированного развертывания.
- Осознание проблем безопасности имеет важное значение, поскольку каждый уровень представляет свои собственные возможные уязвимости.
Заключительные мысли
Очень плохая практика — жестко привязывать код к конкретной реализации (библиотека, ОС, аппаратное обеспечение и т.д.). Тот факт, что full stack разработчик понимает весь спектр технологий, не означает, что у него есть разрешение на использование самого простого пути. На самом деле они делают это, если это "проект на выброс".
Технологические стартапы нуждаются в full stack разработчиках из-за их универсальности! Однако, по мере развития организации, ей требуется всё больше и больше целенаправленных специалистов.
Я не уверен, что вы можете называть себя full stack разработчиком пока вы не поработаете на нескольких языках, платформах и даже отраслях в своей профессиональной карьере. Full stack выходит за рамки "senior engineer", поскольку он находится в том же направлении, что и программист-полиглот, но с более высоким представлением всех соединительных частей. Обратите внимание, что в моем списке только 3-5 пунктов, связанных с написанием кода.
Не счесть холиваров о том, стоит ли быть фуллстек-разработчиком. И в них часто вылезает ещё один спорный вопрос: а что это понятие означает-то? «Фронтбэкендер»? «Многорукий Шива, мастер всего от инфраструктуры до тестирования»? «Человек, освоивший столько технологий, что воспарил над ними в мир общих концепций»?
Я захотел разобраться, как это понятие появилось и что люди в него вкладывали изначально. Было ли какое-то «каноническое» определение? Пока разбирался, увидел прямо-таки эволюцию представлений о нём и решил изложить её для Хабра.
Когда понятие возникло? Как можно увидеть по графику Google Trends, в широкий обиход оно вошло с 2014-го. А на Хабре первое упоминание произошло в 2013-м. Это был перевод англоязычного блог-поста, где упоминается, что Facebook «нанимает только Full Stack». То есть в Фейсбуке это уже тогда было устоявшимся понятием? Я стал гуглить дальше и в техническом блоге Facebook нашёл пост 2010 года «The Full Stack, Part I» с тысячей лайков. А он, в свою очередь, ссылается на пост разработчика Рэнди Шмидта 2008 года. И, судя по прочей найденной мной информации, вот у Шмидта и было первое использование понятия, из которого выросло всё остальное. Теперь, когда мы добрались до начала начал, давайте пойдём по этим же постам в обратном направлении (по хронологии) и посмотрим, что в них говорилось.
Как выбрать подходящий веб-фреймворк
Перечисленная функциональность свойственна всем фреймворкам. Но их широкий ассортимент приводит к тому, что разработчик теряется и не может выбрать конкретный инструмент. Сузить круг помогают следующие критерии:
- предпочитаемый язык;
- возможности фреймворка.
Полезно также изучить сравнение нескольких фреймворков. Например, вот сопоставление возможностей Django и Ruby on Rails.
Веб-фреймворки для начинающих не существуют. Инструменты одинаково подходят для разработчиков разного уровня. Конечно, лучше использовать фреймворки, которые проще изучить. Однако порой написанные по правилам старой школы и редко используемые, но подходящие инструменты, могут привести вас к успеху.
Продвинутые навыки
Ниже приведены некоторые темы, на которые стоит обратить внимание уже после освоения основ. Ссылки ведут на англоязычные ресурсы.
Авторизация с помощью JWT/OAuth
Это стандартный подход, используемый в индустрии для авторизации и аутентификации пользователей.
Шаблоны разработки
Шаблоны разработки — стандартные решения стандартных проблем. Изучение этих шаблонов облегчит вам решение возникающих в процессе работы задач и повысит ваш профессиональный уровень.
Примеры на языке Java и аналогичные примеры на JavaScript.
Шаблонов огромное количество, не пытайтесь выучить их все. Ознакомьтесь с ними, и при возникновении конкретной проблемы вы сможете найти подходящее решение.
Progressive Web App и мобильная разработка
Progressive web apps (PWA) — это веб-приложения, которые запускаются на мобильных устройствах, подобно нативным приложениям. Можете изучить этот вопрос в свободное время.
React Native — вы можете писать код, который будет компилироваться под Android/IOS.
Flutter — фреймворк с открытым исходным кодом для создания мобильных приложений от компании Google, похожий на React Native, но на языке Dart.
Рендеринг на стороне сервера
Код веб-приложения может обрабатываться на стороне сервера, возвращая в браузер конечный результат. Такой подход имеет свои достоинства, в частности улучшает скорость работы и показатели SEO.
Использование командной строки (SSH/Bash и т.д.)
Когда графический интерфейс не доступен, приходится использовать для работы командную строку. Нужно знать как минимум следующие вещи:
Full-stack разработчик (произносится “фулл стек”) — это некий мастер на все руки в мире веб-разработки. Ему под силу реализовать как клиентскую, так и серверную сторону приложения, которыми, обычно, занимаются FrontEnd и BackEnd разработчики раздельно друг от друга. Таким образом, Full-stack специалист способен в одиночку вести проект от начала до конца.
Еще в далеких нулевых и ранее не существовало подобного разделения обязанностей между разработчиками. Относительная простота разрабатываемого ПО, равно как и технологии того времени, позволяли держать процессы, которые сейчас выполняют разные люди, в одних руках. К примеру, в те времена IT-специалист, именуемый веб-мастером, и внешний вид сайта создавал, и серверную часть реализовывал, и размещал сайт на хостинге. То есть, Full-stack разработчики существовали и раньше, просто никто их так не называл.
Однако, IT-сектор не стоял на месте. Требования к программным продуктам росли, появлялись новые языки и технологии, менялись подходы к разработке. Древо IT начало становиться все более и более ветвистым, порождая новые специальности. Вместе с этим, профессия универсального бойца разбилась на два отдельных направления, а затем вновь возродилась с гордым названием “Full-stack Developer”.
Споры вокруг Full-stack
Не все так гладко, как кажется с первого взгляда. Множество опытных программистов и IT-специалистов высшего звена не признают данную должность по определению. “Почему?” — спросите вы. Ведь раньше были те же веб-специалисты, которые успешно совмещали обязанности современных направлений — фронта и бэка. Почему сегодня понятие Full-stack вызывает споры?
Распространено мнение, что Full-stack разработчиков не существует, а те, кто таковыми называются, на самом деле не соответствуют требованиям этой специальности.
Например, Сергей Немчинский — программист с 20-летним стажем, руководитель и владелец учебно-производственной компании FoxmindEd — в опубликованном видео на YouTube отзывается о Web Full-stack разработчиках следующим образом (ссылка):
“В принципе, в идеале, Full-stack разработчик — это классно и замечательно. Проблема в том, что… Таких не бывает. Фактически, всё, что мы имеем на рынке из тех людей, которые называют себя Full-stack девелоперами — это примерно 50% BackEnd девелоперов, которые немножко подучили FrontEnd и уже могут Angular или React скомпилировать и, соответственно, собрать-подключить — плюс немножко понимают в верстке — даже не на уровне Junior верстальщика. Они в большинстве случаев сделать хорошо, красиво не могут никак. Максимум, что могут — сделать так, чтоб кнопка нажималась.
Либо же Full-stack девелоперы — это оставшиеся 50% FrontEnd разработчиков, которые немножко выучили BackEnd; в большинстве случаев — какой-нибудь Node.js. Может быть PHP. Такой разработчик минимально умеет что-нибудь подрихтовать, но, опять-таки, говорить о том, что он сядет и напишет вам нормальное Full-stack приложение — нет, нет и еще раз нет.
Честно скажу, мне идея с объединением в Full-stack девелоперов кажется, с одной стороны, не очень удачной, потому что фактически мы получаем “ни рыба, ни мясо”. С другой стороны, рынок требует — значит, надо. Поэтому востребованность у Full-stack девелоперов, по большому счёту, чуть больше, чем у “чистых” BackEnd или FrontEnd разработчиков. Однако, рынок уже осознал, что они (Full-stack разработчики) в своем большинстве “ни рыба, ни мясо” и потому термин “Full-stack” начинает пропадать. Теперь просто считается, что это BackEnd разработчик с небольшим знанием фронта и, наоборот, FrontEnd разработчик с небольшим знанием одного из BackEnd-языков. Мне кажется, что так гораздо правильнее”.
Другие разработчики склоняются больше к тому, что Full-stack разработка — это ни что иное, как уловки бизнеса. Работодатель не желает переплачивать за двух разных специалистов, предпочитая более дешевого аналога, умеющего всё то же самое.
По сути, весь спор касаемо Full-stack разработчика завязан на скептицизме. Сторонники мифологичности данной профессии не верят в существование разработчика, способного хорошо реализовать как FrontEnd, так и BackEnd части, поскольку за обеими скрывается множество технологий и языков, а выучить всё и работать не хуже фронтендеров и бекендщиков — практически невозможно.
Те же, кто занимаются Full-stack девелопментом, парируют, указывая на большое количество времени, проведенного за разработкой, в ходе которого так или иначе приходится заглядывать по другую сторону баррикад и разбираться во всех процессах, которые сопровождают разработку всего проекта от и до. Ну а дальше дело техники — учишь необходимые инструменты, практикуешься и можешь самостоятельно работать над целым проектом. Конечно, познания во всех используемых языках и технологиях у Full-stack специалиста будут не столь глубоки, как у узкоспециализированных собратьев по цеху, но сделать полноценный рабочий проект с нуля, реализовав как BackEnd, так и FrontEnd ему будет под силу.
Тема связана со специальностями:
Разновидности Full-stack разработчиков
Вариаций Full-stack разработчиков, на самом деле, множество: PHP Full-stack Developer, Node.js Full-stack Developer, Java Full-stack Developer и так далее. Название, которое стоит в самом начале специальности, говорит о том, какой язык/платформа берется за основу во время реализации BackEnd части. Стек технологий FrontEnd-а практически всегда одинаков и отличается лишь используемыми JavaScript-фреймворками — Angular, React или Vue.js. А вот бекенд предоставляет гораздо больше возможностей для реализации своих амбиций.
- язык верстки HTML и язык стилей CSS;
- языки программирования JavaScript и TypeScript;
- препроцессоры SASS и LESS;
- библиотека jQuery;
- фреймворк Bootstrap;
- Angular/React/Vue.js;
- технологии DOM, AJAX, JSON;
- навыки адаптивной и кроссбраузерной верстки.
Теперь разберемся с ответвлениями в бекенде, которые указывают на популярные языки и технологии, использующиеся во время реализации серверной стороны разрабатываемых веб-приложений.
Node.js Full-stack Developer
- платформа Node.js;
- фреймворк Express.js;
- пакетные менеджеры npm, yarn;
- Web Sockets;
- понимание REST API;
- другие специализированные технологии.
Java Full-stack Developer
- язык Java + Java Core;
- веб-сервер Apache;
- инструменты для комфортного взаимодействия с БД — JPA/Hibernate;
- Spring (Spring MVC, Spring Boot, Spring REST, Spring Web . .);
- применение облачных сервисов Google Cloud, AWS или Azure;
- знание сервлетов, JSP (Java Server Pages);
- знание микросервисов.
PHP Full-stack Developer
- собственно, сам язык PHP;
- фреймворк Yii2/Symfony/Laravel.
Python Full-stack Developer
- язык Python;
- фреймворк Django/Flask;
- REST API;
- Web Sockets;
- навыки работы с ОС Linux и веб-сервером Nginx/Apache (возможно);
- опыт работы с облачными сервисами.
Также, от Full-stack специалиста могут потребовать навыки мобильной разработки, если работодатель будет намерен портировать веб-приложение на соответствующие платформы.
Как видите, список необходимых языков и технологий для создания хорошей серверной составляющей веб-приложений достаточно внушительный. В следующей главе мы разберемся, какие преимущества и недостатки подстерегают тех, кто таки намерился связать свою профессиональную деятельность с Full-stack разработкой.
Плюсы профессии Full-stack Developer
Возможность самостоятельно вести целый проект
Очевидное преимущество разработчика данной направленности заключается в объединении двух течений — FrontEnd и BackEnd — в одном специалисте. Помимо того, что такой профессионал способен реализовать обе части веб-приложения, он может беспроблемно настроить их взаимосвязь, что является частым камнем преткновения между фронтендщиками и бекендщиками. Тем самым устраняются недопонимания и противоречия, которые бы неизбежно возникли между несколькими разработчиками, трудящимися над одним и тем же продуктом.
Вячеслав Лобода, Senior Full-stack PHP Developer, о своей профессии отзывается следующим образом:
“Часто при решении задач веб-разработки возникает необходимость вносить правки одновременно и во FrontEnd, и в BackEnd. Для этого можно нанять двух разных специалистов или одного Full-stack разработчика. Последний вариант позволяет сэкономить время на коммуникацию”
Видео курсы по схожей тематике:
HTML5 & CSS3 Углубленный
Данный отзыв, а также все последующие взяты из статьи на dou.ua “Карьера в IT: должность Full-stack разработчик”.
Высокая скорость разработки, возможность принимать собственные решения, минимальные траты времени на лишнюю коммуникацию
Full-stack разработчик — это уже специалист достаточно высокого уровня, который способен принимать определенные самостоятельные решения, не тратя время на лишние обсуждения и согласования с другими разработчиками, ведь проект целиком и полностью находится под его крылом.
“Нравится, что могу создавать веб-приложения в одиночку, меньше задержек при работе. Например, когда работаешь как FrontEnd и нужно, чтобы BackEnd отдавал новые данные, ты просишь коллегу внести изменения, ждешь. Full-stack разработчику ждать никого не нужно. Взял и сделал как надо” — Геннадий Догаев, Web Full-stack Developer
Легкость поиска работы на фрилансе
На биржах фриланса заказчики зачастую ищут такого веб-специалиста, который сделает всю работу самостоятельно без привлечения дополнительных разработчиков. Кто, как не Full-stack девелопер лучше всего подойдет на эту роль, имея такое преимущество перед узкоспециализированными собратьями? Так что, выбрав данный путь, вы не останетесь без работы и сможете пользоваться всеми благами, которые дарит фрилансерство.
Большие карьерные возможности
Широкоформатность профессии Full-stack разработчика позволяет реализовать себя в любой сфере веб девелопмента. Вы можете в любой момент переключиться на более узкий профиль — чистую FrontEnd или чистую BackEnd разработку (горизонтальное развитие, углубление в конкретную сферу деятельности), а можете стать сильным тимлидом либо архитектором, который прекрасно разбирается во всех процессах создания веб-приложений и имеет богатый опыт за плечами (вертикальное развитие, продвижение по карьерной лестнице).
Также, Full-stack разработчик может найти успешное применение своим способностям в стартапах. Стартап-команды, как правило, имеют очень малый бюджет и им гораздо выгоднее иметь тех, кто может взять на себя обязанности нескольких людей. Таким образом, вы и новый опыт получите, и сможете поработать над чем-то свежим, интересным, ранее не виданным.
Ну, а касательно нужд рынка в Full-stack разработчиках даже упоминать не стоит — множество компаний желает заполучить широкопрофильного специалиста в свой штат. Количество вакансий для них меньше, нежели для фронтендщиков и бекендщиков, однако, и конкуренции тоже не так много.
Мало рутины и выгораний
Богатая на разнообразие деятельность Full-stack разработчиков снижает риски погрязнуть в однообразной работе. Вы владеете большим арсеналом знаний, что позволяет вам периодически переключаться между проектами и меньше уставать от применения одних и тех же технологий.
Легкость в развитии своего продукта
Вы имеете в распоряжении достаточно знаний и умений, чтобы самостоятельно создать собственный проект. В будущем вы сможете организовать свою команду для совершенствования и дальнейшего развития программного продукта, однако, уже на старте вы имеете все необходимое для того, чтобы реализовать ваши идеи.
Минусы профессии Full-stack Developer
Проигрыш узкоспециализированному разработчику на его поле боя
Full-stack девелопер владеет многими инструментами, но не может знать каждый настолько же хорошо, насколько отдельно взятый специалист. Данная профессия предусматривает подобное распыление и делает практически невозможным углубление в какой-либо язык или технологию. Выходит, вы умеете все, но хуже, чем разработчик конкретного направления.
Много времени на обучение
“Наращивайте компетенцию постепенно, с небольших задач. Пройдите курс по недостающему вам направлению, чтобы вникнуть в базовые принципы. А дальше осваивайте знания на практике по правилу Learning by doing” — Алексей Голубев, Team Lead Full-stack Developer в GlobalLogic.
Трудно следить за новыми тенденциями
Мир IT очень гибкий и переменчивый. Словно империи — возникают и рушатся новые языки, технологии, подходы в разработке ПО, техники написания и ревизии кода. Вам, как специалисту широкого профиля, необходимо быть в курсе всех новинок, ведь, в конце концов, этого и будут требовать от вас работодатели — использования современных инструментов и подходов.
Слишком много обязанностей
Работодатели иногда начинают выдвигать большое количество требований к фулл-стек специалисту. Ранее упоминаемый Full-stack разработчик Геннадий Догаев имеет следующую точку зрения на этот счет:
“Заказчики хотят свалить на одного человека слишком много. Например, уже встречаются объявления Node.js + React.js + React Native, то есть к веб-стеку добавляется ещё и мобильная разработка. Это влияет на качество знаний и конечного продукта: чем больше технологий нужно охватить, тем поверхностнее знаешь каждую из них. Кроме того, человеку не могут нравиться все направления одновременно. Мне из этого набора не очень интересна мобильная разработка”
Вами хотят залатать очень много дыр
Фулл-стек разработчику могут часто делегировать разнообразные задачи на рабочем месте. Дописать за кем-то код, что-то пересмотреть, пофиксить, доделать. Работать вместо FrontEnd / BackEnd разработчика, который ушел в отпуск — милое дело. А если вас наняли как альтернативу 5-ти разработчикам, то и вовсе будут держать как раба.
Сложные задачи
Вы знаете больше остальных, а значит, вам под силу разобраться с той или иной тяжелой задачей. По крайней мере, так думает тот, кто будет вам их раздавать.
Большая загруженность
Как вы уже заметили по предыдущим пунктам, Full-stack разработчику не дадут отдохнуть. Дел невпроворот — это точное описание его состояния на каждый рабочий день.
Сложности в замене
Этот пункт одновременно является и преимуществом, и недостатком. С одной стороны, вам тяжело найти замену и, соответственно, вас будут ценить. С другой — вам будет проблемно уйти в отпуск, ведь где взять замену? Тут и начнутся звонки в любое время суток, невозможность перекладывания некоторых задач на других разработчиков и прочее.
Как стать Full-stack разработчиком?
Бесплатные вебинары по схожей тематике:
ECMAScript 6. Новые инструменты для JavaScript разработчика.
Работа с сетью в Qt. Разработка графических приложений на C++ с Qt и QML
Ответ прост — выберите наиболее близкий вам вариант профессии и изучите необходимые технологии при помощи различных ресурсов. Советуем сделать свой выбор в пользу образовательной IT-платформы ITVDN — здесь вы сможете найти 90% всех нужных вам видео курсов по любому из выбранных направлений. В конце статьи мы оставим полезные ссылки на все специальности, которые помогут вам в изучении Full-stack ремесла.
К примеру, вам понравился BackEnd-стек Python разработчика — тогда вам подойдут 2 курса по специальностям:
С каждой программой обучения вы сможете ознакомиться подробнее, перейдя по оставленным ссылкам.
Итоги
Full-stack Developer — универсальный веб-разработчик, который объединяет в себе силу FrontEnd и BackEnd направлений. Да, специализированные девелоперы сделают всю работу лучше, чем фулл-стек специалист, однако главный конек героя этой статьи — возможность разрабатывать полноценные веб-приложения самостоятельно, доводя их до полностью готового состояния. Как и любое другое, Full-stack ремесло имеет свои преимущества и недостатки. Однако, не зря говорили классики — терпение и труд все перетрут. Так что все в ваших руках!
Возможно, нас читают практикующие Full-stack разработчики? С удовольствием прочтем вашу точку зрения на позиции, изложенные в данной статье. Также, будем рады любым вопросам и замечаниям от всех читателей!
Ну а тем, кто решил выбрать профессию Full-stack Developer мы желаем быть упрямыми, оптимистичными и с неугасаемым огоньком жажды знаний в глазах.
Успехов и кодерского вдохновения на вашем пути!
Полезные ссылки
FrontEnd составляющая: видео курс по специальности FrontEnd Developer.
Базы данных и DevOps
Эти два аспекта относятся к инфраструктуре разработки. Нельзя сказать, что начинающему веб-разработчику понадобятся углубленные знания в этой области, разве что если вы собираетесь заниматься именно вопросами DevOps. Вот базовые знания, которые вам потребуются:
- Управление базой данных;
- Работа с различными платформами для хостинга (AWS, Azure, Google и т.д.);
- Использование CI/CD (continuous integration and continuous delivery, непрерывная интеграция и непрерывная доставка) и таких инструментов, как Jenkins, GitLab и т.д.;
- Наблюдение и журналирование.
Возможно, в вашей команде или компании будут другие люди, которые возьмут на себя заботу об этих вещах. Однако это действительно ценный набор навыков, поэтому, если вам любопытно и у вас есть свободное время, изучение баз данных и DevOps может оказаться полезным в перспективе.
Фреймворки и микрофреймворки
Фреймворки веб-разработки отличаются по размеру. Существуют монструозные инструменты, которые предлагают решения для всего. Более легковесные варианты специализируются на решении конкретных задач. Такие фреймворки называются микрофреймворками. Их функциональность расширяется с помощью сторонних приложений. Вы можете создавать на их основе небольшие проекты или совместить микрофреймворк с большим фреймворком.
2012: «What is a Full Stack developer?» (Laurence Gellert)
Ещё один резонансный ранний пост — тот самый, благодаря которому словосочетание «full stack» впервые появилось на Хабре. Его тут переводили аж три раза, причём в третий раз — вчера, спустя восемь лет после публикации оригинала.
Здесь определение звучит так:
For me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology.
«Знаком со всеми слоями, даже если и не мастер в них» — вот это интересный нюанс. Если изначальное определение предполагало «умеешь всё делать хорошо», то здесь этого уже не требуют. Можно быть «T-shaped»: чем-то конкретным заниматься глубоко, а с другими вещами достаточно «быть знакомым».
И здесь приводится новая причина «чем это хорошо», уже не про оптимизацию производительности: «Хорошие разработчики, знакомые со всем стеком, знают, как улучшить жизнь окружающим их людям». Про это сейчас можно услышать в связи с тестированием или девопсом: давайте не просто перекидываться кодом через стену, а вместе понимать, как всё работает.
А основную часть поста занимает список «как выглядит полный стек, который разработчик должен знать», и это тоже интересно. В случае с дизайном тут есть опция «признать, что нужна помощь дизайнера», его не считают обязательным требованием. Зато появились другие пункты от «понимать сервера/сеть/хостинг» до «понимать, что нужно пользователю и бизнесу». Спектр описан не столько в ширину («фронт/бэк»), сколько «в глубину», и непосредственно «кодить» — только средняя его часть.
Разумеется, этот список породил споры, где к нему пытались что-то добавить или убрать. Но интересно обсуждать не конкретные пункты, а общую идею: тут получается, что для фуллстека важнее не «уметь накодить и на фронте, и на бэке», а понимать и ниже своего кода («как работает то, что накодил»), и выше («зачем вообще нужно то, что накодил»). По сути, тут обращаются к исходному значению слова «stack»: вертикальная стопка вещей, опирающихся друг на друга (недаром тексты про фуллстек часто иллюстрируют стопкой блинов на тарелке).
Типы веб-фреймворков
Классифицировать фреймворки для веб-приложений можно по двум основаниям: задачам, которые они решают, и размеру.
И что в итоге?
Какие выводы мы можем извлечь из этих четырёх текстов? Своими выводами делитесь в комментариях, а у меня получились такие:
- Сегодняшние обсуждения full stack страшно отдалились от того, что вкладывал в это словосочетание его автор. Наверное, он офигевает, глядя на то, во что всё превратилось :)
- Это понятие с самого начала было довольно размытым: с первых же постов разные люди вкладывали в него разное. Четыре приведённых текста — это четыре ощутимо различающихся позиции.
Так что нет и никогда не было какого-то одного «правильного» понимания. Это значит, что если у вас есть определённое видение, вы имеете на него полное право. Но это также значит, что у вашего собеседника может быть другое видение, на которое он имеет такое же право. Так что перед тем, как спорить «нужно ли становиться фуллстеком», стоит проверить, не говорите ли вы о разных вещах.
А ещё я увидел в этих определениях идею, которую считаю очень интересной. Но надо сделать оговорку: у меня профдеформация, и я тут лицо заинтересованное.
Смотрите: мы привыкли воспринимать «фуллстек» как «фронт+бэк», но сразу два из четырёх описаний совершенно не требуют быть сениором в обеих сферах, а вместо этого идут в сторону «T-shaped». Они предлагают не отказываться от специализации и быть гением-многостаночником, а изучать разное вокруг своего основного.
Этот человек не занимается фронтендом, но лезет в разные стороны, чтобы лучше понимать всё вокруг, расширять доступный скоуп задач и находить общий язык с окружающими (тестировщиками, фронтендерами, инфраструктурщиками).
Стоит ли называть это «full stack»? Спорный вопрос. Но для меня как раз это звучит как «фуллстек здорового человека». Потому что про совмещение фронта с бэком часто пишут «здесь боль и страдание», а вот про вылазки на смежные территории такого негатива никогда не слышал — только хорошее.
И если вы хотите быть фуллстеком вот в таком значении, то для вас напоследок сделаю минутку рекламы: мы придумали конференционный вариант как раз для таких людей. Для нашего сезона из 8 онлайн-конференций сделали «Full Pass» — билет-абонемент, дающий доступ ко всем сразу. Смысл в том, чтобы конференцию по своему профилю смотреть внимательно, а на других точечно подключаться к отдельным докладам, актуальным для вас. Если звучит интересно — переходите на сайт Full Pass, там все подробности.
Итак, вы решили начать путешествие в мир веб-разработки. Но с чего начать обучение начинающему программисту? В интернете огромное количество информации о разных технологиях, которые могут пригодиться веб-разработчику.
Оригинальный гайд составлен руководителем команды разработчиков. Автор резюмирует свой личный опыт, а также навыки, которые он считает ключевыми для новых членов своей команды.
JavaScript
JavaScript — язык программирования, используемый в веб-разработке. Если вы хотите успешно работать с фронтендом, вам придётся его хорошо изучить. Конечно, фреймворки есть и здесь, причина для изучения основ та же, что и в случае с CSS/HTML. В перспективе это знание положительно отразится на вашей работе. Фреймворки приходят и уходят, а базовые элементы языка не меняются.
Вот тот минимум, который должен знать начинающий JavaScript разработчик:
- Объекты, функции, условия, циклы и операторы;
- Модули; (включая методы работы с ними);
- Получение данных от программных интерфейсов посредством Fetch API; и использование событий;
- Async/Await (это не обязательно, но весьма полезно);
- JSON;
- ES6+;
- Тестирование (Jest, Enzyme, Chai и т.д.).
От начинающего разработчика не ожидают знания всего этого, но чем больше, тем лучше. Если вы способны написать простое веб-приложение без руководства, можно считать, что вы знаете JavaScript.
Если вы на самом деле хотите стать экспертом в JavaScript, полностью понять язык и выделиться из общей массы, вам помогут тематические ресурсы, освещающие сложные темы:
С их помощью вы не только лучше изучите особенности JavaScript, но и освоите общие концепции программирования. На самом деле, если вы будете понимать примеры кода, представленные там, вы будете знать больше, чем некоторые старшие разработчики.
Некоторые идеи для проектов:
- создать клон игры Супер Марио (вы изучите JavaScript, работу с DOM, использование событий);
- создать приборную панель, выводящую полученные через API данные, например, для Twitter, GitHub или любого другого ресурса по желанию (вы научитесь работать с API и JSON).
Фреймворки
Существует множество фреймворков для JS, выберите один и хорошенько изучите. Самые популярные на сегодняшний момент — Angular.js, React.js и Vue.js. Все перечисленные инструменты — хороший выбор, и в ближайшее время их разработку сворачивать не намерены.
Если вы освоили основы JavaScript и ориентируетесь в фундаментальных понятиях, изучение фреймворков не составит труда. Вам не нужно знать их все, лучше детально понимать работу одного инструмента, чем знать про разные, но на базовом уровне.
React
Этот инструмент может похвастаться мощным бэкграундом от Facebook, многочисленным сообществом, и в настоящее время является самым распространённым в индустрии.
Если вы последовали приведённым выше рекомендациям и ознакомились с JavaScript, изучение React должно показаться не слишком сложным. Как начинающему разработчику, вам нужно освоить основные концепции этого инструмента:
- Понимание принципов взаимодействия компонентов React;
- Использование State & Props внутри компонентов;
- Концепция JSX и её использование для рендеринга HTML-элементов на веб-странице;
- Обновление компонентов: как и когда это происходит;
- Использование hooks в React;
- NPM, Webpack и Babel.
Как и в случае в JavaScript, от начинающего разработчика не ожидают досконального знания фреймворка. Для оттачивания навыков можете попробовать реализовать следующие несколько проектов:
- Переделать некоторые из своих старых разработок с использованием React;
- Создать приложение-калькулятор (хороший способ отработать управление состояниями, так как многие из действий пользователя потребуют обновления состояния. Попробуйте использовать React Hooks);
- Разработать собственные приложения для работы с Twitter, GitHub или новостными лентами. Данные можно получить через публичный API и вывести внутри собственного приложения;
- Как и раньше, не уделяйте большого внимания внешнему виду, сконцентрируйтесь на работоспособности приложения, обращая внимание на изучение основных концепций React.
Управление состоянием (Redux)
После базовых концепций React изучите Redux. Это фреймворк, предназначенный в основном для управления состояниями и тесно связанный с React. Можете рассматривать его как базу данных, которая содержит в одном месте все состояния вашего веб-приложения и позволяет легко ими управлять.
Это сложная система с большим количеством компонентов, поэтому поначалу работа с ней может несколько озадачить. Однако Redux понадобится вам только для работы с большими коммерческими приложениями. Сфокусируйтесь на понимании основ и управлении состояниями с помощью React.
Инструменты разработки
Это инструменты, которые помогут с отладкой React/Redux.
2010: «The Full Stack, Part I» (Carlos Bueno)
Следующие два года слова «full stack» не получали большого распространения, но затем Карлос Буэно из Фейсбука написал текст с таким заголовком, ссылающийся на Рэнди Шмидта. Поскольку у инженерного блога Facebook аудитория заметно больше, чем у небольшого личного блога, похоже, что вот отсюда понятие начало расходиться шире. Но Карлос не просто пересказал малоизвестную чужую идею, а дал своё определение:
A "full-stack programmer" is a generalist, someone who can create a non-trivial application by themselves.
Вот такое звучит применимо и сегодня: «человек, который может создать приложение в одиночку». Про дизайн тут ни слова не сказано. И ещё тут нет слова «web», которое было в оригинале — получается, что можно и где-нибудь в геймдеве быть фуллстеком.
Вместо дизайнерских умений Карлосу важно вот что: «люди с широким набором умений обычно вырабатывают хорошую ментальную модель того, как действуют разные слои системы. Это особенно ценно для работы над производительностью».
Он сравнивает это с химией и физикой, которые действуют на разных уровнях реальности: понимание нижнего уровня помогает человеку лучше ухватывать происходящее на верхнем. То есть, если исходный пост был только про «широту охвата» («и дизайнер, и кодер, и на дуде игрец»), то вот тут впервые зашла речь о том, что важна глубина.
Языки программирования
Существует несколько сотен языков программирования, но не волнуйтесь, основных не так много:
- Java;
- Ruby;
- Python;
- JavaScript (Node.js);
- Go;
- PHP.
Стоит выбрать один из них и хорошо его изучить. Если вы уже работали с JavaScript, вам может подойти Node.js. С его помощью вы сможете легко разрабатывать REST API, а это одна из тех задач, которые обычно поручают младшему разработчику.
Какой бы язык вы ни выбрали, вам нужно будет освоить следующие навыки:
- Разработка API;
- Основы языка (создание функций, использование условий, операторы, переменные и т. д.);
- Подключение к базе данных;
- Создание запросов к базе данных;
- Управление пакетами;
- Написание тестов.
Если вы решили изучить Node.js, то со многим из этого списка вы уже знакомы. Не пытайтесь выучить всё это сразу, начинающему разработчику это не нужно. Выберите язык, который лучше всего соответствует вашим целям (для веб-разработки подойдут все перечисленные), сконцентрируйтесь на нём и изучите его досконально. Естественно, если вам интересны другие языки (JavaScript довольно сильно отличается от Python), не стесняйтесь удовлетворить своё любопытство и поэкспериментировать с ними.
Как научиться пользоваться веб-фреймворками
Научиться пользоваться фреймворками можно самостоятельно. Чтобы найти руководство по веб-фреймворкам, изучите их документацию. Главный плюс официальных источников — актуальность. В таких обучающих материалах используются возможности последних версий фреймворков.
Если в документации нет простых гайдов, можно поискать их на других площадках. Например, на freeCodeCamp есть бесплатный курс по React, а на сайте Tutorialspoint — туториалы по разным языкам и технологиям.
Неплохой источник информации — YouTube. На видеохостинге выкладывают обзоры и пошаговые руководства. Просмотр таких роликов поможет выбрать подходящий фреймворк, если вы пока сомневаетесь. Не забывайте и про StackOverflow. Но туда нужно приходить уже с конкретными вопросами, которые возникли при изучении или использовании фреймворка.
Привет, Хабр! Представляю вашему вниманию перевод статьи "What is a Full Stack developer?" автора Laurence Gellert.
Фронтенд-фреймворки
Фронтенд-фреймворки отвечают за внешний вид веб-приложения. В отличие от серверных, они никак не связаны с логикой работы. Этот тип фреймворков работает в браузере. С их помощью можно улучшать и внедрять новые пользовательские интерфейсы, создавать разные анимации и одностраничные приложения. Вот некоторые из них:
- Angular;
- Vue.js;
- Svelte;
- React — формально это не фреймворк, а библиотека, но значение этого инструмента так велико, что его постоянно сравнивают с другими веб-фреймворками.
Все эти инструменты используют JavaScript.
HTML/CSS
Это основа основ фронтенд разработки. HTML используется для размещения элементов на странице, а CSS для оформления этих элементов. От начинающего разработчика ожидают, что он хорошо знаком с этими инструментами. Вот что важно знать:
- Создание сайта с помощью HTML;
- Применение стилей посредством CSS;
- Различные способы применения CSS в HTML: шаблоны, inline-стили и тому подобное.
Познакомившись с основами, обратите внимание и на продвинутые практики.
-
для вёрстки и более удобного размещения элементов; для более удобной работы с CSS.
Чтобы попрактиковаться, создайте несколько проектов с помощью CSS/HTML. Не обращайте внимания на JavaScript или API, сосредоточьтесь исключительно на работе со стилями и гипертекстовой разметкой.
Фреймворки
Следующий шаг — знакомство с CSS-фреймворками. По сути это готовые элементы и стили, которые можно использовать в своём проекте. Большинство компаний использует их, чтобы сберечь время своих разработчиков и не изобретать велосипед. Фреймворков огромное количество, подберите себе один по вкусу и изучите его. Обычно они довольно похожи, и, познакомившись с одним, можно легко освоиться и с остальными.
Bootstrap
Автор гайда рекомендует использовать фреймворк Bootstrap. Этот инструмент весьма распространён среди разработчиков.
Адаптивный дизайн
Важно принимать в расчёт многообразие мобильных устройств. К счастью, использование названных ранее инструментов (Bootstrap, CSS Grid, Flexbox и других) серьёзно облегчает адаптацию проектов.
- Медиа-запросы. Необходимо понимать, как использовать CSS для создания адаптивного дизайна, а также как работать с медиа-запросами. Это позволяет определить, как будут выглядеть элементы на экранах разного размера;
- Не стоит указывать размер в пикселях. Изображение размером в 100 пикселей всегда будет изображением в 100 пикселей. Для соответствия стандартам адаптивного дизайна следует использовать rem , vh , и vw .
Обычно вы будете разрабатывать приложения, предназначенные и для мобильных устройств, и для больших экранов. Сосредоточьтесь на разработке мобильного дизайна, а адаптировать приложение под большие экраны вы сможете позже, используя медиа-запросы.
Веб-браузеры
Фронтенд разработчику важно разбираться в веб-браузерах. Самые распространённые — Chrome, Firefox и Microsoft Edge. Вам нужно разбираться в следующих аспектах:
- Инструменты отладки (например Chrome DevTools);
- Работа с хранилищами (локальные, сессионные, куки);
- Особенности браузеров. Самая серьёзная проблема веб-разработки — поддержка всех браузеров. Просматривайте whatwebcando.today, если хотите быть уверенным, что ваш код будет работать во всех нужных браузерах.
2008: «Full Stack Web Developers» (Randy Schmidt)
Эта страница личного блога уже даже не открывается, но Internet Archive заботливо сохранил для нас Самый Первый Пост. Автор поста восхищается людьми, которых он называет «Full Stack Web Developers». И вот какое определение им он даёт:
Вот это сейчас внезапно было: первым пунктом идёт дизайн. Д И З А Й Н. (Судя по контексту, слово design тут не в значении «проектирование», а именно как графический дизайн.) А «programming» упомянуто мимоходом как единый последний пункт — хотя сегодня обсуждения строятся как раз на том, что у него есть подпункты.
По сути, содержание его поста сегодня в какой-то степени актуально внутри фронтенда, где есть место и JS-программированию, и более дизайнерским вещам. Так что, оставаясь в пределах фронтенда, можно специализироваться на чём-то, а можно быть многостаночником — в прошлом году нашумел текст «The Great Divide», посвящённый как раз этой разнице специализаций.
Читайте также: