Без каких знаний не обойтись бэкендеру в 2024 году
Узнали у middle и senior бэкендеров, что нужно изучать в 2024 году, чтобы оставаться востребованным специалистом.
23К открытий42К показов
Изучать бэкенд с нуля и даже актуализировать уже имеющиеся знания и навыки — задачка не из простых. Мало того, что основное время уходит на работу и дом, нужно постоянно следить за трендами разработки, чтобы оставаться востребованным специалистом.
Выбрать стек для обучения тоже непросто: языков, технологий, библиотек и фреймворков столько, что глаза разбегаются.
Мы попросили middle и senior бэкендеров ответить на вопросы:
- Что должен был уметь бэкендер в 2023 году?
- Какие тренды во бэкенде в 2024 году? Что нужно изучить, чтобы прокачаться?
- Специалистов какого стека не хватает на рынке?
Вот, что они ответили.
Вы изучаете новые технологии, если они становятся востребованными на рынке?
Да, учу новые языки, работаю с новыми библиотеками и фреймворками, даже если моя основная работа этого не требует
Изредка: обучаюсь новому только в том случае, если чувствую, что знания гипотетически могут пригодиться мне в работе
Нет, давно не учил ничего нового, да и учусь только в том случае, если этого требует работодатель
Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики.
Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.
Что должен был уметь бэкендер в 2023 году?
Константин Тельной
Senior Backend Developer
Идеальный стек в 2023 году для бэкэнд программиста следующий:
- Строго типизированный язык Go или Java;
- Умение работать с каким-либо из веб-серверов для выбранного языка, например, Echo/Gin для Go или Tomcat/Jetty для Java;
- Базы данных – SQL (Postgres) и/или нереляционная база данных – MongoDB/DynamoDb/…
- Кэши, например, Redis;
- Очереди, Kafka, SQS;
- Облачные провайдеры – Amazon, Azure, Google Cloud;
- Также будет полезно, если есть опыт работы с слабо-типизированными языками, так как часто приходится работать с ситуациями, когда быстрое решение было написано на NodeJS или Python, а новые сервисы пишутся уже на Go или Java;
- Метрики, знание как работают и умение работать со стандартными пакетами вроде prometheus;
- Принципы и виды тестирования – юнит, компонентные, и интеграционные тесты.
Еще одним немаловажным аспектом является знание верхнеуровневой архитектуры для того, чтобы быстро разбираться, как взаимодействуют сервисы, какой поток данных и гарантий доставки, сценариев отказа системы в целом. Здесь полезно понимать, что такое CAP теорема и о чем она, знать про optimistic и pessimistic locking, за счет чего будет масштабироваться сервис. Чем более опытен разработчик, тем вероятнее прохождение еще и интервью на дизайн систем.
Сохраняется спрос на Go разработчиков. Постепенно снижается спрос на разработку микросервисов – всё больше компаний тяготеют к монолитизации для уменьшения издержек на поддержку и инфраструктуру. Базы данных всё так же остаются актуальны. Из протоколов общения между сервисами становится всё более популярным GRPC.
Ответ оказался полезен?
Да
Нет
Илья Стешков
Разработчик информационных систем, OZON FinTech
Вот и прошел 2023 год, ставший для кого-то первым годом, проведенным в роли “IT-шника”, а кто-то в этом году повысил свой грейд (уровень) и перешел на новые позиции а может и в новые компании. Естественно, все вышеперечисленное невозможно без упорного труда и постоянного совершенствования своих навыков.
Те кто только начал свою карьеру разработчика уже проделали большую работу, за что им мое почтение, и мне не понаслышке известно, что старт требует много усилий, времени и терпения. Но все мы рано или поздно сталкиваемся с неким плато, когда твои первые задачи перестают казаться тебе чем-то нереально сложным а к задачам старших коллег ты не знаешь как подступиться и многие новички (уровни intern/junior) сегодня задаются вопросом “Как мне продвинуться дальше по грейду? Что мне изучать чтобы открыть для себя этот новый горизонт?”
Когда мы затрагиваем переход из грейда middle в senior то тут все проще, речь идет о примерно таких же технических знаниях только с большей ответственностью, ведь senior это тоже middle, только с большим опытом реализации бизнес задач и он способен брать на себя ответственность за принятие глобальных, архитектурных решений, правильную постановку задач, декомпозицию системы и тд. Но в случае с intern/junior, речь как раз таки о совершенствовании навыков применения технологий.
Давайте заглянем в стэк. Говорить о конкретном стэке не совсем уместно, так как он может со временем меняться как и компания где вы работаете. Но если говорить об основном стэке среднестатистического back-end разработчика то сегодня это:
ЯП:
- Java;
- Golang;
- Python;
- PHP;
- C#.
БД:
- Postgres;
- MySQL;
- Oracle.
Кэши:
- Redis.
Управление событиями системы:
- RabbitMQ;
- Kafka.
CI/CD:
- GitLab/Hub pipelines;
- Docker;
- K8s (тут на самом деле нет необходимости углубляться, но понимать верхнеуровнево что такое Node, а что Pod стоит).
Также некоторые ЯП не могут обойтись без фреймворков, например Java – Spring, Python – Django, PHP – Laravel. В Golang тоже есть, но их я не встречал в проде ни разу за 3,5 года работы с этим языком.
Итак, на текущем уровне, intern/junior, разработчик должен владеть:
- основными навыками написания кода (типы, переменные, функции, объекты);
- знать основные идиоматические конструкции того языка который он выбрал
- уметь в SQL-запросы;
- написать юнит-тесты;
- правильно пушнуть код в репу и не запутаться в ветках;
- уметь пользоваться хотя бы одним фреймворком своего ЯП.
Ответ оказался полезен?
Новый текст вопроса
Новый текст вопроса
Константин Леладзе
CTO продукта Violet
Идеальный стек бэкенд-разработчика в 2023 году включает в себя следующие технологии.
Языки программирования
- JavaScript/TypeScript (Node.js): Для разработки серверной части приложений.
- Python: Для разработки веб-приложений, обработки данных, микросервисов и искусственного интеллекта.
- Java/Kotlin: Для крупных приложений и масштабируемых сервисов.
- Go: Используется для создания высокопроизводительных систем и сервисов.
Фреймворки и библиотеки
- Nest.js (Node.js): Для построения быстрых и масштабируемых веб-приложений.
- Django (Python): Для быстрой разработки и обеспечения безопасности веб-приложений.
- Spring Boot (Java/Kotlin): Для создания эффективных и надежных приложений.
СУБД (Системы управления базами данных)
- MongoDB: Для работы с данными в формате JSON и NoSQL базами данных.
- PostgreSQL: Для реляционных баз данных, обеспечивающих согласованность и надежность данных.
- Redis: Для кэширования данных и повышения производительности.
Контейнеризация и оркестрация
- Docker: Для контейнеризации приложений и обеспечения их переносимости.
- Kubernetes: Для управления и оркестрации контейнеризированными приложениями в масштабе.
Архитектурные паттерны
- Микросервисная архитектура: Для создания модульных и легко масштабируемых систем
- Git: Для контроля версий кода.
- Jira, Trello или аналогичные сервисы: Для управления задачами и проектами.
Но хочется отметить, что выбор технологий зависит от конкретных требований проекта и предпочтений команды разработчиков.
Ответ оказался полезен?
Да
Нет
Максим Няголов
Руководитель студии разработки мобильных приложений, веб-сервисов и сервисов в области ИИ и робототехники в компании DigitMind Technologies LLC
В 2023 году для бэкенд-разработчиков было критически важно обладать глубокими знаниями в технологиях, таких как Go (Golang), PHP, Python, JavaScript, и Ruby.
Go выделялся благодаря своей скорости и простоте использования, в то время как PHP сохранял свою популярность благодаря широкому распространению и новым обновлениям.
Python продолжал оставаться востребованным за свою универсальность и простоту синтаксиса, а JavaScript и Ruby оставались популярными за их гибкость и эффективность в веб-разработке.
Важными были также умения работы с базами данных, особенно с MySQL и PostgreSQL, а также понимание RESTful API и компетенции в области кибербезопасности.
Ответ оказался полезен?
Да
Нет
Какие тренды во бэкенде в 2024 году? Что нужно изучить, чтобы прокачаться?
Константин Тельной
Senior Backend Developer
В тренде распределенные системы. Event-driven подход, а вместе с ним работа через очереди и деление систем на микро-сервисы, NoSQL базы данных. Так же в тренде применение AI – от векторных баз данных вроде Quadrant, до интеграции GPT API для самых различных задач.
Ответ оказался полезен?
Да
Нет
Александр Захаров
Руководитель группы дирекции разработки компании-разработчика ПО МойОфис
Сохраняется спрос на Go разработчиков. Постепенно снижается спрос на разработку микросервисов – всё больше компаний тяготеют к монолитизации для уменьшения издержек на поддержку и инфраструктуру. Базы данных всё так же остаются актуальны. Из протоколов общения между сервисами становится всё более популярным GRPC.
Ответ оказался полезен?
Да
Нет
Вячеслав Аксёнов
Бэкенд Java/Kotlin разработчик с опытом 5+ лет
Меня зовут Вячеслав Аксёнов, я бэкенд Java/Kotlin разработчик с опытом 5+ лет. Я отлично помню какая ситуация была на рынке в 2018 году и хорошо вижу, какая она сейчас.
Для того, чтобы понять какие навыки необходимы для начинающего и продвинутого бэкенд разработчика сейчас, необходимо понять, с чем вы будете работать.
Как правило, Java/Kotlin бэкенд разработчику приходится иметь дело с распределенными системами, в которых есть большое количество бизнес логики, базы данных, брокеры сообщений и выстраивание взаимодействия с фронтенд системами.
Давайте пойдем по-порядку.
Языки программирования
Прямо сейчас лидером в коммерческой крупной разработке является Java версии 1.8 и выше. Также видно, что крупные “модные” компании типа Ozon и Avito полагаются на GoLang. В компаниях поменьше очень много используется Python, NodeJS. Также в каких-то старых системах встречается PHP. Нет смысла пытаться ухватить все, если бы я сейчас начинал свой путь в разработке, я бы фокусировался на Java, либо Go как на самых перспективных вариантах.
Работа с базами данных
Опыт работы с различными системами управления базами данных (СУБД), такими как MySQL, PostgreSQL, MongoDB, и умение проектировать, оптимизировать и поддерживать базы данных. Как правило, достаточно знаний синтаксиса PostgreSQL или Oracle. Уметь писать SELECT/UPDATE/INSERT запросы и описывать структуры таблиц.
API и веб-сервисы
Создание и поддержка API для обмена данными между клиентской и серверной частями приложения, а также интеграция с внешними сервисами. Как бэкенд рахработчику вам предстоит проектировать API, который будет использоваться любыми потребителями – как фронтэнд, так и бэкенд. А также вам будет необходимо уметь их реализовывать на языке, который вы выбрали. В сфере Java/Kotlin бесспорным стандартом индустрии является фреймворк Spring.
Архитектура приложений
Понимание принципов построения масштабируемых и эффективных архитектур приложений, таких как микросервисы, серверы приложений и т.д. Для применения этих знаний в работе, вы будете уже как минимум middle/senior уровня. Но даже на начинающем этапе не будет лишним собирать информацию.
Безопасность
Знание основных принципов безопасности при работе с данными пользователей, включая хранение паролей, защиту от атак и шифрование данных. В целом, многие из этих правил для бэкенд разработки одинаковые и не требуют много внимания для соблюдения. Но всегда будет полезно изучить как не допускать базовых SQL Injection уязвимостей.
Работа с CI/CD платформами
Знание основ CI/CD или то, как запустить свое приложение и какие системы используются для автоматизации этих процессов. В подавляющем большинстве сейчас в силу исторического наследия, используется Jenkins, в более новых проектах стараются использовать GitLab CI.
Также помимо так называемых Hard скилов, разработчику требуется знать и окружающую кухню для того, чтобы уверенно чувствовать себя в работе.
Версионный контроль
Опыт использования систем контроля версий, таких как Git, для управления кодовой базой и совместной разработки. В качестве стандарта для коммерческой разработки сейчас используется GitLab.
Тестирование
Навыки написания и автоматизации тестов для обеспечения надежности и стабильности серверной части приложения. Это касается как написаний unit и интеграционных тестов кодом, так и для базовой ручной проверки своего приложения. Имея эти навыки можно проще понимать то, как работают QA инженеры, а также Automated QA инженеры.
Коммуникация и совместная работа
Умение эффективно взаимодействовать с другими членами команды разработки, включая фронтенд-разработчиков, дизайнеров и тестировщиков. Величайшее заблуждение – что бэкенд разработчик обязательно сидит в углу, пишет код и ни с кем не общается. На самом деле, вы такой же член команды, как и все остальные. Вам необходимо уметь слышать других людей, уметь доносить свои мысли, иметь запас терпения и вежливости.
Понимание основных принципов разработки ПО
Знание методологий разработки, таких как Agile или Scrum, и умение следовать лучшим практикам программирования. Опять же, классикой для планирования задач сейчас является Jira+Confluence, в компаниях поменьше иногда Trello. Но любая уважающая себя компания выстраивает понятные и прозрачные процессы, а вам как бэкенд разработчику, нужно уметь этими инструментами пользоваться.
Бэкенд-разработчики играют ключевую роль в создании устойчивых и эффективных веб-приложений, обеспечивая их надежную работу на серверной стороне. В современном мире технологий, где цифровые продукты становятся неотъемлемой частью повседневной жизни, этот профессионал обладает широким спектром навыков и обязанностей.
Бэкенд-разработчики – это не только технические специалисты, но и ключевые участники команд, создающих инновационные и удобные цифровые продукты.
С учетом быстрого развития технологий и постоянных изменений в требованиях рынка, бэкенд-разработчики продолжают совершенствовать свои навыки и следить за последними тенденциями в индустрии. Их роль становится все более важной для обеспечения высокой производительности и безопасности веб-приложений, а их вклад остается неотъемлемой частью успешного цифрового мира.
Илья Стешков
Разработчик информационных систем, OZON FinTech
По сути, продвижение к следующему уровню это процесс плавный, и он включает в себя постепенное углубление в то чем вы каждый день пользуетесь. Например, вы пишете SQL запрос, да он может работать и выполнять то, что требуется в задаче, но потом возникает ситуация что под большой нагрузкой он работает недопустимо медленно, и тут вы погружаетесь в построение правильного индекса в БД, read-through cache и прочие оптимизации. То есть, сталкиваясь с проблемами и находя решения вы обретаете опыт, попутно погружаясь в технологии с которыми уже знакомы.
Конечно, гораздо лучше оказаться в ситуации, когда возникающая угроза работоспособности не вызывает у вас панику, вы уже где-то читали об этом, или даже пробовали в pet-проекте. Поэтому я рекомендую заниматься развитием постоянно. Например, выделяя даже по 30-50 мин в день на чтение книги Мартина Клепмана про высоконагруженные приложения или Стива Макконнела про совершенный код, вы существенно продвинетесь вперед как специалист в своем деле. Клепман даст вам понимание о принципах и нюансах построения крупных распределенных систем, научит решать проблемы согласованности данных и как взаимодействуют отдельные компоненты в таких системах. Макконнелл научит правильно мыслить во время написания кода, выстроить определенный шаблон написания хорошего и тестируемого кода. Это будет хорошим фундаментом.
По углублению в тот ЯП которым вы пользуетесь и в его эко-систему, что-то кроме официальной документации предложить сложно, читать хабр тоже полезно, но при этом не забывать проверять информацию в официальной доке, не просто читая статью “по диагонали”, но пробуя написать что-то, используя то что вы узнали из нее.
Также сегодня сильно продвигается микросервисная архитектура и Domain Driven Development. В этой связи, достаточным ресурсом для понимания будет Microservice Architecture – кажется там есть все, для того чтобы узнать как это делается.
Кстати не стоит забывать и о коммуникативных навыках, чем дальше вы хотите расти, тем больше вам необходимо общаться в коллективе, взаимодействовать с другими командами, правильно выстраивать процессы, уточнять бизнес требования к продукту и тд. Тут мне очень помогла, в свое время, книга Роберта Мартина “Идеальный программист”. Она не о технических знаниях, но вкладывает понимание обобщенного образа того самого идеального программиста, который умеет говорить нет когда это нужно, работать в команде и быть эффективным в быстро меняющейся среде.
Ответ оказался полезен?
Да
Нет
Константин Леладзе
CTO продукта Violet
Тренд 1 — Микросервисная архитектура
Тенденция к созданию масштабируемых, гибких и легко обновляемых систем на основе микросервисов продолжает развиваться. Разработчиков интересуют инструменты для управления и мониторинга микросервисных архитектур.
Тренд 2 — Serverless Computing
Serverless computing, или “бессерверное” вычисление — модель облачных вычислений, в которой разработчики могут выполнять отдельные функции или части кода, не управляя инфраструктурой серверов. В этой парадигме пользователи оплачивают только фактически используемые вычислительные ресурсы во время выполнения своих функций, вместо поддержки постоянной доступности серверов.
Тренд 3 — Графовые базы данных
Для эффективного представления и обработки сложных связей и зависимостей в данных. Изучение технологий, таких как GraphQL, также может быть актуальным.
Тренд 4 — Работа с большими данными и аналитика
В связи с увеличением объемов данных, навыки работы с большими данными и инструментами аналитики продолжают оставаться востребованными.
Тренд 5 — Контейнеризация и оркестрация
Использование контейнеров (например, Docker) и оркестраторов (например, Kubernetes) остается важным аспектом для развертывания и масштабирования приложений.
Ответ оказался полезен?
Да
Нет
Максим Няголов
Руководитель студии разработки мобильных приложений, веб-сервисов и сервисов в области ИИ и робототехники в компании DigitMind Technologies LLC
В 2024 году мы наблюдаем акцент на развитии технологий метавселенной, интеграции AI и ML в бэкенд, а также использовании edge computing и блокчейн технологий. Особенно выделяются разработчики, владеющие NestJS и TypeScript, что позволяет обеспечить модульную архитектуру и строгую типизацию для повышения эффективности и надежности в разработке.
Ответ оказался полезен?
Да
Нет
Специалистов какого стека не хватает на рынке?
Константин Тельной
Senior Backend Developer
В данный момент много вакансий на Go и Java.
На Golang активно переписываются множество проектов в различных стартапах а так же разрабатываются новые проекты с нуля.
Java отлично представлена в FinTech секторе – банках, страховых компаниях, торговле, многих интеграторах и так же в целом больших компаниях.
Ответ оказался полезен?
Да
Нет
Александр Захаров
Руководитель группы дирекции разработки компании-разработчика ПО МойОфис
Кажется, что не хватает всех. : )
Если вы сейчас выбираете стек, я бы советовал идти в Go – быстрый вход и большое количество вакансий.
Но если у вас уже есть экспертиза и хочется чего-то нового, то я бы посмотрел в сторону Rust – в долгосрочной перспективе он может оказаться хорошей ставкой.
Ответ оказался полезен?
Да
Нет
Илья Стешков
Разработчик информационных систем, OZON FinTech
Сегодня на рынке очень не хватает специалистов именно такого стека:
- Понимание инструментов (ЯП, БД) и почему именно их используешь
- Умение писать читаемый и структурированный код который можно покрыть тестами
- Понимание построения распределенных систем (микро-сервисной архитектуры)
- Умение понять задачу до того как приступите к ее решению, уточнять, задавать вопросы, быть легким в коммуникации.
Кто-то может быть ждет что я напишу набор инструментов который надо знать чтобы продвинуться, но мое мнение – разработчик это не набор инструментов, а набор навыков и системное мышление которые позволят прийти к решению задачи любым подходящим набором инструментов.
И конечно же я не могу не порекомендовать просто быть активным в работе, брать задачи за которые еще не брался, не бояться предлагать решения, даже если они не совсем верные, после обсуждения со старшими коллегами они превратятся в верные а вы сможете принять опыт старших в процессе обсуждения. Будьте открыты и не бойтесь совершать ошибки – это ведь часть пути. Если хотите иметь то чего никогда не имели (грейд выше) – делайте то чего никогда не делали.
И всегда помните – любая большая и сложная система, это множество маленьких простых блоков правильно собранных вместе.
Ответ оказался полезен?
Да
Нет
Константин Леладзе
CTO продукта Violet
Я бы выделил:
- Go (Golang): язык программирования Go становится все более популярным в разработке высокопроизводительных и эффективных приложений. Он хорошо подходит для создания микросервисов и обработки параллельных задач.
- Rust: Rust получает внимание благодаря своей производительности и высокой степени безопасности при работе с системным уровнем кодом. Он может быть использован для разработки высоконагруженных приложений.
- Kotlin (с Spring Boot): Kotlin, как язык, и Spring Boot, как фреймворк, становятся популярными в мире Java-разработки. Kotlin часто используется в сочетании с Spring Boot для разработки современных и надежных приложений.
Ответ оказался полезен?
Да
Нет
Максим Няголов
Руководитель студии разработки мобильных приложений, веб-сервисов и сервисов в области ИИ и робототехники в компании DigitMind Technologies LLC
Сейчас на рынке ощущается нехватка специалистов, владеющих современными технологиями, включая AI, ML, edge computing и блокчейн. Также востребованы навыки в области метавселенной и кибербезопасности. Особую ценность представляют разработчики с опытом работы с NestJS и TypeScript для создания масштабируемых веб-приложений.
Я бы порекомендовал бэкенд-разработчикам продолжать обучение и осваивать новые технологии. Важно уделять внимание изучению современных подходов в разработке, таких как работа с метавселенной, AI и ML, а также укреплять навыки в области кибербезопасности. Не менее важно освоить NestJS и TypeScript, которые открывают новые горизонты в разработке веб-приложений.
Ответ оказался полезен?
Да
Нет
Тимур Сырма
Ведущий инженер разработки, Газпромбанк
В последние годы микросервисы стали одним из актуальных архитектурных трендов в сфере разработки ПО. Amazon, Netflix, The Guardian, Twitter, PayPal, SoundCloud уже начали использовать микросервисные системы на облаке. В Китае Tencent, Baidu, Jingdong, Taobao, 360 Search также начали мигрировать к микросервисной архитектуре. Например, в системе WeChat от Tencent содержится более 3 000 микросервисов, размещенных на более чем 20 000 машинах. Онлайн-сервис системы Netflix использует более 500 микросервисов, вовлекая 5 миллиардов взаимодействий микросервисов в день. Каждая страница Amazon включает от 100 до 150 вызовов микросервисов.
Использование данного подхода предполагает построение приложений как набора маленьких, независимых сервисов, взаимодействующих друг с другом через API. Такой подход обеспечивает большую масштабируемость и гибкость, поскольку каждый сервис может быть разработан, развернут и управляем независимо.
С другой стороны, создание микросервисов позволяет легко перемещать приложения между разными средами, такими как разработка, тестирование и производство, без необходимости внесения изменений в код. Что в свою очередь увеличивает скорость и качество разработки, а также процесс доставки решения до клиента.
В совокупности это помогает улучшить эффективность разработки, так как позволяет более маленьким и направленным на определенные задачи командам работать независимо над различными частями приложения.
Таким образом можно сделать вывод, что контейнеризация и микросервисы стремительно набирают популярность как способ создания и развертывания программного обеспечения, и ожидается, что их применение будет продолжать расти в ближайшие годы.
IT специалистам я бы рекомендовал повышать компетенции развивать понимание различных технологий и инструментов для построения микросервисов. По-моему мнению знание следующих технологий поможет быть востребованным в 2024 году:
Контейнеризация
- Docker для создания, развертывания и управления контейнерами, где будут запускаться микросервисы.
- Kubernetes для оркестрации и управления контейнеризированными приложениями.
Коммуникация между сервисами
- RESTful API и GraphQL для определения интерфейсов, через которые микросервисы могут обмениваться данными.
- RabbitMQ, Kafka для обеспечения асинхронного взаимодействия и обмена сообщениями между микросервисами.
Мониторинг и отладка
- Prometheus, Grafana для мониторинга состояния и производительности микросервисов.
- Elasticsearch, Logstash, Kibana для централизованного сбора, хранения и анализа логов.
Ответ оказался полезен?
Да
Нет
Напоминаем, что вы можете задать свой вопрос экспертам, а мы соберём на него ответы, если он окажется интересным. Вопросы, которые уже задавались, можно найти в списке выпусков рубрики.
Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.
23К открытий42К показов