Как стать автором
Обновить
431.02
ГК ЛАНИТ
Ведущая многопрофильная группа ИТ-компаний в РФ

Будущее программирования: языки, зарплата и перспективы в 2024 году

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров75K

Почему программисты не боятся искусственного интеллекта? Потому что им достаточно сказать заказчику: «Объясните компьютеру, что именно вы хотите». Так шутили еще недавно, но теперь такие шутки становятся не такими веселыми, как раньше. Искусственный интеллект, воплощенный в ChatGPT, продолжает совершенствоваться, в то время как IT-сообщество делится на скептиков и энтузиастов. Одни верят, что программистам не нужно меняться, другие думают, что новые языки и подходы в разработке окончательно похоронят ручной кодинг. На недавней дискуссии Artezio мы собрали влиятельных разработчиков и попросили предсказать, как будет меняться программирование в будущем, какие языки обещают быть на волне успеха и как оставаться в тренде. 

Посмотреть полную версию дискуссии можно на Youtube-канале Artezio. Подпишись и сможешь принять участие в жарких дискуссиях.

«Мы наблюдаем тенденцию использования языков нового поколения» 

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

Петр Туголуков, корпоративный архитектор Xsolla: «Сейчас мы наблюдаем тенденцию к использованию все большего количества языков нового поколения. Множество компаний различного масштаба переходят на новые Python, Go, Kotlin, а в сфере мобильной разработки - на Swift. Языки C++, C, PHP, Java можно отнести к предыдущему поколению. 

В нашей компании также используются приложения на PHP и Go. Мы стремимся разрабатывать новые продукты на Go из-за его эффективности, низкого порога входа и развитой экосистемы, включающей множество пакетов для решения широкого круга задач, что подтверждается огромным количеством репозиториев на GitHub. Предполагаю, что эта тенденция сохранится и в 2024 году. 

Нельзя игнорировать влияние всемогущего JavaScript, который используется как на сервисной, так и на клиентской стороне, профессии разработчиков на JavaScript становятся всё более востребованными. Есть и исключения, связанные с разработкой устройств специфического назначения (Интернет вещей, игровые платформы), где использование Go и JavaScript возможно только при особом подходе».

