Найм backend разработчика — в штат или на аутсорс?

От того, что «под капотом» у вашего продукта зависит не только текущая стабильность, но и будущая масштабируемость. Бэкенд-разработчик или даже целая бэкенд-команда должны обладать иметь высокий уровень знаний и компетенций, вне зависимости от того, нанимаете ли вы их в свою команду или на аутсорс. Этот гид поможет вам понять всё необходимое о бэкенд разработке: как найти разработчика нужного уровня и понять, что он идеально подходит для работы на вашем проекте.

Кто такой бэкенд-разработчик и какие задачи решает

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

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

Задачи и ответственность

  •  реализует логику продукта, проектирует архитектуру и алгоритмы; 
  •  обеспечивает корректную работу функционала сайта или приложения; 
  •  создает и организовывает базы данных (СУБД); 
  •  проектирует API - интерфейсы взаимодействия, куда выводится информация, полученная с сервера;
  •  интегрирует продукт с внешними сервисами; 
  •  тестирует и отлаживает серверную часть; 
  •  оптимизирует или рефакторит код, чтобы повысить его эффективность; 
  •  разрабатывает и интегрирует различные модули, например аутентификации; 
  •  ведет техническую документацию.

В зависимости от ниши и опыта набор обязанностей бэкенд-программиста может меняться. При этом бэкенд-разработчик не создаёт продукт в одиночку и плотно взаимодействует с другими специалистами: frontend-разработчиками, UX/UI-дизайнерами, тестировщиками, аналитиками, SEO и т.п.

Какими языками нужно владеть  backend-разработчику

Чтобы создать серверную часть, можно использовать практически любой язык программирования. Самые популярные для разработки:  Ruby, PHP, Python, Erlang/Elixir, Golang, Java/Kotlin/Scala, JavaScript/Node,.NET, C#.

Мы в своей работе чаще всего используем четыре языка: Ruby, Python, Go, Elixir. Некоторые из проектов, которые мы создали на этих языках:

Cryptopay — B2B-платформа для криптопровайдера.
Machinio — агрегатор предложений и поисковая система для сервиса по продаже техники.
Fresh Auto — ERP-система для автодилера.
KFC — система персонализации для сети ресторанов.
Полный перечень проектов, для которых разработчики Evrone делали backend вы можете посмотреть в разделе Кейсы.

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

Что должен уметь бэкенд-разработчик

В отличие от рекрутеров сами разработчики оценивают опыт не в годах, а в уровне квалификации.

  • Junior справляется с небольшими односложными задачами, учится в процессе, нуждается в контроле со стороны более опытных коллег.
  • Middle может справиться практически с любой задачей, ему можно доверить полностью бэкенд продукта.
  • Senior имеет большой опыт работы над инженерными задачами, у него широкий арсенал навыков, он может делиться своей технической экспертизой с мидлом и вести проект от начала до конца.
  • Lead — ведущий разработчик, которой управляет командой, ставит задачи, следит за выполнением плана работ и качеством продукта. Может быть техлидом и писать код руками или тимлидом с высоким уровнем soft skills — для эффективного управления проектом и выстраивания коммуникации. Принимает и проверяет код, разрабатывает документацию, помогает решать трудные задачи, работает с системами с высокой нагрузкой. 

Основные требования к программистам и как их проверить на собеседовании

  • Junior

Компетенция: знание хотя бы одного языка программирования: Python, Ruby или Golang
Что спросить: На каких языках вы программируете? 

Компетенция: работа с системами управления базами данных (практически любой сервис использует хранилище данных)
Что спросить: С какими типами баз данных вы работали? Что бы вы выбрали для решения нашей задачи — MySQL, PostgreSQL, MongoDB, Cassandra, Redis, Memcached? Расскажите, как бы оптимизировали базу данных и запросы к ней?

Компетенция: опыт работы с системами контроля версий, например Git
Что спросить: Какую систему контроля версий вы использовали в разработке?

Компетенция: понимание, как работают сервера
Что спросить: С какими серверами вы работали? Какие особенности у Apache, NGINX, IIS?

Компетенция: знание Linux 
Что спросить: Какой у вас опыт работы с Linux? Какие дистрибутивы знаете?

Компетенция: трудоспособность
Что спросить: Как долго вы работаете над кодом? Что будете делать, если нужно сдать проект в сжатые сроки? Часто ли вы отвлекаетесь в процессе работы?

Компетенция: навыки планирования и исполнения плана
Что спросить: Как вы планируете свою работу? Что будете делать, если случится аврал, срыв сроков? Были у вас уже такие ситуации? Как справились?

Компетенция: знание английского языка, на уровне от intermediate
Что спросить: Предложить прочитать техническую документацию и объяснить её. Или пройти небольшой тест.

  • От Middle и выше

Компетенция: для интеграции веб-продукта со сторонними сервисами требуется знание API, REST, SOAP (последние два используются всё реже)
Что спросить: Какие функциональные API вы писали? Для каких задач?  

Компетенция: для ускорения процесса разработки нужно знание фреймворков: Ruby on Rails, Erlang/OTP, Django.
Что спросить: С какими фреймворками вы работали?

Компетенция: умение проводить тестирование
Что спросить: какие тесты вы создавали? Какие библиотеки для тестирования вы используете? Писали юнит-тесты?

