
Sign up to save your podcasts
Or
Duke's Corner Podcast with Venkat Subramaniam, who is a Java Champion, professor, programmer, and a conference organizer. The conversation ranges from the upcoming JavaOne conference in California in March 2025 to building the Java community, engaging the next generation of Java developers, the importance of going to Java user groups, career building, the evolution of Java technology, agile development, release models, and his upcoming book — Cruising Along with Java. This is a jam packed episode that has something for everyone. Here's quick bit from the interview from Venkat: "One of the biggest contributions Java has made is to truly show to us the developers what agile development really should be!" I like it.
Interview Archive
Transcript
Venkat, Venkat Subramaniam welcome, welcome back to Duke's Corner!
0:05
hey, thanks, Jim, for having me here it's a great pleasure always to talk to you and and i i can't believe it's a new year and i'm gonna see in a few months actually so excited to talk to you now and again in a few months
0:16
Yeah, it's great. It is. I cannot believe it's 2025. That's shocking to me, actually. And yeah, you mentioned a few months. We're going to actually see each other in California. Java 1 is right around the corner, which is one of the reasons why I wanted to chat with you here today.
0:31
And I saw your name on the schedule. Of course, I expected that. So tell me a little bit. Let's just start off with Java 1 since we're going to actually since that's in March, March 18th through 20th. What are you looking forward to with Java 1 this year?
0:45
Oh, I'm super excited. I'm definitely very thankful for getting the opportunity to speak there as well. And one of the reasons I'm excited about being in Java 1 is, A, it's in California. So I have to say that being on Oracle campus absolutely excites me. Don't get me wrong.
1:04
I've been to a few different Java 1s over the years, back in time when it was in California, again in Vegas. But for some reason, I'm truly excited about being on the Oracle campus this time. To be at the home of where a lot of these things happen means a lot more than being
1:24
in a huge conference venue out in Vegas. So that's part of the excitement, not the only, though.
1:29
And it's a short flight from where you are. It really is.
1:33
It's like an hour or so, right?
1:37
Totally. How many Java 1s have you been to?
1:39
Oh, I can't remember. I'm going to say definitely quite a number.
1:45
So you've really seen sort of the evolution, not only of the conference itself, but of obviously the people, but of the technology as well. So actually, let's just stick with the conference for a second. What are you going to be talking about there?
1:56
Yeah, I'm going to be talking about really a talk focused on knowing your Java. And it's funny, you know, you may ask, well, wait a minute, Java is starting 30 years. We got a lot of people with a lot of experience now. Do you really need to talk about Know Your Java? And exactly my point. So essentially,
2:17
what I'm going to be talking about is, I favorably call it as, tuck your toes moment. I have seen a lot of developers in my consulting work. And to be very honest, myself, stub my toes and say, ouch, when I implement a certain feature and then begin to realize that the code is
2:38
behaving very differently than I expected it to be. Sometimes out of my ignorance or out of the ignorance of people who are using it, sometimes it's just not thinking through the consequences of what the code may do. And I often say, you don't want to get the call at 2 a.m.
2:57
on that Wednesday saying that your code has failed in production. So what I'm going to talk about are things I've seen in production that have led to problems because developers either have not fully understood a certain idea or it comes back to bite them in the back, me included.
3:16
And I've decided to take a very interactive approach towards this rather than, you know, just pressing slides and talk about stuff. What I do is obviously no slides in my talks, but I show them a piece of code and then interactively they tend to figure out what the code is doing.
3:36
And this counts really well for a larger audience because I use an interactive tool to pull their response. And then I show them the poll of the response. And I've given this talk a couple of times. And it's really fascinating to see how many developers figure out what the code actually does.
3:56
Then we dive in and talk about the actual behavior of the code and then extend it to things we need to pay attention to become really good developers with it. And in fact, what's fascinating about this is even AI tools quite often don't get these things right. That's what is the scary part.
4:19
People often jump in and say, oh, I don't need to do this right because I can use AI to do this. Well, I've actually seen AI tools fall into the same trap that programmers fall into. Well, guess what? Because AI has been trained on the two code that a lot of us have written over the time,
4:37
and if we have collectively made that mistake, it's no surprise that AI is going to make that mistake as well. So that's kind of essentially what I focus on in the talk, is the things that can bite you in the back, things that you need to know.
4:51
And then it's a very example-driven presentation where we look at a code, take a poll of the behavior, reflect on what we collectively identify, and then analyze the code, and then draw some conclusions on how to become better at dealing with similar code as we move forward. And to just emphasize things you need to know from this,
5:14
this is one of the things I often emphasize is you look at the syntax, but you should really see the semantics. That, to me, is the essence of programming. Syntax is what we look at all the time. But as developers, We need to really take the time to see through the semantics.
5:34
And this talk is really focused on the semantics. You know, I'm a huge fan of testament development. I like to write test cases. And every single example I show in the talk, compilers don't catch the problem. Any serious effort with unit testing often will not catch these problems. That's the scary part.
5:58
You can't delegate this to the tools and say or the techniques and say, gosh, I do all these. I don't have to worry about it. No, you do, because with all respect, we want to rely on compilers because they allow us to get early feedback on certain problems in the code.
6:16
And if a code passes through compiler, we can be confident to a certain level. Similarly, I'm a big fan of automated testing. That gives us confidence. So I'm not rejecting those tools and techniques, but those are necessary but not sufficient. Your knowledge of semantics still is relevant and important in spite of compilers
6:39
and test-driven development and AI tools, and that's kind of the emphasis of the talk.
6:44
This is fascinating to me. I'll tell you a little story. I'm going to comment on a few things you've said, but in this framework here. When I first met you, it was 2017 to 2018, and you were doing a keynote, and it was a coding session. sort of thing, obviously,
7:01
and I'm sitting there because I didn't know you at the time and I had to sort of get to know you really quickly because I was going to do an interview with you, a streaming interview right after your keynote, and I had to go up and introduce myself and then drag you off to the corner to do
7:14
this interview. So, I'm watching this keynote, and you're talking about, obviously, technical things, about software and stuff, but I was following it because I was getting this message from you. You were really looking at things from not only a micro level, but a macro level.
7:30
And I was seeing how I can apply that level of thinking to writing, you know, English, and... project management, because it was a way of thinking. And it sounds like everything you just said now, it sounds like a perspective you're taking in terms of writing code,
7:47
not just relying on a tool to find the errors and stuff like that. But as you're writing, it's the perspective up front, especially with test-driven development. And it's interesting to me how, as a non-coder myself, I can follow what you say. That's fascinating to me.
8:04
It's interesting that you say this, Jim, actually, because I was reading something yesterday and they were talking about the use of AI versus critical thinking. And I don't want people to take this negatively, but this is something for us to really think about because we are living at that
8:22
tipping point where we are going to benefit a great deal from a new evolution of technology. But it comes with a certain caveats. And that is, with us, we have some amazingly great tool. But unfortunately, we can't compromise on critical thinking. In fact, we are living in a time when I think critical thinking is even more important.
8:53
And that's exactly to your point. This is something I had to take the time to learn along the way because, you know, oftentimes our schooling doesn't teach us the necessary skills we need to survive and succeed in this world. These are things we stumble upon, figure out, maybe have a good friend or a mentor,
9:14
and then you kind of observe and say, And then you accidentally stumble upon these things. And that's been journey for me. But to me, that is one of the things I would encourage younger developers who are at the conference are trying to learn and apply is don't be on a fast track.
9:35
Don't try to solve problems too quickly. Yes, we want to solve problems. We want to deliver value to our business, definitely. But there's a risk of being too rash in our development because we don't take the time then to understand the consequences of what we do. And to your point,
9:57
that I think is the critical thing is to really emphasize is that we need to really improve on our critical thinking. And to your point, critical thinking applies to program development, but it applies to every aspect of our life. It's every decision we make, every problem we solve, every solution we consider, it requires that.
10:22
And I think that's kind of the essence of the talk as well is to say that, hey, we can go beyond what we see at the surface. If we start thinking through the consequences of what we are using, we tend to identify the issues a lot more.
10:39
So I often say sometimes we have to slow down in order for us to gain speed. We are in this mode of, can I go faster? Can I go faster? Well, there are times we have to slow down. And if we don't slow down, then we're going to end up in a ditch. And we didn't gain speed.
10:58
We actually resulted in more of an accident, right? So that's kind of the, so to your point, you're absolutely right. That's what fascinates me as well.
11:06
Yeah, well, I'm really looking forward to your talk. I've read the description and it was kind of interesting to me. And now that you explain it, I definitely want to attend it. I'm actually the photographer for Java 1, so I have to be at your talk, so I have to shoot it.
11:19
But I'm going to make sure I hang out there because I really enjoy your talks from this actual perspective here because you can get micro and macro simultaneously. And I really learned from that. And I pick up a little bit of coding along the way as well.
11:33
But I'm always fascinated in this concept of learning and efficiency and development. It's one of the reasons why I like talking to developers is because to one degree or another, they're struggling with these very same issues and how they learn complex things, how they're able to focus and go very, very deeply into a topic.
11:52
And just like you said, the ramifications of not getting something thinking you're right, but you're actually wrong on something and then finding out later when you get that two o'clock in the morning phone call when the bank goes down and, you know, in Asia and, you know, that is your code. Right. And so.
12:08
i can't i can't imagine i was talking to a developer one time and he says yo yeah i was writing some stuff and you know the bank actually went down and i said oh my god that actually happened that's just no that actually happened you know as well
12:19
he was a junior developer and he says but that's okay i learned a lot from it i says oh my god you know i I don't know if I can, that's just stress to me. It's like becoming a surgeon or something. So, all right, that's really fascinating. I'm really interested in this. Cool.
12:36
So, okay, so let's talk a little about your feelings about Java. Like what's new these days in Java? I mean, Java is very interesting from one perspective to me in that there's always these constant releases now every six months, right? So you get new bits that are coming out. every six months,
12:55
but you can also obviously follow the stuff that's under development on the open lists, on the open JDK lists. And so let's talk a little bit about what's new now, but also the evolution of Java. Where did it come from? I guess it's 30 years old, but it's also very young as well.
13:10
I'll be honest about this to you, Jim. I was one of those guys on the other side of the picket line, constantly complaining about Java, that it's not moving forward. I was ready to, you know, say the last rights for it. Java is dead. Really? When was this?
13:27
When was this?
13:28
Actually, it's fascinating because I've saved some of these emails back in 2010 timeframe. This is funny if you think about it, but it also could be frustrating. I used to get hate emails from people. I hate you Venkat because you hate Java. It was a crime to hate Java back in time, but rightfully so in my opinion.
13:53
And to be honest, All that changed for me when Java 8 came out. And you may say, well, wait a minute. What did Java 8 do to get you convinced? And I remember literally standing up at my desk one day. That's how you know how shaken you are seeing something. I've seen lambdas. I've seen functional programming.
14:16
I've seen functional pipeline. I've used it in Scala and Groovy and other languages. I've done things like Erlang. So these concepts are not new to me. And honestly, I said, big deal. Java has lambdas. Why do I care? Because I've seen it in other languages. But this is where I'm willing to admit when I'm wrong.
14:40
And to me, that's very humbling. When I can realize myself that I'm wrong and I'm looking at Java, I looked at Lambdas, I'm like, big deal, right? I can do Lambdas in other languages. I could do it in Scala, for example. Why do I care? And I truly looked at two things that blew my mind.
15:00
One was Invoke Dynamic, and Invoke Dynamic replaced the need for inner classes to do Lambdas, which is what languages like Scala and Groovy on the JVM were doing back then. It fundamentally raised the bar for any language on the JVM to implement Lambdas and functional pipeline very efficiently.
15:24
The other thing that blew my mind was the lazy evaluation of streams. You know, when I wrote the first book on functional programming in Java, in fact, it was released the day Java 8 was released, and I'm very thankful for all the guidance and reviews and help I got from the core
15:42
developers behind the Java language because I was writing the book in parallel to evolution of Java 8. But one of the things I said in the book, and my editor called me on the phone and said, are you serious you want to write something like this in a technical book?
15:57
And I said to my editor, hey, I live in Colorado. And she's like, yeah, I'll let you slip through this. And I said in the book, Landis are the gateway drug, streams are the real addiction. And what I meant by that is... You get drawn into the feature by looking at lambdas,
16:17
but when you realize the functional pipeline and the lazy evaluation that streams provide, that's when you really realize, oh my gosh, we are sitting on something that's extremely powerful. Because as programmers, we know one thing really well. You can look at a code and say, oh, that's cute. That's easy to understand. That's easy to maintain.
16:42
But with all respect, that's not going to sustain if the code doesn't give you the performance at the end of the day. And while lambdas give you the conciseness and the cuteness of the code, it's the lazy evaluation that brings the performance and, of course, the dynamic and concepts like that.
17:04
So what fascinated me and completely turned me around from being a person talking ill about Java to saying, I got to really pay attention to this because this is going to make a huge difference in production for organizations that have heavily invested into Java. And to me,
17:26
I often say that functional programming is fascinating because it reduces the accidental complexity in code. But with all respect, with respect to reducing accidental complexity, that's a problem we deal with for development. That's important, but that cannot really replace an efficiency in production. So as they often say that when it comes to these concepts,
17:55
functional programming relies on lazy evaluation for efficiency. And Java, you know, there are languages like, don't get me wrong, I love all these languages, so I'm not saying these negatively. But when you look at language like Ruby or JavaScript, they provide you the functional style of programming. but they don't provide you lazy evaluation.
18:22
So that's why I call them functional style, not functional programming. And to me, Java developers behind the Java language could have just said, yeah, you know what? You want Lambdas? I'll give you Lambdas. Let me go home. But instead, they took the time to not only provide a syntactical benefit to reduce complexity,
18:44
but they took that down to providing performance at the execution level as well. And on that day, I realized that Java is ready for a huge evolution moving forward. I mean, as a person who didn't believe in Java, I woke up to realize, and that's why I said I really stood up at my desk and I said,
19:09
I've got to focus on this one because this is going to be huge. And fast forward literally, I don't know, 12 years now since the day I realized it. Java has not disappointed me. In fact, it's surprised me every single day as I look at the evolution of the language. So since that time,
19:30
I would say one of the biggest contributions that Java made, personally in my opinion, is to truly show to us the developers what agile development really should be. I mean, I say this sincerely, right? We are in a crazy world right now when everybody is chanting, be agile, do agile development.
19:52
Well, you don't do agile development, you be agile. And one of my aha moments is when the people behind Java figured out They can decouple the development cycle from the release cycle. I wish more people really thought about it and figured out what an amazing idea that really is. Because it's silly when you see people say,
20:22
we're going to do sprint and two-week development. The folks buying Java said, nonsense, we are not getting results from what we are doing, or we're not going to run behind agile development like everybody else does. We're going to decouple development from release cycles because they figured out what was holding them back.
20:41
To come up with an arbitrary set of features to be released ahead of the time of doing any work on it is definition of insanity. And we have been doing that, and the folks behind Java were doing that too. And they realized, wait, what if we give a six-month release cycle,
21:00
but we're going to allow people to take the time to develop the features that with the utmost quality and feedback cycle it needs by using the pre-release versions. But then when it's ready, you get to release it within six months and not have to wait arbitrarily for synchronizing with some feature that somebody decided to put together.
21:28
I wish more organizations will learn from what Oracle has done very brilliantly, but has not, in my opinion, really marketed that idea really well. To me, that to me is, again, Nothing technical at this point, but even from the managing the project point of view, there is things to learn.
21:51
And that's one of the reasons I appreciate Java today is that Java is no longer what it used to be back in Java 4, Java 5, Java 6 timeframe. It's a vibrant environment. And again, with no disrespect to people behind Java, we could also realize that we talk about Java as this one language.
22:13
Oh, boy, 30 years is what? If not one, if it's not two generations of developers moving the language forward. It's not the original creators of the language. It's not the people who came after that a decade later. It is a much different set of people moving Java forward. It's new thinking because there's new energy into it.
22:37
So I can talk endlessly about the technical reasons why I'm excited about Java as I do in my talks, but it's also these non-technical things that also excites me about Java is because it's not one thing that makes it successful. It's kind of like the wheels of a car.
22:55
You can't have just one wheel functioning really well and the other wheels being, this is why we align wheels differently. from time to time in a car because when the wheels are aligned, we are able to move forward smoothly. So it's the time when several things aligned in Java,
23:15
both the technical things and the non-technical things coming into alignment is what really excites about Java to me today.
23:22
Yeah, I always describe Java, you know, some people say, oh, it's 30 years old. And they don't realize if you go to any real Java conference around the world, you're going to see a bunch of 20 year olds there. You know, there's a lot of people, you know, I mean,
23:35
I go to a conference and I say my first Java one was in 2000. Oh, I wasn't really born then, that kind of thing. And it's like, that's 25 years ago. And yeah, that developer was just born. And so these are the people now that are driving it. But a lot of the older guys are still there.
23:55
So they have the history and things like that. A lot of deep expertise. But it's completely young. It's the old and the young mixing together seamlessly. I mean, you can see it inside of Oracle as well. You have people that are working on the platform. This is a lot of young people around. So, okay,
24:12
when you talk about the decoupling of development from release, I mean, it's been that way for years now in terms of Java. Other organizations aren't, I mean, aren't using that. Isn't that normal now in software development?
24:27
Sadly, because one of the reasons for that is the world is a really big place, and it takes certain time and effort for people to do things and realize it's not working for them, and then to have the ability to change. Certainly, there are a number of organizations that are very effective, doing great. Absolutely, that's fantastic.
24:56
But there is a fairly significant segment of the industry where, unfortunately, there are certain people in the management or in various responsibilities who are looking for a prescription rather than a practice. That's one of the things I often emphasize to people is, you know, look for practice, not for methodologies. Look for practices, not for procedures.
25:24
And practices are easier to change, procedures are what you are trying to follow. And a lot of times what these organizations do is they want a prescription as to how to do agile, and they fall into the trap of following certain predetermined things.
25:42
One of the things I often say is be agile about being agile, because you've got to figure out what works for your team, and what needs to change. And again, to emphasize that, just because it worked for Oracle doesn't mean it will work for everybody else.
26:00
But it's important to really take the time to see and say, wait, why are we building this way? You know, personally, right, I gave my company as agile developer, but I don't think I do any agile software process training. I don't do that anymore.
26:17
Part of the reason for that is, if you ask me, how do I develop software? Well, I do continuous delivery. That's what I do. I release software multiple times a day into production. I don't believe in this two-week cycle. Well, why should I focus on an arbitrary process I create when I can deliver value to my
26:41
customers much faster and focus on what actually they want? So I've changed a lot of things I do based on my own experience and experimentation. But unfortunately, as a smaller company, I'm able to do it. As a larger company, Oracle is able to do it. So it's not the size that matters, but it's the mindset that matters.
27:06
It's for people who are able to come in and say, well, duh, this is not working, but thank you for your suggestions. The Agile manifesto said we shouldn't focus on the process. And yet, agile development has become such process-oriented, unfortunately. What an irony, right? So to your point, yes, companies like Oracle have done it.
27:30
Some other few companies have done it. But at large, I think our industry is struggling. It goes back to what we talked about earlier, right? Critical thinking is hard. And when people want prescription, they don't want to take the time to do critical thinking. Instead, they're like, this is why I hate the words best practices.
27:52
When somebody says best practice, I cringe because best practice means give me a checklist. I will tick them off. If it works, great. If it doesn't work, it was not my problem. I just followed the best practice and obviously it didn't work for me. I think there's a lot to learn in this world and to improve.
28:12
Yeah, it's interesting with this whole release model, I'm feeling more and more as it's, yes, it's been obviously around for years now, but it has such an impact with so many people. Whenever I bring it up, everyone reacts like you react. It's really interesting. It's not just a release model. It's much more than that.
28:32
Okay, so that's an interesting bit there about the evolution. Anything more about what you've seen with Java over the years?
28:40
One thing that I'm absolutely excited about is the ideas behind virtual threads. I'm absolutely excited about a lot of other features in the language, but one thing that excites me about virtual threads is, this again goes back to what I mentioned earlier, is I tend to get excited about Java
29:03
when it makes the production environment really successful and not just the development experience. You know, I'm a programmer. I care about developer experience. I care about the joy and the journey of writing code and reducing complexities. But at the same time, what fascinates me is how much impact it has in production. And virtual threads, to me,
29:29
is something that's going to make a huge impact in production when companies are able to move forward into much more recent versions of Java. And the reason is... Without you having to modify the code a lot, I often say virtual threads is like aspects in aspect-oriented programming. Because to me,
29:51
you can flip a switch here and you can see changes way over there rather than having to modify code at every different level. This is huge because if you look at C Sharp and if you look at JavaScript, again, those are languages I appreciate for their own merit. to be negative about the languages.
30:12
But when it comes to asynchronous programming in C-sharp or even in Kotlin or JavaScript, if you want to convert a code from being synchronous to asynchronous, you have to modify a lot of code. We could argue the code change is not a lot, but the code change is intrusive.
30:36
It's not just where you come and flip a switch and you walk away. But it really is, again, fantastic to see how, without modifying any code, you can just modify a configuration, I use the word loosely here, at one level, and all the code can now behave asynchronously what was previously synchronous.
31:00
To me, that is huge in terms of performance at the runtime introduction. And that's what I truly appreciate. I tend to really appreciate things that you don't see, you don't look at. When you look at the code, this is not staring at you.
31:18
But you've got to kind of see through it and say, whoa, I see what's going on here. And that's why it's kind of like coming back in full circle. What exactly about Stream was not the syntax, but the semantics. And what I appreciate about virtual threads is again, not just the syntax, but the semantics of its behavior.
31:39
And that to me is really fascinating. And if you ask me, what are the super big threads A big as not in huge in terms of code change, but huge in terms of impact that I've seen in Java. I would say, of course, the introduction of Java itself in the beginning.
31:59
But then I would put Java 8 as the next biggest change. But fast forward with, again, all respect to everything that's happened in between, which are as valuable But to me, the next big change in Java, in my honest opinion, is virtual threads and structured concurrency.
32:17
And I think these are going to be the super highlights of Java over the evolution over the 30 years is because they have a huge impact in various different ways in terms of productivity for both the developers and in terms of production as well. This is fascinating.
32:35
You should write about the history here.
32:38
I don't think I'm qualified to write. I'm the person who speaks the joy, but I don't think I'm qualified to write about it.
32:47
Well, you did mention earlier about a book.
32:49
I do have a book coming out on the evolution of Java, not in terms of history of it, but the technical evolution, cruising along with Java. Essentially, the idea behind cruising along with Java is to say, hey, I was excited about Java 8, but here's what's happened in Java since Java 9 to Java 23.
33:11
And one of the things I'm really happy about is how much this evolution has been exciting. You know, I usually write my books really quickly, but I'm really thankful to my publisher. They've been very patient with me. I literally took two years to write this book, not because I needed the time to write it,
33:27
but I really wanted to. I would see a feature in Java. I'm like, oh, my gosh, I'm really excited about it. My gosh, it's in pre-release. I've got to wait for it to become, you know, into the language. So I kind of waited for these features to be baked into the language.
33:41
So I was writing the book alongside as these features were developed, but I finally realized that it's time to release the book. So it's coming out in a couple of months from now, cruising along with Java. But to your point, you know, I'm excited about the features like text blocks and features like type inference,
33:59
but all the way to, you know, what excites me is not that Java has these n number of features, right? But what blows my mind is the synergy between those features. You know, oh, wow, sealed classes are really cool. Oh, wow, pattern matching is cool. Oh, wow, records are cool. But then I sit back and say,
34:21
what's even more fascinating is, for example, how pattern matching and sealed classes and records work. all come together, right? That's what truly has been exciting for me to see. So when I work with my clients, when I'm working on code for them, I show them how they can refactor their code from those gnarly if and else
34:46
conditions to using pattern matching and sealed classes and records. And that's what I wanted to really bring in the book to say, you can use these ideas in your current code and refactor those code so that they become a lot more easier to maintain. And so anyway,
35:05
that's kind of the emphasis that I really want to bring to developers interested in Java is to say, you are no longer writing. I give a talk from time to time, which is called, this ain't your parents Java. And I say that as a parent myself, right?
35:23
To me, it's fascinating because 30 years, to your point, Jim, we see 20-something. I have children who are adults now who are in the workforce. And for me to see my children in the workforce and learning to use technologies and push the boundaries – You know,
35:44
I use Java very differently as a young programmer than the next generation gets to use Java. So I think that's the key is, you know, in fact, to your point earlier, this was fascinating to me because somebody came to me and said, hey, I used to program in Java 15 years ago.
36:04
I kept telling people, don't use Java because it's obsolete. I just stumbled into your talk. I saw the features you are talking about. I hate to admit it. I begin to realize Java is no longer the language that I once programmed in. I should no longer tell people, don't use Java.
36:29
I should go learn the new Java and explore how I can benefit as well. And to me, that is the key is we all, this is human nature. I used to do something. I develop an opinion about it. I have moved away, but I don't realize that.
36:48
I have moved away, but the language has moved on and forward as well. And a significant number of developers have just not been exposed to it. So when somebody tells Java, don't use it, I respectfully ask them, when was the last time you actually used Java? Well, if you used it 10 years ago or so, I'm sorry,
37:11
but you're not really looking at the same language. In a way, it's like being in a city, right? You know, I was down in Houston a couple of weeks ago with my wife, and we used to live in Houston for 20 years, and it's been almost 20 years since we moved from Houston.
37:30
And as we were driving by, my wife was saying, hey, look what they have done to downtown. You know, Jim, when I used to live in Houston, downtown is not where you go after it gets dark. It was the scary, dark place. And she was telling me, look at this. This is a vibrant community here.
37:51
young people walking down, beautiful apartments, looking fascinating apartments. It doesn't look rundown. And I was like, yeah, when you come back, you get a different view. I'm sure things could have gotten better, could have gotten worse as well. But the point is, you need to revisit to improve your opinions about it.
38:17
That's what is the difference between opinions and biases. And then to me, if you've been away from Java, like I've been away from Houston for a while, I would say take a nice drive through it. And you may have a very refreshing view as me and my wife did as we drove through Houston.
38:36
Yeah, everything evolves, everything, everything grows. So, yeah, that's really a good point. And, you know, that's why I like listening to you in sessions like this, but also in your technical sessions, because I get a holistic viewpoint where you're bringing things together and and I can actually learn from them,
38:53
even though I'm not necessarily using the tool that you're using. I can abstract the concept that you're talking about into what I do. You know, it's really interesting. So now you've been training and coding and teaching for years and years and years, and you have clients and stuff.
39:09
But now, most recently, you're also running your own conferences now. So talk for a minute or two about that.
39:15
It's been an exciting experience, and I'm very humbled at the amazing support I got from the community. But one of the things I really wanted to do was to be able to run a conference that brings together experts and the next generation of experts at the same time. You know, with all respect, right?
39:39
I don't mean this as a disrespect to anybody, but I love speaking in conferences. I'm thankful, humbled when conferences invite me and say, we can come and give a talk. But I ask the question, I get invited to speak in talks today. You know, I'm marginally good. Thank you for that.
39:55
But how can we have the next generation of amazing speakers who can influence and move the world forward? When I ran Deaf2Next earlier in October of 2024, I was humbled and very thankful to have experts like Dave Thomas and Neil Ford come and give a talk.
40:18
These are names we recognize because we see them all the time in conferences. I love hearing Dave. I love hearing Neil. He's amazing.
40:27
Yeah. They are amazing.
40:29
And I had Lisa Crispin, you know, somebody I've admired for a long time. Lisa came and gave a talk at the conference. I'm very thankful for her presence as well. So these are names recognized because they are experts. We've seen them write books. We've seen them give talk in conferences.
40:46
But what also excited me was when I was looking at the reviews from the talk, we had speakers who are practitioners in the industry whose name nobody has heard. I didn't know those names. But when we opened up for open call for papers and encouraged people to say, you know,
41:08
we will pay you for your travel if you are qualified to come and speak. You don't need to be part of a large organization or you could be, but you don't have to wait for your boss to approve your trip. But if you are qualified, that's the key.
41:24
We're going to support you to come and give a talk in the conference. And we did that. And when we looked at the reviews, there were people saying, oh, my gosh, I went to this talk by this person. And here are the things I learned. It blew my mind.
41:39
Here are things I can use on Monday when I get back to work. Right. And to me, with all respect, people like me can give talks and we can influence people, and we do, but I want to give an opportunity for the next generation of those people who can inspire and educate people.
41:58
But these are the hidden gems in the world, and I want to give more opportunity for them. And that's exactly what we're doing this year as well, is we're going to have a really good balance between these experienced and expert speakers. But we also want to bring in experienced practitioners who are not those well-known speakers.
42:20
but who can eventually become those well-known speakers over time. But we bring them for their technical competency. They not only gave talks, but then they spent their time in the hallway, sitting down with developers and talking about how to address their architectural concern or their particular problems.
42:42
And to me, that's a whole point of going to a conference. You know, that's exactly why to kind of bring this into from my conference to Java 1, that's the reason I want to go to Java 1 as well. It's not because I can give a talk in Java 1. I give talks everywhere.
42:58
But I get an opportunity in Java 1 to sit down with the core developers behind Java who are not these people who speak in a thousand conferences like I do, but who are the people who have their hands wet with the technology that most of us use. And so back to my conference, if you can come over,
43:20
but sit down with the person who is doing the architecture, who is driving the development behind AI in their company, and get to really sit down and talk to them about practically what they are doing, I think your time is well spent being in a conference. And that's kind of what motivated me to create this conference.
43:39
And that's what we're focusing on as well.
43:41
Wow. Inspiring. That's really inspiring. That's really great that you're doing that. And just to let you know, I have heard from several people who went to your conference and they really said it was very innovative. So that's some feedback there. So that's really cool. All right, Venkat, is there anything else that we need to talk about today?
43:59
I think we can go on for another hour, but it is two o'clock in the morning here. And do you have any final words?
44:09
Well, I really appreciate you staying late and taking the time to talk to me. I'm very humbled and grateful for that. But I want to say, you know, if there's anyone out there kind of still thinking, should I really go to conference? Should I go to Java 1? I would say the conference is you.
44:31
It's what you want to make out of it. It's not the published talks or it's not the scheduled program, even though those are important. It is the people that you're going to meet. It is the experts. It's the practitioners. It's the fellow developers in the industry. And Jim, I'll be honest about it.
44:50
I started speaking in conferences nearly approximately 25 years ago. And not only conferences, I also want to bring attention to user groups. User groups have seen less attendance over the past few years. I go to speak at about 25 user groups every year. I've noticed that. I've really noticed that. Yes.
45:16
And I attend user groups when I'm able to, when I'm in town. And I'll tell you why, honestly, I invest my time to go to user groups and go to conferences. It's because when I come back from a user group or a conference,
45:33
I don't come back saying, yeah, I went there, I had the pizza and the food they gave me. No, it is things that change my thinking. I have written chapters in book because I had a conversation with somebody. I got motivated to work harder on something.
45:51
I've implemented a certain design ideas for my clients because I heard somebody in the hallway talk about something they do. I cannot tell you how much I learn when I go to these events. I'm selfish in that regard. I want to learn. If I'm not learning, I'm not going. And it doesn't matter.
46:15
I was in Chicago a couple of months ago to speak in a conference. And Mary, who runs the Chicago Java user group, said, would you come and speak in the evening? I'm like, sure. And I go there. I speak in the evening. But then I spend the next hour and a half after the talk literally standing there
46:34
and talking to developers. And at 1030 in the night, we are leaving the building. And I'm like, oh, my gosh, I'm so enlightened by this hour long, hour and a half conversation because it's given me thoughts that I want to focus on moving forward. I leave educated. And more important,
46:56
one of the things I often emphasize to people is it's not who you know that matters. It matters who knows you. You know, it doesn't matter, Jim, that you know me. But the fact that I know you, if somebody calls me and says, hey, we're looking for somebody like this. Can you recommend somebody?
47:16
Honestly, I recommend people that I know. I know people from user groups I've been to. People have enjoyed conversation after the user group. I've communicated with them by email. And I refer people because I know them. So when you go to conferences, when you go to user groups, You are networking. You allow other people to know you,
47:40
which means when there are opportunities, they tend to call you. I'll be absolutely honest about it. I've not done any marketing for my training or consulting in the past 25 years. Zero. And the only reason is I've got people call me and say, hey, one of my colleagues heard you speak.
48:01
One of my colleagues worked with you in a previous company where you did consulting. Can you come and teach us this or can you come and help us with this problem? So it's because people know me and people know me because I go to conferences, I go to user groups. Again,
48:17
it doesn't have to be for one thing, but I encourage more developers to go to conferences, but go to user groups. User groups cost you nothing other than your time, and they give you food, and you get to interact with people and make new friends.
48:33
I want to say the last thing on my mind is to encourage people to go out and network more and let the world know them. more than anything else. Beautiful. Beautiful.
48:44
All right, Venkat, we'll see you in a couple of months in March, March 18th through 20th in Silicon Valley.
48:51
I look forward to seeing you there, Jim. Thank you so much. Cheers.
Duke's Corner Podcast with Venkat Subramaniam, who is a Java Champion, professor, programmer, and a conference organizer. The conversation ranges from the upcoming JavaOne conference in California in March 2025 to building the Java community, engaging the next generation of Java developers, the importance of going to Java user groups, career building, the evolution of Java technology, agile development, release models, and his upcoming book — Cruising Along with Java. This is a jam packed episode that has something for everyone. Here's quick bit from the interview from Venkat: "One of the biggest contributions Java has made is to truly show to us the developers what agile development really should be!" I like it.
Interview Archive
Transcript
Venkat, Venkat Subramaniam welcome, welcome back to Duke's Corner!
0:05
hey, thanks, Jim, for having me here it's a great pleasure always to talk to you and and i i can't believe it's a new year and i'm gonna see in a few months actually so excited to talk to you now and again in a few months
0:16
Yeah, it's great. It is. I cannot believe it's 2025. That's shocking to me, actually. And yeah, you mentioned a few months. We're going to actually see each other in California. Java 1 is right around the corner, which is one of the reasons why I wanted to chat with you here today.
0:31
And I saw your name on the schedule. Of course, I expected that. So tell me a little bit. Let's just start off with Java 1 since we're going to actually since that's in March, March 18th through 20th. What are you looking forward to with Java 1 this year?
0:45
Oh, I'm super excited. I'm definitely very thankful for getting the opportunity to speak there as well. And one of the reasons I'm excited about being in Java 1 is, A, it's in California. So I have to say that being on Oracle campus absolutely excites me. Don't get me wrong.
1:04
I've been to a few different Java 1s over the years, back in time when it was in California, again in Vegas. But for some reason, I'm truly excited about being on the Oracle campus this time. To be at the home of where a lot of these things happen means a lot more than being
1:24
in a huge conference venue out in Vegas. So that's part of the excitement, not the only, though.
1:29
And it's a short flight from where you are. It really is.
1:33
It's like an hour or so, right?
1:37
Totally. How many Java 1s have you been to?
1:39
Oh, I can't remember. I'm going to say definitely quite a number.
1:45
So you've really seen sort of the evolution, not only of the conference itself, but of obviously the people, but of the technology as well. So actually, let's just stick with the conference for a second. What are you going to be talking about there?
1:56
Yeah, I'm going to be talking about really a talk focused on knowing your Java. And it's funny, you know, you may ask, well, wait a minute, Java is starting 30 years. We got a lot of people with a lot of experience now. Do you really need to talk about Know Your Java? And exactly my point. So essentially,
2:17
what I'm going to be talking about is, I favorably call it as, tuck your toes moment. I have seen a lot of developers in my consulting work. And to be very honest, myself, stub my toes and say, ouch, when I implement a certain feature and then begin to realize that the code is
2:38
behaving very differently than I expected it to be. Sometimes out of my ignorance or out of the ignorance of people who are using it, sometimes it's just not thinking through the consequences of what the code may do. And I often say, you don't want to get the call at 2 a.m.
2:57
on that Wednesday saying that your code has failed in production. So what I'm going to talk about are things I've seen in production that have led to problems because developers either have not fully understood a certain idea or it comes back to bite them in the back, me included.
3:16
And I've decided to take a very interactive approach towards this rather than, you know, just pressing slides and talk about stuff. What I do is obviously no slides in my talks, but I show them a piece of code and then interactively they tend to figure out what the code is doing.
3:36
And this counts really well for a larger audience because I use an interactive tool to pull their response. And then I show them the poll of the response. And I've given this talk a couple of times. And it's really fascinating to see how many developers figure out what the code actually does.
3:56
Then we dive in and talk about the actual behavior of the code and then extend it to things we need to pay attention to become really good developers with it. And in fact, what's fascinating about this is even AI tools quite often don't get these things right. That's what is the scary part.
4:19
People often jump in and say, oh, I don't need to do this right because I can use AI to do this. Well, I've actually seen AI tools fall into the same trap that programmers fall into. Well, guess what? Because AI has been trained on the two code that a lot of us have written over the time,
4:37
and if we have collectively made that mistake, it's no surprise that AI is going to make that mistake as well. So that's kind of essentially what I focus on in the talk, is the things that can bite you in the back, things that you need to know.
4:51
And then it's a very example-driven presentation where we look at a code, take a poll of the behavior, reflect on what we collectively identify, and then analyze the code, and then draw some conclusions on how to become better at dealing with similar code as we move forward. And to just emphasize things you need to know from this,
5:14
this is one of the things I often emphasize is you look at the syntax, but you should really see the semantics. That, to me, is the essence of programming. Syntax is what we look at all the time. But as developers, We need to really take the time to see through the semantics.
5:34
And this talk is really focused on the semantics. You know, I'm a huge fan of testament development. I like to write test cases. And every single example I show in the talk, compilers don't catch the problem. Any serious effort with unit testing often will not catch these problems. That's the scary part.
5:58
You can't delegate this to the tools and say or the techniques and say, gosh, I do all these. I don't have to worry about it. No, you do, because with all respect, we want to rely on compilers because they allow us to get early feedback on certain problems in the code.
6:16
And if a code passes through compiler, we can be confident to a certain level. Similarly, I'm a big fan of automated testing. That gives us confidence. So I'm not rejecting those tools and techniques, but those are necessary but not sufficient. Your knowledge of semantics still is relevant and important in spite of compilers
6:39
and test-driven development and AI tools, and that's kind of the emphasis of the talk.
6:44
This is fascinating to me. I'll tell you a little story. I'm going to comment on a few things you've said, but in this framework here. When I first met you, it was 2017 to 2018, and you were doing a keynote, and it was a coding session. sort of thing, obviously,
7:01
and I'm sitting there because I didn't know you at the time and I had to sort of get to know you really quickly because I was going to do an interview with you, a streaming interview right after your keynote, and I had to go up and introduce myself and then drag you off to the corner to do
7:14
this interview. So, I'm watching this keynote, and you're talking about, obviously, technical things, about software and stuff, but I was following it because I was getting this message from you. You were really looking at things from not only a micro level, but a macro level.
7:30
And I was seeing how I can apply that level of thinking to writing, you know, English, and... project management, because it was a way of thinking. And it sounds like everything you just said now, it sounds like a perspective you're taking in terms of writing code,
7:47
not just relying on a tool to find the errors and stuff like that. But as you're writing, it's the perspective up front, especially with test-driven development. And it's interesting to me how, as a non-coder myself, I can follow what you say. That's fascinating to me.
8:04
It's interesting that you say this, Jim, actually, because I was reading something yesterday and they were talking about the use of AI versus critical thinking. And I don't want people to take this negatively, but this is something for us to really think about because we are living at that
8:22
tipping point where we are going to benefit a great deal from a new evolution of technology. But it comes with a certain caveats. And that is, with us, we have some amazingly great tool. But unfortunately, we can't compromise on critical thinking. In fact, we are living in a time when I think critical thinking is even more important.
8:53
And that's exactly to your point. This is something I had to take the time to learn along the way because, you know, oftentimes our schooling doesn't teach us the necessary skills we need to survive and succeed in this world. These are things we stumble upon, figure out, maybe have a good friend or a mentor,
9:14
and then you kind of observe and say, And then you accidentally stumble upon these things. And that's been journey for me. But to me, that is one of the things I would encourage younger developers who are at the conference are trying to learn and apply is don't be on a fast track.
9:35
Don't try to solve problems too quickly. Yes, we want to solve problems. We want to deliver value to our business, definitely. But there's a risk of being too rash in our development because we don't take the time then to understand the consequences of what we do. And to your point,
9:57
that I think is the critical thing is to really emphasize is that we need to really improve on our critical thinking. And to your point, critical thinking applies to program development, but it applies to every aspect of our life. It's every decision we make, every problem we solve, every solution we consider, it requires that.
10:22
And I think that's kind of the essence of the talk as well is to say that, hey, we can go beyond what we see at the surface. If we start thinking through the consequences of what we are using, we tend to identify the issues a lot more.
10:39
So I often say sometimes we have to slow down in order for us to gain speed. We are in this mode of, can I go faster? Can I go faster? Well, there are times we have to slow down. And if we don't slow down, then we're going to end up in a ditch. And we didn't gain speed.
10:58
We actually resulted in more of an accident, right? So that's kind of the, so to your point, you're absolutely right. That's what fascinates me as well.
11:06
Yeah, well, I'm really looking forward to your talk. I've read the description and it was kind of interesting to me. And now that you explain it, I definitely want to attend it. I'm actually the photographer for Java 1, so I have to be at your talk, so I have to shoot it.
11:19
But I'm going to make sure I hang out there because I really enjoy your talks from this actual perspective here because you can get micro and macro simultaneously. And I really learned from that. And I pick up a little bit of coding along the way as well.
11:33
But I'm always fascinated in this concept of learning and efficiency and development. It's one of the reasons why I like talking to developers is because to one degree or another, they're struggling with these very same issues and how they learn complex things, how they're able to focus and go very, very deeply into a topic.
11:52
And just like you said, the ramifications of not getting something thinking you're right, but you're actually wrong on something and then finding out later when you get that two o'clock in the morning phone call when the bank goes down and, you know, in Asia and, you know, that is your code. Right. And so.
12:08
i can't i can't imagine i was talking to a developer one time and he says yo yeah i was writing some stuff and you know the bank actually went down and i said oh my god that actually happened that's just no that actually happened you know as well
12:19
he was a junior developer and he says but that's okay i learned a lot from it i says oh my god you know i I don't know if I can, that's just stress to me. It's like becoming a surgeon or something. So, all right, that's really fascinating. I'm really interested in this. Cool.
12:36
So, okay, so let's talk a little about your feelings about Java. Like what's new these days in Java? I mean, Java is very interesting from one perspective to me in that there's always these constant releases now every six months, right? So you get new bits that are coming out. every six months,
12:55
but you can also obviously follow the stuff that's under development on the open lists, on the open JDK lists. And so let's talk a little bit about what's new now, but also the evolution of Java. Where did it come from? I guess it's 30 years old, but it's also very young as well.
13:10
I'll be honest about this to you, Jim. I was one of those guys on the other side of the picket line, constantly complaining about Java, that it's not moving forward. I was ready to, you know, say the last rights for it. Java is dead. Really? When was this?
13:27
When was this?
13:28
Actually, it's fascinating because I've saved some of these emails back in 2010 timeframe. This is funny if you think about it, but it also could be frustrating. I used to get hate emails from people. I hate you Venkat because you hate Java. It was a crime to hate Java back in time, but rightfully so in my opinion.
13:53
And to be honest, All that changed for me when Java 8 came out. And you may say, well, wait a minute. What did Java 8 do to get you convinced? And I remember literally standing up at my desk one day. That's how you know how shaken you are seeing something. I've seen lambdas. I've seen functional programming.
14:16
I've seen functional pipeline. I've used it in Scala and Groovy and other languages. I've done things like Erlang. So these concepts are not new to me. And honestly, I said, big deal. Java has lambdas. Why do I care? Because I've seen it in other languages. But this is where I'm willing to admit when I'm wrong.
14:40
And to me, that's very humbling. When I can realize myself that I'm wrong and I'm looking at Java, I looked at Lambdas, I'm like, big deal, right? I can do Lambdas in other languages. I could do it in Scala, for example. Why do I care? And I truly looked at two things that blew my mind.
15:00
One was Invoke Dynamic, and Invoke Dynamic replaced the need for inner classes to do Lambdas, which is what languages like Scala and Groovy on the JVM were doing back then. It fundamentally raised the bar for any language on the JVM to implement Lambdas and functional pipeline very efficiently.
15:24
The other thing that blew my mind was the lazy evaluation of streams. You know, when I wrote the first book on functional programming in Java, in fact, it was released the day Java 8 was released, and I'm very thankful for all the guidance and reviews and help I got from the core
15:42
developers behind the Java language because I was writing the book in parallel to evolution of Java 8. But one of the things I said in the book, and my editor called me on the phone and said, are you serious you want to write something like this in a technical book?
15:57
And I said to my editor, hey, I live in Colorado. And she's like, yeah, I'll let you slip through this. And I said in the book, Landis are the gateway drug, streams are the real addiction. And what I meant by that is... You get drawn into the feature by looking at lambdas,
16:17
but when you realize the functional pipeline and the lazy evaluation that streams provide, that's when you really realize, oh my gosh, we are sitting on something that's extremely powerful. Because as programmers, we know one thing really well. You can look at a code and say, oh, that's cute. That's easy to understand. That's easy to maintain.
16:42
But with all respect, that's not going to sustain if the code doesn't give you the performance at the end of the day. And while lambdas give you the conciseness and the cuteness of the code, it's the lazy evaluation that brings the performance and, of course, the dynamic and concepts like that.
17:04
So what fascinated me and completely turned me around from being a person talking ill about Java to saying, I got to really pay attention to this because this is going to make a huge difference in production for organizations that have heavily invested into Java. And to me,
17:26
I often say that functional programming is fascinating because it reduces the accidental complexity in code. But with all respect, with respect to reducing accidental complexity, that's a problem we deal with for development. That's important, but that cannot really replace an efficiency in production. So as they often say that when it comes to these concepts,
17:55
functional programming relies on lazy evaluation for efficiency. And Java, you know, there are languages like, don't get me wrong, I love all these languages, so I'm not saying these negatively. But when you look at language like Ruby or JavaScript, they provide you the functional style of programming. but they don't provide you lazy evaluation.
18:22
So that's why I call them functional style, not functional programming. And to me, Java developers behind the Java language could have just said, yeah, you know what? You want Lambdas? I'll give you Lambdas. Let me go home. But instead, they took the time to not only provide a syntactical benefit to reduce complexity,
18:44
but they took that down to providing performance at the execution level as well. And on that day, I realized that Java is ready for a huge evolution moving forward. I mean, as a person who didn't believe in Java, I woke up to realize, and that's why I said I really stood up at my desk and I said,
19:09
I've got to focus on this one because this is going to be huge. And fast forward literally, I don't know, 12 years now since the day I realized it. Java has not disappointed me. In fact, it's surprised me every single day as I look at the evolution of the language. So since that time,
19:30
I would say one of the biggest contributions that Java made, personally in my opinion, is to truly show to us the developers what agile development really should be. I mean, I say this sincerely, right? We are in a crazy world right now when everybody is chanting, be agile, do agile development.
19:52
Well, you don't do agile development, you be agile. And one of my aha moments is when the people behind Java figured out They can decouple the development cycle from the release cycle. I wish more people really thought about it and figured out what an amazing idea that really is. Because it's silly when you see people say,
20:22
we're going to do sprint and two-week development. The folks buying Java said, nonsense, we are not getting results from what we are doing, or we're not going to run behind agile development like everybody else does. We're going to decouple development from release cycles because they figured out what was holding them back.
20:41
To come up with an arbitrary set of features to be released ahead of the time of doing any work on it is definition of insanity. And we have been doing that, and the folks behind Java were doing that too. And they realized, wait, what if we give a six-month release cycle,
21:00
but we're going to allow people to take the time to develop the features that with the utmost quality and feedback cycle it needs by using the pre-release versions. But then when it's ready, you get to release it within six months and not have to wait arbitrarily for synchronizing with some feature that somebody decided to put together.
21:28
I wish more organizations will learn from what Oracle has done very brilliantly, but has not, in my opinion, really marketed that idea really well. To me, that to me is, again, Nothing technical at this point, but even from the managing the project point of view, there is things to learn.
21:51
And that's one of the reasons I appreciate Java today is that Java is no longer what it used to be back in Java 4, Java 5, Java 6 timeframe. It's a vibrant environment. And again, with no disrespect to people behind Java, we could also realize that we talk about Java as this one language.
22:13
Oh, boy, 30 years is what? If not one, if it's not two generations of developers moving the language forward. It's not the original creators of the language. It's not the people who came after that a decade later. It is a much different set of people moving Java forward. It's new thinking because there's new energy into it.
22:37
So I can talk endlessly about the technical reasons why I'm excited about Java as I do in my talks, but it's also these non-technical things that also excites me about Java is because it's not one thing that makes it successful. It's kind of like the wheels of a car.
22:55
You can't have just one wheel functioning really well and the other wheels being, this is why we align wheels differently. from time to time in a car because when the wheels are aligned, we are able to move forward smoothly. So it's the time when several things aligned in Java,
23:15
both the technical things and the non-technical things coming into alignment is what really excites about Java to me today.
23:22
Yeah, I always describe Java, you know, some people say, oh, it's 30 years old. And they don't realize if you go to any real Java conference around the world, you're going to see a bunch of 20 year olds there. You know, there's a lot of people, you know, I mean,
23:35
I go to a conference and I say my first Java one was in 2000. Oh, I wasn't really born then, that kind of thing. And it's like, that's 25 years ago. And yeah, that developer was just born. And so these are the people now that are driving it. But a lot of the older guys are still there.
23:55
So they have the history and things like that. A lot of deep expertise. But it's completely young. It's the old and the young mixing together seamlessly. I mean, you can see it inside of Oracle as well. You have people that are working on the platform. This is a lot of young people around. So, okay,
24:12
when you talk about the decoupling of development from release, I mean, it's been that way for years now in terms of Java. Other organizations aren't, I mean, aren't using that. Isn't that normal now in software development?
24:27
Sadly, because one of the reasons for that is the world is a really big place, and it takes certain time and effort for people to do things and realize it's not working for them, and then to have the ability to change. Certainly, there are a number of organizations that are very effective, doing great. Absolutely, that's fantastic.
24:56
But there is a fairly significant segment of the industry where, unfortunately, there are certain people in the management or in various responsibilities who are looking for a prescription rather than a practice. That's one of the things I often emphasize to people is, you know, look for practice, not for methodologies. Look for practices, not for procedures.
25:24
And practices are easier to change, procedures are what you are trying to follow. And a lot of times what these organizations do is they want a prescription as to how to do agile, and they fall into the trap of following certain predetermined things.
25:42
One of the things I often say is be agile about being agile, because you've got to figure out what works for your team, and what needs to change. And again, to emphasize that, just because it worked for Oracle doesn't mean it will work for everybody else.
26:00
But it's important to really take the time to see and say, wait, why are we building this way? You know, personally, right, I gave my company as agile developer, but I don't think I do any agile software process training. I don't do that anymore.
26:17
Part of the reason for that is, if you ask me, how do I develop software? Well, I do continuous delivery. That's what I do. I release software multiple times a day into production. I don't believe in this two-week cycle. Well, why should I focus on an arbitrary process I create when I can deliver value to my
26:41
customers much faster and focus on what actually they want? So I've changed a lot of things I do based on my own experience and experimentation. But unfortunately, as a smaller company, I'm able to do it. As a larger company, Oracle is able to do it. So it's not the size that matters, but it's the mindset that matters.
27:06
It's for people who are able to come in and say, well, duh, this is not working, but thank you for your suggestions. The Agile manifesto said we shouldn't focus on the process. And yet, agile development has become such process-oriented, unfortunately. What an irony, right? So to your point, yes, companies like Oracle have done it.
27:30
Some other few companies have done it. But at large, I think our industry is struggling. It goes back to what we talked about earlier, right? Critical thinking is hard. And when people want prescription, they don't want to take the time to do critical thinking. Instead, they're like, this is why I hate the words best practices.
27:52
When somebody says best practice, I cringe because best practice means give me a checklist. I will tick them off. If it works, great. If it doesn't work, it was not my problem. I just followed the best practice and obviously it didn't work for me. I think there's a lot to learn in this world and to improve.
28:12
Yeah, it's interesting with this whole release model, I'm feeling more and more as it's, yes, it's been obviously around for years now, but it has such an impact with so many people. Whenever I bring it up, everyone reacts like you react. It's really interesting. It's not just a release model. It's much more than that.
28:32
Okay, so that's an interesting bit there about the evolution. Anything more about what you've seen with Java over the years?
28:40
One thing that I'm absolutely excited about is the ideas behind virtual threads. I'm absolutely excited about a lot of other features in the language, but one thing that excites me about virtual threads is, this again goes back to what I mentioned earlier, is I tend to get excited about Java
29:03
when it makes the production environment really successful and not just the development experience. You know, I'm a programmer. I care about developer experience. I care about the joy and the journey of writing code and reducing complexities. But at the same time, what fascinates me is how much impact it has in production. And virtual threads, to me,
29:29
is something that's going to make a huge impact in production when companies are able to move forward into much more recent versions of Java. And the reason is... Without you having to modify the code a lot, I often say virtual threads is like aspects in aspect-oriented programming. Because to me,
29:51
you can flip a switch here and you can see changes way over there rather than having to modify code at every different level. This is huge because if you look at C Sharp and if you look at JavaScript, again, those are languages I appreciate for their own merit. to be negative about the languages.
30:12
But when it comes to asynchronous programming in C-sharp or even in Kotlin or JavaScript, if you want to convert a code from being synchronous to asynchronous, you have to modify a lot of code. We could argue the code change is not a lot, but the code change is intrusive.
30:36
It's not just where you come and flip a switch and you walk away. But it really is, again, fantastic to see how, without modifying any code, you can just modify a configuration, I use the word loosely here, at one level, and all the code can now behave asynchronously what was previously synchronous.
31:00
To me, that is huge in terms of performance at the runtime introduction. And that's what I truly appreciate. I tend to really appreciate things that you don't see, you don't look at. When you look at the code, this is not staring at you.
31:18
But you've got to kind of see through it and say, whoa, I see what's going on here. And that's why it's kind of like coming back in full circle. What exactly about Stream was not the syntax, but the semantics. And what I appreciate about virtual threads is again, not just the syntax, but the semantics of its behavior.
31:39
And that to me is really fascinating. And if you ask me, what are the super big threads A big as not in huge in terms of code change, but huge in terms of impact that I've seen in Java. I would say, of course, the introduction of Java itself in the beginning.
31:59
But then I would put Java 8 as the next biggest change. But fast forward with, again, all respect to everything that's happened in between, which are as valuable But to me, the next big change in Java, in my honest opinion, is virtual threads and structured concurrency.
32:17
And I think these are going to be the super highlights of Java over the evolution over the 30 years is because they have a huge impact in various different ways in terms of productivity for both the developers and in terms of production as well. This is fascinating.
32:35
You should write about the history here.
32:38
I don't think I'm qualified to write. I'm the person who speaks the joy, but I don't think I'm qualified to write about it.
32:47
Well, you did mention earlier about a book.
32:49
I do have a book coming out on the evolution of Java, not in terms of history of it, but the technical evolution, cruising along with Java. Essentially, the idea behind cruising along with Java is to say, hey, I was excited about Java 8, but here's what's happened in Java since Java 9 to Java 23.
33:11
And one of the things I'm really happy about is how much this evolution has been exciting. You know, I usually write my books really quickly, but I'm really thankful to my publisher. They've been very patient with me. I literally took two years to write this book, not because I needed the time to write it,
33:27
but I really wanted to. I would see a feature in Java. I'm like, oh, my gosh, I'm really excited about it. My gosh, it's in pre-release. I've got to wait for it to become, you know, into the language. So I kind of waited for these features to be baked into the language.
33:41
So I was writing the book alongside as these features were developed, but I finally realized that it's time to release the book. So it's coming out in a couple of months from now, cruising along with Java. But to your point, you know, I'm excited about the features like text blocks and features like type inference,
33:59
but all the way to, you know, what excites me is not that Java has these n number of features, right? But what blows my mind is the synergy between those features. You know, oh, wow, sealed classes are really cool. Oh, wow, pattern matching is cool. Oh, wow, records are cool. But then I sit back and say,
34:21
what's even more fascinating is, for example, how pattern matching and sealed classes and records work. all come together, right? That's what truly has been exciting for me to see. So when I work with my clients, when I'm working on code for them, I show them how they can refactor their code from those gnarly if and else
34:46
conditions to using pattern matching and sealed classes and records. And that's what I wanted to really bring in the book to say, you can use these ideas in your current code and refactor those code so that they become a lot more easier to maintain. And so anyway,
35:05
that's kind of the emphasis that I really want to bring to developers interested in Java is to say, you are no longer writing. I give a talk from time to time, which is called, this ain't your parents Java. And I say that as a parent myself, right?
35:23
To me, it's fascinating because 30 years, to your point, Jim, we see 20-something. I have children who are adults now who are in the workforce. And for me to see my children in the workforce and learning to use technologies and push the boundaries – You know,
35:44
I use Java very differently as a young programmer than the next generation gets to use Java. So I think that's the key is, you know, in fact, to your point earlier, this was fascinating to me because somebody came to me and said, hey, I used to program in Java 15 years ago.
36:04
I kept telling people, don't use Java because it's obsolete. I just stumbled into your talk. I saw the features you are talking about. I hate to admit it. I begin to realize Java is no longer the language that I once programmed in. I should no longer tell people, don't use Java.
36:29
I should go learn the new Java and explore how I can benefit as well. And to me, that is the key is we all, this is human nature. I used to do something. I develop an opinion about it. I have moved away, but I don't realize that.
36:48
I have moved away, but the language has moved on and forward as well. And a significant number of developers have just not been exposed to it. So when somebody tells Java, don't use it, I respectfully ask them, when was the last time you actually used Java? Well, if you used it 10 years ago or so, I'm sorry,
37:11
but you're not really looking at the same language. In a way, it's like being in a city, right? You know, I was down in Houston a couple of weeks ago with my wife, and we used to live in Houston for 20 years, and it's been almost 20 years since we moved from Houston.
37:30
And as we were driving by, my wife was saying, hey, look what they have done to downtown. You know, Jim, when I used to live in Houston, downtown is not where you go after it gets dark. It was the scary, dark place. And she was telling me, look at this. This is a vibrant community here.
37:51
young people walking down, beautiful apartments, looking fascinating apartments. It doesn't look rundown. And I was like, yeah, when you come back, you get a different view. I'm sure things could have gotten better, could have gotten worse as well. But the point is, you need to revisit to improve your opinions about it.
38:17
That's what is the difference between opinions and biases. And then to me, if you've been away from Java, like I've been away from Houston for a while, I would say take a nice drive through it. And you may have a very refreshing view as me and my wife did as we drove through Houston.
38:36
Yeah, everything evolves, everything, everything grows. So, yeah, that's really a good point. And, you know, that's why I like listening to you in sessions like this, but also in your technical sessions, because I get a holistic viewpoint where you're bringing things together and and I can actually learn from them,
38:53
even though I'm not necessarily using the tool that you're using. I can abstract the concept that you're talking about into what I do. You know, it's really interesting. So now you've been training and coding and teaching for years and years and years, and you have clients and stuff.
39:09
But now, most recently, you're also running your own conferences now. So talk for a minute or two about that.
39:15
It's been an exciting experience, and I'm very humbled at the amazing support I got from the community. But one of the things I really wanted to do was to be able to run a conference that brings together experts and the next generation of experts at the same time. You know, with all respect, right?
39:39
I don't mean this as a disrespect to anybody, but I love speaking in conferences. I'm thankful, humbled when conferences invite me and say, we can come and give a talk. But I ask the question, I get invited to speak in talks today. You know, I'm marginally good. Thank you for that.
39:55
But how can we have the next generation of amazing speakers who can influence and move the world forward? When I ran Deaf2Next earlier in October of 2024, I was humbled and very thankful to have experts like Dave Thomas and Neil Ford come and give a talk.
40:18
These are names we recognize because we see them all the time in conferences. I love hearing Dave. I love hearing Neil. He's amazing.
40:27
Yeah. They are amazing.
40:29
And I had Lisa Crispin, you know, somebody I've admired for a long time. Lisa came and gave a talk at the conference. I'm very thankful for her presence as well. So these are names recognized because they are experts. We've seen them write books. We've seen them give talk in conferences.
40:46
But what also excited me was when I was looking at the reviews from the talk, we had speakers who are practitioners in the industry whose name nobody has heard. I didn't know those names. But when we opened up for open call for papers and encouraged people to say, you know,
41:08
we will pay you for your travel if you are qualified to come and speak. You don't need to be part of a large organization or you could be, but you don't have to wait for your boss to approve your trip. But if you are qualified, that's the key.
41:24
We're going to support you to come and give a talk in the conference. And we did that. And when we looked at the reviews, there were people saying, oh, my gosh, I went to this talk by this person. And here are the things I learned. It blew my mind.
41:39
Here are things I can use on Monday when I get back to work. Right. And to me, with all respect, people like me can give talks and we can influence people, and we do, but I want to give an opportunity for the next generation of those people who can inspire and educate people.
41:58
But these are the hidden gems in the world, and I want to give more opportunity for them. And that's exactly what we're doing this year as well, is we're going to have a really good balance between these experienced and expert speakers. But we also want to bring in experienced practitioners who are not those well-known speakers.
42:20
but who can eventually become those well-known speakers over time. But we bring them for their technical competency. They not only gave talks, but then they spent their time in the hallway, sitting down with developers and talking about how to address their architectural concern or their particular problems.
42:42
And to me, that's a whole point of going to a conference. You know, that's exactly why to kind of bring this into from my conference to Java 1, that's the reason I want to go to Java 1 as well. It's not because I can give a talk in Java 1. I give talks everywhere.
42:58
But I get an opportunity in Java 1 to sit down with the core developers behind Java who are not these people who speak in a thousand conferences like I do, but who are the people who have their hands wet with the technology that most of us use. And so back to my conference, if you can come over,
43:20
but sit down with the person who is doing the architecture, who is driving the development behind AI in their company, and get to really sit down and talk to them about practically what they are doing, I think your time is well spent being in a conference. And that's kind of what motivated me to create this conference.
43:39
And that's what we're focusing on as well.
43:41
Wow. Inspiring. That's really inspiring. That's really great that you're doing that. And just to let you know, I have heard from several people who went to your conference and they really said it was very innovative. So that's some feedback there. So that's really cool. All right, Venkat, is there anything else that we need to talk about today?
43:59
I think we can go on for another hour, but it is two o'clock in the morning here. And do you have any final words?
44:09
Well, I really appreciate you staying late and taking the time to talk to me. I'm very humbled and grateful for that. But I want to say, you know, if there's anyone out there kind of still thinking, should I really go to conference? Should I go to Java 1? I would say the conference is you.
44:31
It's what you want to make out of it. It's not the published talks or it's not the scheduled program, even though those are important. It is the people that you're going to meet. It is the experts. It's the practitioners. It's the fellow developers in the industry. And Jim, I'll be honest about it.
44:50
I started speaking in conferences nearly approximately 25 years ago. And not only conferences, I also want to bring attention to user groups. User groups have seen less attendance over the past few years. I go to speak at about 25 user groups every year. I've noticed that. I've really noticed that. Yes.
45:16
And I attend user groups when I'm able to, when I'm in town. And I'll tell you why, honestly, I invest my time to go to user groups and go to conferences. It's because when I come back from a user group or a conference,
45:33
I don't come back saying, yeah, I went there, I had the pizza and the food they gave me. No, it is things that change my thinking. I have written chapters in book because I had a conversation with somebody. I got motivated to work harder on something.
45:51
I've implemented a certain design ideas for my clients because I heard somebody in the hallway talk about something they do. I cannot tell you how much I learn when I go to these events. I'm selfish in that regard. I want to learn. If I'm not learning, I'm not going. And it doesn't matter.
46:15
I was in Chicago a couple of months ago to speak in a conference. And Mary, who runs the Chicago Java user group, said, would you come and speak in the evening? I'm like, sure. And I go there. I speak in the evening. But then I spend the next hour and a half after the talk literally standing there
46:34
and talking to developers. And at 1030 in the night, we are leaving the building. And I'm like, oh, my gosh, I'm so enlightened by this hour long, hour and a half conversation because it's given me thoughts that I want to focus on moving forward. I leave educated. And more important,
46:56
one of the things I often emphasize to people is it's not who you know that matters. It matters who knows you. You know, it doesn't matter, Jim, that you know me. But the fact that I know you, if somebody calls me and says, hey, we're looking for somebody like this. Can you recommend somebody?
47:16
Honestly, I recommend people that I know. I know people from user groups I've been to. People have enjoyed conversation after the user group. I've communicated with them by email. And I refer people because I know them. So when you go to conferences, when you go to user groups, You are networking. You allow other people to know you,
47:40
which means when there are opportunities, they tend to call you. I'll be absolutely honest about it. I've not done any marketing for my training or consulting in the past 25 years. Zero. And the only reason is I've got people call me and say, hey, one of my colleagues heard you speak.
48:01
One of my colleagues worked with you in a previous company where you did consulting. Can you come and teach us this or can you come and help us with this problem? So it's because people know me and people know me because I go to conferences, I go to user groups. Again,
48:17
it doesn't have to be for one thing, but I encourage more developers to go to conferences, but go to user groups. User groups cost you nothing other than your time, and they give you food, and you get to interact with people and make new friends.
48:33
I want to say the last thing on my mind is to encourage people to go out and network more and let the world know them. more than anything else. Beautiful. Beautiful.
48:44
All right, Venkat, we'll see you in a couple of months in March, March 18th through 20th in Silicon Valley.
48:51
I look forward to seeing you there, Jim. Thank you so much. Cheers.