Как стать автором
Обновить

Представление о современном backend-разработчике

Время на прочтение3 мин
Количество просмотров16K

Мне иногда приходится посещать собеседования в качестве собеседующего и собеседуемого. Хочу взглянуть на холиварную тему сеньорности/миддловости/джуниорности разработчиков. В последнее время, качества, которые необходимы программисту сильно изменились. Думаю, связано это с популяризацией микросервисной архитектуры в современных проектах. Где от инженеров требуются немного другие навыки нежели разработчику монолита.

Hard-skills

Хардскиллы переоценены. Да, думаю сейчас это действительно так. Почти все разработчики большую часть своего времени создают микросервисы, суть которых в перекладывании json'ов из одного места в другое. Что касается творческих задач, их не так много, как хотелось бы.

Но почему-то на собеседованиях любят спрашивать то, что никогда не пригодится или пригодится один раз в жизни. Типа что выведет "вот этот вот код" или по какому алгоритму работает garbage collector в php. Серьезно? Это как-то говорит о степени твоей профессиональности? А с учетом того, что гуглится такая информация за минуту, то смысл таких вопросов сводится к нулю.

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

А вот зачем разработчику, который дергает api, знать внутреннюю архитектуру archlinux или иметь в резюме опыт разработки сетевых протоколов? Также знание каких-то конкретных технологий (RabbitMQ) имеет мало смысла. Толковый инженер, с широким кругозором и сильным бэкграундом разберется практически с любой технологией за пару дней (или даже часов). Компания ничего от этого не потеряет, а только выиграет. Конечно же есть некоторые вопросы, знать ответы на которых мастхэв: SOLID, знания об основах своего ЯП, его плюсы/минусы, принципы KISS, DRY и умение следовать им.

Related skills

Эти скилы стоят примерно на одном уровне по важности с хардскиллами. В условиях микросервисной архитектуры умение "проводить" сервис является одним из ключевых навыков. Создать микросервис, отредактировать ci/cd, возможно даже подредактировать конфиги kubernetes'a на production. Умение работать с kubectl (зайти в контейнер, получить логи) - наличие всех этих умений делает из вас более полезную боевую единицу для современного IT бизнеса.

Soft-skills

Возможно сейчас это самый важный набор скилов.

  • Ответственность за результат. Важно понимать, что задача ограничивается не только твоим MR, а ты (и твоя команда) ответственны за задачу от постановки до релиза на production. Забота о том, чтобы твои изменения были доставлены к конечному пользователю довольно быстро, без проблем и хорошо проверенными, без критических багов. Отсутствие страха в коммуникациях с людьми из других отделов. Умение уточнить детали задачи если что-то не ясно.

  • Критическое мышление. Тоже является одним из столпов современного разработчика. Хороший работник должен ставить под сомнение вообще все, что видит (в разумных пределах), в том числе и свое решение. Уметь задавать правильные вопросы в ТЗ (если оно есть, ха-ха). Быть готовым конструктивно спорить с менеджерами, архитекторами, тимлидами и конструктивно критиковать их решения.

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

  • Работа на команду. Подправить документацию, подкорректировать описание эндпоинта. Умение вести общий вклад в работу команды, а не только ограничиваться кодингом своей задачи. Хорошо, когда разработчик делает вклад в общее дело!

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

Заключение

Хотелось бы вспомнить цитату одного из своих бывших коллег:

Программист должен решать проблемы, а не создавать их.

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

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

Теги:
Хабы:
Всего голосов 34: ↑17 и ↓17+5
Комментарии51

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань