Контакты

Что такое full stack разработка. Full-stack разработчик: мифический персонаж или вполне реальный сотрудник? Возможно ли индивидуальное обучение

Стартапер, IT-директор и дизайнер обвиняют full-stack разработчиков в нереальности их списка навыков, низком качестве продуктов и отсутствии универсальности. Full-stack разработчики защищаются.

В закладки

В своем блоге на сайт IT-Академия Алексея Сухорукова приводит самые жесткие и противоречивые мнения профессионалов IT-индустрии о том, существуют ли на самом деле full-stack разработчики и насколько хорошо они справляются со своими задачами.

По данным ежегодного отчета StackOverflow (в 2018 году в опросе приняли участие около 100 000 разработчиков со всего мира) почти 50% из них считают себя full-stack разработчиками.

Первые поисковые запросы full-stack developer появились не раньше 2010 года. И с этого момента их количество начинает сильно расти. На графике изображена динамика популярности (100 баллов - максимальная популярность) запроса full-stack developer во всех его вариациях в Google.

Full-stack developer - сегодня это уже отдельная категория специалистов, крайне востребованная и распространенная. Однако не все согласны даже с самим фактом ее существования.

Сегодня в нашем материале противники понятия full-stack предъявят свои жесткие обвинения по поводу качества, универсальности и реальности существования таких разработчиков. А сами full-stack разработчики их мнения будут опровергать.

В центре внимания - три самых острых вопроса об этой профессии

1. Возможно ли знать всё из списка требований для full-stack?

“Настоящие” full-stack разработчики существуют - так же как существуют гении и люди, которые программируют с 12 лет. Описание “full-stack developer” так же бессмысленно как “гений” или “тот, кто может сделать все что угодно”. Раскрою эту мысль поглубже. Иллюстрация ниже показывает неполную версию того самого “stack”, о котором говорится во всех этих вакансиях.

В большинстве случаев разработчику нужны только одно или два умения из каждого слоя. Некоторые умения можно получить за пару часов (например, простейшая компиляция с помощью “./configure && make && sudo make install” или использование VPS). Получение других умений может занять годы.

То, что ожидается от разработчика «полного стека», намного превосходит возможности обычного человека. Да, есть люди, которые на это способны, я знаю некоторых из них. Но также есть много замечательных разработчиков, дизайнеров и менеджеров проектов, которые точно не подходят к понятию full-stack. Есть и те, кто называют себя full-stack, но едва ли могут определить более полудюжины слов в стеке, который я разместил выше

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

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

2. Может ли full-stack разработчик сделать качественный продукт?

Я вижу плохой дизайн повсюду в интернете, и я считаю , что это из-за недостатка навыков. Не потому, что дизайнеры плохо подготовлены к поставленной задаче, или из-за того, что инженеры не знают веб-стандартов. Нет, причина в том, что существует целый спектр навыков веб-разработки, которые остаются полностью проигнорированными. Несмотря на доказательства того, что front-end development - это целенаправленная деятельность, требующая полной занятости, я вижу, что многие компании нанимают инженеров full-stack.

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

Full-stack разработка – это умение воспринимать самые разнообразные идеи. Со временем такой талант будет становиться все более востребованным. Быть «full-stack разработчиком» не означает мгновенно переключаться с обслуживания кластера Hadoop на программирование связующего ПО на Java, а потом на JavaScript, работающий исключительно в браузере. Специализации придуманы не зря. Но разработчик, понимающий весь стек технологий, будет писать более качественные приложения.

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

По мнению Марка Лукидеса, full-stack разработчики это не единороги, как их некоторые представляют. Они больше напоминают дерево, разветвляющиеся на инструменты, облачные сервисы, дизайн, данные и сеть.

Чем активнее вы воспринимаете различные идеи, тем больше вы узнаете о других специализациях, а не только о вашей собственной. Тем более эффективно вы будете работать – по той простой причине, что научитесь взаимодействовать с коллегами. Более того, обладая обширным арсеналом идей и концепций, вы будете лучше справляться и со своими основными задачами. Вот к чему мы стремимся, именно в этом и заключается вся польза full-stack разработки.

3. Является ли full-stack разработчик универсалом?

Давайте концепцию «разработчика полного стека», которую в последнее время все горячо используют. Особенно на таких сайтах как Hacker Noon или Medium, которые пытаются помочь начинающим разработчикам стать «разработчиками полного стека». Все больше и больше компаний публикуют вакансии, где требуется «разработчик полного стека».

