Рубрика:
Карьера/Образование /
Рынок труда
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Вакансия: Full Stack-веб-разработчик
Одно из самых популярных направлений в области ИТ – это веб-разработка. Важное место в ней занимают Full Stack-веб-разработчики. Это универсалы, которые могут создавать как клиентские (фронтенд), так и серверные приложения (бэкенд), а также обладают знаниями системного администрирования. Мы попросили представителей компаний рассказать о знаниях, навыках, опыте, актуальных для Full Stack-веб-разработчиков сегодня
- Какими знаниями и навыками должен обладать Full Stack веб-разработчик?
- Каков инструментарий Full Stack-веб-разработчика?
- Каковы требования компании к уровню образования потенциальных сотрудников?
- Какие требования предъявляются к опыту работы?
- Есть ли особые требования, которые обусловлены спецификой деятельности компании?
Александр Майоров, руководитель отдела 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 и программных продуктов зачастую написана только на английском, и он же является де-факто стандартом для общения в различных сообществах и на конференциях.
Компания предоставляет сотрудникам большую степень свободы в работе, что накладывает большую ответственность и предъявляет повышенные требования к умению самоорганизовываться и эффективно управлять своим временем, чтобы выполнять поставленные задачи в срок.
Подготовил Игорь Штомпель
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|