Программно аппаратное full stack решение. Fullstack-разработчики: кто они и чем занимаются. Может ли full-stack разработчик сделать качественный продукт

18 января 2016 в 09:35

Перевод: full stack разработчик - это миф

  • Блог компании Voximplant ,
  • Разработка веб-сайтов ,
  • Программирование
  • Перевод

Вашему вниманию предлагается перевод любопытной статьи Скотта Хадфилда , CTO и со-основателя стартапа “Hello Pretty”. Сейчас в половине вакансий, связанных с вебом и серверной разработкой, встречается волшебная фраза “full stack”. Чаще всего с эпитетами вроде “джедай”, “супер-герой” и “ниндзя”. Кого ищут все эти люди, и кого им на самом деле удается получить в свою команду?

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

Я знаком с несколькими ребятами, которые соответствуют описанию “full stack”. И за этими ребятами постоянно гоняется толпа хантеров, что лишь подпитывает миф о том, что у вас получится найти такого разработчика в свой проект.

Описание “full stack developer” так же бессмысленно как “Гений” или “Тот, кто может сделать все что угодно в [вставьте здесь свою предметную область]”.

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

То, что ожидается от “full stack” разработчика надежно выходит за рамки возможностей обычного человека. Такой разработчик должен разбираться в масштабировании приложения до нескольких миллионов кликов в день (в час?), знать что такое “домашние животные vs крупный рогатый скот” и почему это так важно, уметь выбирать между MongoDB и MySQL, применять CAP-теорему, настраивать PaaS и IaaS, владеть дюжиной средств управления конфигурациями для развертывания приложений на Rails, Django, Wordpress, Swift или их комбинации, разбираться в отличиях микросервис-ориентированной архитектуры от монолитных приложений и еще несколько дюжин вещей.

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

Каждый год новые компоненты добавляются к каждому слою стека. А раз в несколько лет к стеку добавляется новый слой. Вы все еще считаете, что разумно писать в вакансиях “full stack разработчик”? Это не очень умно. Особенно когда вы начинаете искать одного человека, одновременно являющегося специалистом по безопасности, веб разработке, юзабилити и настройке серверов. И такие запросы не то чтобы очень редки.

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

Ах, да, и когда CEO заглядывает в офис, нужно настроить принтер и общий доступ к файлам на его новеньком ноутбуке с windows.

Как я уже писал, такие люди существуют. Лично знаю нескольких. Но также я знаю множество великолепных разработчиков, дизайнеров и менеджеров проектов, которые даже близко не подходят под определение “full stack”. И еще больше тех, кто называет себя “full stack разработчиками” и при этом с трудом могут дать определение больше чем дюжине слов из списка выше. И это при том, что в список далеко неполный, в нем даже нет некоторых слоев, например того, на котором живут JRE и Node.js. И тут мы понимаем, что у нас проблема.

В большинстве случаев, когда я видел “full stack” в описании вакансии, на самом деле они искали “очень крутого спеца”.

Самое раннее упоминание “full stack” и “full stack инженера

Разумно ли ожидать, что каждый разработчик будет мастером в любом аспекте процесса разработки? Вероятнее всего нет, однако Facebook может потребовать от вас это. Будучи на конференции OSCON, работник Facebook сказал мне, что они нанимают только «Full Stack» разработчиков. Хорошо, но что это значит?

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

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

Составляющие «Full Stack»

1. Сервер, Сеть и Хостинговая Среда.

A. Включает в себя понимание того, что может сломаться и почему, ресурс принимается как должное.
B. Надлежащее использование файловой системы, облачных баз, сетевых ресурсов, а также понимание избыточности и доступности данных.
C. Как происходит масштабирование приложения при данных аппаратных ограничениях?
D. Что на счет мульти-поточности и состояние гонки? Знайте, что вы всего этого не увидите в ваших разработках, однако это может появиться и обязательно появится в реальном мире.
E. «Full stack» разработчики могут работать бок о бок с DevOps. Система должна обеспечивать осмысленные сообщения об ошибках и возможности сбора логов. DevOps увидят эти сообщения прежде вас, так что считайтесь с их мнением.

