Бэкенд-веб-разработчик
Для успешного трудоустройства профессионалов необходим определенный багаж знаний и умений. Представители компаний рассказывают, каких специалистов они хотели бы видеть в своей команде
1. Какими знаниями и навыками должен обладать бэкенд-веб-разработчик?
2. Каков инструментарий бэкенд-веб-разработчика?
3. Каковы требования компании к уровню образования потенциальных сотрудников?
4. Какие требования предъявляются к опыту работы?
5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?
Артур Боженов, старший программист отдела внутренней автоматизации Positive Technologies Тимур Гимуллин, cтарший инженер по автоматизации тестирования отдела технологий разработки Positive Technologies
1. А. Б.: Бэкенд-веб-разработчик должен обладать следующими навыками и знаниями:
- многопоточное программирование;
- принципы ACID (Атомарность, Согласованность, Изолированность, Надежность) и их применение на практике;
- общие принципы сетевой архитектуры и протоколов;
- цикл жизни HTTP-запроса/ответа, путь прохождения запроса;
- защита сетевых соединений (HTTPS). Авторизация. Настройка прав доступа к ресурсам;
- REST, ODATA, WebAPI, SOAP;
- веб-сервисы;
- хостинг веб-приложения (IIS, Nginx, Lighttpd, Node.js, Apache);
- масштабируемость решения, балансировка/маршрутизация запросов;
- логирование;
- кэширование данных;
- хранение данных (адекватный выбор способа хранения в зависимости от задачи);
- работа с большими объемами данных.
Т. Г.: Я бы еще добавил к вышеперечисленному стандартные джентльменские наборы разработчика (часто встречаются): WAMP, XAMP и т.п.
2. А. Б.: Основной инструментарий бэкенд-веб-разработчика:
- удобная IDE (Visual Studio, NetBeans и т.п.);
- сервисы или утилиты для создания/просмотра/изменения regEx выражений, JSON, XML, текста в неправильной кодировке;
- Google и Stackoverflow;
- MongoDb/Redis/memcached;
- Elasticsearch/Kibana;
- RabbitMQ/ZeroMQ/MSMQ и прочие MQ.
Т. Г.: Насчет IDE – это дела вкуса, хоть блокнот (саблайм, npp), но я бы лучше смотрел в сторону продуктов JetBrain, и прочих, хорошо интегрирующихся друг с другом.
3. А. Б.: Высшее (необязательно) техническое (обязательно). Опыт практической работы важнее.
Т. Г.: Насчет образования – лучше техническое или математическое.
4. А. Б.: 3-5 лет разработки не-фронтенда.
Т. Г.: Для бэкенд-разработчиков не могу уточнить.
5. А. Б.: Аналитический склад ума.
Т. Г.: Реальное умение работать в команде и умение договариваться. Разработчика, который не умеет моделировать и приступает к работе сразу, не продумав общую архитектуру и взаимодействие всех модулей приложения, я бы вообще никуда не брал. На аутсорсе пусть сидят!
Евгений Кузин, начальник отдела сетевых проектов ООО «Доктор Веб»
1. В первую очередь бэкенд-веб-разработчик должен обладать общим для всех разработчиков багажом – инженерным мышлением, умением проникнуть в суть задачи, разложить ее на составляющие и правильно выбрать инструменты для ее решения.
Архитектура веб-приложений значительно отличается от архитектуры обычных прикладных программ в первую очередь тем, что с веб-приложениями могут работать (и работают) одновременно десятки, а порой и сотни пользователей. Изоляция клиентов друг от друга, безопасность системы, расчет на увеличение производительности путем масштабирования системы и связанные с этим архитектурные и технические решения целиком ложатся на плечи веб-разработчика.
Во-вторых, для веб-разработчика важно чутко реагировать на развитие Интернета, анализировать используемые технологии и инструменты.
Веб-разработчик не должен бояться осваивать новые технологии, должен быть легким на подъем (по сравнению с коллегами – прикладными программистами) и уметь действовать быстро.
2. Не называю конкретные программы, поскольку по каждому аспекту возможны равноценные варианты.
Конечно же, браузер, со всеми расширениями, необходимыми для анализа, проверки и манипуляции с элементами и скриптами на веб-странице. Затем утилиты, позволяющие посылать разнообразные кастомные HTTP-запросы (поскольку на 95% веб-разработка – это протокол HTTP) и детально анализировать трафик и обмен данными между клиентом и сервером. Также бэкенд-веб-разработчику необходим текстовый редактор, желательно с поддержкой используемых языков программирования, инструментов отладки, профилирования и контроля версий.
Отдельно стоит упомянуть инструменты для написания или генерации технической документации. Документация – это хорошо, хорошая документация – тоже неплохо.
И, конечно, главные инструменты – голова и прямые руки.
3. Совершенно необходимо знать русский язык, уметь ясно и четко излагать свои мысли в общении с коллегами, как письменно, так и устно. В остальном мы не требуем от соискателей в обязательном порядке высшего технического образования или наличия каких-либо сертификатов – решают качество работы и практические знания.
4. Здесь тот же принцип, что и с образованием. Опыт работы, стаж – безусловные плюсы, однако каждого кандидата мы рассматриваем индивидуально.
5. Если говорить о разработке именно для Интернета, то веб-разработка сама по себе уже представляет создание приложения, работающего в публичной среде для пользователя, истинные намерения которого неизвестны. Программируя любое действие, нужно задавать себе вопросы: что если пользователь (злоумышленник) автоматизирует бесконечное выполнение этого действия? Что если входные данные приложения будут произвольным способом отредактированы? Что если ссылка на этот сервис попадет в открытый доступ, будет передана посредством IM другому пользователю? И тому подобное.
В силу специфики нашей деятельности мы часто переходим дорогу злоумышленникам, а данные, с которыми работаем, представляют большой интерес в определенных кругах, поэтому некоторые наши веб-приложения требуют особенно тщательной защиты.
Николай Крапивный, руководитель отдела новых разработок, Badoo
1. Бэкенд-веб-разработчик в Badoo, как любой хороший инженер, должен уметь понимать поставленную задачу и уметь ее эффективно решить в рамках имеющихся в наличии технологий и инструментов. Мы используем PHP+MySQL, поэтому наш веб-разработчик должен прежде всего свободно владеть PHP и SQL. Должен быть ответственным и стремиться делать свою работу хорошо – соблюдать сроки, понимать продуктовую/техническую ценность задачи, отвечать за итоговое качество.
2. Базовый набор составляют PHP, MySQL, nginx, Git, JIRA, IDE, любимый браузер и командная строка. Кроме этого, у нас в компании написано большое количество различных инструментов, систем, библиотек, которые разработчики повсеместно используют для решения тех или иных задач. Некоторая часть этих инструментов доступна в Open Source, например, Pinba – средство для мониторинга PHP в реальном времени, наш инструмент для форматирования кода – phpcf, PHP-обвязка для библиотеки Leptonica.
3. Если человек удовлетворяет нашим требованиям по навыкам и знаниям, то мы готовы предложить ему работу вне зависимости от его образования.
4. Ситуация аналогична ситуации с образованием: никаких жестких и формальных требований.
5. У наших проектов большая аудитория и достаточно нагруженные PHP-бэкенды. В пиках они обрабатывают до 50 тысяч запросов в секунду. В связи с этим мы особое внимание уделяем теме производительности. Нужно понимать основные принципы кэширования, репликации, оптимальной работы с данными, оптимизации потребления и распределения ресурсов. Быть способным увидеть и локализовать проблему с производительностью на любом уровне.
Денис Силаков, начальник отдела технологических разработок и сопровождения компании «НТЦ ИТ РОСА»
1. Кандидату на такую должность в «НТЦ ИТ РОСА» понадобятся следующие навыки:
- хорошее знание Ruby on Rails 4.x;
- знакомство с Behavior-driven development;
- знакомство с принципами коллективной разработки – системами контроля версий, трекерами задач и так далее;
- опыт работы с базами данных (как реляционными, так и NoSQL);
- опыт работы с SLIM/HAML;
- знание и опыт работы с JavaScript/CoffeeScript;
- знание CSS/SCSS.
2. В «НТЦ ИТ РОСА» для веб-разработки в настоящее время используется фреймворк Bootstrap, а также JavaScript-фреймворк AngularJS. Для хранения данных используются PostgreSQL и Redis. Разработка на Ruby on Rails ведется в соответствии с подходом Behavior-driven development с применением инструментария RSpec.
3. Наличие высшего технического образования будет плюсом, однако в первую очередь мы будем смотреть не на диплом, а на навыки и опыт потенциального кандидата.
4. Желателен опыт работы от года в проектах, где использовались упомянутые в первом пункте технологии (по крайней мере Ruby on Rails).
5. Бэкенд-веб-разработчики в «НТЦ ИТ РОСА» трудятся преимущественно над системой разработки и сборки ABF, используемой для создания наших основных продуктов – линейки дистрибутивов ОС Linux и продуктов под эту ОС. Поэтому будет большим плюсом, если кандидат на эту вакансию хорошо знаком с Linux и со сборкой пакетов под эту систему. Не лишним будет знакомство с другими технологиями, использующимися в ABF – виртуализацией (в частности, LXC), системами управления конфигурацией (например, Ansible) и системами хранения кода (в первую очередь Git).
Сергей Казанцев, старший разработчик, «Лаборатория Касперского»
1. Бэкенд-разработчики отвечают за код, выполняемый на веб-серверах.
Таким образом, бэкенд-разработчики должны понимать не только языки программирования, но и серверную архитектуру, базы данных и протоколы сетевого взаимодействия.
2. Разработчик должен знать как
минимум один высокоуровневый язык программирования, фреймворк для
эффективной веб-разработки и веб-сервер.
Популярными связками могут быть:
- C# + ASP.NET + IIS;
- Java + Spring MVC + Apache Tomcat;
- Ruby on Rails + Nginx;
- Python + Django + Apache;
- PHP + Apache;
- …или их комбинации.
Многие веб-сервисы компании построены на базе технологий Microsoft и платформы .NET, но нередко применяются и Ruby on Rails, Perl, PHP.
В арсенале хорошего бэкенд-разработчика всегда присутствуют инструменты:
- мониторинга трафика: Fiddler, Wireshark;
- профилирования производительности, памяти и запросов к базе данных;
- быстрого поиска по логам: grep.
3. Обязательны навыки работы с базами данных, очередями сообщений и для крупных проектов навыки использования распределенного кэша.
4. Требуемый опыт работы может зависеть от позиции, на которую претендует соискатель:
- 1 год – младший веб-разработчик;
- 2-5 лет – веб-разработчик;
- 5-7+ – старший/ведущий разработчик.
5. К специфическим требованиям «Лаборатории Касперского» можно отнести знание криптографии, потенциальных угроз веб-приложений и способов их предотвращения.
Илья Кутуков, старший программист, специалист по веб-инжинирингу в Parallels
1. Подразумевается, что человек, приходящий к нам, владеет нужными для работы языками программирования и технологиями в достаточной мере. Кроме проверки coding skills и общей эрудиции, мы даем тест на архитектора – текст, представляющий собой вольно написанное и заведомо неполное ТЗ на разработку системы. Дальше просим кандидата уточнить, что ему непонятно, какие дополнительные вопросы у него возникли и как он видит основные составляющие системы, схему данных, как все будет меняться при увеличении нагрузки, объема данных, а где этим можно пренебречь.
2. Основной инструментарий – IDE (уточню, что мы в команде предпочитаем PyCharm), окружение разработчика, то есть набор программ, который делает его максимально похожим на начинку боевых серверов, но при этом с возможностью быстро разбираться в том, что происходит, VCS, подручные скрипты. Из интересных, сравнительно новых инструментов, технологий и подходов хотелось бы также упомянуть о «реактивном» подходе (Akka, Rx.*, Apache Storm и т.п.), который требует от разработчика мышления на уровне потоков сообщений, событий и их модификации. А также микросервисные архитектуры, хорошо дополняющие их языки описания интерфейсов (Thrift, Avro, Protobufs, JSON schema), которые позволяют с удобством создавать контракты, по которым идет обмен данными.
3. Образование для нас принципиальной роли не играет.
5. У нас бэкенд-девелоперы работают над такой функциональностью, как Parallels MyAccount, Access Portal, Desktop Portal, в таких решениях, как Parallels Access (решение удаленного доступа) и Parallels Desktop для Mac (запуск на Маках разных операционных систем и их приложений без перезагрузки), с различными инфраструктурными решениями. Поэтому у нас есть такая специфика, как zero-downtime, и хорошо, если человек не только понимает, какие изменения нужно внести, но и как это сделать, не затронув пользователей.
Константин Кичинский, эксперт по стратегическим технологиям, Microsoft Россия
1. Знания и навыки, необходимые бэкенд-веб-разработчику:
- Архитектура сети, протоколы, каналы коммуникации.
- Технологический стек, соответствующий проекту (например, C#, .NET, ASP.NET или JavaScript/TypeScript + NodeJS) + управление лежащей в основе операционной системой (например, Windows/Azure + PowerShell).
- Автоматизация развертывания и тестирования (в том числе нагрузочного).
- Понимание облачных возможностей основных провайдеров (Microsoft Azure, AWS), включая обеспечение масштабируемости сервисов.
- SDL и в целом вопросы обеспечения безопасности (включая шифрование и аутентификацию).
2. Инструменты: Visual Studio, Git + остальное зависит от процессов и технологического стека.
3. Образование: профильное (IT) + практический опыт, приветствуются качественные знания в специфичных областях (также безопасность или обеспечение отказоустойчивости сайта).
4. Опыт: практический опыт в реальных проектах, включая участие в OS-проектах.
5. Специфичные требования: Azure.
Александр Горный, директор по информационным технологиям Mail.Ru Group
1. Во-первых, он должен знать бэкенд – свой основной рабочий язык программирования, базы данных, принципы организации серверных приложений. Кроме того, ему нужны знания в вебе: устройство HTTP-протокола, возможности CSS, хотя бы элементарное владение HTML и JavaScript. И, наконец, он должен быть хорошим разработчиком – уметь отлаживать свой и чужой код, правильно пользоваться классическими алгоритмами, выбирать уместные структуры данных.
2. Основной инструмент – это, конечно, язык программирования. Язык определяет второй уровень инструментария: стандартные для этого языка фреймворки и наборы библиотек. Затем идут базы данных: чаще всего MySQL или PostgreSQL – и NoSQL-хранилища, такие как Tarantool или Redis.
3. Формальных требований к диплому при устройстве на работу в Mail.Ru Group нет. Гораздо важнее реальные навыки и проекты, в которых он участвовал. У Mail.Ru Group есть два крупных образовательных проекта: Технопарк на базе МГТУ имени Баумана и Техносфера на базе ВМК МГУ, цель которых – дать студентам конкретные навыки в области веб-разработки.
4. Формальных требований опять же нет, но в целом можно говорить, что разработчик становится полностью самостоятельным где-то после двух-трех лет опыта работы «вторым номером».
5. Бэкенд-разработка традиционно была сердцем нашей компании. Бэкенд-разработчик должен быть действительно лучшим во всем – умным, творческим, ответственным, аккуратным, а также хорошим командным игроком и желательно с нимбом вокруг головы. С технической точки зрения, наша специфика в том, что большая часть бэкенда пишется на C++, а не скриптовых языках – к этому вынуждают высокие нагрузки.
Подготовил Игорь Штомпель