Только начался новый год, все потихоньку отходят от праздников и вспоминают о том, что надо работать. Начала января — самое лучшее время для того, чтобы заняться планированием своей профессиональной (да и личной тоже) жизни на грядущий год.
Что касается Java и программирования вообще, здесь планирование и адаптация к изменениям играют огромную роль, потому что позволяют заблаговременно подготовиться к трансформациям технологий и новым трендам. Об этом мы сегодня и поговорим — о прогнозах, трендах и ожиданиях вокруг и около Java-кодинга и программирования в целом.
А начнем с перечисления нескольких глобальных тенденций, которые, по мнению многих экспертов, по полной проявят себя в этом году.
Многие эксперты в программировании соглашаются с прогнозом Forrester, предполагая, что в 2020 году все больше рутинных трудоемких задач будут автоматизироваться.
“Активно развивающиеся компании и сервисы нуждаются в более быстром и оптимизированном рабочем процессе, который позволяет быстрее внедрять обновления и исправления в производство, а также обрабатывать проблемы как только они возникают. Вот почему ведущие компании и команды движутся к полной реализации практик CI/CD [CI/CD — концепция непрерывной интеграции и доставки],” — отметил Лукас Эдер (Lukas Eder), Java эксперт, а также основатель и исполнительный директор компании Data Geekery.
По словам специалистов, несмотря на то, что тренд на автоматизацию в программировании идет уже не первый год, именно в 2020-ом ожидается заметное увеличение роли автоматизации в жизненном цикле создания и доставки ПО.
“Одна из основных областей, в которых автоматизация уже применяется активнейшим образом — это анализ основной причины (Root Cause Analysis). Компании осознают, что цикл не заканчивается на деплое кода в продакшн, и в 2020 году мониторинг станет неотъемлемой частью CI/CD цикла, а автоматический деплой требует более совершенного мониторинга. Ведь вы должны знать, когда в релизе появляются новые ошибки, не полагаясь на пользовательские отчеты, и обладать всей информацией, необходимой для их исправления,” — добавил Эдер.
Многие крупные компании, среди которых Intuit, Zynga, TripAdvisor, Comcast и другие, уже давно активно внедряют автоматизацию в свои рабочие процессы, и Java-программистам стоит учитывать этот тренд.
![Чего Java-кодерам ждать от 2020 года: мнения и прогнозы экспертов - 3]()
“В прошлом поиск и устранение неполадок могли занимать у нас целые дни, создавая значительные затруднения. Но в итоге мы смогли решить эту проблему с помощью новых инструментов, и сейчас можем уделять больше времени проработке новых функций и прочим улучшениям наших продуктов. Какой бы из доступных на данный момент инструментов вы ни выбрали, помните о том, что инструмент должен работать на вас, помогая находить ответы на вопросы, которые позволят решать проблемы, а не отправят вас в дикую погоню за ошибкой через логи,” — советует Роджерс.

