Last week we've sent a group of people to the Devoxx Antwerp conference, and luckily I was one of these people. Devoxx is a massive conference for the Java community that brings developers closer to modern tools, technology and practices. This blogpost is a small write up on the interesting things we have seen over the week. I'll iterate over the most interesting topics and talks (in my opinion).
In the schedule some topics - the so called Devoxx 2017 buzzwords - really prevailed over the others. In my perspective the top 3 interesting topics that will shape software development in the upcoming years are the following.
Serverless is a the concept of defining which software you want to run, but not how. The how is provided by your cloud provider. For example, running a JAR on a JVM, or some SQL script on a Postgres instance. You do not build your infrastructure, it is provided by your provider. The big players already have architectures for this in place. Amazon has S3, Lambda, DynamoDB, SNS and more. Google has Firebase, Google Cloud Storage, Functions and more. Last month Oracle announced Fn-An, which is also a step towards serverless architectures.
One of the biggest advantages of this architecture, is that responsibility of the scaling moves from you to your cloud provider (and probably they are more skilled at it than you are). The second main advantage is the economics of the serverless architecture. The products are mostly marketed around the usage instead of uptime. You thus only pay when your users actually use the platform, and thus computing the average cost per user becomes much easier.
One of the big change of this architecture, is the fact that you lose control over your servers. For example, low level performance tuning becomes an impossible beast to tackle. If your application does not need this, maybe serverless is the path for you. But be aware of the limits of this architecture.
Personally I found that Bert Ertman's Serverless Deep Dive gave a nice overview of this hyped concept.
A bit of low hanging fruit, since deep learning has been an active topic for the last few years already. Interestingly, at Devoxx there were a lot of talks that help you use deep learning without needing a PhD. In my eyes this is a movement for bringing this technology to the broader audience, which may result in a broader application of learning systems. Would it be wise to get some knowledge in-house about machine learning? Yes, after one particular talk I definitely think that diving deep into Deep Learning would be a nice step.
The changes that Java brings/will bring
With Java 9 being release a few weeks ago, the community had a lot of need of finding out the new functionality that Java offers. Personally, I rather read the APIs instead of being explained how the Collections API was improved. However, project Jigsaw brought the module system, which I think is the most rigorous change in the last few major versions of Java. Venkat explained this pretty well with his 'Java 9 Key Parts' session. Besides being able to create smaller JARs, the module system allows (or even enforces) you to properly define interfaces of our libraries. Better interfaces may ultimately lead to less hacky code and better decoupling. At a critical note: Why did we have to wait 20 years for this to be fixed?
In addition we have seen some scheduled features for Java 10 such as type inference and pattern matching. The goal behind these features is to reduce the amount of language ceremony and focus on the essence of programming in Java. Would the reduction of language ceremony result in people moving back to Java after they switched to Kotlin? Is Java chasing the language features that Kotlin and other languages provide? I sure don't know, but of what I have seen (by Brian Goetz) the language becomes nicer to read (I am a huge fan of Elm, and some of Brian his slides looked a bit like Elm). My main concern is the effects the language will have on the identity of the language. We identify Java with OO, but don't these changes result in a new identity? Time will tell.
I found that by far the keynote sessions were better than the other talks. The majority of the Devoxx talks are about: stating a problem, showing that a tool or thing can solve that problem and closing with a comparison to its alternatives. The keynotes however they do one more thing, they do not come with a solution. The speakers activate your brain such that you continue to think about the concept, which may result in more change. So the must watch talks in my opinion are:
- The Rise of the Weaponized AI Propaganda Machine by Berit Anderson. Berit talked about the effects of IT in the 2016 US election. It triggers you to think about the ethics of our field
- Move Slow and Mend Things by Kevlin Henney. What does it mean to move fast and when do you start running towards the ledge? Kevlin shows the importance of direction in comparison to speed in the development process.
- The Diabolical Developer's Guide to Perfomance Tuning by Martijn Verburg. Martijn provides some valuable ideas when sh*t hits the fan on your production environment. This will probably happen to you in the future, thus maybe print the ideas on paper and hang it next to your desk.
- Baking a Microservice PI(e) by Antonio Goncalves and Roberto Cortez. We know that microservices are cool right? In this talk the speakers try to help you though the process of building and deploying your microservices and scaling these as they go.
- CERN, from an IT Perspective by Derek Mathieson. When you have even the slightest interest in science, you probably know CERN. Derek takes the viewer through one of the biggest science centres of the world from an IT point of view. Maybe a less technical talk from a developer perspective, but mind blowing when you start to think about the IT CERN requires to keep their business going.
And of course, there were many more good talks located at the Devoxx Youtube Channel.
Devoxx was fun and interesting and it shows the main trends in IT. There are many interesting movements in flux. Serverless, machine learning, the evolution of Java, event driven, micro services, and many more. Maybe these are not all interesting for your current project or job, but knowing of their existence, power and weaknesses will probably help you further in your future choices. So to wrap up: keep learning, stay up to date, and watch the talks!