Однако приняв этот универсальный термин мы, работодатели, вынуждены теперь пересматривать свои взгляды на навыки, которые необходимы, чтобы выполнить эту работу. Под термином “разработчик полного стека” стоит совершенно нелепый список требований.

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

Я пишу свое собственное пошаговое руководство о том, как стать full-stack разработчиком. Знать все компоненты в списке требований к full-stack невозможно, но можно значительно сузить этот список, если вы можете заранее установить стек devops. Кроме того, вы можете охватить каждый «слой» до «достаточного знания», особенно в начале проекта.

Я тренирую свою команду, чтобы они стали «инженерами с полным стеком», но каждый из них фокусируется на определенной области разработки: на iOS, на Android, в Интернете и на API. Преимущественно, мы используем только JavaScript и React / React Native, поэтому я могу менять их позициями. В конце концов, как только структура будет завершена, я могу переназначить их на позиции по конкретным вертикальным стекам. Например, один на потребителя, один на поставщиков, один на admin и один на devops. И все четыре будут при этом взаимозаменяемыми. Такая универсальная команда «инженеров с полным стеком» может существенно сократить расходы на персонал и уменьшить время разработки.

Вакансия: Full Stack-веб-разработчик

Одно из самых популярных направлений в области ИТ – это веб-разработка. Важное место в ней занимают Full Stack-веб-разработчики. Это универсалы, которые могут создавать как клиентские (фронтенд), так и серверные приложения (бэкенд), а также обладают знаниями системного администрирования. Мы попросили представителей компаний рассказать о знаниях, навыках, опыте, актуальных для Full Stack-веб-разработчиков сегодня

  1. Какими знаниями и навыками должен обладать Full Stack веб-разработчик?
  2. Каков инструментарий Full Stack-веб-разработчика?
  3. Каковы требования компании к уровню образования потенциальных сотрудников?
  4. Какие требования предъявляются к опыту работы?
  5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Александр Майоров, руководитель отдела Frontend-разработки в Tutu.ru

1. Для начала определимся с терминологией, кто такой веб-разработчик. Из названия понятно, что это программист, работающий с вебом. Но веб состоит из клиентской и серверной частей. Клиентская пишется с применением языка разметки, языка описания каскадов стилей и скриптового языка программирования JavaScript. При этом сборка всего этого «добра» осуществляется на сервере и деплоится на продакшен специальными утилитами. Серверная же часть может быть написана на всем что угодно, но обязательным условием является наличие HTTP веб-сервера как минимум (хотя не только HTTP).

Если описать весь список компетенций, получается, что знания и ожидания от Full Stack-веб-разработчика выходят за рамки возможностей обычного программиста. Такой разработчик должен разбираться в масштабировании приложения до нескольких миллионов запросов в минуту, уметь выбирать между MongoDB и MySQL, применять и настраивать облачные сервисы, владеть десятком средств управления конфигурациями для развертывания приложений на Ruby, PHP, JavaScript (что-то еще) или их комбинациями, разбираться вотличиях сервис-ориентированной архитектуры от монолитных приложений и еще множестве разных вещей.

