In addition to his Software Engineering experience, he gains more experiences per year by open-source collaborations & contributions, active participation in the Dev discussions, and Speaking at User Groups and Conferences.
What new countries have you “visited” thanks to the online format?
I am approached and I could approach a lot of meet-up groups all around the world to present my talks. Even Conferences got more freedom to select quality proposals without the travel expense factor. Overall, I spoke at conferences and meetups held in 6 different countries within the last year (which would be impossible without the online format).
If there are Java Champions, perhaps we should add Java Princesses and Java Dragons, too?
How about Java Jedis?
How has your programming style with Java evolved over the past couple of years? What are some of the things that led to the significant improvements?
Java 8 release has the most significant impact on my programming style. I was amused as a junior dev to see Streams and lambdas coming to java. Initially, it's just the Shiny Object syndrome that pulled me towards them, but after understanding the semantics of Functional Programming, Code feels like a Maths derivation.
Do you have any personal habits around development or self-care that you would like to share with our audience?
Workout every day. It brings resiliency to everything you do. I love experimenting with a lot of todo/note-taking workflows to declutter my brain. Master the tools you use and I am always on the hunt for new tips & tricks & Keyboard Shortcuts 😁.
Obviously, project Valhalla, Loom, and Amber have received a lot of buzzes, but there is a healthy level of skepticism about the projects. Do you have any thoughts you’d like to share?
Honestly, the adoption rate of new features in Java is very low. Sometimes, I feel I may retire as a developer without using a lot of buzz-tech in java at work 😄. But seriously, I still encounter a lot of devs who are unfamiliar with Java 8 syntax which came in around 2014. Plus, other JVM languages like Kotlin are sleek and moving fast offering similar solutions like Project Loom vs Kotlin Coroutines.
What is planned for Java after Java 17? How will it change the everyday life of a Java developer?
The question is when will companies adopt it? Enthusiasts like me may just use it for experimentation in toy projects, but other than that it might not affect a developer's life, at least not immediately.
There are Groovy, Scala, Kotlin, and many others in the family of JVM languages. What features do we miss in Java in comparison with other JVM languages? Elaborate.
I am a big fan of Kotlin and the conciseness it offers. I feel it is made by a community that can't stay with the slow pace that Java was. That said Java is picking speed, but it's like a huge Ship, and taking bold turns is not easy. I love the FP and Immutability focus in Kotlin and would like to see that more in Java.
There are plenty of reasons why Java, being one of the older software programming languages, is still widely used. For one, the immense power one wields when using Java is enough to make it their staple—coupled with the possibility of using good Java frameworks that can reduce the turnaround time for big projects. Your favorite framework? What advantages and disadvantages it has?
Spring, hands-down for the backend. It's mature and production-tested and you can almost do anything on the backend with it. The disadvantage is, it has got too much to misuse unless you are experienced.
In the beginning, Make was the only build automation tool available beyond homegrown solutions. Make has been around since 1976, and as such, it was used for building Java applications in the early Java years. However, many conventions from C programs didn't fit in the Java ecosystem, so in time Ant took over as a better alternative. Maven continues to use XML files just like Ant but in a much more manageable way. And then, Gradle was built upon the concepts of Ant and Maven. Fancy Gradle or old school Maven? Or Ant?!
I'm a Gradle guy. Maven was too verbose for me and it imposes a lot of conventions (which is good sometimes). Gradle gives you a lot of power, but without abusing it, you can enjoy its flexibility and conciseness.
Are we going to use modules ever? When we create a module, we organize the code internally in packages, just like we previously did with any other project. So why are packages not enough?
I love building libraries & frameworks and for smaller ones, packages are good enough. But as your lib grows Modules offer you solutions for better packaging (but I never built such a big library 😉)
We always say that talented people are talented in everything!
Gopal adores being on Stage, not only as a Tech speaker, but also as a Singer! It's amazing you should definitely listen that! And if you want to explore about Complexity and how to objectively measure the reduction we brought with our refactoring you should definitely join Gopal's session on the 25th of June at 11.00 a.m CEST!