что такое фулстек разработчик
Fullstack – почему это клево, или как получать от работы удовольствие
Недавно на Хабре разгорелись нешуточные баталии в комментариях к заметке Фулстеки — это вечные мидлы. Не идите по этому пути, если не хотите страдать
Я попробую высказать свою точку зрения о том, что фуллстек – это на самом деле клево, и почему по этому пути идти хорошо.
Возможно, кому-то текст ниже поможет встать на этот путь, а возможно и наоборот, убережет неокрепшие умы от него. В общем, добро пожаловать под кат.
**АХТУНГ! Все нижесказанное не является абсолютной истиной в последней инстанции и является моим субъективным видением (этого мира).
Для начала давайте определимся с терминами, о которых пойдет речь ниже, чтобы быть в одном информационном поле, т.к. понятие fullstack у всех разное (ровно как и разделение на Junior/Middle/Senior и прочие табели о рангах).
Наиболее часто встречается мнение, что fullstack – это разработчик, который в одно лицо может работать над проектом полностью своими силами, от бэка до фронта.
Некоторые из вас могут сказать «ну такое у меня в команде мидлы могут», что (мягко говоря) в большинстве случаев неверно. Если разработчик фронта может что-то исправить/добавить в коде бэка, поковыряться в запросах БД, это еще совсем не фуллстек.
Ведь разработка проекта – это не только код бэка и фронта, это еще и постройка/настройка/поддержка инфраструктуры для получившегося продукта. Мало написать код, его еще нужно заставить работать на объекте. А объектом может быть и 5-долларовая VPS с LAMP в дефолте, и облачные сети типа AWS/Azure, или вообще собственная инфраструктура, где живет вполне себе реальное железо, от серверов/рабочих станций до маршрутизаторов.
Поэтому речь пойдет не совсем о «fullstack-dev», а скорее о «fullstack-вообще». Который может тянуть в одно лицо проект от стадии переговоров, до стадии подписания акта о выполненных работах.
Я не буду загибать пальцы, перечисляя, что должен, а чего не должен знать fullstack-специалист, т.к. это крайне расплывчатый список. В конце концов, кто-то умудряется сдавать и продвигать «проекты одного инструмента», скажем на Java с NoSQL, но сегодня мы про такое не будем.
Итак, как стать fullstack разработчиком нужно ли становиться fullstack или лучше двигаться в направлении чего-то одного?
Кратко пробежимся по плюсминусам, лежащим на поверхности.
Минусы
Вероятно, самый очевидный минус — примите как факт то, что вы всегда (всегда) будете уступать узкоспециализированным разработчикам во всем – от владения самыми современными тулами и технологиями, до качества кода. Если вы амбициозны, хотите всегда быть на острие прогресса, хотите гнуть пальцы и смотреть на остальных, как на говно – fullstack не ваш путь.
Найти работу для fullstack гораздо проще, чем для разработчика одной технологии. Но найти высокооплачиваемую работу все же сложнее. Парадокс, да? Тем не менее, в подавляющем большинстве случаев, так оно и есть (если конечно мы хотим использовать фуллстек, как фуллстек, а не как «программиста Java»). Там, где много платят с первых дней/месяцев работы, обычно не требуется «и швец и жнец, и на дуде игрец» — там требуется еще одна хорошо смазанная шестеренка в общий механизм, которая будет делать ровно одну задачу, и делать ее хорошо, так, как сказал тимлид. Исключения, разумеется, есть, но их не так много, как хотелось бы.
Работа в одну каску подразумевает конечность ресурсов. Т.е. вы не сможете реализовать по-настоящему крупный программный продукт. Даже если хватит знаний, не хватит времени. Вы не сможете выпустить убойную игру (мелкие инди-разработки бывают хороши, но речь не о них), операционную систему или «Mega-Office-XXL». Часто люди перегорают, если взвалили на себя слишком крупный проект, не рассчитав сил. Если вам нравится делать игры, или участвовать в крупных проектах (как правило международных), ну или на крайняк получать хорошую зарплату сразу после ВУЗа (2-3 лет активной работы) в какой-то одной области – вам тоже не сюда.
Вам все время придется учиться. Постоянно. Много. Разному. Если вы с содроганием вспоминаете годы учебы, конференции и вебинары вызывают у вас неприязнь, если вы не готовы тратить часы на чтение мегатонн информационного мусора, выискивая в нем крупицы полезного, если вас раздражают технологии, в которые придется суметь, вне зависимости от желаний и предпочтений – путь fullstack вам не нужен. Нужно понять (и принять), что здесь необходим некий дзен. Вы просто должны тащиться от происходящего, что бывает далеко не с каждым.
Никогда не забывайте, что человек, по сути, однозадачная скотинка, но вам придется постоянно эмулировать режимы многозадачности (разные языки, разные среды разработки, разные подходы, да сами концепции «написать код» и «развернуть инфраструктуру» — разные). Поверьте, поначалу это весьма сложно и приводит к низкой скорости и большому количеству ошибок.
И наконец, всегда есть риск остаться заложником ситуации и перестать развиваться, если место работы не предполагает каких-то карьерных лестниц. И многие тысячи потенциально отличных работников уныло сидят в небольших конторках, занимаясь совсем не тем, чем хотели 10 лет тому назад. Да, они умеют в Windows Server, в *nix, могут и в Java и Python, поддерживают какую-нибудь поделку на C#, давным-давно написан «корпоративный портал» на PHP+JS, но больше задач нет, у конторы все отлажено, все работает.
И стоит перешагнуть за рубеж в 35-40 лет, как включается встроенный в человеков консерватизм, помноженный на вот это уютное болотце, что в итоге и приводит к эдакому «чемодану без ручки». И разорвать этот порочный круг с каждым годом становится сложнее. Опасайтесь такого состояния, ибо борода и свитер отрастают еще быстрее, чем у узких специалистов, 10 лет пишущих на одном и том же.
Пожалуй, хватит на сегодня ужастиков, давайте о плюсах
Вы можете все. Ну или почти. От корпоративного сайта, до мобильного приложения. Ведь вы не ограничены 1-2 технологиями. Можете даже построить свою микро-империю в отдельно взятом интранете.
Если вы достаточно долго (и главное – успешно) работаете fullstack’ом, вы вполне себе можете возглавить команду разработчиков. Стать Архитектором. Тем, кто стоит у истоков любого крупного проекта.
Если вы угрюмый интроверт, любите машины и не любите людей – зарабатывайте деньги на удаленке. Неторопливо ведя несколько проектов, можно зарабатывать неплохие деньги, не тратя нервы на общение с командой.
Если вам нравится общаться с людьми, вы имеете подвешенный (или натренированный) язык (или вы просто хитрый интроверт с силой воли) – денег вы сможете заработать еще больше, проникая в душу заказчика.
Следует понимать, что совсем без работы вы не останетесь никогда. Если вы правильный fullstack, то уж на middle в любой технологии должны тянуть. А то и на «синьора средней руки» (это когда в Гугл тимлидом не возьмут с улицы, но в более-менее серьезный проект – легко).
И напоследок несколько простых и очевидных (увы, не всем и не всегда) советов. Я сознательно сделаю акцент на кодовую базу, а не на инфраструктуру, чтобы не утомлять читателей.
Совет первый. Не позволяйте своей гордыне превалировать над вами. Это очень важно. Примите как данность, что есть люди, которые делают что-то лучше вас. Учитесь у них, если это возможно. Подход «вы все говно, а я целый fullstack, я все могу» неверен в корне, и часто бьет не только по самолюбию, но и по кошельку. Если вы любите себя и деньги – следуйте этому совету.
Совет второй. Раз-другой в несколько лет было бы неплохо поработать в команде узких спецов. Это сильно поднимает скилл, ведь технологии на месте совсем не стоят, а несутся со скоростью локомотива, а узкие спецы стараются быть в тренде. Если есть такая возможность – не упускайте ее, многому научитесь, найдете уйму узких мест в своих старых проектах и не допустите их в новых.
Совет третий. Не стремитесь изучить ВСЕ ЯП. Во-первых, это просто невозможно, во-вторых, не нужно. Используйте в своих проектах хорошо изученные технологии, те, в которых вы действительно «синьор». Новые ЯП изучать нужно (хотя бы для общего развития), но применять их в реальных проектах следует только после того, как они станут вам действительно понятны. Как непосредственно языки и как то, с каким качеством их можно использовать, какую пользу можно извлечь от перехода скажем, с Java на Kotlin или Scala. Если вы не понимаете пользы, значит либо язык еще не созрел, либо (скорее всего) вы сами. Подход «дайте две недели на чтение спек и я буду писать на этом говне» — плохой подход.
Совет четвертый. Если вы смотрите на код своих разработок 1-3 летней давности и вам не хочется его исправить, скорее всего у вас кризис, как у разработчика (либо идеальный во всех отношениях код, чего не бывает). Попробуйте воспользоваться советом №2.
Совет пятый. С самого начала пути нарабатывайте клиентскую базу. Нарабатывайте свой авторитет. Вас и ваши разработки должны знать. При этом неважно, работаете ли вы на предприятии или фрилансите на удаленке. Если у вас нет сложностей с общением с людьми, обязательно потратьте время на общение с заказчиком. И вдвойне обязательно – на общение непосредственно с теми, кому предстоит работать с вашим продуктом. Так вы гораздо лучше сможете продумать архитектуру будущего проекта.
Совет седьмой. Соизмеряйте инструменты и задачи. Не стоит палить из пушки по воробьям. Не нужно разворачивать локальную инфраструктуру с блэкджеком и девицами с низкой социальной ответственностью для одностраничного «корпоративного сайта», просто потому. что вы можете это настроить. И тащить на этот сайт 5Мб JS-фреймворков тоже не нужно (только потому, что вы в них можете).
Не нужно тащить из бэка на фронт то, чему место именно на бэке. Наоборот тоже не делайте. Помните, если у вас вдруг стало слишком много костылей на проекте, ТЗ которого не изменяли 100500 раз при разработке — значит, вы плохо спроектировали архитектуру. Если есть возможность — исправляйте, если нет — обязательно учитывайте это в следующих задачах.
Совет восьмой. Правильно расставляйте приоритеты. Помните, что ваша задача – сделать продукт, в первую очередь удобный и как можно более безотказный. Даже если у вас гипертрофированное чувство прекрасного, красоту нужно наводить в последнюю очередь.
Перевод: Кто такой Full Stack разработчик?
Привет, Хабр! Представляю вашему вниманию перевод статьи «What is a Full Stack developer?» автора Laurence Gellert.
Кто такой Full Stack разработчик?
Разумно ли ожидать, что простые смертные будут владеть всеми аспектами разработки? Скорее всего нет, но в Facebook могут попросить об этом. На OSCON (O’Reilly Open Source Convention — ежегодный съезд, посвящённый обсуждению открытому и свободному программному обеспечению) один из сотрудников Facebook сказал, что они нанимают только Full Stack разработчиков. Что это значит?
Для меня Full Stack разработчик — это человек с хорошим пониманием каждого уровня разработки и искренне интересующийся всеми программными технологиями.
Хорошие разработчики, знакомые со всем стеком, знают, как облегчить жизнь тем, кто их окружает. Вот почему я так против разрозненности на рабочем месте. Конечно, политические и коммуникационные проблемы мешают в больших организациях. Я думаю суть политики найма в Facebook заключается в том, что если умные люди используют свои головы и слушаются своего сердца, то лучший продукт создается за меньшее время.
Уровни Full Stack разработки:
Сервер, сеть и среда хостинга
A. Это включает в себя понимание того, что может сломаться и почему, не принимая никаких ресурсов как должное.
B. Необходимо надлежащее использование файловой системы, облачного хранилища, сетевых ресурсов, а также понимание избыточности и доступности данных.
C. Как приложение масштабируется с учетом аппаратных ограничений?
D. Как насчет многопоточности и состояния гонки? Скорее всего вы не примените их в своей разработке, но они используются в мире.
E. Full stack разработчики могут работать бок о бок с DevOps. Системы должна представлять полезные сообщения об ошибках и возможность логирования.
Моделирование данных
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. Хорошая система не дает своим пользователям синдром запястного канала или воспаления глаз.
С. Full stack разработчики пишут читаемые сообщения об ошибках. Если что-то сломалось, извинитесь за это. Иногда программисты непреднамеренно пишут сообщения об ошибках, читая которые пользователь чувствует себя глупым.
Понимание что нужно клиенту и бизнесу
A. Сейчас мы размываем черту архитектора, но это слишком большая роль.
B. Full stack разработчики имеют представление о том, что происходит, когда пользователь использует программное обеспечение. Они также имеют представление о бизнесе.
Другие важные моменты
Заключительные мысли
Очень плохая практика — жестко привязывать код к конкретной реализации (библиотека, ОС, аппаратное обеспечение и т.д.). Тот факт, что full stack разработчик понимает весь спектр технологий, не означает, что у него есть разрешение на использование самого простого пути. На самом деле они делают это, если это «проект на выброс».
Технологические стартапы нуждаются в full stack разработчиках из-за их универсальности! Однако, по мере развития организации, ей требуется всё больше и больше целенаправленных специалистов.
Я не уверен, что вы можете называть себя full stack разработчиком пока вы не поработаете на нескольких языках, платформах и даже отраслях в своей профессиональной карьере. Full stack выходит за рамки «senior engineer», поскольку он находится в том же направлении, что и программист-полиглот, но с более высоким представлением всех соединительных частей. Обратите внимание, что в моем списке только 3-5 пунктов, связанных с написанием кода.
Fullstack-разработчик – кто это такой, достоинства и недостатки профессии и сколько можно заработать
О чем мечтает любой заказчик? Чтобы работник все выполнил быстро, качественно и желательно в одиночку, чтобы платить надо было меньше. Такой универсальный солдат – это миф, скажете вы?
Но в области веб-разработки существует профессия, в должностные обязанности которой входит создание интернет-проекта от этапа формирования идеи, воплощения этой фантазии в жизнь и до самого завершения.
Поэтому давайте поговорим о должности fullstack-разработчик: кто это, чем занимается, плюсы и минусы его работы, где обучаться и сколько можно заработать.
Кто такой fullstack-разработчик
Fullstack-developer или фулстек-разработчик – это человек, который возлагает на себя ответственность за все этапы разработки веб-сервиса.
Он принимает участие как в создании визуальной части интернет-ресурса, так и в реализации серверной. Ему не обязательно иметь глубокие знания обо всех технологиях, но уметь работать с ними и понимать основы fullstack-разработчик обязан.
Этот универсальный программист может с нуля в одиночку разработать веб-продукт, от клиентской части до программного обеспечения.
Фулстек-специалист нужен компаниям, когда заказчик хочет минимизировать недопонимания и сэкономить время или деньги.
Также из соображений экономии клиент может внести в должностные обязанности не только все этапы разработки и реализации веб-сервиса, но и все остальное: продакт-менеджмент, настройку операционной системы на серверах и даже починку принтера. Так один разработчик способен заменить 3-4 программистов.
Практикующие fullstack-developer утверждают, что большинство из них раньше были узкими специалистами. В ходе работы им приходилось попадать за границу своих обязанностей и иметь дело с процессами и технологиями своих коллег. Со временем знаний и опыта становилось все больше, пока не настал момент, когда программист уже мог самостоятельно воссоздавать целый проект.
Чем он занимается
Единого мнения на счет фулстек-разработчика и его функций нет. Кто-то даже считает, что такой должности вовсе не существует. Поэтому и в вакансиях пишут всегда разные должностные обязанности.
В задачи fullstack-специалиста может входить:
Должность фулстек-программиста во многом схожа с профессией проект-менеджера. О ней вы можете прочитать в отдельной статье на блоге.
Связь с frontend и backend-разработчиками
Frontend-разработка – это создание того, что пользователь видит на веб-ресурсе. Визуальная часть создается при помощи HTML, CSS и JavaScript.
Результат backend-разработки, наоборот, скрыт от глаз обычного читателя. Вся работа с сервером, логикой сайта, базой данных входит в должностные обязанности бэкенд-программиста.
Fullstack-разработчик же трудится над задачами и первого, и второго специалистов. Он работает как с внешней, так и с внутренней сторонами веб-разработки.
10–15 лет назад не было разделения на бэкенд и фронтенд-части. И разработчики по умолчанию числились как фулстек-программисты. Да и определения этой деятельности не было, как и самого слова “fullstack-разработчик”.
Разновидности fullstack-разработчиков
Фулстек-программисты делятся на категории в соответствии с тем языком программирования или платформой, с которой работают. Например, есть PHP-fullstack-developer или Java-fullstack-developer и так далее.
Фронтенд-часть у них во многом схожа. Они работают с:
Различия видов fullstack-разработчиков видны на уровне бэкенд-программирования.
Node.js-fullstack-разработчик. Использует в работе:
Java-фулстек-developer. Работает на основе следующих технологий:
ASP.NET-фулстек-программист. Эти разработчики используют в качестве инструментария:
PHP-fullstack-developer. PHP-разработчику достаточно владеть:
Python-фулстек-разработчик. Программист работает с:
Есть же категории fullstack-разработчиков, которые не связаны с языками программирования. Например, фулстек-дизайнер.
Все разновидности – это “упрощенные версии” фулстек-разработчиков. Опытный специалист понимает и владеет минимум двумя языками программирования, и может проектировать и реализовывать веб-ресурс на основе этих серверных языков.
Должностные обязанности и личные качества
Fullstack-разработчик заменяет сразу нескольких специалистов, а это значит, что он должен знать и уметь в два раза больше, чем его коллеги. Поэтому и список его обязанностей охватывает задачи frontend и backend-программистов.
Начинающий разработчик не может знать и владеть всеми технологиями, ему придется развиваться по мере продвижения работы над проектами. А вот определенными личностными характеристиками фулстек-специалист должен обладать уже в начале своего карьерного пути.
Как только фулстек-разработчик устанет делать все и сразу, он может в любой момент выбрать для себя определенную нишу и развиваться только в одном направлении.
Плюсы и минусы профессии
К достоинствам работы относится:
Минусов тоже немало:
Сколько зарабатывает
В России зарплата fullstack-разработчика находится примерно на том же уровне, что и у бэкенд-программистов: в среднем от 50 до 200 тыс. руб.
Стажер может рассчитывать на заработную плату от 30 000 руб. С опытом работы от 1 года – 50–100 тыс. руб. Зарплата от 150 000 руб. доступна разработчикам с 3-летним стажем и более.
Если сравнивать города России в разных регионах, можно увидеть различия в размере зарплаты:
Зарабатывать можно не только в российских компаниях. Зарубежные бизнесмены тоже ищут fullstack-разработчиков, и заработные платы в иностранных фирмах выше. Найти вакансии можно на международных биржах фриланса.
Как стать fullstack-разработчиком
Практически все фулстек-специалисты – бывшие бэкенд-программисты. Они во время разработки веб-ресурса сталкивались с задачами фронтенд-разработчика и постепенно переняли их знания.
Поэтому надо изучать обе части веб-разработки, чтобы стать fullstack-developer. Если вы бэкенд-разработчик, пройдите курсы по фронтенд-программированию, а если фронтенд-разработчик, то подайте заявку на обучение на курсах по backend-разработке.
Если же знания и опыт отсутствуют по обоим направлениям, не надо стремиться охватить как можно больше. Лучше начать с чего-то одного, постепенно развиваться в этой области и понемногу впитывать информацию о смежной профессии. Вникните в базовые принципы, а после перейдите к практике. Начинать стоит с небольших задач.
Одна из распространенных ошибок новичков – они быстро вырастают “в ширину”, игнорируя “глубину”. В конце концов знаний получается очень много, но они все поверхностные и, по сути, эти программисты не могут делать свою работу достаточно хорошо.
Самый быстрый и легкий способ стать профессионалом – это записаться на онлайн-курсы.
Где обучиться с нуля
Можно попробовать обучиться самостоятельно, например, по видео на YouTube. Но никто не даст гарантии, что это уже не устаревшая информация. Да и на изучение материала надо потратить много времени, так как она не собрана воедино и ее надо самому собирать в кучу.
Я же предлагаю выбрать курсы с преподавателями-практиками.
Платформы “Нетология”, SkillFactory, itProger, Skillbox, SF Education и Udemy предлагают отличные онлайн-курсы по профессии fullstack-программист:
Вас научат самостоятельно продумывать этапы разработки проекта, понимать основы работы бэкенд и фронтенд-разработчиков, работать с базами данных, верстке сайта и многому другому.
Где найти работу
Новичкам советую отправить резюме в небольшие IT-компании. Сначала придется побыть стажером, особенно если вы еще проходите обучение, а потом уже можно двигаться дальше.
Fullstack-разработчик может начать зарабатывать на фрилансе. Например, сотрудничая с веб-студиями или любыми другими фирмами, занимающимися разработкой интернет-платформ.
Вакансии выложены на биржах фриланса, таких как:
Работу найти еще можно на профильных IT-сайтах или на всем известном hh.ru.
Со знаниями фулстек-программиста возможен еще один вариант заработка – открыть собственную компанию.
Заключение
Fullstack-разработчик – это тот человек, кто найдет себе работу вне зависимости от кризисов. Он делает работу сразу за двоих: за фронтенд и бэкенд-разработчиков.
Фулстек-программист понимает, как действовать на каждом уровне разработки, и может в одиночку довести проект до логического конца.
Профессия популярна среди заказчиков и хорошо оплачиваемая. Поэтому на различных обучающих платформах появляются все новые онлайн-курсы, на которых можно получить знания, чтобы самому пополнить ряды fullstack-программистов.
Так что подавайте заявки, начинайте изучать аспекты новой деятельности или ищите на блоге iklife.ru статьи про другие удаленные профессии. Всего доброго, до встречи.
Во время получения первого диплома задумалась об удаленной работе, а когда получала второй – уволилась с университета и посвятила себя фрилансу.
Из всего разнообразия онлайн-профессий выбрала копирайтинг, но изучать способы заработка в интернете не перестала. Делюсь своими знаниями о том, как зарабатывать в сети, не выходя из дома.