2. Моделирование Данных

A. Если модель данных некорректна, то бизнес-логика и более высокие классы начинают нуждаться в странном (безобразном) коде - костылях - для того, чтобы компенсировать исключительные случаи, которая эта модель не учитывает.
B. «Full stack» разработчики знают, как создать взвешенную реляционную модель вместе с внешними ключами, индексами, обзорами, справочными таблицами и т.д.
C. «Full stack» разработчики знакомы с концепцией не реляционных баз данных (NoSQL) и понимают, в чем они превосходят реляционные базы данных.

3. Бизнес-логика

A. Суть пользы приносимой приложением.
B. Здесь необходимы серьезные объектно-ориентированные навыки.
C. Здесь также могут понадобиться фреймворки.

4. Класс API/класс Action/MVC

A. Как взаимодействует ваша бизнес-логика и модель данных с реальным внешним миром.
B. На этом уровне, фреймворки должны быть максимально задействованы.
C. «Full stack» разработчики обладают способностью писать чисто, последовательно, просто для удобства пользователя. Меня пугает, до какой степени некоторые API бывают запутаны.

5. Пользовательский интерфейс

A. «Full stack» разработчики: а) понимают, как создавать читаемую схему, b) осознают, что нуждаются в помощи художников и графических дизайнеров. В любом случае, применение хорошего визуального конструирования - чрезвычайно важно.
B. Может включать в себя хорошее владение HTML5/CSS.
C. JavaScript - это восходящий язык будущего и большое количество захватывающей работы производится на JavaScript (node, backbone, knockout…)

6. UX

A. «Full stack» разработчики понимают, что пользователям необходимо, чтобы вещи работали просто.
B. Хорошая система не вызывает у своих пользователей кистевой туннельный синдром или раздражение глаз. «Full stack» разработчик может отстраниться и взглянуть на процесс, требующий 8 кликов и 3 шагов, а затем свести все это к одному клику.
C. «Full stack» разработчики пишут полезные сообщения об ошибках. Если что-то сломалось, извинитесь. Иногда программисты неумышленно пишут сообщения об ошибках, которые заставляют людей чувствовать себя идиотами.

7. Понимание того, что необходимо клиенту и бизнесу

A. В настоящее время область обязанностей инженера-разработчика не до конца ясна, однако это по большей части самостоятельная роль.
B. «Full stack» разработчики обладают глубоким пониманием того, что происходит, когда клиент пользуется продуктом. Они также обладают пониманием как устроен бизнес.

Другие составляющие головоломки:

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

Заключительные мысли

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

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

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

Вакансия: 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 разработчик?

Термин full stack описывает разработчика, который одинаково хорошо справляется с написанием фронт-энда и бэк-энда.

Чтобы быть более конкретным, это означает, что разработчик может работать с базами данных, PHP, HTML, CSS, JavaScript, а так же может превратить Photoshop-ый макет в готовый к использованию шаблон.

Full stack разработчику не нужно быть супер профессионалом во всех областях и технологиях, в которых он должен работать, потому что это практически невозможно. Он просто должен уметь работать с этими технологиями.

Что значило full stack в 2000 году и что значит сейчас?

2000 год был очень давно, в этом году был выпущен PHP 4.0. Да, 4.0. Тогда, хороший веб-разработчик знал немного HTML, CSS и процедурный PHP, потому что собственно ООП появился в версии 5.0.

Сборка LAMP (Linux - Apache - MySQL - Perl / PHP) был в моде в те годы, практически без альтернативы. В начале 2000-х, если кто использовал контроль версий - то они считались либо технологическими еретиками либо мастерами. Сегодня это смешно, если кто-то не использует данные технологии.

Так, давайте попробуем классифицировать основные требования, которыми должен обладать full stack разработчик:

Системное администрирование

  1. Linux и написание shell скриптов
  2. Облачные технологии: Amazon, Rackspace, и т.д.
  3. Фоновые процедуры: Gearman, Redis
  4. Поиск: Elasticsearch, Sphinx, Solr
  5. Кэширование: Varnish, Memcached, APC / OpCache
  6. Мониторинг: Nagios

