Interview with José Paumard

Jose PaumardThe Streams guy

We are starting our interview series with jPrime2017 featured speakers. The first interview is with Java Champion José Paumard:

Hi José! Can you please introduce yourself?
My name is José and I've been using and teaching the Java technologies for about 20 years. I live in Paris where are I work as an assistant professor at the University and as an independent contractor for various companies. I do training and expertise in Java SE, EE and software craftsmanship.

What is your on this year’s jPrime talk going to be about?
I'll be talking about lambdas and collectors, two APIs added to the JDK 8. These API are completely new, as they are leveraging lambda expressions and as they bring new patterns to the Java space, mainly in the data processing area. Mastering these API leads to very readable code and also very efficient, so it's a double win for people using them. They are not that easy to use, mostly because the patterns they bring are completely new in the Java space. So to use them efficiently you need to change the way you create solutions to problems. It is not about mastering a new framework, but really about thinking in a different way.

Java added lambdas and Stream API in version 8. Do you think it makes is a good competitor to functional languages or it is still far away from that?
This is a question that comes very often. Yes, Java added lambda expressions to you toolbox, and it is just great. But it does not make Java a functional language. Along with Streams, it brings some functional features to an Object Oriented language. Functional programming has its pros and cons, and Object Oriented languages too. But functional programming is not a silver bullet to create business applications. If it was, we would all be programming in Lisp or whatever purely functional language, and it is not the case. Java is taking a path on which we can have the best of both worlds: objects and functions. By the way, if we take a look back at what were OO languages 20 years ago, and the patterns used to create business applications, we can see that things have changed a lot! We do not program Objects as we used to 20 years ago. But Java is still there, C# is still there too. OO languages evolve, embrace the best things that can be taken from functional programming, and this is just great. New ideas need to be introduced and tried and improved in the business space, and at the end of the day, the main languages can support them in the best way possible. And guess what: those new ideas are implemented on the JVM, making their integration in Java easier. With more than 200 different languages supported, the JVM is with no doubt the best tool to test new ideas and new language features.

You work as University professor. What is your opinion on the next generation of programmers?
I must say that becoming a proficient Java programmer is harder and harder, due to the amount of things you need to know for that. In an ideal world, you need to know how CPUs are working, how they exchange data with the memory, how caches are organized, what is NUMA etc... You also need to understand how a JVM works: interpretation, just in time compilation, garbage collection. Then you need to know the language well, lambda are a huge addition to that, on top of imperative and object programming. The same for the APIs: Collection, Stream, IO, Concurrent programming. Then you need to learn how the database work, SQL, JDBC, and an ORM tool, probably hibernate. You also need to understand the service layer, how transactions are handled. And at last, you need to know REST Services, as well as SOAP because you will most probably work on legacy applications. It would be good to know a little about web interfaces, JavaScript and Angular. This is for the technology part. On the method part: Git, Maven, Jenkins, maybe also Docker and stuff. None of this was there 20 years ago, half of it appeared in the last 10 years. But the problem is: you do not have more hours to learn all this at the University. More and more in the same amount of time! A tough problem to solve... And we haven't say anything about the NoSQL space.
At some point you have to make choices, because you will not be able to learn everything. So I think that programmers are going to be more and more specialized, with a good knowledge of the language, its main API, the methods, and one specialization or two, on the backend (SQL or NoSQL), or the web interface, mainly REST Services. For me the notion of "full stack" developer is more a marketing stuff than a reality. Being an expert in all the fields will not be possible anymore. It is probably already the case.

Except programming do you have any other hobbies?
I have been working in education for 20 years now, and I think it is really a passion. 20 years ago: barely any Internet, no YouTube, real slides (I mean, plastic one, not PPT files!), no laptop (there were so expensive!), blackboard and chalks. Now: most of the conferences just push everything to YouTube, many Universities are broadcasting their courses live. Reaching high quality courses in now just a matter of clicking on the right link. This is just great, and the question is: how can we leverage all this awesome resources to better train young people? Even people who cannot attend University courses, and they are many. We need to rethink the way we train students, the way we train people all along their lives, and the way we can bring more people to graduate level, even those who cannot come to Universities.

Thank you very much, José! See you soon in Sofia!