Аналогичная ситуация складывается и в игровой индустрии. Однако, по словам Андрея Карсакова, руководителя разработки Nau Engine, традиционные языки (C++, C#), продолжают оставаться де-факто стандартами в этой области. 

«Мы наблюдаем значительный интерес к Python в сфере разработки инструментов для GameDev. Всё больше вспомогательных инструментов создаётся на Python, и у многих игровых движков теперь есть Python API. Кроме того, некоторые энтузиасты в GameDev углубляются в уникальные языки программирования для создания игровых движков, например, Rust, который использовался группой разработчиков для создания игрового движка (Bevy).

Как правило, мы склоняемся к использованию C++, который является установленным стандартом и позволяет гибко работать с различными платформами. Однако мы осознаем тенденцию к появлению множества новых и интересных языков, активно используемых в продакшене. Именно поэтому мы планируем создать систему, позволяющую энтузиастам легко интегрировать языки программирования по их выбору. Это критически важно для удобства разработчиков, ведь мы создаём инструмент именно для них. Мы хотим предоставить разработчикам свободу в выборе языка, а не ограничивать их использованием традиционных, “олдскульных” (C++). Поэтому, хотя наша база и состоит из C++, мы программный интерфейс нашего продукта будет доступен для более широкого спектра языков, в том числе и для новых», — сказал руководитель разработки российского игрового движка Nau Engine.

А вот Илья Стешков, разработчик информационных систем OZON, подтверждает мысль, что в последние три года стало заметно предпочтение Go для новых проектов, благодаря его совместимости с микросервисной архитектурой и удобством при работе со старыми монолитными системами. «По моим наблюдениям, Go сохранит свою популярность в области бэкенд-разработки», - говорит эксперт.

По словам Александра Тырышкина, Head of WMS AliExpress CIS, сейчас увеличивается интерес к JavaScript.

«Мы также рефакторим старые монолиты, но используем Java и Kotlin, придерживаясь современных стандартов микросервисной архитектуры и принципов DDD. Мне кажется, вопрос о тенденциях в программировании тесно связан с новостным контекстом. Например, Илон Маск может влиять на тенденции, подчеркивая значимость искусственного интеллекта, что приводит к повышенному интересу к определенным языкам программирования. Несмотря на мою преданность Java и Spring Framework, я должен признать, что сейчас тенденции склоняются в пользу JavaScript из-за его значительного влияния на множество фреймворков. JavaScript оказывается востребованным во фронтенде и мобильной разработке, например, в Flutter. AI, Python, JavaScript - тренды сегодняшнего дня», - отмечает он.

Антон Мартынов, архитектор SimbirSoft, считает, что TypeScript играет значительную роль в современной разработке, функционируя как уже устоявшийся инструмент. 

«В области мобильных приложений активно используются такие технологии, как Android с Kotlin, iOS с Swift, и в последнее время всё большую популярность набирает Flutter. Если мы говорим о разработке для рынков, где преобладают веб-решения, то здесь, безусловно, лидирует PHP. За ним следует Python, который благодаря своим многочисленным фреймворкам постепенно уступает место Go. Наша статистика показывает, что PHP занимает первое место, затем идёт Python, а уже после - Go. Это обусловлено тем, что чем раньше язык начинал своё развитие, тем больше готовых решений, которые можно эффективно применять, он накопил.

Похожая ситуация наблюдается и в области разработки корпоративных порталов, где важную роль играют готовые фреймворки и CRM-системы, написанные в основном на PHP, хотя существуют и классические решения на .NET и Java. В задачах, связанных с автоматизацией бизнес-процессов и учётом ресурсов, всё чаще применяется Go, так как он хорошо подходит для микросервисной архитектуры и позволяет достигать высокой производительности в определённых областях. Тем не менее, Java и .NET по-прежнему остаются популярными в этом секторе.

Что касается перспектив развития, мы видим, что существует значительный спрос на переход на новые платформы или миграцию с устаревших монолитных систем на микросервисную архитектуру. По нашей статистике, при таком переходе половина приходится на Java, около 30% - на Go, и оставшиеся 20% - на .NET. В то же время количество случаев миграции с .NET на другие языки увеличивается, что отражает тенденции в области программирования. «Динозавры» Java и PHP со временем будут вытеснены новыми языками. 

Что касается веб-разработки, здесь изменений особо не наблюдается, JavaScript остаётся вне конкуренции, поддерживаемый тремя ключевыми фреймворками: Angular, Vue и React. В последнее время Angular немного теряет позиции, в то время как React и Vue постепенно приближаются друг к другу по уровню популярности, хотя React все же остаётся немного впереди», — отмечает эксперт. 

В мире мобильной разработки преобладают три основных языка: Kotlin и Swift для соответствующих платформ, а также Dart как кроссплатформенный язык, который уже нашёл применение во многих проектах. Об этом говорит Максим Сидоров, тимлид команды системных сервисов SberDevices.

«Следует отметить, что Kotlin, будучи сравнительно молодым языком, амбициозно осваивает новые ниши, и я уверен, с появлением мультиплатформенного Compose Kotlin активно войдёт на платформу iOS и, возможно, станет доминирующим языком. Я согласен с тем, что мы оцениваем текущую ситуацию, исходя из графиков и отчётов о распространённости языков. Но важно также смотреть на несколько лет вперёд. В последнее время наблюдается появление таких интересных молодых языков, как Kotlin, Dart, Rust и Go, которые занимают около 1% на рынке согласно отчётам. Однако, по моему мнению, именно они представляют будущее программирования, и Java и PHP со временем будут вытеснены этими новыми языками с более продуманным дизайном, богатым выбором функций и интересной архитектурой.

А вот Алексей Шарыпов, Lead Backend Developer Playrix, считает, что выбор языка для бэкенда часто не критичен, хотя для программирования устройств и фронтенда, где лидирует JavaScript, это имеет значение. Основная характеристика – это стоимость и скорость разработки. Компании выбирают Python, потому что разработчиков легче найти и они доступнее, в отличие от разработчиков Go.

«Для текущего и следующего года тренд, как мне кажется, идет в сторону упрощения. Python привлекателен своей простотой и сниженной стоимостью разработки, что важно, в то время как количество проектов не растет так быстро. Компании выбирают технологии, которые дешевле в имплементации и поддержке. Крупные компании, вроде Amazon и AliExpress, используют свой собственный стек, поскольку уже вложились в развитие и обучение своих разработчиков. Но стартапы или компании, меняющие проекты, предпочтут более доступные языки.

Python сейчас популярен среди студентов из-за низкого порога входа, и в ближайшие пару лет рынок, скорее всего, наполнится разработчиками, предпочитающими этот язык. Что касается Go, его стоимость разработки в два раза выше, чем у Python, поэтому многие, особенно небольшие компании, стараются его избегать. Но крупные компании продолжают работать с Go, несмотря на стоимость», — отмечает он. 

«Важен не язык, а парадигма, которую вы применяете при написании логики»  

Существует мнение, что при выборе языка, особенно в игровой индустрии, ключевым является не конкретный язык программирования, а принципы и методы (парадигмы), применяемые для решения задач.

«Важен не столько язык программирования, на котором вы пишете, сколько парадигма, которую вы применяете при написании игровой логики: объектно-ориентированный и ориентированный на данные. Основная сложность заключается не столько в выборе языка, сколько в том, чтобы не усложнять инструменты разработки больше чем необходимо, и предоставлять языки, чей синтаксис знаком большинству. В игровой разработке это обычно C# или C++, в зависимости от того, какой базовый инструментарий был у разработчиков изначально», — рассказывает Андрей Карсаков. 

«Далее важность приобретают хорошо оформленная документация и чётко описанный API игрового движка. Затем разработчики применяют уже отточенные навыки для изучения и использования функций движка. В целом, процесс разработки игр довольно стандартизирован в индустрии, изменения могут касаться лишь названий функций, методов, классов, но основные технологии и подходы остаются понятными и доступными. Мы хотим, чтобы любой разработчик, имеющий опыт в игровой разработке, мог без труда приступить к работе с нами, ознакомившись с документацией. Отдельно стоит заметить, что знание языка программирования в контексте конкретного игрового движка не всегда перекладывается на широкие знания этого языка в целом. Например, разработчика на C# в Unity сложно считать разработчиком на .NET, поскольку это совсем разные сферы применения языка», - говорит Андрей Карсаков.

По мнению эксперта, тот, кто умеет писать скрипты на C++ в Unreal Engine, не обязательно сможет сразу же приступить к скриптованию на C++ в Nau Engine, именно из-за разных инструментов, хоть и использующих один язык. Но если разработчик обладает глубоким пониманием основ программирования и математики, т. е. хорошей базовой подготовкой, и писал на чистом С++ или другом языке, то переход с одного языка на другой, особенно между C-подобными языками, обычно не представляет трудности.

«Однако, если речь идет о разработчике, который обучался работать только в Unity или Unreal и изучал C++ исключительно в контексте конкретных функций и синтаксиса, используемых в этих движках, переход может быть более сложным. Такому разработчику, возможно, потребуется больше времени для адаптации к новому движку по сравнению с тем, кто обладает более широкими и фундаментальными знаниями в программировании, а не ограниченным использованием языка в рамках одного инструмента или фреймворка», — резюмирует руководитель разработки Nau Engine. 

«Владение одним языком не означает лёгкости перехода между разными сферами его применения»  

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

Петр Туголуков, корпоративный архитектор Xsolla, отмечает, что владение одним языком не означает лёгкости перехода между разными сферами его применения. Например, бэкенд-разработчику проще сменить язык программирования с PHP на Go, поскольку сфера задач схожа, и концепции middleware, сервера и базы данных остаются общими.

«Однако переход фронтенд-разработчика в бэкенд или наоборот, даже при знании JavaScript, может быть сложным. Это частая ошибка, приводящая к непредвиденным задержкам и проблемам в разработке. Фронтендер, пытаясь работать над бэкендом, может столкнуться с недостаточной производительностью, так как он не имеет опыта в этой сфере. Аналогичная ситуация возникает и в игровой разработке. Знание работы с игровыми движками позволяет разработчику легче перейти с C++ на C#, если у него достаточный опыт. Но даже знание C# не обеспечит легкого перехода из разработки игр на Unity к бэкенд-разработке. Такой переход потребует, фактически, нового обучения, так как, несмотря на общие циклы и условные операторы, специфика задач совершенно иная», - отметил Петр Туголуков.

«Возвращаясь к более серьезной разработке, необходимо понимать, что разработчик, занимавшийся бэкендами в компании вроде Яндекса, не сможет просто так перейти к работе в игровом движке. Даже если язык программирования один и тот же, архитектура движка и клиентские концепции отличаются от тех, с которыми он сталкивался на бэкенде, где важны другие аспекты (работа с памятью, оперативка), о которых бэкенд-разработчики обычно не думают. И если рассматривать Dart и Flutter, которые могут работать повсеместно, знание языка, используемого для бэкенда, не позволит автоматически перейти к разработке на десктопе, где есть свои специфические концепции, например, реестр в Windows, с которым бэкенд-разработчики обычно не сталкиваются», - добавил он.

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

«Знание одного языка программирования не гарантирует, что вы сможете легко переключиться на разработку в другой области. Необходимо обладать соответствующими архитектурными знаниями. Язык может немного облегчить переход, но чтобы совершить его мгновенно, просто щелкнув пальцами — нет, я в этом совсем не уверен», — резюмировал корпоративный архитектор Xsolla.  

«Уникальные навыки могут быть дорогими» 

Вопрос о зарплатах всегда волнует, и люди действительно стремятся туда, где можно заработать больше. Говоря об ИТ, люди очень часто связывают работу в этой области с огромными зарплатами. 

«Если вы специализируетесь на чём-то узком, вашу работу могут хорошо оплатить, но только когда такие навыки потребуются. Например, разработчики на Эликсире не всегда находят множество вакансий с высокой оплатой. Поэтому при выборе языка для изучения следует смотреть на рынок, анализировать исследования и реальные вакансии. Уникальные навыки могут быть дорогими, но не всегда востребованными, как в случае с разработчиками Cobol в США. Я рекомендую обратить внимание на такие более  популярные и востребованные языки, как Swift и Kotlin для мобильной разработки, C++ и C# для игровых движков, Flutter для десктопа, а также Go, Python, Java, C# для бэкенда и, конечно, JavaScript для фронтенда. Знание одной области позволяет легко перейти к другому языку в этой же сфере. На личном опыте, для начала работы с Go после C++ мне хватило одной ночи в поезде и книги. Главное — выбрать сферу, в которой вы хотите развиваться», — говорит Петр Туголуков.

По словам Ильи Стешкова, основа разработки — это мышление программиста. Язык программирования является лишь инструментом для решения задач. 

«Важна база, а выбор конкретного языка, как высказались многие эксперты сегодня, не столь важен. Выбор зависит от личных предпочтений и сферы, в которой вы хотите работать. Если стремитесь заработать, например, 400 тысяч, вы можете пойти в банки, или если хотите заниматься разработкой игр, то вам подойдут API движки.

Сначала нужно получить общее понимание решения задач, а затем уже можно выбирать специализацию и язык. При этом, даже если выбор сферы ограничен, например, фронтендом, в других областях лучше следовать сердцу, а не только рациональным расчетам. Выбранный вами инструмент будет вашим спутником на долгие годы, помогая решать задачи и достигать финансовых целей. Лично я, проработав некоторое время с PHP и поняв, что что-то меня не устраивает, перешел на Go, и это оказалось несложным», - сказал он. 

«Психотип влияет на общие способности»  

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

«Психотип может повлиять на то, насколько успешным вы окажетесь в программировании. Если у вас есть усидчивость и желание неустанно учиться новому, то программирование в любом его виде подойдет вам, так как оно требует постоянного обучения. И не стоит думать, что после изучения первого языка вы обречены оставаться с ним на всю жизнь. В большинстве случаев это не так», — уверен он.

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

«Связь между выбором языка и уровнем зарплаты некорректна»  

Максим Сидоров считает, что связывать выбор языка программирования с доходами не совсем корректно. 

«Важны ваше увлечение и интерес к программированию. Если вам интересна ваша работа, вы, используя любой язык, например, PHP, R или C++, сможете заработать много. Главное, чтобы вы были вовлечены в программирование, тогда успех придет сам собой. Если говорить о начале карьеры, Python и JavaScript могут быть хорошим стартом для быстрого входа в профессию, и от них легче переходить к другим языкам. В целом, изучение всех языков доступно. Я, к примеру, учил C# и Java всего по две недели, имея опыт с другими языками», - сказал он. 

«Я не спорю, что сейчас требуется много специалистов с разными языками, возможно, больше, чем традиционных программистов на C++. Важно отметить, что если вы изучаете программирование исключительно ради заработка, это может быть не лучшим подходом, с точки зрения менеджмента и воздействия на вас и продукты, которые вы создаете. В любой ремесленной профессии (программирование – это тоже ремесленное занятие, несмотря на его творческую сторону) ключевым является ваш энтузиазм в решении задач, независимо от языка», — говорит Андрей Карсаков. 

«Повышение зарплаты может улучшить работу сотрудника, но только на первые недели. Затем всё возвращается к обычному уровню. Однако если специалист действительно ценный и хочет зарабатывать больше рыночного уровня,  придётся ему платить выше рыночных ставок, иначе он может уйти в другую компанию. Зарплата тесно связана не столько с тем, насколько человек горит на работе, сколько с тем, какую пользу он приносит проекту, компании, команде и какой уникальный вклад может внести. Если он выделяется среди 80% разработчиков, то и будет зарабатывать больше. В России действительно лишь 3-5% разработчиков получают зарплаты 400K+, большинство имеют доход ниже. Чтобы претендовать на высокие зарплаты, нужно достичь уровня эксперта. Но независимо от вашего стремления зарабатывать, в начале карьеры вам вряд ли удастся получать большие суммы. Неизвестны случаи, когда новички сразу зарабатывали много. Нужно сначала что-то доказать», — добавил Алексей Шарыпов.

«В 2024 JS будет актуален» 

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

«С точки зрения заработка и личного развития, я бы порекомендовал обратить внимание на JavaScript. Он нужен везде, в том числе в Ecom, FinTech и других бизнес-секторах для разработки фронтенда, вместе с TypeScript. В бэкенде я люблю Go и рекомендовал бы его, но сначала стоит посмотреть, что используют крупные компании (банки, VK, OZON, Вита). Если они используют Go, скорее всего, будут использовать его и в дальнейшем», —  сказал  Петр Туголуков.

«Если говорить о фронте, то да, JavaScript действительно актуален, я согласен с Петром. В случае бэкенда самый доступный язык для старта — это Python. Go — тоже отличный язык, но он может быть немного сложнее, и не ясно, каково будет его будущее. Python сейчас очень востребован и, судя по всему, так и останется, так что с ним проблем не предвидится», - говорит Алексей Шарыпов.

«По фронту нового не скажу — JS. Если ваше сердце лежит к бэкенду, следует изучать то, что активно используется в крупных компаниях, ведь они вряд ли откажутся от выбранного инструмента в ближайшие годы. Я бы также посоветовал Go. Спрос на квалифицированных специалистов высок, а порог вхождения, на мой взгляд, не так уж высок по сравнению с Python», - отмечает Илья Стешков. 

Максим Сидоров считает, что учить нужно однозначно Python, так как он применим не только в бэкенде, но и в науке, в нейросетях. 

«Он популярен на рынке и имеет широкий спектр применения. В бэкенде стоит обратить внимание на Java и C Sharp, если нет страха перед привязкой к платформам. Для мобильной разработки — Kotlin, который, как мне кажется, скоро захватит все платформы. Kotlin также привлекателен тем, что активно используется в различных сферах и может компилироваться в другие языки», - говорит эксперт. 

«По фронту — JavaScript, и стоит посмотреть на такие фреймворки, как React или Vue, чтобы лучше понимать современные требования. По бэкенду — Python и Go. Если рассматривать более традиционные языки, то Java и C Sharp, но ожидаю постепенное замещение их Python и Go, или возможно появится что-то новое», — отметил Антон Мартынов.

«Стоит определить сферу интересов. Можно сосредоточиться на мобильной разработке, изучая Flutter и Kotlin, учитывая, что мобильная разработка востребована повсеместно и имеет меньше сервисов, связанных с AI, что является преимуществом для начинающих», — добавил Александр Тырышкин.

Андрей Карсаков советует, что если вы выбираете свой первый язык программирования и планируете заниматься программированием на долгосрочной основе, лучше всего предпочесть си-подобный мультипарадигменный язык, который позволит вам функционально экспериментировать и познакомиться с объектно-ориентированным программированием и др. 

«Если вы хотите разрабатывать игры, то, несомненно, C++. Большинство проприетарных движков написаны на C++. Если же ваш путь лежит в скриптинг, то обычно используется C# или скриптовые языки вроде Lua или Python. Что касается бэкенд-разработки в геймдеве, то она не сильно отличается от общеизвестных бэкенд-технологий», — резюмировал эксперт. 

Вместо вывода - комментарии

Мы заинтересованы в вашем мнении о теме, которую мы обсудили во время дискуссии. Для нас важно узнать, какие языки программирования вы видите актуальными в 2024 году и что думаете про наступление AI. Поделитесь своим мнением в комментариях под видео.

Автор самого интересного комментария будет награжден трехмесячной подпиской на Литрес, которая дает доступ к аудиокнигам, текстовым версиям книг, подкастам и лекциям.

Не забудьте подписаться на наш канал - впереди новые обсуждения и выступления экспертов. Кстати, если вы хотите выступить экспертом на наших дискуссиях, напишите нам. 

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 76: ↑68 и ↓8+78
Комментарии40

Публикации

Информация

Сайт
lanit.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия
Представитель
katjevl