Linux по-прежнему самая распространённая операционная система Интернета, используемая в веб-разработке (не считая.NET). Кроме того, full stack разработчик должен знать, как работает облачный хостинг, Amazon / Rackspace.

Поиск является неотъемлемой частью большинства веб-сайтов - разработчик должен знать, как настроить и использовать поисковые серверы, такие как Sphinx или Elasticsearch.

Кэширование также важно: Varnish, обратный прокси, Memcached.

Инструменты веб-разработки

  1. Контроль версий: Git, Mercurial, SVN
  2. Виртуализация: VirtualBox, Vagrant, Docker

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

Используя средства виртуализации и среды разработки на основе каждого проекта легко настроить с помощью VirtualBox и Vagrant.

Если вы хотите работать с Vagrant вы должны знать, основной синтаксис Ruby.

Бэк-энд технологии

  1. Веб-серверы: Apache, Nginx
  2. Языки программирования: PHP, NodeJS, Ruby
  3. Базы данных: MySQL, MongoDB, Cassandra, Redis, SQL / JSON в целом

Знание тонкостей работы с Apache и Nginx - это норма. Full stack разработчик должен знать, как настроить данные инструменты.

PHP должен быть освоен на высоком уровне, NodeJS, Ruby - как можно лучше.

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

Реляционные (например, MySQL, PostgreSQL) и нереляционные базы данных (как MongoDB, Redis или Cassandra) различия между которыми full stack разработчик должен знать, наряду с XML / JSON.

Фронтальные технологии

  1. HTML / HTML5: Семантический веб
  2. CSS / CSS3: LESS, SASS, Медиа запросы
  3. JavaScript: JQuery, AngularJS, Knockout, и т.д.
  4. Особенности совместимости всех браузерах
  5. Адаптивный дизайн
  6. AJAX, JSON, XML, WebSocket

JavaScript, который изначально никто не воспринимал всерьёз, сегодня превратился в один из самых популярных и мощных языков. Новые методологии и структуры появляются каждый день: MVC, MVVM, MVP, Angular, Knockout, Ember, и т.д.

Наряду с HTML, CSS, Javascript, full stack разработчик должен знать о принципах работы с медиа-запросами CSS, а так же препроцессорами, такими как LESS и SASS.

Следует также знать, как работать с технологиями AJAX или WebSocket.

Дизайн

  1. Преобразование веб-дизайна в код

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

Так же вам могут потребоваться знания самых разных технологий. Если вы хотите настроить Vagrant вам нужно знать синтаксис Ruby, а для более эффективной работы с DOM не обойтись без JQuery.

  1. Android
  2. Гибрид: PhoneGap, Appcelerator

Full stack разработчик должен иметь хорошее представление об этих технологиях.

Хорошо ли быть full stack разработчиком?

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

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

Необходимые навыки fullstack-разработчика

На дворе давно не нулевые, так что стандартного LAMP (Linux, Apache, MySQL, PHP), который тогда применялся чуть ли не каждым вторым разработчиком, недостаточно, чтобы считать себя full-stack разработчиком. Сейчас у full-stack разработчика в портфолио должны быть совершенно другие навыки и умения.

Сервер и хостинг

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

Работа с данными

Full-stack разработчик должен уметь создать сбалансированную модель данных, быть знаком с реляционными и нереляционными базами данных, а также уметь работать с форматами XML / JSON.

Бэкенд-технологии

Сюда относятся знание языков PHP, Python или Ruby, умение выстраивать клиент-серверное взаимодействие, разработка API, работа с аналитикой и сопутствующими фреймворками.

Пользовательский интерфейс

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

Проектирование UX

Умение проработать UX - это обязательный пункт, с которым хотя бы на базовом уровне должен быть знаком любой full-stack разработчик. Необходимо понимать, как пользователь будет взаимодействовать с интерфейсом - это важная часть успеха проекта.

В чем преимущества full-stack разработчика?

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

На хедхантинговых сайтах каждый день появляется 7-10 новых вакансий для full-stack разработчика, а зарплата на уровне 119000 рублей в месяц доступна при наличии опыта разработки от года.

Получение необходимых навыков

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

Программы и игры