Pexels Photo 574070

If You’re Planning to Write Java Code in 2020 - Here Are the Top 5 Predictions You Can’t Afford to Miss

Pexels Photo 574070

There’s no better time to start planning for 2020 and make sure your application is ready for the upcoming changes and trends.

Welcome to the world of tomorrow! Although 2020 seems far away, it’ll be here before we know. Even though we’re more than a year away, analysts and research companies are releasing reports and projections of 2020 trends in the software world, that will make or break our application.

As part of our own transformation towards the future, we’ve gathered some of the interesting and relevant 2020 predictions of our field. If you, like us, don’t want your application to stay behind of the competition, check out our top 5 predictions for 2020 that you can’t afford to miss.

1. Switching the manual to automatic

Forrester, the research company that focuses on existing and potential impact of technology, released a report about the top 10 tech trends that will rise from 2018 through 2020. In their report, they wrote that:

“Software robots will replace routine tasks that humans do poorly. By 2020, robots will engage in work that drives customer outcomes.”

Forrester has a pretty grim forecast, stating that software robots will replace routine tasks that humans do poorly. And while we don’t agree that humans are doing a poor job, we do agree that there’s always a better way.

If we take a look at this prediction from a more positive point of view, it means that mundane and time consuming tasks will be a thing of the past. Or to put it in other words, we can’t believe it’s 2018 and developers are still manually sifting through log files. It can take hours, and sometimes even days to detect and reproduce issues, trying to understand what went wrong and how we can fix it. That is if we did, in fact, log this issue.

Fast moving companies and services require a faster and automated workflow, which allows pushing updates and fixes faster into production, as well as handle issues as soon as they happen. That’s why leading companies and teams are moving towards a complete CI/CD workflow.

This shift has already started, but it’s continually evolving and growing to automate more and more parts in the software delivery lifecycle. One trend that we can already see and contribute to ourselves is automating root cause analysis.

Companies realize that the cycle doesn’t end when code is deployed into production, and by 2020 monitoring will be an inseparable part of the CI/CD cycle, and automated deployments require smarter monitoring. You want to know when a release introduces new errors without relying on user reports, and have all the information you need to fix it.

To find out how companies like Intuit, Zynga, TripAdvisor, Comcast and others are preparing themselves for 2020 by adding more automation into their error resolution workflow, check out our eBook: The Complete Guide to Automated Root Cause Analysis.

2. With automation enters AI

Automation is one piece of the puzzle, and the next step is making our application not only automatic, but autonomous. This is where Artificial Intelligence (AI) fits in. It’s a wide (and pretty cool) field that has been around for a while, and every few years it comes back with a certain twist. However, it seems that it’s always on the rise, and Gartner stated last July that:

“AI Technologies Will Be in Almost Every New Software Product by 2020.”

In the software world AI includes a lot of elements, such as machine learning, data mining, neural networks and the list goes on and on. Every element can help us and our teams to create better products for our users, making our application more responsive and enhancing our user experience.

What was once only accessible to some has become pretty common, and you can find a list of open source libraries and/or pre-written machine learning algorithms which can be implemented quickly. Even if you don’t have deep theoretical knowledge about machine learning and how it works.

The best way to start is by looking at your application, mapping out the areas where you think these elements can help and start implementing new abilities. We’ve covered some of the more known machine learning libraries in Java, such as Deeplearning4J (DL4J), Neuroph and the BID Data Project, which you can read about here.

3. Turning reactive into proactive

Expect the unexpected. It might sound like a cliche, but it’s the difference between knowing that something is wrong, to hearing about it only after your users complain about it. When it comes to your application, you want to stay one step ahead.

This can be done with a variety of monitoring, reliability, APM and log management tools, according to your requirements and the elements you want to monitor and handle. There are A LOT of tools that can help you monitor and analyze your code, application and servers, and we do mean a lot. That’s why it’s important to understand what you’re looking for, and what you would like to monitor and analyze.

There’s a wide range here, starting at APM tools such as AppDynamics, Dynatrace and New Relic, moving on to log management, with Splunk, ELK, SumoLogic, Loggly and others that aggregate your logs, giving you better insights into what’s happening with your code.

Another option you have is focusing on anomaly detection. Unlike APM, or plain log management, it can help you center your efforts on certain spikes and, well, anomalies that are more critical than others. This list includes X-Pack, Loom Systems, Coralogix and Anodot, among others.

However, these tools usually work if you took the time to log in the first place. Even if you did log excessively, it would only represent a fraction of what’s really going on within the application, and can take you some time to find what you’re looking for, from a few hours and up to a few days.

Steve Rogers, Software Development Director at Viator, a TripAdvisor company told us that their old troubleshooting process would take days, leading to very noisy and costly logs. It made their process of identifying, and investigating errors a real challenge for the team. Even with the use of APM and log management tools. You can learn more about how they finally managed to solve this without relying on application logs right here.

The bottom line is that it doesn’t matter which tool you choose to use, keep in mind that the tool should work for you, giving you the much needed answers to solve issues, and not send you on a wild goose chase through your logs.

4. Opening the road to reach 88MPH (or: Innovation)

The move towards 2020 advances you towards a faster release cycle, adding more features to every release. Which is great, since as you advance, your users will expect frequent updates and innovation from your end.

But you’re in luck, since the move towards an automatic, learning and proactive approach means that developers will have more time to invest in building new features, and advancing the company’s roadmap. Instead of wasting valuable time sifting through logs, trying to detect issues and identify what went wrong in the process.

That’s why innovation is going to be one of the key elements in 2020, but it won’t come on its own. We need to be sure that we’re ahead of the competition, instead of lingering behind, having our teams work over time trying to catch up.

Innovation is the result of implementing all of the elements we spoke about before, but it’s not whole without the final and most important ingredient:

5. Reliability is king

Our worst nightmare is waking up in the middle of the night to the sound of PagerDuty alerting us that something has gone wrong. Even if we’ve implemented automation, AI and adopted a proactive approach that will help our application be ready for 2020, it won’t mean anything if our users won’t be able to rely on our application.

To put it in other words, even with the best developers, DevOps and QA teams, we can be sure that our application holds an unknown number of error conditions, and it’s impossible to predict them all. However, it’s our job to make sure they won’t hurt the experience of our users.

That’s why 2020 will require us to be more agile. With the move towards an automated workflow, reliability has a significant place in that cycle as part of a Continuous Reliability approach. This approach helps companies, such as Intuit, make sure that all of their products are up and running as they should, providing customers with the best experience possible.

Sumit Nagal, Principal Engineer in Quality at Intuit told us that they were able to achieve this by using OverOps across multiple environments, including QA, pre-production and staging. With OverOps, the team can detect an error before it impacts the user, which improves their application’s reliability, and helps the company provide an outstanding user experience.

Learn more about how Intuit automates root cause analysis at scale and how you can implement Continuous Reliability in your own application, here.

Final thoughts

If our calculations are correct, when we reach 2020… we’re going to see some serious software. The software industry is on the right track, and you don’t want to be left behind with an application that doesn’t meet your customer’s demands, or your team demands.

The clock is ticking. And as Don Marquis said:

“Procrastination is the art of keeping up with yesterday.”

We are sure that you, like ourselves, don’t want to wake up one morning to find out that you’re behind. Now is the best time to move towards change and innovation, and the best way to start is by adjusting the roadmap, assigning tasks and be ready for tomorrow with a well designed plan, today.