Активная автоматизация кодинга
Это часть глобального ИТ-тренда на автоматизацию, которая затронет в том числе и программирование. Согласно прогнозу исследовательской компании Forrester, к 2020 году программные роботы должны прийти на смену людям в выполнении рутинных задач, которые зачастую плохо даются живым программистам.
Искусственный интеллект (ИИ)
Еще одним трендом, который неразрывно связан с автоматизацией и по скорости распространения от нее не отстает, — искусственный интеллект (ИИ). Несмотря на то, что технологии ИИ считаются “горячей” темой уже не первый год, их популярность продолжает нарастать. Еще в 2018-м году исследовательская компания Gartner спрогнозировала, что к 2020-му году технологии на основе ИИ будут присутствовать практически в каждом новом программном продукте. Так что сейчас как раз время углубиться в эту перспективнейшую и весьма обширную тему, чтобы иметь в глазах работодателей преимущество перед другими специалистами в программировании и не только. В сфере разработки применяются различные элементы ИИ, среди которых машинное обучение, интеллектуальный анализ данных, нейронные сети и многое другое. Все эти технологии могут, и в ближайшем будущем несомненно будут использоваться для того, чтобы помогать людям создавать более удобные и эффективные программные продукты. По мере распространения и популяризации, технологии связанные с ИИ становятся все более доступными. Например, сейчас всем желающим доступен целый набор открытых библиотек с алгоритмами машинного обучения, которые можно реализовать достаточно быстро даже без глубоких знаний в этой сфере. Среди наиболее популярных Java-библиотек с машинным обучением — Deeplearning4J (DL4J), Neuroph и BIG Data Project.
Ускорение инноваций
Вышеперечисленные тенденции, такие как автоматизация и машинное обучение, вкупе с трендом на ускорение выпуска новых релизов, который наблюдается последние годы, подводит нас к еще одному общему прогнозу на 2020-й: воплощение в жизнь инноваций в программном коде, будь это новые функции или оригинальное решение стандартных задач, будет ускоряться. В первую очередь, это конечно произойдет благодаря автоматизации. Переложив на плечи компьютера многие рутинные задачи, разработчики получат возможность больше времени уделять созданию новых функций и улучшению юзабилити своего продукта, вместо того, чтобы тратить его на поиск проблем, идентификацию их причин и попытки решения ошибок. Именно поэтому многие эксперты считают, что инновации, а скорее готовность к ним, будут одним из важных трендов в среде Java-программирования и не только. Под готовностью к инновациям чаще всего подразумевают именно знание и способность активно внедрять новые технологии, которые позволяют разработчикам быть на острие прогресса и опережать конкурентов, которые не так быстро адаптируются к новому.Переход от реагирования к проактивности
Общая направленность на ускорение и инновации создает еще один тренд: переход от реактивного подхода к проактивному. На практике это означает, что вы находите и решаете проблемы еще до того, как пользователь обнаружит ее существование. “Это можно делать с помощью различных инструментов для мониторинга, отладки, APM [Agile project management — гибкая методология разработки] и управления логами, в зависимости от ваших требований и элементов, которые вы хотите отслеживать и обрабатывать. Существует множество инструментов, которые помогут вам контролировать и анализировать ваш код, приложение и серверы. Их даже слишком много, вот почему важно понимать, что вы ищете, и что именно вы хотите отслеживать и анализировать,” — уверен Стив Роджерс (Steve Rogers), директор по разработке программного обеспечения в компании Viator, которая входит в TripAdvisor Group.
Тренд на надежность
Усиление фокуса на надежности и бесперебойности работы ПО — это еще один глобальный тренд на 2020-й год. С автоматизацией и ускорением выпуска новых релизов и функций проблема надежности и отлаженности любого продукта становится особенно остро. Это заставляет компании адаптироваться, больше времени в цикле разработки уделяя надежности программного продукта. “В 2020 году нам нужно быть более agile. С движением в сторону автоматизации рабочего процесса, надежность стала играть более важную роль. Мы в компании Intuit используем так называемый подход непрерывной надежности (Continuous Reliability). Он позволяет нам контролировать доступность и качество работы наших программных продуктов. В частности, мы достигли этого благодаря использованию OverOps [OverOps — решение для обнаружения ошибок в работе приложений на Java, Scala, Clojure и Groovy] в различных средах, среди которых QA, пре-продакшн и стейджинг. С помощью OverOps команда получает возможность обнаруживать ошибки до того как они повлияют на пользователя, что увеличивает надежность приложения и обеспечивает наилучший UX,” — рассказал Сумит Нагал (Sumit Nagal), главный инженер по качеству в компании Intuit.Пусть говорят. Прямая речь экспертов о Java в 2020-ом
Ну а продолжим уже прямыми цитатами от Java экспертов о том, чего они ожидают и какие прогнозы могут дать на 2020-й год.“Java экосистема активно развивается в течение более 20 лет, и 2020-й год не станет исключением. Лично я ожидаю появления Hibernate 6. А также теперь, когда R2DBC (Reactive Relational Database Connectivity) достиг версии 1.0, я с нетерпением жду, как реактивное программирование будет формировать стратегии доступа к данным Java, открывая двери для нового класса приложений с интенсивным использованием данных,” — отметил Влад Михалча (Vlad Mihalcea), эксперт по Java и автор книги High-Performance Java Persistence.“Реактивное программирование будет формировать стратегии доступа к данным Java, открывая двери для нового класса приложений.”
“Конечно, в 2020-ом мы получим Java 14 и Java 15. Однако, отходя от Java, языка программирования, все более важно видеть и понимать общие тенденции в разработке, в частности те, что относятся к деплойменту, запуску и отладке (например, в облаке), а также к безопасности. Поскольку облака и микросервисы становятся основным выбором для реализации, разработчикам важно понимать, как это влияет на Java приложения в долгосрочной перспективе,” — считает Триша Ги (Trisha Gee), эксперт по Java из компании JetBrains.“Все более важно видеть и понимать общие тенденции в разработке, и то, как они влияют на Java приложения.”
“От 2020-го года я ожидаю перехода к другим способам работы с базами данных. В 2016-ом я начал читать лекции по SQL и другим языкам структурированных запросов. Движение в этом направлении идет, и мы видим все больше и больше инструментов и фреймворков, для которых базы данных не являются, так сказать, “гражданами второго сорта,” — сказал Майкл Симонс (Michael Simons), разработчик из компании Neo4j.“Переход к другим способам работы с базами данных.”
“С новыми языковыми опциями, такими как “Pattern Matching for instanceof”, “Switch Expressions” и “Text-Blocks”, повседневный Java-код, а также код, который вы найдете в библиотеках, будет выглядеть несколько иначе, чем в предыдущие годы. Это безусловно будет проблемой для многих традиционных Java-разработчиков. Java также добавит в привлекательности благодаря улучшенной поддержке преждевременной компиляции и генерации собственных изображений для безсерверных сред,” — считает Томас Даримонт (Thomas Darimont), Java разработчик в компании codecentric AG.“Повседневный Java-код, а также код, который вы найдете в библиотеках, будет выглядеть несколько иначе, чем в предыдущие годы.”
“Что касается непосредственно языка Java, в 2020-ом мы ожидаем появления еще двух версий, 14 и 15. Обе версии снова будут содержать множество новых функций, которые помогут нам в нашей разработке. Поскольку ни одна из этих версий не является LTS, мы не ожидаем, что до 2021 года появится JDK 17. Кроме того, многое будет происходить с Graal и поддержкой фреймворков. Именно в этой сфере я ожидаю особенно быстрого движения вперед, чтобы без колебаний переключиться на Graal,” — поделился своими ожиданиями Майкл Витц (Michael Vitz), старший консультант в компании innoQ Deutschland GmbH.“В 2020-ом многое будет происходить с Graal и поддержкой фреймворков.”
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