Что значит быть full stack разработчиком?
Содержание:
- 2008: «Full Stack Web Developers» (Randy Schmidt)
- Где нужен full stack программист?
- Как стать Full Stack разработчиком и куда двигаться дальше
- 2010: «The Full Stack, Part I» (Carlos Bueno)
- Что нужно знать, чтобы стать Python-разработчиком?
- 2010: «The Full Stack, Part I» (Carlos Bueno)
- Как стать Fullstack-разработчиком на Python – обучение
- Какие еще онлайн-курсы программирования вам будут интересны
- Заработная плата
- Профессиональные знания
- В каком возрасте начинать готовиться к работе fullstack-разработчиком на PHP
- Можно ли сделать Фронтенд на Python?
- Правила выбора онлайн-курсов
- Что значило full stack в 2000 году и что значит сейчас?
- Навыки разработчика
- Базы данных
- Самый минимум: что нужно знать, чтобы стать Full-Stack Developer?
- Преимущества и недостатки
- Что значит быть Fullstack-разработчиком
- И что в итоге?
- ВЫВОДЫ
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», посвящённый как раз этой разнице специализаций.
Где нужен full stack программист?
Разработчики полного цикла требуются любому бизнесу. Фулстеки могут решать задачи комплексно, что уменьшает количество недопониманий и конфликтов в коллективе. Но в большой фирме разработчик будет заниматься только частью сайта, отдельным этапом разработки, также часто их берут для выполнения связующего звена между frontend и backend. В небольших компаниях 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 разработчика помогут видеть сильные и слабые стороны проектных решений. К тому же за время карьеры человек накопит много знаний по самым разным технологиям и ему будет из чего выбрать при планировании проекта.
Иллюстрации Ульяны Патоки
2010: «The Full Stack, Part I» (Carlos Bueno)
Следующие два года слова «full stack» не получали большого распространения, но затем Карлос Буэно из Фейсбука написал текст с таким заголовком, ссылающийся на Рэнди Шмидта. Поскольку у инженерного блога Facebook аудитория заметно больше, чем у небольшого личного блога, похоже, что вот отсюда понятие начало расходиться шире. Но Карлос не просто пересказал малоизвестную чужую идею, а дал своё определение:
Вот такое звучит применимо и сегодня: «человек, который может создать приложение в одиночку». Про дизайн тут ни слова не сказано. И ещё тут нет слова «web», которое было в оригинале — получается, что можно и где-нибудь в геймдеве быть фуллстеком.
Вместо дизайнерских умений Карлосу важно вот что: «люди с широким набором умений обычно вырабатывают хорошую ментальную модель того, как действуют разные слои системы. Это особенно ценно для работы над производительностью»
Он сравнивает это с химией и физикой, которые действуют на разных уровнях реальности: понимание нижнего уровня помогает человеку лучше ухватывать происходящее на верхнем. То есть, если исходный пост был только про «широту охвата» («и дизайнер, и кодер, и на дуде игрец»), то вот тут впервые зашла речь о том, что важна глубина.
Что нужно знать, чтобы стать Python-разработчиком?
Учиться нужно постепенно: сначала освоить базу любого программиста — HTML, CSS и Javascript. HTML и CSS отвечают за расположение элементов на веб-странице и информацию о стиле: шрифты, начертание текста, отступы, Javascript добавляет интерактива: на этом языке можно вписать в страницу анимированные элементы. Это уровень верстальщика — первая ступень разработки.
Следующая ступень — фронтенд, создание внешней оболочки сайта и разработка взаимодействия пользователя и сайта. Можно остаться на ней, но если хочется большего — например, создать собственное приложение, развернуть сервер, написать свою CMS, — здесь подключается бэкенд, то есть серверная часть. Чем дальше, тем чаще для написания бэкенда используют именно Python, а не привычный PHP.
Что нужно знать будущему фулстек-разработчику:
- Основы Python: как писать код, как подключать библиотеки и работать с разными видами файлов.
- Как работают фреймворки. Это программы, которые облегчают создание бэкенда и его базовой логики. Они связывают в одну систему URL-адреса, части кода на Python, базы данных и HTML-страницы. Самые популярные фреймворки для работы с интерактивными сайтами сегодня – это Bootstrap и Django.
- Как подключить базу данных при помощи SQL. Чтобы сервис отвечал требованиям бизнеса, он должен собирать данные о клиентах. Для этого нужно знать, как именно их собирать, хранить и передавать. Это задачи для языка SQL.
- Работа с docker-контейнерами и ОС Linux. Контейнеры помогают упаковать приложение вместе со средой запуска в файл, который без проблем откроется на другом компьютере. Так вы сможете передавать приложение заказчику безопасно и просто. А разворачивать сервер, на котором будет работать ваше приложение, будете на Linux — для этого нужно понимать, как работает эта система.
Перечисленные навыки можно получить за 9-12 месяцев на комплексном курсе и чуть дольше – собирая материалы самостоятельно. Набрав базу для уровня junior, за два года практики вы сможете стать уверенным миддлом.
2010: «The Full Stack, Part I» (Carlos Bueno)
Следующие два года слова «full stack» не получали большого распространения, но затем Карлос Буэно из Фейсбука написал текст с таким заголовком, ссылающийся на Рэнди Шмидта. Поскольку у инженерного блога Facebook аудитория заметно больше, чем у небольшого личного блога, похоже, что вот отсюда понятие начало расходиться шире. Но Карлос не просто пересказал малоизвестную чужую идею, а дал своё определение:
Вот такое звучит применимо и сегодня: «человек, который может создать приложение в одиночку». Про дизайн тут ни слова не сказано. И ещё тут нет слова «web», которое было в оригинале — получается, что можно и где-нибудь в геймдеве быть фуллстеком.
Вместо дизайнерских умений Карлосу важно вот что: «люди с широким набором умений обычно вырабатывают хорошую ментальную модель того, как действуют разные слои системы. Это особенно ценно для работы над производительностью»
Он сравнивает это с химией и физикой, которые действуют на разных уровнях реальности: понимание нижнего уровня помогает человеку лучше ухватывать происходящее на верхнем. То есть, если исходный пост был только про «широту охвата» («и дизайнер, и кодер, и на дуде игрец»), то вот тут впервые зашла речь о том, что важна глубина.
Как стать Fullstack-разработчиком на Python – обучение
Где учиться? Какой курс пройти? Не ломайте голову – Skillbox уже обо всем позаботились. Благодаря курсу “Профессия Fullstack-разработчик на Python” вы сможете бесплатно учиться целых 6 месяцев, и прямо во время учебы принимать активно участие в разработке приложений и сайтов. Вы научитесь программированию, работе с дизайн-макетами и настройкой серверов.
Вы получите 4 готовых проекта для своего портфолио, а также помощь с трудоустройством. А еще, записавшись на этот курс сейчас, вы получите бесплатный доступ к специализированной IDE (среде разработки) от компании JetBrains — WebStorm. И непосредственно в процессе обучения, вы сможете начать размещать свои проекты в интернете.
Какие еще онлайн-курсы программирования вам будут интересны
Онлайн-курс «Full Stack-разработчик с нуля» в GoIT помогает уверенно войти в IT-сферу и получить реальный опыт веб-разработки в команде. Студенты курса программирования онлайн получают базовый IT английский, карьерные навыки, пять готовых реальных проектов, помощь в трудоустройстве, 10 месяцев по 3400 грн/мес. Есть онлайн и оффлайн обучение в Киеве. Курс подойдет даже тем, кто работал абсолютно в другой сфере и никогда не программировал. Среди студентов школы много людей старше 35 лет.
Онлайн-курс веб-программирования от Hedu. После 4 месяцев обучения и 15 уроков сможете самостоятельно создавать сайты, работать удаленно, сможете сменить нелюбимую работу и повысить уровень своего дохода. Стоимость курса — от 15 000 руб. Есть возможность индивидуального и корпоративного обучения.
. На этом курсе обучение программированию организовано как онлайн, так и офлайн. Программа состоит из 5 модулей и длится 8 месяцев. В процессе обучения изучите HTML, CSS, Javascript, Java Core, Java Enterprice. Стоимость обучения — 4500 грн в месяц. При покупке сразу 5 модулей можно получить скидку. Гарантий трудоустройства прописана в договоре.
Курс «Веб разработка — с нуля до профессионала. Full Stack» от Udemy состоит из 13 разделов и длится 33 часа. Студенты осваивают обе стороны web-разработки (frontend и backend), учатся создавать веб-страницы, стилизовать сайты при помощи CSS, использовать для написания кода JavaScript, пользоваться инструментами веб-разработки, работать с серверной частью и базами данных. Стоимость курса — 140 долларов.
Free Code Camp — онлайн-курс по программированию для тех, кто хочет сменить свою работу, но очень боится. Студенты изучают JavaScript и структуры данных, API и микросервисы, программирование на Python, визуализацию данных, библиотеки фронтенд-разработки, адаптацию веб-дизайна и др. Курс бесплатный, но на английском языке. А также на платформе находится более 6000 пособий, обучающих видео и презентаций.
Codecademy — пошаговое руководство программирования. Студенты курса учатся создавать веб-сайты и работать с базами данных, без особых усилий писать код и получают мгновенную обратную связь. Полученные в процессе обучения знания сразу отрабатываются на практике. Курс на английском языке. Длительность обучения — 12 месяцев. Стоимость — 19,99 долларов в месяц, при оплате за весь год можно сэкономить 48 долларов. Чтобы попробовать курсы программирования онлайн, можно воспользоваться PRO-версией.
Основы программирования на Python можно также изучать вместе с Coursera. Студенты смогут решить много задач по программированию и закрепить на практике изучаемый материал. Научатся обрабатывать и хранить числа, тексты и их наборы, освоят стандартную библиотеку языка Python и смогут автоматизировать задачи по сбору и обработке данных. Кроме этого, познакомятся с основами различных парадигм программирования. Для начала обучения не нужно уметь программировать, достаточно знать математику на уровне средней школы. Обучение бесплатное и ориентировано на 9 недель.
Заработная плата
Доход fullstack-разработчика на PHP напрямую зависит от его опыта, а также характера проекта, над которым он работает. Попасть на хорошо оплачиваемую должность возможно только при наличии портфолио и подтвержденных практических навыков.
Профессиональные знания
- Язык программирования PHP и основные фреймворки.
- MySQL, RabbitMQ.
- Скилы для работы в команде.
- Веб-верстка, JavaScript.
- Технический английский язык.
В каком возрасте начинать готовиться к работе fullstack-разработчиком на PHP
Сегодня школы программирования начинают профильные занятия с детьми с самого раннего возраста. Конечно, окончив первый курс, например, в 5–7 лет, ребенок еще не будет готов заняться профессиональной разработкой, но он сможет сделать свой первый шаг – понять, нравится ли ему программирование, и получить первые результаты. Занимаясь программированием на протяжении всей школьной жизни, к моменту подачи документов в профильный вуз ребенок уже поймет, что из себя представляет работа программиста, какая сфера программирования ему интересна, а значит, он сможет сделать осознанный выбор и не разочароваться в своем направлении через первые несколько лет обучения. Кроме того, у него уже будет отличный набор навыков, благодаря которым профессиональное обучение будет проходить проще и эффективнее.
В школах программирования Championika Digital к таким курсам относятся:
- для общего знакомства с языками программирования: «Программирование на Python»;
- для знакомства с разработкой сайтов: «Создание сайтов c Ozon» – в рамках курса изучаются HTML, CSS;
- погружение в разработку игр: «Создание 3D игр в Roblox Studio» и «Создание 3D-игр в Minecraft».
Для детей младшего возраста подходят курсы, которые знакомят с базовыми принципами программирования, например: «Программирование в Scratch» – обучение начинается с 10 лет и «Создание игр в Scratch Junior» – для детей от 7 лет.
Если в детстве у вас не было возможности изучать основы программирования, разработки сайтов или создания игр, это вовсе не значит, что время упущено, – никогда не поздно начать учиться на fullstack-разработчика на PHP, просто это будет дольше. Если есть база в frontend и backend, дорога будет намного короче.
Можно ли сделать Фронтенд на Python?
С Python вы можете делать все, что захотите, это основная цель данного языка программирования. Фронтенд — это не что иное, как вызов для Python. Python способен с легкостью генерировать все три основные составляющие фронтенда сайта (HTML, CSS, JavaScript) с помощью парсеров, компиляторов и транспортеров.
HTML является довольно простым, хотя и очень слабым в плане возможностей, форматом, который довольно просто генерировать. Это действительно зависит от того, сколько вы хотите использовать, но есть библиотеки Python, которые могут облегчить этот процесс.
CSS — похожая история, в то время как HTML отвечает за общий вид веб-сайта, CSS фокусируется на макете его интерфейса, и опять же простой формат с ограниченными возможностями, вы можете использовать библиотеки Python.
И, наконец, есть Javascript, безусловно, единственная сложная часть внешнего интерфейса, JS — это ограниченный язык сценариев, обладающий лишь небольшой частью возможностей Python, но при этом достаточно гибкий, чтобы предоставлять интерактивные возможности на веб—сайте. Библиотеки Python, которые могут генерировать JS и для любого другого языка, называются транспайлерами.
Правила выбора онлайн-курсов
При выборе онлайн-курса рекомендуется учитывать следующие моменты:
- на кого рассчитан курс. Так, если обучение проводится для специалистов с определенными навыками в программировании, то оно не подходит новичкам;
- форма обучения. Это могут быть вебинары, видеоуроки, практикумы и т.д. Лучше всего выбирать программы, в которых учащийся может общаться с лектором. Только в этом случае пользователь сможет получать ответы на интересующие вопросы. Кроме того, нужно использовать курсы с практикумами и проверкой домашних заданий. Это поможет лучше усвоить полученную информацию и в дальнейшем избежать возникновения ошибок;
- время учебы. В этом случае следует ориентироваться на собственный график. Лучше всего выбирать курсы, где можно выбирать время посещения занятий;
- доступ к курсу. Если он будет открыт навсегда, ученик сможет пересматривать уроки, что особенно актуально, если какая-либо тема освоена не до конца;
- проекты в портфолио. Их составляет ученик, но проверяет профессионал. Это позволяет составить грамотный проект без ошибок и увеличить вероятность получения достойной работы. Чем больше проектов после окончания обучения войдет в портфолио, тем лучше;
- какой документ предоставляет онлайн-школа после окончания обучения. Лучше всего выбирать центры, выдающие дипломы или сертификаты. Это увеличит шанс трудоустройства. Если в конце обучения не будет получен документ, претендент на должность не сможет с его помощью доказать свою компетенцию;
- помощь в трудоустройстве. Лучше всего выбирать онлайн-школы, которые оказывают содействие в поиске работы. В этом случае ученик может быстро устроиться на должность с оптимальной заработной платой;
- срок обучения. Чем быстрее ученик закончит обучение, тем быстрее сможет начать работу. Однако только курсы с продолжительным сроком обучения помогут лучше освоить профессию или повысить уровень квалификации;
- наличие рассрочки. Это особенно актуально для дорогостоящих курсов. Кроме того, многие онлайн-школы предоставляют отсрочку первого платежа на 6 месяцев. Это позволяет посещать занятия даже в случае отсутствия денег.
Так какие же выбрать курсы для обучения? Если нужны недорогие занятия с продолжительным сроком, то можем предложить вариант Fullstack JavaScript от GEEKBRAINS. Когда стоимость не имеет значения, можно выбрать курсы Fullstack разработчик от LOFTSCHOOL. Если нужно освоить профессию быстро, а размер бюджета ограничен, то можем предложить вариант Веб-разработка – с нуля до профессионала. FULL STACK от UDEMY. По такому принципу можно выбрать подходящую онлайн-школу из нашего рейтинга.
Что значило full stack в 2000 году и что значит сейчас?
2000 год был очень давно, в этом году был выпущен PHP 4.0. Да, 4.0. Тогда, хороший веб-разработчик знал немного HTML, CSS и процедурный PHP, потому что собственно ООП появился в версии 5.0.
Сборка LAMP (Linux — Apache — MySQL — Perl / PHP) был в моде в те годы, практически без альтернативы. В начале 2000-х, если кто использовал контроль версий – то они считались либо технологическими еретиками либо мастерами. Сегодня это смешно, если кто-то не использует данные технологии.
Так, давайте попробуем классифицировать основные требования, которыми должен обладать full stack разработчик:
Системное администрирование
- Linux и написание shell скриптов
- Облачные технологии: Amazon, Rackspace, и т.д.
- Фоновые процедуры: Gearman, Redis
- Поиск: Elasticsearch, Sphinx, Solr
- Кэширование: Varnish, Memcached, APC / OpCache
- Мониторинг: Nagios
Linux по-прежнему самая распространённая операционная система Интернета, используемая в веб-разработке (не считая .NET). Кроме того, full stack разработчик должен знать, как работает облачный хостинг, Amazon / Rackspace.
Поиск является неотъемлемой частью большинства веб-сайтов — разработчик должен знать, как настроить и использовать поисковые серверы, такие как Sphinx или Elasticsearch.
Кэширование также важно: Varnish, обратный прокси, Memcached
Инструменты веб-разработки
- Контроль версий: Git, Mercurial, SVN
- Виртуализация: VirtualBox, Vagrant, Docker
Сегодня неприемлемо не использовать контроль версий, даже если вы разработчик одиночка.
Используя средства виртуализации и среды разработки на основе каждого проекта легко настроить с помощью VirtualBox и Vagrant.
Если вы хотите работать с Vagrant вы должны знать, основной синтаксис Ruby.
Бэк-энд технологии
- Веб-серверы: Apache, Nginx
- Языки программирования: PHP, NodeJS, Ruby
- Базы данных: MySQL, MongoDB, Cassandra, Redis, SQL / JSON в целом
Знание тонкостей работы с Apache и Nginx — это норма. Full stack разработчик должен знать, как настроить данные инструменты.
PHP должен быть освоен на высоком уровне, NodeJS, Ruby – как можно лучше.
В дополнение к веб-серверам и языкам программирования, full stack разработчик должен знать как работать с различными базами данных.
Реляционные (например, MySQL, PostgreSQL) и нереляционные базы данных (как MongoDB, Redis или Cassandra) различия между которыми full stack разработчик должен знать, наряду с XML / JSON.
Фронтальные технологии
- HTML / HTML5: Семантический веб
- CSS / CSS3: LESS, SASS, Медиа запросы
- JavaScript: JQuery, AngularJS, Knockout, и т.д.
- Особенности совместимости всех браузерах
- Адаптивный дизайн
- AJAX, JSON, XML, WebSocket
JavaScript, который изначально никто не воспринимал всерьёз, сегодня превратился в один из самых популярных и мощных языков. Новые методологии и структуры появляются каждый день: MVC, MVVM, MVP, Angular, Knockout, Ember, и т.д.
Наряду с HTML, CSS, Javascript, full stack разработчик должен знать о принципах работы с медиа-запросами CSS, а так же препроцессорами, такими как LESS и SASS.
Следует также знать, как работать с технологиями AJAX или WebSocket.
Дизайн
- UI
- UX
- Преобразование веб-дизайна в код
В дополнение к интерфейсным технологиям, full stack разработчик также должен уметь преобразовать макет сайта в полноценный шаблон, используя HTML / CSS / Javascript.
Так же вам могут потребоваться знания самых разных технологий. Если вы хотите настроить Vagrant вам нужно знать синтаксис Ruby, а для более эффективной работы с DOM не обойтись без JQuery.
Ещё одна категория, которая заслуживает упоминания это мобильные технологии. Это очень динамичная отрасль, которая тесно связана с веб-разработкой:
- IOS
- Android
- Гибрид: PhoneGap, Appcelerator
Full stack разработчик должен иметь хорошее представление об этих технологиях.
Навыки разработчика
Навыки, необходимые для Full Stack Developer, будут зависеть от требуемых обязанностей и типа организации или задачи.
Обычно навыки могут включать:
Сильные организационные качества и навыки управления проектами.
Знание основных языков интерфейса, таких как HTML, CSS и JavaScript.
Знакомство с фреймворками JavaScript, такими как Angular JS, React и Amber.
Знание серверных языков, таких как Python, Ruby, Java, PHP и .Net.
Знакомство с такими технологиями баз данных, как MySQL, Oracle и MongoDB.
Отличные навыки вербального общения.
Хорошие навыки решения проблем
Внимание к деталям.
Базы данных
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?
Давайте рассмотрим минимальный набор знаний которые необходимо иметь, чтобы быть Full-Stack-девелопером.
HTML: теги, основы работы браузера
Full-Stack Developer — это человек, который ежедневно работает с браузером. Безупречное знание того, как работает браузер, очень помогает. Когда вы будете сталкиваться с проблемами, вы оцените это знание по достоинству.
СSS: знание адаптивной верстки
Стилизация страниц и адаптация их под разные размеры экранов — основы основ. Адаптивность — это умение вашего приложения или сайта подстроиться под размер экрана. Прежде всего это предполагает работу с Flexbox и кредами.
JavaScript
Знание JavaScript — это мастхэв, поскольку этот язык до сих пор остается одним из самых популярных и востребованных.
Рано или поздно любой Full-Stack столкнется с необходимостью понимать JS.
Фреймворки и библиотеки
Если вы уже получили приведенные выше базовые знания, то дальше можно начать знакомство с фреймворками и библиотеками, такими как React, Angular. Эти знания очень пригодятся, ведь чистый JavaScript редко используют.
Фреймворки и библиотеки — это то, что уже существует, то есть уже написано. Соответственно, нам ничего не нужно писать или придумывать, а просто брать и использовать. Лучше в этом попрактиковаться путем самостоятельного создания небольших приложений или скопировать проект, который уже есть: создать свой Instagram, например.
Знание алгоритмов и паттернов программирования
Также в работе является важным знание алгоритмов и паттернов программирования. Распространено мнение о том, что алгоритмы — это уже что-то постоянное, это учить не нужно, только бери и используй. Но рано или поздно даже фронтенд-разработчик столкнется с тем, что нужно будет сделать свой алгоритм, который будет идеально вписываться в проект. Тут вам и пригодится это алгоритмическое мышление.
Когда у вас уже появится больше опыта и умений, то не лишним будет изучить паттерны. Их можно использовать при написании определенного кода — это значительно уменьшает количество ошибок.
Система контроля версий
Следующий уровень — знать системы контроля версий. Над проектом может работать определенное количество людей, эти люди могут меняться и все эти версии нужно будет где-то хранить. Именно этот инструмент поможет управлять проектом, когда над ним работает несколько разработчиков. Эти знания необходимы для лидов.
Пара слов о бэкенде
Отдельно хотелось бы выделить бэкенд-часть работы. Безусловно, чем больше языков ты знаешь, тем лучше для тебя, но на начальном этапе нужно выбрать один язык программирования и углубиться в его основы: рассмотреть функционал, возможности и что вообще можно сделать с его помощью.
После можно познакомиться с фреймворками, которые помогут построить приложения на выбранном языке программирования
Также важно знать работу протокола HTTP, то есть каким образом происходит взаимодействие между клиентами и сервером
Важно познакомиться с базами данных и так же, как и в случае с фронтендом, нужно знать алгоритмы и паттерны программирования. Для бэкенда это еще более важно
Ведь здесь много значимой бизнес-логики, которую надо обрабатывать.
Преимущества и недостатки
Прежде всего, Fullstack-разработчики способны быстро приступить к работе и за сравнительно короткие сроки сформировать прототип продукта. В сравнении с front-end и back-end специалистами, у них более обширные познания, благодаря чему они постоянно имеют свое мнение по вопросам текущего проекта – им не нужно обращаться за помощью к коллегам из других областей web-разработок. И напротив, если в команде есть фуллстек, он способен взаимодействовать со всеми участниками проекта, сокращая тем самым время работы и технические затраты на каналы связи.
Помимо преимуществ, здесь имеются и недостатки. В частности, такие практически никогда не бывают специалистами в чем-то одном, в отличие от своих коллег, которые имеют узкоспециализированные знания и навыки. Конечно, они могут углубиться в подробное изучение предмета, но это, как правило, не принесет им никакой пользы, поскольку знания только в одной сфере для них практически бесполезны. Также здесь нет четко обозначенной зоны ответственности. Именно поэтому при возникновении каких-либо проблем необходимость их устранения ложится на плечи Fullstack-разработчика, даже если ее допустил другой специалист. Как следствие, этим фактом часто злоупотребляют.
Что значит быть Fullstack-разработчиком
Как уже отмечалось выше, фуллстек-программист не делегирует свои полномочия на других специалистов, а весь объем работы выполняет самостоятельно. Таким образом, он имеет огромное количество различных знаний.
- Администрирование серверов. Fullstack-разработчик должен иметь базовые навыки работы с сервером. Сюда можно отнести: управление комплексом программных средств, посредством которых осуществляется контроль и фильтрация проходящих сетевых пакетов на разных уровнях; подключение к удаленным серверам через терминал, где отсутствует графический интерфейс пользователя; управление кроссплатформенным программным обеспечением Apache HTTP-сервер и почтовым прокси-сервером Nginx. Кроме этого он должен уметь создавать максимально безопасные и надежные изолированные среды разработки в открытых платформах для разработки, доставки и эксплуатации приложений.
- Работа с облачными PaaS-платформами. Хостинг на популярных web-сервисах могжет понадобиться в любой момент, когда заказчик потребует переключения провайдера. Среди наиболее популярных платформ можно отметить Google Cloud и Azure.
- Программно-аппаратная часть сервиса. Кроме языка разметки и программного обеспечения, созданного для объединения разных компонентов большого программного проекта, специалист должен уметь работать с web-сервисами Nginx и Apache, удобным дизайном API (ведь бо́льшая часть веб-ресурсов работает на API).
- Дизайн. Здесь специалист должен уметь создавать прототип проекта перед тем, как преобразовать его в рабочий формат. На данном этапе применяется целый набор графических инструментов: редактор Photoshop или Illustrator, Ngrok и т. д.
Это лишь малая часть того, что должен знать и уметь Fullstack-разработчик. Однако здесь есть некоторые нюансы: во-первых, многие профессионалы выбирают себе только часть из необходимых технологий, поскольку невозможно учесть каждую программу; во-вторых, даже если знание большей части технологий не сделает человека высококвалифицированным специалистом, он все-таки может самостоятельно определять, что пригодится при работе над проектом, а что не пригодится.
И что в итоге?
- Сегодняшние обсуждения full stack страшно отдалились от того, что вкладывал в это словосочетание его автор. Наверное, он офигевает, глядя на то, во что всё превратилось 🙂
- Это понятие с самого начала было довольно размытым: с первых же постов разные люди вкладывали в него разное. Четыре приведённых текста — это четыре ощутимо различающихся позиции.
Так что нет и никогда не было какого-то одного «правильного» понимания. Это значит, что если у вас есть определённое видение, вы имеете на него полное право. Но это также значит, что у вашего собеседника может быть другое видение, на которое он имеет такое же право. Так что перед тем, как спорить «нужно ли становиться фуллстеком», стоит проверить, не говорите ли вы о разных вещах.
А ещё я увидел в этих определениях идею, которую считаю очень интересной. Но надо сделать оговорку: у меня профдеформация, и я тут лицо заинтересованное.
Смотрите: мы привыкли воспринимать «фуллстек» как «фронт+бэк», но сразу два из четырёх описаний совершенно не требуют быть сениором в обеих сферах, а вместо этого идут в сторону «T-shaped». Они предлагают не отказываться от специализации и быть гением-многостаночником, а изучать разное вокруг своего основного.
И это откликается во мне по следующей причине: я работаю в JUG Ru Group, мы делаем конференции для разных IT-специалистов, и среди их зрителей встречаю как раз таких людей. Типичный случай — Java-разработчик посещает конференции не только по Java, но и по тестированию или DevOps. А ещё может посмотреть видеозапись доклада про GraphQL с JS-конференции или про архитектуру с .NET-мероприятия.
Этот человек не занимается фронтендом, но лезет в разные стороны, чтобы лучше понимать всё вокруг, расширять доступный скоуп задач и находить общий язык с окружающими (тестировщиками, фронтендерами, инфраструктурщиками).
Стоит ли называть это «full stack»? Спорный вопрос. Но для меня как раз это звучит как «фуллстек здорового человека». Потому что про совмещение фронта с бэком часто пишут «здесь боль и страдание», а вот про вылазки на смежные территории такого негатива никогда не слышал — только хорошее.
ВЫВОДЫ
FullStack-разработка — направление довольно сложное, но интересное. Такие специалисты востребованы на российском и международном рынке. Перечень необходимых знаний и навыков фулстек-разработчика достаточно объёмен, но нет необходимости в углублённом изучении тех или иных технологий или языков. Для обучения разработке полного цикла лучше выбирать курсы с наставниками и практическими занятиями. На них информация актуальная и структурированная, и только та, которая будет необходима для работы, без «воды». После окончания курса вы сможете найти работу в качестве фулстек-разработчика, или выбрать для себя более узкое направление и сконцентрироваться на развитии в нём.