We talked to two 7N consultants about Java Development. Based on their extensive experience in the field, they provide insights into what is happening within the field right now and what trends they see in the future.
Here’s Part 2 of our interview, where we explore two of our 7N consultants’ approach to java development and discuss new technologies and prominent challenges within their field. Part 1 is available here.
7N consultants interviewed in this article:
Flemming Harms (FH) is an enterprise software developer and architect with more than 17 years of experience. He is specialized in Java EE and JBoss technologies, Apache Camel and has been working in all areas from architecture, design, implementation, performance optimization and as Scrum Master.
He is actively involved in the Open Source Community and contributes to various projects, because he believes, that it is the best way to learn and master the products and get help. He strongly believes you can only have success as architect, if you involve the team in the design and decisions and is involved in the implementation phase as a developer.
Johan Pramming (JP) is a Java / Java EE developer and solution architect, specialized in system integration (EAI), integration platforms and ESBs. He is an experienced developer of Java applications, integrations and services that also want to work with other JVM based technologies.
He has solid experience in the development, maintenance and operation of Java, Java EE, and Spring based applications and services. In addition to his skills as a developer and architect, he also has wide experience as a technical consultant, configuration manager and DevOps consultant.
Can you highlight some of the most prominent challenges you see in your field right now?
FH: As exciting as I am when new technologies, tools or architecture styles etc. emerge, as concerned I am. It takes years to master new technologies, tools etc. and with the speed these new technologies emerge and develops, it can sometimes be difficult to keep up. Just look at how fast the UI framework development has been going for the last +4 years. And how do you then choose the right framework or tool? Just because it’s backed up by some of the biggest companies doesn’t mean it will exist in 2 years. So, choose wisely :-)
Security is huge and very often not taken seriously in the beginning of a project. It’s really easy to get wrong, and as a developer you need to understand how it impacts the code. Implementing automatic security test from the beginning of a project is important, and I think with GDPR, there will be much more focus on the security by default in the future.
JP: Right now, I see that one of the current big challenges is recruiting. It is getting more difficult for the customer to hire qualified developers and architects, and the demand for these resources only seem to be on the rise. This will force businesses to prioritize projects and will have a negative impact on the development times for products or features.
Can you mention some of the new exciting technologies impacting your field now and in the future?
FH: There is so much going on in our industry all the time so it’s difficult to answer this question. However, from where I’m standing I think Java 9, 10 and 11 are hot and continue to improve with new features. The “Local Variable Type inference” in version 10 is an example of a new feature which will change the way we write code in Java. A lot of people think Java is too “verbose” and that this feature will reduce the amount of written code, but there is also the risk that it makes it more difficult to read.
Lambda/Streams introduced in Java 8, which seems to be highly accepted by the developers by now, at least on the projects I have been working on, is also improving with new features in version 9, 10.
The future for Kotlin looks very promising and especially since Google chose Kotline as official language for Android development, and the various Spring frameworks also support it. Kotlin is hot and has a huge impact on how we write code, and is reshaping the landscape, and it’s not only because they have defined a new language, but because they also improved languages like Java because of the competition.
Microservices is still hot, though I think it’s starting to find a little more sensible level and developers are learning it’s pros and cons. For some projects it makes sense to choose this style of architecture together with orchestration tools like Kubernetes, but if you just have tried to scratch the surface for this type of architecture, you will know it comes with a cost and overhead in the beginning.
Serverless has been a buzz word for the last 2 years or so, and makes it really easy for deploying and scale code. You can get it up and running real fast, and it is easy to extend your project with new services as you go. It is far from all projects this architecture style will fit, but it is really easy to get vendor lock-in, and for cloud projects this could be the right choice.
JP: The many new blockchain technologies that have recently spawned, trying to de-centralize existing centralized systems, is a very interesting topic. None of these technologies have had a big breakthrough in use yet, and the technologies are still only entering their infancy. However, they have the possibility to have a huge impact on many, if not all, areas of business in my opinion. It is hard to guess exactly what or where the impact will be, and how it will change software development, but there are promising use cases for the blockchain technologies in many industries, and I expect it to be a technology that will be embraced by existing and new businesses.
Furthermore, there is an increasing desire to integrate systems and automate processes. I have been working with integrations for a long time and this is a trend that has been growing year by year. People expect systems to interoperate, be easy to use and not have any unnecessary and complicated manual tasks. Both the commercial value and quality of any system increase, when a system is well integrated. In the last couple of years, the use of microservice architecture is helping in designing systems where integration, scalability and robustness is thought into the system by design.
The increased use of open source software and developing products as open source projects are also trends that has been on the rise for years. Today open source has gained its acceptance and is now a competitive advantage over developing closed source products. The increasing focus on privacy and transparency have also made businesses that are developing open source projects more successful and competitive.
How is it possible for you as a developer to navigate in a changeable world, where technologies are continuously renewed and new technologies are emerging?
FH: It's really difficult and hard to do, but I'm focusing on a number of technologies I like to work with, like Apache Camel, Jakarta EE, Spring etc. Further, I follow the various communities’ forums, such as Twitter, Blogs, Gitter channels, GitHub projects etc. I also choose to contribute to some of these projects, because it gives me the possibility to work around possible issues in my daily work, and the fact that I have direct contacts in the communities also gives me an advancement in my job as a consultant.
Attending at least one conference every year is a good way to stay on top of what is hot and get inspired to try out new technologies. Even if it is not something you’re going to use right now, then put it on your bucket list for later. Last year I attended a talk with a tool called MapStruct, but it’s just lately that I found an opportunity to use it in a project.
On a final note, check out the Danish java user group on javagruppen.dk and follow key influence people in the tech area you find interesting on Twitter. You get tons of knowledge and you can engage with them directly.
JP: I try to be open-minded and interested in learning new technologies and processes, and to be careful not to be slipping in to any routines or habits from former projects. I try not to question or challenge the purpose and use of any technology or process before I understand them, and have the required knowledge to make the argument.
For me the key is to stay updated and try out the new technologies that I find exciting. You must keep up, if you want to be able to provide the required specialist knowledge and counseling to your customers. Luckily for me, and many other in the industry, my job is also my hobby, which makes it natural to explore and try out new and promising technologies.