Компетенция: знание основ сетевой безопасности
Что спросить: Какие инструменты, обеспечивающие безопасность, вы знаете? Какие проблемы могут с ней возникнуть? Какие методы их решения вы знаете?

Компетенция: умение оценивать и улучшать производительность веб-сервиса
Что спросить: Если продукт плохо работал, как вы улучшали его эффективность? Какой у вас опыт в рефакторинге кода? 
Есть опыт в масштабировании проекта? 

Компетенция: навыки составления чёткого ТЗ и его оценка
Что спросить: Составляли ли вы ТЗ? Для каких задач? С какими ошибками чаще всего встречались в ТЗ? 

Компетенция: знание основ фронтенда: может возникнуть необходимость отладки с использованием клиентской части сервиса
Что спросить: Какие принципы работы у протоколов TCP/IP, HTTP? Что такое REST? Как работают HTML, CSS, JavaScript?

Софт скилл: умение доводить дело до конца
Что спросить: Все ли продукты, которые вы разрабатывали, запускались и корректно работали? Если какие-то из них не запустились, почему?

Софт скилл: умение работать в команде
Что спросить: Как вы строите коммуникацию с коллегами? Что делаете, когда заканчиваете свою часть работы? Что вы сделаете, если кто-то совершит, на ваш взгляд, глупую ошибку?

  • Senior и Lead 

Компетенция: глубокие знания нескольких языков программирования для разработки серверной части (например, Ruby, Go, Python, Elixir, Node JS, Rust, Haskell)
Что спросить: Какие языки вам нравятся и чем?

Компетенция: знание фронтенда и/или fullstack
Что спросить: Какой у вас опыт в веб-разработке полного цикла?

Компетенция: умение решать проблемы и снимать технологические риски
Что спросить: С какими проблемами и сложными задачами вы встречались? Приходилось ли вам доносить до руководства/заказчика риски, которые вы предвидели до начала разработки проекта?

Софт скилл: умение ставить задачи команде и управлять ей
Что спросить: Какой у вас опыт в управлении командой? Как вы распределяете нагрузку? Как часто отправляете код на доработку?

Софт скилл: постоянно развивается, в курсе изменений в отрасли
Что спросить: Что и как вы делаете для своего развития? На какие каналы подписаны, какие блоги/профильные сайты читаете? Какие митапы и конференции посещали? 

Софт скилл: умение делиться своим опытом с новичками и командой
Что спросить: Были ли вы наставником для других разработчиков? С какими сложностями сталкивались?

Софт скилл: хорошие коммуникативные навыки и умение убеждать.
Что спросить: Как вы доносили до команды/заказчиков своё решение? Как убеждали в своей правоте? Как вы объясняли команде свои решения?

Где можно найти бэкенд-разработчика

Есть несколько вариантов подбора специалиста: в штат, на аутсорс, на аутстафф. В штат сотрудников ищут на сайтах профильных IT-сообществ, сайтах с вакансиями, биржах фрилансеров. На аутсорс и аутстафф сотрудников можно найти в веб-студии. Рассмотрим подробнее все варианты, где искать backend-разработчиков на проект.

Сайты с вакансиями и резюме, такие как Мой круг (Хабр Карьера) и Head Hunter. Здесь можно изучить резюме и другие вакансии бэкенд-программистов, понять, какие навыки востребованы и сколько стоят разработчики разного уровня.

Профильные IT сайты, биржи фриланса и удалённой работы. Самые популярные среди разработчиков:

  • Хабр Фриланс — биржа для специалистов от известного в IT-среде портала;
  • FL.ru — крупная биржа IT-фрилансеров;
  • vc.ru — здесь можно разместить вакансию;
  • Кворк — на сайте можно заказать определённую услугу (например, разработку на Python}.

Мессенджеры и социальные сети. в первую очередь - это Телеграм каналы с вакансиями и группы на Facebook.

Профессиональные конференции, митапы, хакатоны. На этих мероприятиях можно выйти на кандидатов, которых невозможно найти в интернете.

Инхаус-команда, аутсорс или аутстафф?

Инхаус — это найм разработчика или целой команды штат. Аутстафф — это аренда у агентства дополнительных разработчиков или CTO в вашу команду. Аутсорс — вы формулируете задачу, а студия разработки выполняет ее силами своих сотрудников, включае управление проектом и подбор людей в команду.
 

Процесс найма backend разработчика

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

Как начать работать с нами?
01
Напишите нам
Поделитесь своей идеей, техническими требованиями и важными деталями
02
Мы обсудим проект
Разработчики предложат решение вашей задачи, а менеджеры подготовят расчёт
03
Выберем формат работы
Мы расскажем о разных моделях работы команды и вашего участия в проекте
04
Составим roadmap проекта
Определим ключевые шаги и сформируем дорожную карту разработки проекта
05
Выделим команду
Найдём специалистов нужного уровня и подготовим их к работе над проектом
06
Подпишем документы
Как только мы определимся с условиями и деталями, подписываем контракт и стартуем
07
Начнём работу
Команда начнёт работу и будет держать вас в курсе продвижения проекта к реализации

Если вам требуется разработка бэкенда, расскажите нам о своём проекте

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

 

Будем на связи
Прикрепить файл
Максимальный размер файла: 2 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.