В ноябре на Хабр Карьере завершилась карьерная неделя бэкенда. Карьерная неделя — это что-то вроде дня открытых дверей, который длится всю неделю. В гонке за специалистами участвовали шесть компаний: РТЛабс, МойОфис, Лига Цифровой Экономики, Контур, НЛМК и Nexign.
Традиционно в конце недели специалисты задают вопросы представителям компаний-работодателей. Мы выбрали самые интересные из тех, что не успели обсудить на круглом столе, и отправили спикерам.
Вопросов было так много, что мы решили разделить ответы на две части, и эта — вторая. Поговорили о старте карьеры в бэкенде, найме джунов, смене сферы деятельности, технологиях и многом другом. А в конце статьи спикеры поделились книгами и статьями, которые стоит прочитать бэкендеру.
Кто отвечал на вопросы
Петр Громов
Начальник отдела архитектуры и разработки, РТЛабс
Александр Захаров
руководитель группы дирекции разработки, МойОфис
Сергей Чехов
директор направления инновационных технологий, Лига Цифровой Экономики
Денис Фомин
руководитель направления программной инженерии, Контур
Иван Белов
руководитель центра компетенции бэкенд-разработки, НЛМК
Владимир Овчаренко
ведущий инженер, Лидер Рабочей Группы, Лаборатории биллинга и финансов Nexign
О старте карьеры и найме джунов
Есть ли у вас стажировки для начинающих специалистов? А если — да, они проходят онлайн или оффлайн?
Петр: Да, у нас есть программы стажировок. Более детально о них можно узнать в нашем телеграм-канале.
Александр: Недавно у нас проходила оффлайн-стажировка системных инженеров Linux в Самаре, где этим летом открылся наш новый офис. Коллеги из департамента спецпроектов, эксплуатации и внедрения вместе с командой рекрутмента отобрали кандидатов из ключевых вузов города, из которых несколько человек успешно сдали входное тестирование на базовые знания и приступили к обучению.
Насколько мне известно, по итогам стажировки 5 ребятам сделали офферы. В целом, стажировки пока у нас не очень распространены. Это был первый запуск, и коллеги планируют в дальнейшем развивать программу стажировок.
Сергей: Лига Цифровой Экономики регулярно проводит стажировки по разным направлениям и форматам. Есть стажировки в очном и онлайн-формате. На наших стажировках вы не только получите знания, но и сможете их применить на тестовом проекте для закрепления эффекта. Лучших кандидатов, по окончании стажировки, мы с радость приглашаем на работу в наши команды.
Отследить старт запуска стажировок можно по ссылкам на нашем официальном сайте в разделе «Ищем сотрудников» — «Стажировки» и в наших соц.сетях.
Денис: Да. В первую очередь оффлайн. Контур ежегодно проводит стажировки по разным направлениям в IT: Backend C#, Frontend, Data Science, iOS и др. Стажировка — это хороший способ попасть в компанию на начинающую позицию, получить профессиональные навыки и дальше расти по грейдам. По статистике прошлых лет, больше 60% ребят остаются работать в компании после стажировки.
Иван: Да, стажировки есть. Частично стажировка проходит онлайн, частично очно. Например, наша Академия стальных возможностей.
Владимир: В Nexign проходят летние и зимние стажировки. Стажировка оплачивается и длится два месяца в формате фултайм (8-часовой рабочий день). Стажёры работают над реальными техническими задачами и проектами в команде под руководством опытного наставника. Самых успешных берем в штат компании.
Хотел бы спросить, почему сейчас не приглашают джунов/стажёров даже на собеседования?
Петр: При наличии релевантных вакансий мы с удовольствием рассматриваем junior-специалистов.
Денис: Мы приглашаем на стажировку. В отдельных случаях берем джунов с найма. Дело в том, что сейчас мы делаем ставку на более опытных специалистов, потому что ресурс наставничества у нас уже укомплектован и сложился стабильный поток кандидатов более высокого уровня.
Иван: Могу сказать только о своей зоне ответственности. Со стажерами мы работаем, что касается джунов — зависит от актуальных вакансий.
Владимир: Мы работаем над сложными highload-проектами, процесс онбординга и адаптации занимает около полугода даже для опытных специалистов. Поэтому для молодых кандидатов в нашей компании есть Nexign Bootcamp — специальный проект, который позволяет закрепить основы теории, познакомиться с продуктами компании и проявить себя в практических заданиях. Лучших выпускников приглашаем на стажировку и далее в штат на позицию джуна.
Какие требования по хардам существуют к стажерам и джунам в вашей компании?
Денис: Я подробно рассказывал об этом на Kontur Tech Talks Jr про стажировку. Можно посмотреть запись и найти там ответ на свой вопрос.
Владимир: К стажерам требования минимальные: нам важны базовые теоретические знания, обучаемость и умение решать нестандартные логические задачи. Джунов тоже просим указывать свой опыт — это может быть стажировка или участие в студенческом проекте.
На какие моменты в первую очередь смотрит работодатель при приеме intern/junior backend разработчика?
Александр: На общее понимание выбранной технологии и базовое умение реализации алгоритмов. Если говорить о soft skills, то на внимательность и заинтересованность в росте.
Иван: На базовые знания по computer science и хорошие теоретические знания по фрейворкам. Но в первую очередь на обучаемость и готовность расти. Важно, что человек постоянно интересуется новым, делает pet-проекты, читает профильную литературу и т.д.
Владимир: В первую очередь смотрим на образование, на теоретические знания, если есть минимальный опыт, например, учебные проекты — рассматриваем их. Часто таким кандидатам дают тестовые задания.
Как джуну вырваться из порочного круга: чтобы получить оффер, нужен опыт, а чтобы получить опыт, нужен оффер? Особенно, когда ты не студент с кучей свободного времени, а хочешь сменить профессию.
Петр: Опыт можно получить по-разному. Например, пройти курсы, попробовать поработать на фрилансе. Многие IT-компании проводят стажировки.
Александр: Предпринимать больше попыток (ходить на большее количество собеседований) и растить hard skills. Если этого не делать, то у студентов будет преимущество. Если всё это уже пройдено, то нужно не сдаваться: пробовать, искать, откликаться на вакансии, прокачивать скиллы, добавлять их в резюме. Мы рассматриваем junior-специалистов, но только тех, кто готов учиться и развиваться.
Денис: Создавать опыт самому. Пет-проекты, фриланс, опенсорс.
Иван: В моем понимании, джун — это тоже разработчик, значит опыт у него должен быть. Важно получить его максимально релевантным, чтобы быть интересным работодателю. Тут могут помочь сильные длительные курсы, которые охватывают не только сам язык и основной фреймворк, но и специфику современной разработки в целом, инструменты ведения документации и задач, основы DevOps и т.п.
Владимир: Сейчас многие крупные компании запускают образовательные проекты, после которых берут на стажировку. Нужно активно отслеживать такие мероприятия, принимать в них участие, знакомиться с компаниями. Это поможет понять, что требуется конкретной компании от джуна, как попасть на стажировку и получить начальный опыт.
Какие дополнительные технологии нужно знать Java backend разработчику помимо самого ЯП, чтобы претендовать на должность Junior-разработчика?
Петр: Обычно все требования указываются в вакансии, чаще всего это:
— Знание коллекций и умение их применять,
— Spring,
— Spring boot,
— SQL,
— Алгоритмы и модели данных.
Также важен общий технический бэкграунд — сети и сетевые протоколы, базовые знания Linux, понимание устройства работы веб-приложений, умение работать с командной строкой и веб-консолью разработчика.
Иван: Нужно иметь хорошую базу в Computer science, знать Spring на хорошем теоретическом уровне и иметь практику работы с ним. Важно знать основы БД — транзакции, джойны, запросы, индексы. Основы сетевого взаимодействия, в частности http. Но главное тут иметь именно сильные базовые знания, стараться разбираться, как всё работает под капотом, а не просто бездумно пользоваться «магией спринга». Также всегда полезно быть любопытным в смежных областях, понимать, как и где запускается твое приложение.
Как часто вы приглашаете начинающих бэкендеров в свою команду? Допустим, 3-4 новых человека на каждый триместр, или больше/меньше?
Иван: Четких правил нет, мы привлекаем специалистов в зависимости от текущей потребности, следите за вакансиями.
Может ли попасть к вам на стажировку человек, который не учился на программиста? Но есть другая вышка.
Петр: Да, конечно, но обязательно наличие базовых знаний, требуемых технологий и стека. Junior-специалисты также проходят интервью для проверки навыков.
Денис: Формальных ограничений таких нет, но по факту человеку без знания основ программирования сложно решить тестовое на стажировку. Если человек получил эти знания каким-то другим способом, и эти знания достаточно фундаментальны, то проблем не вижу.
Иван: Сейчас мало кто из разработчиков имеет высшее образование связанное непосредственно с программной разработкой, но высшее образование, а особенно техническое — это всегда хороший плюс. А для некоторых должностей оно является обязательным требованием.
Владимир: По опыту предыдущих лет понимаем, что у ребят с IT-специальностями чуть больше шансов на успешное прохождение программы стажировки. Но мы и сейчас иногда делаем исключения для кандидатов с большим потенциалом и сильной мотивацией. Самое главное — это подходить под требования вакансии.
Берете ребят после курсов?
Петр: Берём, но формальное наличие диплома об окончании курсов нам не подойдет. Если junior-специалист отвечает необходимым требованиям, мы его возьмем.
Сергей: Любые курсы – круто и полезно. Если раньше была задача объяснять, что такое IT, с чего начать, где и что почитать, то теперь курсы дают точно базовые понимания. Но все зависит от того, что человек смог взять от образования и как сможет проявить себя на собеседовании, показать свои знания.
Денис: Формальных ограничений нет, но практика сложилась такая, что после одних курсов не брали никого. Всё зависит от уровня подготовки на них + самообразования кандидата. Контур и сам проводит бесплатные курсы для тестировщиков и аналитиков, после них берем на стажировку.
Иван: Да берем. Но нужно различать курсы «разработчик с нуля до профи за два месяца» и серьезные курсы, которые охватывают многие смежные области и длятся около года, предполагая ежедневную работу.
Владимир: Если специалист подходит под требования, то рассмотрим кандидата, окончившего специализированные курсы. В любом случае вам предстоит ответить на вопросы технического интервью и доказать свою подкованность в предметной сфере.
Какую программу нужно написать самостоятельно, чтобы оценить свои силы и сказать, что ты тянешь на джуна?
Александр: Небольшой pet-проект, который решает какую-то вашу проблему. При этом проблема может как касаться разработки, так и нет. Такой проект покажет вам ваши сильные и слабые места, а также даст понять, чего не хватает. Только, пожалуйста, не ударяйтесь в перфекционизм.
Иван: Если мы говорим про бэкенд, то это должно быть приложение из нескольких микросервисов, которое охватывает все аспекты современной разработки — работа с REST, базами данных, брокерами сообщений, брокерами авторизации и т.п. Приложение должно быть задокументировано, покрыто тестами разных уровней и в идеале настроить для него CI/CD.
Владимир: Для Nexign важен опыт кандидатов в коммерческой разработке. Приоритет отдаем специалистам, которые работали с высоконагруженными продуктами для миллионов пользователей.
О меняющих сферу деятельности и возрасте
Как влияет возраст соискателя на отношение к его кандидатуре в команде?
Александр: По моему опыту, вообще не влияет. В МойОфис работают сотрудники разного возраста. Главное для нас — профессионализм и совпадение по ценностям.
Денис: Сам возраст не влияет. Может влиять какая-нибудь негибкость в коммуникациях, например, но это может быть хоть в 18 лет, хоть в 50.
Иван: Никак не влияет, мы смотрим только на профессиональные и личные качества.
Владимир: Для Nexign в первую очередь важна экспертность кандидатов. Все команды руководствуются общими ценностями компании, одна из них звучит как #OneTeamOneDNA — мы всегда поддерживаем своих коллег, открыты к сотрудничеству и рады знакомиться с новыми людьми.
Я PHP-специалист, но замечаю: чтобы работать в корпорации, необходим другой стек (Golang, Python, Java). Активно работаю над изучением этих языков, но, чтобы получить полноценный опыт, необходимо «погрузиться» в эту сферу. Вопрос: как PHP-разработчику грамотно переквалифицироваться в другого разработчика, при этом несильно теряя в зарплате?
Денис: Есть компании, в которых стек роли не играет — можно прийти новичком и спокойно, постепенно переучиваться на другой стек. Либо же стоит пройти этот путь заранее и с помощью пет-проектов/фриланса набраться опыта в новом языке.
Иван: При радикальной смене стека или профессии нужно всегда быть готовым к некоторому падению ЗП, это нормально. Чтобы в данном случае не терять на старте, лучше найти проект, где идет смена стека с PHP на интересующий вас — тут можно максимально приложить имеющиеся навыки и одновременно освоить новый стек.
Есть кандидаты, которые хотят сменить направление в профессии. Например, из одной IT-сферы в другую (из ИБ в backend-разработку). Так вот, как компания относится к таким кандидатам, которые имеют исключительно «домашний» опыт разработки? Здесь нельзя исключать владение широким пулом навыков, поскольку перед сменой направления кандидат пытается найти оптимальный путь.
Петр: Все зависит от зарплатных ожиданий и релевантного опыта под конкретную вакансию. Финальное решение принимается по итогам собеседования. Если ты классный разработчик Dotnet, решил переквалифицироваться в Java-разработчика, на собеседовании показал себя как junior, а запросил зарплату senior — ответ будет негативным.
Александр: Относимся с интересом. Приходите на собеседование — пообщаемся.
Иван: Нужно понимать требования к конкретной позиции, иногда прошлый бэкграунд может помочь, иногда помешать. Но от любого разработчика, даже джуна, мы в первую очередь ожидаем именно разработку, это нужно уметь делать.
А сеньор Java, который идет на Frontend Dev (ReactJS), это джуниор Frontend Dev? Или такие переходы не практикуются?
Петр: С точки зрения работодателя специалист оценивается по тому вкладу, который он вносит в выполнение задач на той или иной позиции.
Денис: Если с фронтом не знаком, то даже скорее intern. Но он довольно быстро вырастет. Во фронтенде есть специфические навыки, которых у джависта по умолчанию нет. Верстка, работа с браузерами, джаваскрипт, фреймворки, сборка ресурсов и т. д.
Иван: У сеньора Java переход в fullstack обычно будет плавным: постепенно наращивая сложность задач во frontend можно довольно неплохо прокачаться, а уже потом выбирать подходящее соотношение фронта и бэка.
Перешел в разработку из криминалистики. Мой стек технологий: php, mysql, js. Есть мои web-сервисы на Yii2, WordPress. Возраст — 43 года. В больших компаниях такие специалисты могут найти свое место?
Денис: Почему бы и нет.
Иван: Чаще всего, большие компании — это не про WordPress. Но есть много систем на PHP, которые нужно развивать и поддерживать. Из криминалистики я бы посоветовал рассмотреть карьерный трек в области forensic, но там больше упор на Python и различные БД — тут можно стать очень ценным специалистом.
О карьере
Как происходит карьерное развитие специалиста на рабочем месте?
Петр: В РТЛабс есть все ресурсы для повышения квалификации: внутренние курсы, внешнее обучение. Если ты регулярно выполняешь KPI, проявляешь инициативу в работе, растешь как специалист и мы видим, что ты способен на большее — продвижение по карьерной лестнице не заставит себя ждать.
Сергей: В Лиге дважды в год проходит сессия профессионального развития, на которой собирается сотрудник с руководителем и совместно оценивают результаты работы за прошедший период, составляют индивидуальный план развития и определяют цели на будущее.
В зависимости от достижения целей, которые для себя определяет сотрудник вместе с руководителем, происходит переоценка.
Иван: На каждом уровне специалиста нужно стараться решать более сложные задачи, выходить из зоны комфорта в тех областях, которые ты недостаточно хорошо знаешь — тогда происходит быстрое развитие. А задач для этого у нас хватает + есть те, кто могут поделиться экспертизой и сделать ревью вашего кода.
Владимир: В Nexign существует система карьерных лестниц, которая помогает сделать процесс развития сотрудника проще и удобнее. Начиная планирование своего развития, каждый может выбрать карьерный трек и увидеть, какие конкретно шаги предстоит пройти и какие навыки приобрести.
Карьерный трек похож на чек-лист — выполняя определенные действия, вы достигаете новых уровней и двигаетесь вперед по треку. Еще один плюс системы — наличие виртуальных должностей. Карьерный путь от одной позиции до другой можно разбить на мелкие промежуточные уровни, гораздо более удобные для получения постоянного результата.
Что делать после того как стал сеньором?
Петр: Можно дальше развиваться вглубь специальности, пойти в архитектуру, либо избрать менеджерский путь — стать лидом и начать делиться знаниями со своими подопечными.
Александр: Продолжать развиваться и смотреть на смежные области: архитектура и менеджмент. Попробовать развиваться в них.
Денис: Становиться лидом. Понять, куда интереснее — в техническое лидерство или менеджмент — и расти дальше. Ну или не расти никуда, если не хочется.
Иван: Можно оставаться чисто техническим специалистом, ведь нет предела совершенству: мы планируем даже выделить таких спецов в отдельный уровень — principal developer. Второй вариант — расти в тимлида, заниматься people management. И, наконец, всегда есть опция развиваться в сторону архитектуры: можно стать solution архитектором, enterprise архитектором или архитектором данных, например.
Владимир: Каждый специалист может рассматривать для себя как вертикальное, так и горизонтальное развитие. Некоторые сеньоры переходят в архитектуру, а другие предпочитают чаще использовать свои soft skills и двигаются в сторону менеджмента и управления командами.
Как оценивается труд в компаниях? Почему очень часто руководство обращает внимание на новых клиентов и расширение базы, но забывает о потребностях старых. Почему зачастую у специалистов, которые работают с новыми клиентами, вознаграждение в разы больше, чем у специалистов, которые работают с существующими?
Владимир: Nexign поставляет довольно большие и сложные системы и в связи с этим мы продолжаем сотрудничество с нашими крупными клиентами на протяжении многих лет. Как правило, BSS-проекты довольно длительные и после внедрения, мы продолжаем взаимодействие уже как команда сопровождения. Говоря о вознаграждении, можно отметить, что на уровне компании существует прозрачная система премирования, которая привязана к выполнению личных целей сотрудников.
Интересно услышать, есть ли менторинг в какой либо форме?
Петр: Да. При трудоустройстве каждому новому сотруднику назначается ментор, который погружает его в процесс работы и детали проекта. Спустя полгода работы сотрудник сам может стать ментором для новичка.
Александр: На первых этапах — безусловно. В дальнейшем — по мере роста и необходимости. В любом случае, по мере решения задач будут комментарии от коллег на Code Review.
Иван: У нас есть менторинг, и сейчас он в основном реализуется в рамках ежегодно составляемого для каждого сотрудника ИПР (индивидуальный план развития), т.к. мы заинтересованы в постоянном развитии наших специалистов, как и они сами. А еще, все образовательные решения в нашем корпоративном университете строятся на принципе «лидеры учат лидеров», то есть в преподавание вовлекаются руководители и эксперты компании, которые и передают свой опыт.
Владимир: В Nexign система менторинга делится на два потока. В каждой команде есть технический куратор, который помогает адаптироваться в рамках нового проекта, к нему всегда можно прийти с вопросами по технологиям и продукту. Софт скилы можно развивать в рамках IDP — индивидуального плана развития, в рамках проекта ты можешь выбрать любого руководителя как наставника.
О технологиях и трендах
Какую роль играет бэкенд в разработке продукта? Можно ли его назвать основой продукта, или же он обычная составляющая?
Петр: Все зависит от индивидуальных предпочтений каждого человека. Мне, как инженеру, больше нравятся механизмы. Сердце любой машины — это двигатель, так бэкенд — это сердце любой системы. Но продуктом система станет только при совокупной работе всех специалистов, задействованных в производстве.
Денис: Странный вопрос. Продукта не будет без бэкенда, равно как и без фронтенда. Это основа логики продукта.
Иван: Бэкенд в наших продуктах чаще наиболее сложная и ответственная часть, хотя бывают проекты с простым бэком, но сложной визуализацией.
Владимир: У нас есть разные продукты: только бэкенд, есть только фронтенд или комбо бэкенд и фронтэнд. Нельзя рассматривать продукт по отдельности. Любое решение — это комплекс функционального бэка и удобного для пользователя интерфейса.
Востребовано ли сейчас знание двух языков программирования, например, Python и Java? Стоит ли знать и то и другое, если возможности языков схожи?
Петр: Python хорошо подходит для data-аналитики или написания простых утилит. Java используется в энтерпрайз-решениях. Все зависит от конкретных задач и конкретной команды.
Денис: Лишним не будет, как минимум — это полезно для кругозора. Но гарантии, что это будет применяться, совершенно нет.
Иван: В ряде проектов у нас как раз сочетаются Java и Python: Java применяется для разработки основной системы, а Python для задач, связанных с машинным обучением, data science и т.п. Так что такое сочетание часто востребовано.
Владимир: В моей команде разработка идёт в основном на Java. Однажды возникла специфическая производственная задача, под которую я нашел среди своих сотрудников одного со знанием Python. Если у вас есть знание нескольких языков, то вы сможете переходить с одного продукта на другой и там писать на другом языке. А ещё многие языки идут рядом со скриптовыми, поэтому рекомендую изучать их в комбинациях: Java и Groovy, С++ и Lua, PL и SQL.
Что у вас с наймом после 21 сентября, какие планы на будущий год, будете увеличивать/уменьшать наем или все останется на прежнем уровне?
Петр: Мы не снижаем обороты по найму и планируем расширение.
Александр: Мы активно растем и планируем расти дальше.
Владимир: Могу ответить на примере своей команды — у нас продолжается набор. Nexign — аккредитованная IT-компания, мы продолжаем работу по проектам наших клиентов, поэтому по мере появления бизнес-потребностей открываются и новые вакансии.
Какие технологии вы считаете перспективными в ближайшее время?
Иван: На многих проектах мы активно применяем реактивный подход, это один из векторов развития. Также возрастающая нагрузка межсервисного взаимодействия будет все чаще диктовать необходимость применения таких подходов как gRPC, например. Но мы стараемся быть осмотрительными в плане применения новых технологий, т.к. они должны быть достаточно стабильными для промышленного применения.
Владимир: Вопрос очень широкий, отвечу применительно Java. Наверное, микросервисы — это перспективный для бизнеса подход, поэтому научитесь заворачивать свои приложения в k8s. Для создания сервисов удобнее использовать хорошие проверенные решения с большим комьюнити, поэтому приглядитесь в сторону таких фреймворков как Springboot. Что за приложение не работает с базами данных? Писать нативные запросы в наше время уже дурной тон, поэтому смотрите какие есть ORM. И, конечно, следите за другими новыми технологиями и применяйте их в зависимости от специфики ваших задач.
Насколько по вашему мнению вероятно то, что в ближайшем будущем JavaEE будет использоваться только для монолитных приложений, а Spring boot для микросервисной архитектуры?
Иван: На Spring можно также успешно делать монолиты. Тут дело во многом в моде и традиции в конкретной отрасли или компании. Мы, например, работаем исключительно со Spring.
Владимир: Это зависит от специфики ваших задач. И монолит и микросервисы имеют место быть.
Ведётся ли в данных компаниях разработка на ЯП Java? Какие технологии сейчас наиболее востребованы?
Иван: Java и Spring boot — наша целевая технология для бэкенда.
Как много внимания сейчас уделяется ИБ в бэкенд-разработке, используют ли Sast и фаззинг для поиска уязвимостей?
Владимир: В Nexign вопросам ИБ всегда уделялось большое внимание. Наши решения работают с критически важной инфраструктурой, в том числе с персональными данными. Поэтому мы на регулярной основе используем Sast.
Какой сейчас самый популярный и востребованный стек?
Иван: Java — это, пожалуй, навсегда, а сейчас это почти всегда Spring. Но для ряда задач куда лучше подходит тот же Python или Go, в этом плюс микросервисной парадигмы, когда каждый сервис может быть изолированно реализован на подходящем языке. Тут главное, чтобы каждый выбор был оправданным, не допускать совсем уж «зоопарка» разных технологий.
Личные вопросы
Расскажите, какой проект в вашей практике вам запомнился больше всего и почему?
Петр: В предыдущей компании мы делали систему для автоматизации подачи заявок в МФЦ и электронную очередь. Я приехал в один из первых Центров, где была внедрена наша система, чтобы посмотреть, как всё работает. В МФЦ ко мне подошел дедушка и попросил помочь разобраться с бумажками, которые ему выдали. Я ответил, что ничего делать не нужно, только прийти в назначенный срок, который был указан на бланке. Дедушка растрогался, вспоминая, что раньше ему нужно было съездить в 5 разных мест для получения услуги, а теперь всё легко и быстро. В такие моменты понимаешь, что ты сделал действительно что-то полезное.
Работая в РТЛабс, мы можем делать проще жизнь людей всей страны, а не одного региона.
Иван: Наиболее запомнилась та программа проектов, которой мы занимаемся сейчас, а особенно — производственные системы. Когда видишь процесс производства стали вживую — дух захватывает. И понимаешь, что за json-чиками и математическими моделями скрываются гигантские ковши расплавленной стали, поезда, которые ездят по цехам и другие потрясающие вещи. Подробнее о которых можно почитать в нашем блоге.
Владимир: Мне запомнились 3 проекта:
Первым был MNP (mobile number portability, переносимость телефонных номеров). Интересный был, потому что первый раз познакомился и плотно поработал с Rabbit MQ. Это был абсолютно новый процесс, мы интегрировались с внешней системой посредством API. Также работали со множеством неизвестностей, что добавляло интереса.
Второй — в процессе преобразования нашего биллингового продукта, мы создали бэкенд-надстройку по инстанцированию продуктовых предложений — ССM (Customer care management). Самым важным было соблюсти международные стандарты TM Forum. На этом этапе я пробовал большое количество новых технологий, так как у команды был полный «карт-бланш» от руководства.
А из последних проектов — универсальный цифровой биллинг (UDB). Я считаю это новое решение очень перспективным, мы используем передовые технологии и чувствуем себя первопроходцами. UDB базируется на микросервисной архитектуре, отличается масштабируемостью, гибкостью и быстродействием. Продукт создан в соответствии с Open Digital Architecture, полностью отвечает SID-модели и интегрируется с другими системами через Open API.
Начальник отдела разработки пообещал сделать фичу до конца недели, за день до сдачи его подчинённые докладывают ему, что пробовали её на больших нагрузках и она может положить проект. От фичи нужно отказываться, но, положившись на обещание, менеджеры уже разослали клиентам превью. Что бы вы сделали в такой ситуации?
Петр: Классический вопрос на собеседовании руководителей проекта. Так как исполнение наших задач решает судьбу людей в масштабах страны, всё зависит от критичности данной фичи. Есть масса технических решений, которые можно применить для быстрого фикса подобной проблемы, чтобы уложиться в срок. Если проблема глобальная или сама фича не настолько критичная, я бы настаивал на переносе запуска.
Денис: Вводных недостаточно. Если большой нагрузки не будет первое время, то можно спокойно выкатывать и оперативно дотачивать. Если планируется нагрузка сразу — надо понять, на что влияет отказ от фичи или релиз в некорректном состоянии. Если можно малой кровью отложить релиз — отложим, если клиентам важно видеть решение хоть в каком-то виде — тогда лучше выкатывать.
Можно организовать троттлинг или ставить запросы клиентов в очередь, тогда все клиенты получат доступ к фиче, но просто время доступа увеличится. Либо выделить пул приоритетных клиентов, для которых доступ будет в обязательном порядке работать в соответствии с sla, а для других — хоть как-то. Или релизить с фича-флагом. В общем, всё зависит от конкретной ситуации и рисков.
Иван: Классический вопрос с собеседования. В реальности тут может быть несколько вариантов, в зависимости от деталей. Бывало такое, что приходилось отказываться от фичи, а бывало, что и запускали, минимизировав риски. Чтобы не лег проект, можно закрыть ее каким-нибудь Circuit breaker. Хотя это странный проект, если там есть нагрузка и этот паттерн не применялся изначально.
Владимир: У нас в компании есть определённые процессы, одним из этапов является нагрузочное тестирование. Данный этап является обязательным до ввода решения в эксплуатацию.
Также есть такое решение для тестирования, как «канарейка». Оно используется для постепенного ввода решений в критически важную инфраструктуру. Мы наблюдаем за стабильностью системы, при положительных результатах продолжаем переводить пользователей.
Что лично вам нравится в вашей работе? В компании?
Петр: В первую очередь люди, команда и атмосфера, которую мы создаем на работе. Мне нравится, что в компании видят и отмечают достижения. Мне близки продукты, которые мы развиваем. Мы работаем на современном стеке технологий и используем гибкие подходы. А еще я горжусь тем, что участвую в запуске важных для всей страны сервисов.
Александр: Мне нравятся интересные задачи и команда заинтересованных профессионалов, с которыми можно обсудить не только задачи, но и разные технологические темы, тенденции и новости.
Иван: В первую очередь — это люди. У нас команда настоящих профессионалов и отличные отношения в коллективе. В остальном, круто работать в промышленной компании, которая делает реальную продукцию, да еще такую высокотехнологичную. Ну и в области разработки у нас постоянно стоят новые интересные вызовы, которые мы решаем новейшими технологиями.
Владимир: За 10 лет работы в компании я попробовал себя в нескольких направлениях, развивался как горизонтально, так и вертикально. В Nexign я могу влиять на продукт, которым занимаюсь, и делать крутые вещи с настоящими профессионалами.
Что почитать
Список книг, ссылок, статей, подкастов, курсов, всего остального — что обязательно нужно прочитать бэкендеру
Александр Захаров
Руководство по стандартной библиотеке языка разработки, выбранного инженером.
MDN, если работа связана с web.
Э. Таненбаум, Д. Уэзеролл «Компьютерные сети».
Что-нибудь по базам данных (у O'Reilly есть неплохие книги).
Алгоритмы. Если есть время, то «Искусство программирования» Д. Кнута, если нет — что-то менее фундаментальное.
Иван Белов
Computer Science Distilled: Learn the Art of Solving Computational Problems, Wladston Ferreira Filho
Core Java, Horstmann Cay S.
Pro Spring 5, Iuliana Cosmina, Rob Harrop, Chris Schaefer
Effective Java, Joshua Bloch
Так же из несильно раскрученного могу порекомендовать конференции Podlodka Crew и курсы Петра Арсентьева по Java.
Владимир Овчаренко
Советую регулярно читать Хабр и изучать рекомендуемые в статьях ресурсы. Авторы часто указывают источники информации и ссылки на полезные материалы. Составляйте свой список подписок по интересам, далее полезные материалы будут выдаваться в рекомендованных.
AstarothAst
Засмеялся.