2. Отсюда выходит, что Full Stack-разработчик – это какой-то джедай или ниндзя, сеньор девелопер, обладающий знаниями в очень многих областях:

  • один или несколько серверных языков программирования (PHP, JavaScript, Perl, Ruby, Python, C#, Java…);
  • знание одной или нескольких реляционных БД и умение с ними работать: MySQL, PostgreSQL, MS SQL…;
  • знание одного или нескольких NoSQL-хранилищ и документоориентированных БД: MongoDB, Redis…;
  • знание принципов работы HTTP-протокола, его версий и особенностей, сетевого стека в целом;
  • общие знания по администрированию и умение работать с Linux подобными системами;
  • знание клиентских технологий и языков: JavaScript, CSS, HTML.

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

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

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

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

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

Но в реалиях, чаще всего на рекрутинговых сайтах, под Full Stack понимают веб-разработчика со средними или даже минимальными знаниями в каждой из областей (причем побольшей части только связанной с языками разработки и умением работать с БД, но не их настройкой и администрированием).

Поэтому этот термин может вызывать разные ассоциации и эмоции у разных людей (в том числе и негативные).

3. Минимальные требования:

  • знание Unix-подобных систем, умение работать с Bash, базовый опыт администрирования;
  • знание и умение работать с реляционной СУБД MySQL или любой другой SQL-базой;
  • знание сетевого стека, знание принципов работы HTTP-протокола и его версий;
  • умение работать с сервером Nginx, Apache (понимание их различий, преимуществ, особенностей…);
  • знание одного и более серверного скриптового языка программирования (в нашем случае минимум PHP);
  • знание клиентского слоя на среднем уровне (JS, HTML, CSS);
  • умение работать с системой контроля версий;
  • умение работать с системами кэширования (redis, memcache…);
  • умение работать с NoSQL БД: MongoDB;
  • опыт написания Unit-тестов.

Список требований может быть шире, в зависимости от проекта и задач.

4. Опыт работы у хорошего Full Stack-разработчика – от 5 лет и более. Как показывает практика, более-менее овладеть на профессиональном уровне навыками в каждой из областей можно в среднем за 1,5-2 года непрерывного трудового стажа, при этом каждый слой стека – это несколько разных инструментов и языков программирования.

5. Специфика описана в пункте 3. По-хорошему, Full Stack-разработчик – это либо одиночка, работающий над какой-то задачей, возможно, RnD, либо это тимлид какой-то команды, системный архитектор, который понимает всю архитектуру веб-приложения и определяет, каким должно быть веб-приложение.

Евгений Кузин, начальник отдела сетевых проектов, ООО «Доктор Веб»

1. Full Stack-разработчик – это человек, обладающий практическими знаниями о каждом уровне информационной среды, в которой он работает, и умеющий эти знания использовать. Если мы говорим о веб-разработчике, то это знания от глубокого бэкенда и до самого фронтенда, знание используемой операционной системы и ее механизмов (кэширования, межпроцессного взаимодействия, работы с памятью), сильных и слабых ее сторон.

Затем необходимое серверное ПО, конкретика всегда определяется задачей, но многие инструменты можно назвать стандартными – веб-сервер, СУБД, кэш-сервер, сервер очередей. Эффективная настройка этого зоопарка с учетом знаний о платформе и своих задач.

Затем непосредственно код бэкенда, сеть и протокол HTTPS, код фронтенда, порой даже верстка и ее рендеринг браузерами.

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

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

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

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

5. Есть особый акцент на безопасность, обусловленный спецификой деятельности «Доктора Веба». По роду своей деятельности мы постоянно противодействуем вирусописателям идругим злоумышленникам в сети, поэтому наши веб-сервисы регулярно исследуются с целью найти уязвимость. Безопасная сетевая архитектура, своевременное обновление уязвимых компонент и библиотек, аккуратность в обработке данных, поступающих из недоверенных источников, – этим аспектам уделяется первоочередное внимание.

Юрий Трухин, эксперт по облачным технологиям InfoboxCloud

1. Для Full Stack-веб-разработчика необходимы знания в следующих областях:

  • понимание принципов работы серверов, сетей и облачных технологий;
  • умение проектировать и разрабатывать уровни данных и бизнес-логики, аргументируя архитектурные решения;
  • навыки разработки высоконагруженных сервисов. Понимание возможностей масштабирования;
  • знание алгоритмов;
  • умение проектировать и разрабатывать API и интегрировать сервисы с помощью API;
  • знание веб-технологий (HTML, CSS, JavaScript) и навыки проектирования современных пользовательских интерфейсов;
  • понимание User Experience;
  • умение работать с заказчиками и из бизнес-требований формировать техническое задание;
  • знание гибких методик разработки и умение работать в команде;
  • навыки работы с микросервисной архитектурой;
  • желание постоянно учиться и совершенствоваться.

2. Голова, IDE (IntelliJ IDEA), текстовые редакторы (Atom, SublimeText, vim), Git.

3. При прочих равных результатах на собеседовании выбирается кандидат с высшим образованием или ученой степенью.

4. Желателен опыт разработки сервисов и/или бэкенда не менее 1 года.

5. Требуется понимание принципов работы Odin Automation и Microsoft Azure Pack, умение разрабатывать APS-пакеты (https://www.apsstandard.org).

Бобир Рахимов, разработчик пользовательских интерфейсов «Лаборатории Касперского»

1. Full Stack-разработчик – это разработчик, который может поставлять веб-решение в целом. То есть клиентская часть и серверная часть (отсюда и название – Full Stack – весь стек). Помимо стандартного набора знаний фронтенд-разработчика в виде JavaScript, HTML, CSS, от него еще требуется знать и уметь реализовывать серверную часть. Он может быть реализован на разных фреймворках: JavaScript (Node.js приложения), С# (ASP.NET Web Forms/MVC), Java, Python (Django), Ruby (Ruby on Rails). Выбор того или иного фреймворка обуславливается самими требованиями к приложению в плане производительности и типа операций, которые предполагается осуществлять на сервере.

2, 3. Требования разнятся в зависимости о выбранной платформы из приведенных выше.

4. К опыту работы – как минимум 2-3 года (серверной разработки), плюс наличие реализованных приложений.

5. Особых требований нет.

Алексей Скибин, Web Developer в СООО «Гейм Стрим», минском центре разработки Wargaming,

Лариса Бугаева, Recruiter в СООО «Гейм Стрим», минском центре разработки Wargaming

1. А. С. : Для начала необходимо определить, что такое Stack для разработки проекта. В моем понимании, это набор технологий, которые используются на конкретном проекте. Кпримеру, это могут быть JavaScript и HTML для фронтенда, а Python + Django + PSQL + AMQP для бэкенда.

На самом деле просто знать технологии недостаточно. Чтобы быть Full Stack-веб-разработчиком, необходимо понимать подход к их применению.

Идеальный набор для Full Stack-веб-разработчика:

  • знание технологий веб-сервера;
  • понимание проектирования/моделирования слоя базы данных;
  • понимание проектирования бизнес-логики;
  • понимание, как внешний фронтенд взаимодействует с бизнес-логикой и слоем данных (API-слой).

Также полезно уметь писать юнит-тесты и профилировать свой код, оценивать/анализировать работу с БД.

2. А. С. : Я не особо придирчив к инструментам. Использую:

  • PyCharm;
  • Django-extentions либо питоновский профайлер для анализа кода;
  • Analize в базе данных и New Relic для анализа запросов;
  • Zabbix или что-то подобное для проверки состояния сервера.

3. Л. Б. : В нашей компании нет особых требований к уровню образования. В моей практике был кандидат, который прекрасно знал С++, получив при этом только среднее образование. Он работает в серверной команде уже несколько лет.

4. Л. Б. : Если говорить о позициях Full Stack-веб-разработчиков, с которыми я работала, требовался релевантный опыт на high load-проектах. Мы искали сильного бэкенд-разработчика, у которого не вызвало бы проблем написать необходимую функциональность на JavaScript. Также мы искали специалистов со знанием фреймворков Knockout и React.

5. Л. Б. : Наша специфика – высокие нагрузки. Соответственно, опыт работы на подобных проектах очень желателен. Плюсом будет также опыт работы в продуктовой компании, т.к. ваутсорсинге часто не уделяют должного внимания тестированию и автоматизации процессов.

Марина Трокай, HR generalist, Андрей Брюханов, руководитель отдела веб-разработки, компания Auslogics

1. Компания Auslogics разрабатывает ряд программных продуктов, для продвижения и поддержки которых работает команда Full Stack-разработчиков. Команда стабильно расширяется и пополняется новыми высококвалифицированными специалистами. Как и на любую другую должность в компании, для Full Stack-программистов обязательным является выполнение тестового задания, а после успешного его прохождения следует техническое интервью.

Мы работаем с PHP, JS, MySQL, HTML и CSS. Среди общедоступных фреймворков предпочитаются Yii, Symfony, jQuery. Для контроля версий – Git

2. Каждый разработчик самостоятельно выбирает удобные для себя инструменты. Из IDE, как правило, используются NetBeans и PHPStorm.

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

4. Для участия в конкурсе на должность Full Stack-разработчика специалист должен иметь уверенные знания HTML, CSS, PHP, JavaScript и SQL. Быть знакомым с каким-либо изсовременных PHP-фреймворков. Знание основ *nix (bash, LAMP) и (или) умение использовать Photoshop в рамках верстки шаблонов по готовым макетам всегда являются неоспоримым преимуществом.

Поскольку компания австралийская, то требуются уверенные знания английского языка, достаточные для понимания технической документации и ведения стандартной переписки. Несомненным преимуществом всегда является знакомство со смежными технологиями. К примеру, для автоматизации тестирования мы используем Codeception, для continuos integration – Capistrano.

5. Коллектив компании Auslogics работает в отличном от большинства других ИТ-компаний формате – все сотрудники, кроме сиднейского офиса, работают на условиях полной занятости, но удаленно. Это дает немало свободы, но и требует большей самостоятельности, самоорганизованности и инициативности. Креативный подход, кропотливое отношение к написанию кода, видение конечного продукта и четкая его реализация являются залогом успеха работы над проектом. Для нас немаловажно отношение сотрудника к продуктам ипроектам компании. Именно «продуктовый» тип мышления разработчика определяет будущее качество кода. Широкий кругозор, знание предметной области и рынка приложений – преимущества, которые позволят разработать действительно качественный продукт. Наши программисты не только не опасаются изменений требований и переработки архитектуры, а порой и сами являются инициаторами этого, принимая это как вызов и мотив самосовершенствования.

Егор Малышев, веб-разработчик в JetBrains

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

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

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

2. Так как большую часть времени приходится работать с кодом, то инструмент №1 это, конечно же, IntelliJ IDEA Ultimate. Не обходимся и без других наших продуктов: используем YouTrack для постановки и отслеживания задач, TeamCity для автоматизации построения сборок.

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

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

5. Письменный и желательно разговорный английский язык. Помимо того, что он активно используется для общения внутри компании (у нас много англоязычных сотрудников), сама по себе фронтенд разработка требует написания различных текстов. К тому же, значительная часть документации различных API и программных продуктов зачастую написана только на английском, и он же является де-факто стандартом для общения в различных сообществах и на конференциях.

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

Подготовил Игорь Штомпель


Вконтакте

Прежде всего определимся с терминами. Есть много разных представлений о том, кто же такой full stack разработчик, кто-то даже вполне обоснованно считает, что такие разработчики - это миф , но в этой статье будет иметься в виду разработчик, который обладает знаниями и умениями, позволяющими с нуля написать некий софт и вывести его в продакшн. При этом софт может быть рассчитан на web платформу, мобильные приложения или десктопные. Идеальный full stack разработчик - это тот, кто владеет в какой-то мере всеми платформами и может разработать и установить на них свой софт. Но это действительно скорее миф.

Неплохое определение с quora.com

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


Возможно, по заголовку кому-то покажется, что это жалобный пост, который говорит о том, как плохо живётся неквалифицированному школьнику, который похватал всего из разных статей в интернете. Нет, пост не жалобный, мы говорим про full stack, а не full slack, и в конце будет так же рассмотрен список плюсов. И мы будем рассматривать не школьника, а разработчика с опытом работы в пять и более лет. Просто посмотрим, какие минусы есть в таком развитии.

Минусы

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

Вам сложнее продвигаться глубже
Хороший full stack разработчик всегда сильно нагружен. И ваше время на познание нового распределяется между всеми технологиями, с которыми вы работаете. Естественно, что ваше развитие происходит медленнее, чем у программиста узкой специализации.

У вас больше вероятность перегрузки задачами
Если вы занимаетесь сразу несколькими проектами с нескольких сторон, то даже при хорошем тайм менеджменте часто будет случаться так, что все проекты требуют к себе повышенного внимания и времени. Придётся это решать или передачей части задач другим разработчикам, или распределением приоритетов, или тщательным планированием. Конечно, вероятность перегрузки есть у любого разработчика - как известно, в реальном мире любую задачу нужно делать “вчера”. Но у вас такие задачи могут внезапно появляться пачками.

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

У вас нет чёткой зоны ответственности
Если в кране нет воды - значит, виноват full stack! Какие бы проблемы не возникали, какие бы баги не вылезали - скорее всего, именно вам придётся ими заниматься, даже если проблема на самом деле должна быть в ведении другого разработчика. Просто ваша картина мира гораздо полнее, и вы быстрее сможете локализовать и исправить ошибку. К сожалению, этим часто злоупотребляют.

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

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

Вы не успеваете за всеми тенденциями
Опять же это следует из первого пункта. По непонятной мне причине, часто ищут разработчика, который в совершенстве умеет применить что-то, что вышло в релиз полгода назад. Увы, вы не можете одновременно знать и уметь применять ES6, рассказать об отличиях последней версии Symfony и о возможных проблемах миграции с Oracle на Tibero в текущий момент. Возможно, вы об этом читали, но попробовать просто не успели.

Вы не всегда пишете оптимальный код
Скорее всего, ваш код понятен, хорошо систематизирован и откомментирован. Но наверняка более квалифицированный специалист мог бы сделать его чуть лучше. Другой вопрос, что это обычно не критично. Действительно плохо, если каша из языков в голове заставляет вас применять подходы и решения, которые никак не годятся в текущем проекте. Ужасно видеть, как некоторые даже пишут функции, которые были бы созвучны привычным для них реализациям в другом языке.

Вы часто подглядываете в мануалы
Даже функции для работы со строками во всех языках выглядят по разному, что уж говорить о чём-то более сложном. Если вы часто переключаетесь между разными технологиями и языками, то скорее всего у вас непрерывно будет висеть мануал, в который вы подглядываете, что конечно несколько снижает скорость работы.

Вы можете начать завидовать зарплате узких специалистов
Если начать искать вакансии по самому вашему дорогому навыку, то можно огорчиться - специалисты с большим опытом работы могут получать за него весьма неплохие деньги. Скажем честно - у вас такого опыта работы с конкретной технологией нет. Но даже если вы углубитесь в эту технологию и получите необходимые знания - хотели бы вы дальше всю жизнь заниматься только этим? Например, администрированием СУБД Oracle?

Минусы в трудоустройстве

Отдельно хочется упомянуть сложности, которые случаются при смене работы.

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

Full stack full stack’у рознь
Какой бы вы ни были широкий специалист, вряд ли вы найдёте место работы с точно таким же стеком технологий. Бывает, но крайне редко. Однако пересечения часто довольно большие, и ничто не мешает вам подтянуть недостающее и ещё больше расширить кругозор.

Вам не верят
Да, вот такая смешная и реальная проблема. Если вы указали в резюме слишком много всего, то вам просто не поверят и даже не будут пытаться проверять или спрашивать о том, на каком уровне вы что знаете. Поэтому, как ни смешно, лучший способ - безжалостно удалять из резюме все сведения, которые вы считаете неактульными для своего будущего. А ещё лучше - подгонять резюме под каждую вакансию.

Вам сложнее искать подходящую вакансию
Fullstack разработчиков ищут довольно редко, и не всегда работодатель с такой вакансией может конкурировать с вакансией узкой специализации по условиям. И возникает вопрос - какие использовать ключевые слова при поиске вакансии? Если вы, скажем, Java разработчик, то просто указали в поиске Java - и погнали кликать. Но full stack’у немного сложнее. Обычно проблема решается подпиской на несколько разных фильтров по словам, которые вам наиболее интересны - или просто выборкой по желаемому уровню зарплаты. Последнее не всегда срабатывает, поскольку к моему величайшему недоумению до сих пор висит огромное количество вакансий вообще без указаний зарплатной вилки. Видимо, HR боятся, что тогда каждый захочет описанный максимум? Странно. Если кто знает доводы в пользу такой стратегии рекрутинга - приведите, пожалуйста, в комментариях.

Плюсы

Теперь, наконец, о вкусном.

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

Вы меньше выгораете
Если есть возможность периодически менять проекты, то вы гораздо меньше устаёте от применения одного и того же. Конечно, если вы не хардкорный фанат и не получаете удовольствие просто от того, что пишете всё, скажем, на vanilla C или asm.

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

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

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

В одиночку вы можете создавать чудесные вещи на стыке разных технологий
Вы один можете сделать то, на что при стандартном подходе требуется 3-4 человека. Запрограммировать микроконтроллер для интернета вещей, который общается с веб сервером, пишет в базу данных, и данные с которого можно просматривать на веб сайте, в приложении или на мобильном устройстве? Легко! Вы один можете представить всю систему и реализовать её без согласований, недопониманий и проволочек.

Ваши решения работают быстрее и надёжнее
За счёт понимания взаимодействия различных систем, вы можете выбрать лучше пути для их комбинирования. Вы лучше понимаете каждый компонент и не боитесь его использовать. Как пример - возьмём “кляудные технологии” (мопед не мой, в публикациях проскакивало). В общем и целом, облако это чудесный способ решения огромного количества задач, в том числе задач масштабирования. К сожалению, всё чаще вижу, что облачные решения используются просто потому, что разработчик не умеет и боится решить свою задачу как-то ещё, а представляет это в виде дополнительного плюса. А многое можно сделать гораздо дешевле и лучше, если иметь хотя бы поверхностное понимание вопроса.

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

Вы постигаете дзен
Теперь вы знаете, что нет языка разработки, которых лучше остальных. Вы знаете, что нет самой лучшей базы данных. Вы можете предположить, что какой-то инструмент подходит для ваших целей лучше… но вы вполне готовы использовать альтернативы, если на то есть какие-то основания, например, квалификация остальных разработчиков. Вы больше не пишете статей про синтетические тесты, созданные с тем, чтобы показать преимущества одной технологии над другой. Вы знаете, что прирост производительности в пять процентов скорее всего не стоит двух ваших человеко-месяцев. А освободившееся от холиваров время вы наконец можете потратить на что-то полезное. Например, чтобы наладить взаимоотношения с девушкой (для примера назовём её Катей). Вы теперь понимаете, что технологии бывают разные, что люди бывают разные, и нужно просто найти правильный способ связать всё воедино. Ты любишь мир, и

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


Есть ли возрастные ограничения для обучения в центре?

Таких ограничений в IT-Academy нет. Но важно понимать, что в основном мы готовим junior-специалистов, а большинство IT-компаний отдают предпочтение кандидатам на данную позицию, которым ещё не исполнилось 32 года (согласно опросу резидентов Парка высоких технологий, проведённому в 2017 году). Поэтому желательно как можно быстрее определиться с интересующим направлением и пройти обучение, чтобы начать строить свою успешную карьеру в IT .


Можно ли учиться без знания английского языка?

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


Есть ли в IT-Academy курсы по английскому языку?

На данный момент IT-Academy может предложить обучение английскому языку со скидкой до 20% у наших партнёров – одной из крупнейших языковых школ Streamline Language School. Эксклюзивная партнёрская программа будет интересна всем желающим изучить иностранный язык – в первую очередь, английский для уверенного входа в IT-индустрию.

Ведётся ли в IT-Academy обучение более специфическим IT-профессиям? Ведь сегодня востребованы не только программисты и тестировщики.

IT-Academy следит за развитием образовательного рынка, тенденциями в IT и потребностью в конкретных специалистах. Исходя из этого, принимается решение о запуске новых курсов. Сегодня в Образовательном центре ведётся обучение по 20 различным программам по таким направлениям, как разработка и тестирование ПО , бизнес-анализ , web-дизайн , маркетинг, продажи , работа с данными и так далее. Мы можем предложить соответствующие курсы желающим заниматься IT Sales , освоить современные средства Data Mining, Machine Learning и Big Data , разобраться в основах визуализации процессов и данных с использованием инструмента Tableau.

Возможно ли индивидуальное обучение?

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


Какие направления пользуются наибольшей популярностью?

На данный момент в пятёрке наиболее популярных образовательных программ – тестирование ПО, Java-разработка, Front-end-разработка, бизнес-анализ, web-дизайн.


Могу ли я записаться сразу на несколько курсов?

Да, это возможно. Выберите направления , которые вам интересны, а наши специалисты, оценив расписание, подскажут наиболее подходящие курсы, чтобы не возникло накладок.


Сколько стоит обучение в IT-Academy и предоставляется ли рассрочка?

Стоимость варьируется в зависимости от курса обучения и выбранного расписания занятий. В среднем – от 200 до 500 рублей в месяц. Узнать точную сумму можно, выбрав один из курсов . IT-Academy предоставляет рассрочку на период обучения с ежемесячными выплатами.


Как записаться на обучение?

Вы можете оставить заявку через сайт, кликнув на «Записаться» возле интересующего курса и заполнив форму, или связаться с нами по телефонам . И, конечно, мы будем рады видеть вас в нашем офисе , где можно получить личную консультацию по всем интересующим вопросам.

Здравствуйте! Многие из Вас, устраиваясь на работу, откликаясь на вакансии и проекты на фрилансе часто замечали, что практически везде требуется Full-stack разработчик , и заработную плату предлагали очень высокую, и условия работы неплохие. Большинство такие вакансии интересуют, но не все знают, кто это и какие задачи выполняет. О трудностях и радостях работы Full-stack разработчика мы сейчас поговорим.

Кого можно называть Full-stack разработчиком?

В целом, Full-stack developer - это программист, занимающийся созданием сайтов и веб-приложений. Такой специалист должен знать многое, назвать себя Full-stack разработчиком может только тот, кто абсолютный профессионал в веб-программировании. Устроиться на такую работу довольно тяжко и далеко не у каждого это получается. Конкретно о том, что должен знать и изучать Full-stack developer обсудим ниже.

Что необходимо изучать Full-stack разработчику?

Если Вы хотите освоить эту профессию, то в первую очередь Вам стоит знать html и css на пять с плюсом, и спокойно создавать свои, хоть и простые (на первое время) сайты. Это не сложно, и мы говорили о том, как это сделать и зачем уже не раз. На это у Вас уйдёт один месяц, если Вы будете усердно заниматься этим.

Конечно же, уже никто не пишет код, и не создаёт сайты без дополнений к html и css - html 5 и css 3 . Очень простые, но крайне эффективные и полезные дополнения, позволяющие не писать сотни кода на JavaScript , и также дающие возможность адаптивно верстать, без использования разного рода дополнений. Об html 5 и css 3 тоже было немало сказано. Освоить их Вы сможете за ещё более короткий срок, нежели html и css .

В Full-stack разработке просто необходим язык программирования JavaScript . Это одно из главнейших составляющих этой профессии. Вы должны очень хорошо знать и писать на этом языке. В освоении Вам поможет огромное количество написанного Вами кода и также разного рода упражнения. В общем - требуется много практики, чем лучше Вы знайте JavaScript , тем больше шансов на то, что выберут именно Вас.

Для того, чтобы упростить код и уменьшить объём проделанной специалистом работы, была создана библиотека для JS под названием jQuery . К ней нужно отнестись с такой же серьёзностью, как и к самому JS , ведь с этой библиотекой открываются огромные возможности, серьёзно упрощается сложность и объём работы, то же самое можно говорить и про код.

В дополнение ко всему выше написанному, Вам также понадобится aJax . Потребуется он для того, чтобы обмен данными между сервером и пользователем происходил "на фоне". К примеру: Вы, находясь на одной вкладке на сайте, перешли на другую нажав на неё, на сайтах, не использующих aJax произойдёт обычный переход по ссылке, но на других сайтах, где он будет применяться, просто поменяется контент. Никаких долгих загрузок и прочего, всё быстро и гладко. Это помогает в оптимизации страницы, в быстрой работе сайта.

Говоря о библиотеке jQuery мы говорили об упрощении. Тут стоит сказать и про Sass . Но он применяется не для JS , а для Css . Более абстрактный css-код и его упрощение, вот для чего служит этот метаязык.

Раз уж мы заговорили про Sass , то было бы грехом не сказать и пару слов о Less . Надстройка для Css , расширяющая его динамическими возможностями. Less создан на основе Sass и его синтаксисе SCSS .

Теперь мы переходим к самому сложному, а именно - Php . Сам язык программирования не сложный, однако на фоне всего, о чём мы с вами сегодня говорили - Php выглядит сложнее. Он понадобится Вам для очень многих задач. От создания движка для сайта, до создания своей собственной CMS .

Здесь стоит сказать и про работу с базами данных, конкретнее про работу с MySQL . Ничего сложного, всё это изучается вместе с Php , но как бы то ни было легко - крайне важно и необходимо.

Многие пропускают разработчики пропускают его мимо, либо же знают поверхностно, тем самым совершая большую ошибку. Говорим мы сейчас конечно же про XML . Это очень схожий с Html язык разметки, но они ни в коем случае не взаимозаменяемы. Решают они совершенно разные задачи. Тот же XML предназначен для хранения и транспортировки данных, главная задача которого является также что такое эти данные.

Последнее, что должен знать и чем уметь пользоваться Full-stack разработчик - это CMS . Готовые движки, как их называют программисты и разработчики, нужны в основном для тех, кто не знает как создавать сайты вручную, либо если человеку это не интересно, нет времени и т.д. Освоить любой из них очень просто, и возможно это за неделю. Самые популярные - это: WordPress и Joomla .

Итоги

Сегодня мы познакомились с профессией Full-stack разработчика и узнали какие задачи он выполняет, что должен знать и уметь. На данный момент - это распространённая работа и вакансий с каждым днём всё больше и больше. Конечно, мы проговорили о каждой мелочи которую должен знать Full-stack разработчик , но на это уйдёт не одна статья, и главное то, что Вы всегда должны быть в курсе обновлений, каждый день читать и узнавать новое. В общем - развиваться. Иначе никак, ведь тот, кто не стремится к большему - в итоге остаётся ни с чем. Удачи в вашей дальнейшей работе!



Понравилась статья? Поделитесь ей