72-Cay-Horstmann.txt

Cay Horstmann: Java Still Vibrant After 30 Years
Jim Grisanzio with Cay Horstmann
Duke’s Corner Java Podcast — August 9, 2025
https://dukescorner.libsyn.com/cay-horstmann-java-still-vibrant-after-30-years

Jim Grisanzio from Java Developer Relations talks with Cay Horstmann, a professor, author, and Java Champion. In April in Cologne, Germany at JCON Cay received the Java Community Lifetime Achievement recognition from Sharat Chander on the Oracle Java Developer Relations Team.

This conversation covers the evolution of Java, the constant polishing of the library, the upcoming Java 25 release, the six-month release cycle, improvements in the Java language to make the technology more beginner friendly, teaching methodologies, conferences vs unconferences, and also timeless task-driven learning methods for students and developers to keep their skills sharp. Also, Cay has been writing books about Java for decades and years ago he was instrumental in initially getting Java integrated into the curriculum for the computer science AP exam in the United States.

“One of the reasons why Java is still so vibrant 30 years in is that there is a constant stream of low-level innovation going on. It’s pretty amazing.”

Transcript:

(00:00:00):
Cay, Cay Horstmann from Germany.

(00:00:02):
Welcome back to Duke’s Corner.

(00:00:03):
Hi, I’m glad to be here.

(00:00:05):
It’s good to see you, Kai.

(00:00:06):
We met most recently back at Java 1 in the Bay Area in March.

(00:00:10):
And before that, it was JavaZone in Oslo.

(00:00:13):
And so it’s really great to have you back here again.

(00:00:16):
The purpose of this conversation is to talk about,

(00:00:20):
you received a fantastic recognition,

(00:00:22):
Java Community Lifetime Achievement recognition from Sharath Chander at Oracle Java

(00:00:27):
Developer Relations recently.

(00:00:29):
And

(00:00:30):
That’s really fantastic.

(00:00:31):
And so I figured that I’d go around and start having conversations with the people

(00:00:34):
that Char is recognizing in the community.

(00:00:38):
Char and I really like to profile developers and talk about their experiences

(00:00:43):
throughout their career.

(00:00:44):
And it’s fantastic that he’s actually honoring these people actually over time at

(00:00:49):
various conferences.

(00:00:51):
And it’s a beautiful award.

(00:00:52):
And so I wanted to talk about that.

(00:00:54):
So let’s just start there.

(00:00:55):
First of all, when did you get it and where?

(00:00:59):
At JCon in Cologne a few months ago, I was as surprised as anyone.

(00:01:03):
I was sitting there in the audience and was told to come up front and receive it.

(00:01:09):
So in hindsight, I was kind of asking, why me?

(00:01:11):
Because there are many people who are very active in organizing jugs and building a

(00:01:18):
community one person at a time.

(00:01:20):
And that’s not really something that I’ve really done.

(00:01:23):
I mean, I’ve been writing books, of course,

(00:01:26):
For as long as Java existed,

(00:01:28):
I do a lot of blogging,

(00:01:29):
I speak at conferences,

(00:01:31):
and I guess that’s community work too.

(00:01:33):
Oh, it definitely is.

(00:01:34):
And all those are huge contributions to the community because other people get

(00:01:37):
involved resting on your,

(00:01:40):
you know,

(00:01:40):
standing on your shoulders,

(00:01:41):
the content that you’ve generated and all the expertise that you’ve generated.

(00:01:44):
So congratulations.

(00:01:45):
That’s really fantastic.

(00:01:47):
And you were genuinely surprised?

(00:01:48):
You didn’t know this was going to happen?

(00:01:49):
No, not at all.

(00:01:51):
Okay.

(00:01:51):
So it’s real then.

(00:01:52):
Yeah.

(00:01:52):
Because sometimes,

(00:01:55):
you know,

(00:01:55):
sometimes when people get awards,

(00:01:57):
they kind of,

(00:01:58):
you know,

(00:01:58):
whisper in the back end,

(00:01:59):
just make sure you’re there because you’re going to get this award kind of thing.

(00:02:01):
But I’m finding out that these are actually real.

(00:02:04):
People are surprised.

(00:02:06):
All right.

(00:02:06):
So that’s interesting.

(00:02:07):
So, so Kai, so take me, I wasn’t there.

(00:02:10):
This was in, you said at J-Con when you received this recognition from Char in Germany in April.

(00:02:16):
And so take me there, you take me into the scene.

(00:02:19):
What was it like?

(00:02:19):
You’re sitting in the audience and you didn’t know it was going to happen.

(00:02:22):
What was that like?

(00:02:23):
Yeah.

(00:02:23):
I guess it was not as momentous or eventful as maybe it sounds to an outsider.

(00:02:29):
I was sitting, being nearsighted, I was sitting in the front row.

(00:02:32):
In fact, I rudely grabbed Shara’s seat.

(00:02:35):
And then out of a sudden I heard my name being called and there I was looking

(00:02:43):
stunned with that thing in my hand.

(00:02:45):
So this is like in the keynote hall or something?

(00:02:47):
This is like- Yeah, it was the first, the morning keynote, exactly.

(00:02:52):
Okay.

(00:02:53):
And what did he say?

(00:02:53):
I can’t remember.

(00:02:55):
He said, you all know who Kai is or something.

(00:03:01):
Well,

(00:03:01):
presumably you won because of your lifetime of writing books,

(00:03:06):
teaching,

(00:03:07):
blogging,

(00:03:07):
things like this,

(00:03:08):
right?

(00:03:09):
I would think so.

(00:03:10):
I mean,

(00:03:10):
for many years,

(00:03:11):
like I would go to every Java one and I would snag myself a press pass and then I

(00:03:17):
would blog about it.

(00:03:18):
Every day.

(00:03:19):
So it was actually it was hard work.

(00:03:21):
I would do the conference thing during the day,

(00:03:24):
then go to the parties in the evening and then drag myself home at midnight right

(00:03:29):
at the block.

(00:03:30):
So that would be ready for next morning.

(00:03:32):
But I felt that’s what you have to do when you have a press pass.

(00:03:35):
And it’s kind of interesting how far you can go with the press pass.

(00:03:39):
Oh, my goodness.

(00:03:40):
Yes.

(00:03:40):
I used to be in PR at Suns and we used to hand those.

(00:03:43):
So I might have actually handed you a press pass.

(00:03:45):
Who knows?

(00:03:46):
Yeah.

(00:03:46):
But yeah, no, we used to bring.

(00:03:49):
So another thing that I was somewhat instrumental in is when in the United States,

(00:03:55):
there is no national curriculum for computer science.

(00:03:59):
The closest thing there is,

(00:04:00):
is what’s called the advanced placement exam,

(00:04:03):
where students can take high school classes to get college credit.

(00:04:07):
And so there is a standardized curriculum for that,

(00:04:10):
that really influences a lot what goes on in the high schools.

(00:04:13):
And the college board who runs that, their curriculum was based on C++ for too long.

(00:04:21):
And at one point,

(00:04:22):
I got a call from one of the guys there and said,

(00:04:24):
can you come to this committee?

(00:04:26):
We know that you’ve written some professional books about Java.

(00:04:30):
You’re a professor.

(00:04:30):
You understand college teaching.

(00:04:33):
I was working at a startup at the time.

(00:04:35):
Can you come and join this group?

(00:04:37):
We want to switch to Java.

(00:04:39):
And so we actually managed to do that.

(00:04:41):
I was very proud that we did not just switch to Java,

(00:04:44):
but we switched to the smallest possible subset of Java that we could.

(00:04:48):
Because I felt that the programming language should not be the key of this course.

(00:04:53):
It is a course in fundamentals of computer science.

(00:04:56):
And so I fought against every addition that someone else wanted to make to the subset.

(00:05:02):
And it had held for over 20 years.

(00:05:04):
Wow.

(00:05:04):
That sounds a little bit like what you were talking about in Oslo,

(00:05:07):
Java in the small or something,

(00:05:09):
right?

(00:05:09):
That’s a little different.

(00:05:11):
That was an effort for students where you don’t want to distract students with

(00:05:16):
ephemera and trivia.

(00:05:17):
And every programming language is full of them.

(00:05:20):
Think about the switch statement, for example.

(00:05:22):
Does knowing the switch statement help you get any better at problem solving?

(00:05:26):
No.

(00:05:27):
No.

(00:05:27):
The challenges that students have are with algorithms, loops and arrays.

(00:05:32):
Those things are hard.

(00:05:33):
And you should not teach extraneous stuff.

(00:05:35):
What I was talking about in Oslo and what I’m still doing actually more and more is different.

(00:05:40):
That’s more for professional programmers where if you ask most professional

(00:05:44):
programmers,

(00:05:44):
what do you do to do like small scripting style tasks?

(00:05:49):
And they say, oh, they use either shell or Python.

(00:05:52):
And of course, I do the same thing.

(00:05:54):
And so I write this shell script.

(00:05:56):
And then I leave it alone for six months.

(00:05:59):
Then I come back to it.

(00:06:00):
I say, what?

(00:06:01):
And then I extend it.

(00:06:03):
And after a couple of years, the thing looks horrible.

(00:06:05):
And then I…

(00:06:07):
finally rewrote it in Java.

(00:06:09):
And now I say, I’m no longer going to do that.

(00:06:11):
I always start in Java.

(00:06:12):
And with modern Java, that’s another benefit of not having to have that much ceremony.

(00:06:18):
In modern Java, this is really nice.

(00:06:20):
It’s not just the fact that you don’t have to have classes,

(00:06:25):
but it’s also that IO in Java is actually super good.

(00:06:29):
The NIO library is great.

(00:06:31):
And there’s other parts of the Java API

(00:06:35):
They’re actually, you know, they’re nice, they’re logical, they’re easy to use.

(00:06:39):
They’re less crafty than Python.

(00:06:41):
And then what you have is something that when it gets broken, you can put it in the debugger.

(00:06:45):
And so you have something that starts out easy and that grows and grows.

(00:06:49):
So I can absolutely recommend nowadays Java as a nice tool for programming in the small.

(00:06:57):
It wasn’t like that 10 years ago, but now it is.

(00:06:59):
Again, with the evolution, it’s really nice to see.

(00:07:01):
It’s really nice to see things change.

(00:07:04):
Yeah, there’s two parts of it.

(00:07:05):
There is the evolution, but there’s also the constant polishing of the library.

(00:07:11):
So the API gets attention.

(00:07:13):
You say, this is just a little bit too complicated.

(00:07:16):
And someone says, yeah, sure.

(00:07:18):
And then some small simplification comes.

(00:07:22):
It never looks much of a deal once, but repeat that over 20, 30 years.

(00:07:28):
And you have really a super polished library.

(00:07:31):
You do not have that with other languages.

(00:07:33):
Beautiful.

(00:07:34):
So let’s talk a little bit about one of the other reasons I wanted to talk to you

(00:07:37):
is Java 25 is coming up soon.

(00:07:40):
And I guess in a couple of months here, like actually next month.

(00:07:44):
And I wanted to talk a little bit about some of the features maybe that you see

(00:07:49):
that are coming in most recent releases or specifically this release.

(00:07:54):
particularly for helping new developers get involved with Java or people,

(00:08:00):
students and things like this.

(00:08:01):
Do you see any evolution here most recently about the Java releases that’s enabling this?

(00:08:07):
Sure.

(00:08:09):
There has been an effort to make Java more beginner-friendly.

(00:08:13):
So the classic story that you hear is,

(00:08:15):
as someone who learns Python,

(00:08:16):
they can write a one-line program,

(00:08:17):
print hello world,

(00:08:19):
and then they go off to the races.

(00:08:21):
Whereas in Java,

(00:08:22):
you have to say public class this,

(00:08:24):
public static void main,

(00:08:27):
system out print on.

(00:08:28):
And so there’s a lot for a beginner to absorb if they actually need to understand

(00:08:33):
all of these words.

(00:08:35):
Well, of course, they don’t need to understand them.

(00:08:36):
I’ve been teaching Java for now almost 30 years.

(00:08:40):
And from the very first time,

(00:08:42):
I told students,

(00:08:43):
just copy and paste this template and don’t worry about it.

(00:08:45):
And it has not really been like a total impediment to student learning.

(00:08:49):
Nevertheless, Java 25 now does make this a lot easier.

(00:08:53):
You now no longer have to have a class for simple programs.

(00:08:58):
You still do need to have a main method.

(00:09:01):
which I think is actually fine because it’s more regular than Python.

(00:09:05):
In Python, you have a slightly confusing mix of top-level code and then methods.

(00:09:11):
And in Java, it’s just methods for simple programs.

(00:09:16):
so i think it’s that is really nice and at first i thought you know big deal but

(00:09:22):
now i’ve rewritten the first three chapters of core java with this and i really

(00:09:26):
really like it it just is visually less distracting when you write a textbook

(00:09:30):
there’s lots and lots of small sample programs it’s very different from the code

(00:09:34):
that you have as a developer where you have one big program with lots of small

(00:09:39):
pieces um and public static void main you know if you even have one in a framework

(00:09:44):
you would never even have it but

(00:09:45):
It’s just somewhere off the corner.

(00:09:47):
But in a textbook, yeah, it’s nice.

(00:09:49):
And so I feel that is a great step in the right direction.

(00:09:54):
And I particularly like how they made the feature so that, A, it’s regular.

(00:10:00):
In some languages,

(00:10:01):
and Python is certainly one of them,

(00:10:03):
when they try to be very efficient and very short,

(00:10:05):
it also means there’s lots of fiddly special cases.

(00:10:08):
Whereas the beginning student in Java now has to master a few concepts.

(00:10:13):
What’s the method?

(00:10:14):
And of course,

(00:10:15):
they do need to know some static methods so that they can call like integer.parSing

(00:10:21):
or math.sign.

(00:10:23):
There’s no exceptions.

(00:10:24):
To read something now,

(00:10:25):
you no longer need to use system.out,

(00:10:27):
which was always kind of an odd beast.

(00:10:29):
You just say io.printon.

(00:10:32):
It’s a static method.

(00:10:33):
So there’s a few tools that beginners need to know.

(00:10:36):
Then they can go off for the first six to eight weeks of learning basic programming.

(00:10:41):
And then they can smoothly graduate to a more object-oriented approach where those

(00:10:47):
individual methods now get hosted in a class.

(00:10:49):
So I like it.

(00:10:50):
So it’s not just cosmetic.

(00:10:52):
This actually was an impediment earlier on.

(00:10:54):
There’s two,

(00:10:56):
as many people probably know,

(00:10:59):
most universities used to teach in Java in their beginning courses for many,

(00:11:03):
many years.

(00:11:05):
And in the last 10 years or so, Java has lost a big share to Python.

(00:11:09):
And when you ask people, why did you move to Python?

(00:11:12):
They will universally cite that Python is simpler for students to learn.

(00:11:16):
Now,

(00:11:17):
I can’t believe that that is actually true because,

(00:11:20):
like I said,

(00:11:21):
most students are perfectly capable of copying,

(00:11:24):
pasting,

(00:11:24):
public static void main.

(00:11:25):
And once after that,

(00:11:27):
Python is actually harder for students because they don’t have the help of the

(00:11:31):
compiler.

(00:11:32):
It’s very easy for students to write something,

(00:11:35):
and then it crashes and burns at runtime,

(00:11:38):
and then they have to scratch their head and where this went wrong.

(00:11:40):
Whereas with Java,

(00:11:41):
if you make some silly mistake,

(00:11:43):
more often than not,

(00:11:44):
the compiler will just tell you which line is wrong.

(00:11:46):
Well, that’s kind of nicer for learning.

(00:11:48):
But that’s not what you heard from professors.

(00:11:52):
The real reason they’ve switched to Python is actually a different one.

(00:11:55):
And that is that you can do the kinds of interesting examples that are perceived as

(00:12:02):
motivating for students better in Python today than you can with Java.

(00:12:07):
It used to be when Java first came up, people switched from C++ to Java.

(00:12:12):
Well,

(00:12:12):
of course,

(00:12:13):
C++ was very much worth switching away from,

(00:12:15):
unlike Java,

(00:12:16):
because it had so many problems for teaching.

(00:12:19):
But also with Java, you all of a sudden could make interesting programs right away.

(00:12:24):
30 years ago,

(00:12:24):
it was fantastic to be able to do a GUI that students could make and modify or to

(00:12:32):
work with a database.

(00:12:34):
or to connect to the internet.

(00:12:36):
Those things were easy to do in Java.

(00:12:38):
They were almost impossible to do for students in C++.

(00:12:41):
And nowadays, with Python, one could do machine learning.

(00:12:45):
You can do big data in a really easy way.

(00:12:48):
You can do these things with Java, but the libraries are not as strong.

(00:12:52):
The infrastructure is just not there.

(00:12:54):
And that’s much more interesting for students than to,

(00:12:57):
say,

(00:12:57):
write a server-side program nowadays.

(00:12:59):
There’s not much glamour in that.

(00:13:01):
So that’s that glamour aspect to do big data machine learning that really made

(00:13:06):
people move to Python.

(00:13:08):
And so the second part that we need to do in the Java world is make it so that

(00:13:12):
those things that are interesting for students are easy to do in Java.

(00:13:16):
But of course,

(00:13:16):
they are now because it used to be that to do AI,

(00:13:20):
you had to do heavy lifting with machine learning libraries.

(00:13:24):
No one does that today, right?

(00:13:25):
You connect to a service that does all of the generative AI stuff.

(00:13:30):
And how do you connect to the service?

(00:13:32):
Well, that’s really easy to do with Java.

(00:13:34):
So it seems like,

(00:13:35):
I mean,

(00:13:35):
this is just the natural evolution of languages competing with each other.

(00:13:39):
It’s just natural, right?

(00:13:40):
And so you just do this, right?

(00:13:43):
Actually, you bring up a very good point there.

(00:13:45):
And I think one of the reasons that Java is so vibrant 30 years in is that it’s

(00:13:50):
doing a really good job with it.

(00:13:52):
I mean, if you think about it, right?

(00:13:53):
I mean,

(00:13:53):
every six months,

(00:13:54):
there’s a new version that has some features that some are interested in for some

(00:14:00):
people,

(00:14:00):
some for others.

(00:14:01):
And there is a constant stream of low-level innovation going on.

(00:14:06):
Very few of these features seem like momentous on their own,

(00:14:11):
but altogether,

(00:14:12):
it is pretty amazing.

(00:14:13):
So,

(00:14:14):
I mean,

(00:14:14):
you have the situation where you have the engineers that are developing the

(00:14:18):
technology.

(00:14:19):
They have to keep up by evolving the technology itself.

(00:14:22):
You also have the same process happening within the community that the developers

(00:14:27):
in the community using the technology have to keep up their skills.

(00:14:31):
So do you have any comments about how everybody keeps up with all of this?

(00:14:35):
We haven’t.

(00:14:36):
AI and everything, and I hesitate to bring it up, but it kind of just, it’s everywhere.

(00:14:40):
It’s just blending into everything.

(00:14:42):
And aside from the whole stuff about taking all of our jobs and we can’t do

(00:14:47):
anything,

(00:14:48):
aside from that sort of silliness probably,

(00:14:51):
what is the effect of all these new tools that are at your hands now,

(00:14:56):
but how do you intellectually keep up with all the rate of change?

(00:14:59):
Yeah.

(00:15:00):
Yeah.

(00:15:00):
I mean, that’s been the case, I think, like forever.

(00:15:02):
And I mean,

(00:15:03):
I feel this more strongly than maybe some people because I have this book that I’ve

(00:15:07):
been updating for 30 years.

(00:15:09):
And every time that some new feature comes in there,

(00:15:12):
I have to,

(00:15:13):
or at least I feel I have to write about,

(00:15:15):
I have to understand it.

(00:15:16):
So I remember like 27 years ago, they put in Korba.

(00:15:19):
Well, what the heck was Korba?

(00:15:20):
So I had to learn about that.

(00:15:21):
And then later I had to forget all about it.

(00:15:24):
And then came XML and all of those things.

(00:15:27):
So it’s a common thing that there is some new technology and one has to kind of

(00:15:32):
quickly figure out in a reasonably deep way,

(00:15:35):
what are its benefits?

(00:15:36):
How can you explain it?

(00:15:37):
That kind of thing.

(00:15:39):
One really has to make choices there, right?

(00:15:41):
Like 10,

(00:15:42):
15 years ago,

(00:15:43):
when machine learning first became a thing and people were learning things like

(00:15:47):
TensorFlow,

(00:15:48):
I looked at it and I said,

(00:15:50):
this is really hard.

(00:15:51):
There’s a lot of heavy math in there.

(00:15:52):
It’s very tedious to do these things.

(00:15:54):
Probably this is something that specialists will push forward and not a general programmer.

(00:16:00):
kept it in the back of my mind.

(00:16:01):
And of course, that was exactly what happened.

(00:16:04):
Some specialists who do amazing things gave us now these chatbot technologies that

(00:16:09):
every programmer has access to.

(00:16:11):
Now,

(00:16:11):
I think it’s very interesting for programmers to say,

(00:16:14):
OK,

(00:16:14):
let me try to build something with this so that you can see with your own eyes what

(00:16:18):
are the benefits,

(00:16:19):
what are the limitations.

(00:16:21):
And as we know, it’s not an easy thing to produce some actual business value out of this yet.

(00:16:27):
But this is something where I say,

(00:16:29):
yeah,

(00:16:30):
it’s a good time now to build some prototypes with that.

(00:16:34):
And as it happens now, this is pretty good to do in Java.

(00:16:37):
There’s a ton of blogs out there,

(00:16:39):
a conference presentation that say,

(00:16:41):
you know,

(00:16:42):
how do you kick the tires off this technology in Java?

(00:16:45):
Which is nice because that way we are on familiar footing with that part of the

(00:16:50):
technology and can branch out to learn something new.

(00:16:53):
Yeah, it’s a constant thing.

(00:16:55):
But do you ever feel overwhelmed?

(00:16:56):
Because when I ask other developers this very same question, nobody seems to feel overwhelmed.

(00:17:01):
It’s just sort of the way it is.

(00:17:03):
I feel overwhelmed with this stuff.

(00:17:05):
But when I ask you guys these questions,

(00:17:07):
yeah,

(00:17:07):
you just,

(00:17:07):
you know,

(00:17:08):
you go do this,

(00:17:08):
you go do that.

(00:17:09):
And it’s sort of like, you know, genetically, it’s just a part of the system.

(00:17:13):
No one really feels overwhelmed by it.

(00:17:15):
Well, I guess we’ve all been overwhelmed for 30, 40 years.

(00:17:18):
So it’s just normal.

(00:17:19):
And it’s just a part of the job, right?

(00:17:22):
You have to absolutely, you have to do two things, right?

(00:17:26):
One is you have to set aside a certain amount of time every week, every month to learn.

(00:17:30):
And secondly, you have to make choices what to learn and what not to learn.

(00:17:34):
Do you find that students are adopting those habits young as opposed to experienced

(00:17:40):
developers who are more used to this process?

(00:17:42):
I don’t think that students today are any different from students like 30,

(00:17:47):
40 years ago in terms of how conscious they are about what they’re doing.

(00:17:53):
And so it really is the job of the teachers to get students to do that.

(00:17:57):
So when I first started out as a professor many years ago,

(00:18:00):
I thought I had to teach subject matter.

(00:18:02):
And when I gave my last lecture a couple of years ago,

(00:18:06):
I realized that subject matter really does not matter that much because it changes

(00:18:11):
anyway.

(00:18:11):
What I’m telling the student now,

(00:18:13):
I was giving a course on Android programming and anything that I would tell the

(00:18:17):
students about Android programming would be obsolete five years later.

(00:18:21):
there’s some there’s a few underlying principles but all the technical details they

(00:18:25):
don’t really matter and so what really mattered to me is how students could learn

(00:18:29):
to learn better how they could find their own way in that morass of materials out

(00:18:34):
there and so i would i really stopped lecturing we had like a lab session every

(00:18:39):
every day where i said here are the the lecture notes from last year none of this

(00:18:43):
stuff works anymore let’s fix it together

(00:18:46):
And in fact, none of this stuff did work anymore because this or that shifted.

(00:18:50):
And so then what we really learned is how can you tease out the underlying

(00:18:54):
principles that help you understand where even to look for the failures?

(00:18:58):
How can you find out how to fix them?

(00:19:01):
AI just started.

(00:19:02):
So we looked at when are the AI tools useful?

(00:19:05):
When is Stack Overflow useful?

(00:19:07):
When do you need to sit in a corner and actually learn some more principles?

(00:19:10):
And so at first, the students thought this was different.

(00:19:15):
But in the end, they really liked it.

(00:19:17):
And so they did see the value that learning how to learn and reflecting on what you

(00:19:22):
do is worthwhile.

(00:19:24):
And that’s really interesting.

(00:19:25):
I’m going to have to think about that.

(00:19:28):
So that became your basically main method of teaching that, at least in the end.

(00:19:32):
Yeah.

(00:19:33):
So,

(00:19:33):
I mean,

(00:19:33):
I really thought that me presenting raw material to the students to somehow lap up

(00:19:40):
is not super effective.

(00:19:42):
You really want the learner to engage with the material by trying things out,

(00:19:47):
by kicking the tires,

(00:19:48):
by failing and then succeeding.

(00:19:50):
Interesting.

(00:19:51):
Interesting.

(00:19:51):
Well, I mean, that is the hacker mentality in general.

(00:19:55):
I mean, it’s the builder mentality, just trying things and iterating, right?

(00:19:59):
Yeah.

(00:20:00):
Yeah, yeah.

(00:20:01):
And I mean, it’s true.

(00:20:02):
There are sometimes when you need some fundamentals,

(00:20:04):
you can’t build without knowing some basics.

(00:20:07):
So I’m not against teaching those as facts.

(00:20:10):
But then you quickly want to motivate students by putting things to work.

(00:20:14):
And that’s also one of the big frustrations that I have right now with book writing.

(00:20:18):
I can write these books that are actually perfectly nice,

(00:20:21):
but I could do so much better if I could interact with the reader.

(00:20:25):
And I should be able to write.

(00:20:27):
Most people read these books nowadays electronically.

(00:20:31):
Some people still like paper,

(00:20:32):
but if you look at the numbers,

(00:20:34):
it’s clear people’s choice is electronic.

(00:20:37):
And I can see why.

(00:20:38):
You have faster searching, you have cut and paste and all of that.

(00:20:41):
And so what I would like to do,

(00:20:42):
since they’re already sitting on a computer,

(00:20:44):
I would like to present them some material and then say,

(00:20:47):
hey,

(00:20:47):
try it out.

(00:20:48):
And right there, have a little exercise that they can do.

(00:20:52):
Then it could unlock the next section or give them some brownie points or something.

(00:20:56):
And in fact, that is what I do when I learn something new.

(00:20:59):
I give myself a little project, a little task that I want to do with something.

(00:21:03):
And then I try it.

(00:21:04):
And of course, I can’t do it.

(00:21:05):
And then I’m motivated to read something about it.

(00:21:09):
And so then I look at the documentation and study it more closely,

(00:21:13):
at least study those parts that interest me more closely.

(00:21:16):
And so I think this task-driven learning is how people learn.

(00:21:20):
Yeah, it’s just actually, I mean, it makes sense.

(00:21:22):
I was just talking to,

(00:21:23):
you know,

(00:21:24):
Heinz Kabutz a couple of days ago,

(00:21:26):
and I asked him the similar question,

(00:21:27):
and he gave me a very similar answer to what you just said.

(00:21:30):
You know, find something in terms of advice for new developers.

(00:21:33):
Find something that you want to solve, the problem that you want to solve for yourself.

(00:21:38):
You know, build an app, essentially.

(00:21:39):
For example.

(00:21:41):
And for some people, building an app, that seems overwhelming.

(00:21:45):
I mean, there’s all sorts of boring and routine parts to building an app.

(00:21:49):
So it doesn’t necessarily have to be that.

(00:21:51):
But just set yourself a task.

(00:21:54):
So when I first had to learn like a cloud, AWS and that kind of stuff,

(00:21:57):
You know, I said, okay, I just want to have something running in the cloud.

(00:22:01):
And then I said, okay, now I want to do something with the database.

(00:22:05):
And so I set myself like small tasks that were not off the build an app lift

(00:22:12):
because I didn’t yet know what app I might want to build.

(00:22:14):
I just wanted to know how can you do these kinds of things.

(00:22:18):
And I think that’s something that everyone can do.

(00:22:21):
Now, this task-driven learning, is this not common in the teaching of computer science?

(00:22:27):
Oh, no.

(00:22:28):
In a university, that’s not how universities work.

(00:22:32):
Particularly- It’s been a while for me.

(00:22:35):
Okay.

(00:22:35):
But if you remember,

(00:22:37):
you very probably sat in a big lecture hall with hundreds of other students where

(00:22:42):
someone was presenting something.

(00:22:43):
Right.

(00:22:44):
But that was a long time ago.

(00:22:45):
So that’s not that- Yeah.

(00:22:46):
No, no.

(00:22:47):
That’s still how sadly it’s done in most places.

(00:22:51):
I see.

(00:22:51):
And there’s a good reason for it.

(00:22:53):
It’s easier?

(00:22:53):
It’s cheap.

(00:22:54):
It’s cheap.

(00:22:54):
Yeah.

(00:22:55):
Yeah.

(00:22:55):
Because if you want to run the kind of classes that I ended up running at the tail

(00:23:00):
end of my career,

(00:23:02):
those were small classes.

(00:23:03):
So it was pretty expensive for the institution to do this.

(00:23:07):
And I was very lucky that I was able to do it.

(00:23:10):
To do something effectively with hundreds of students is very hard.

(00:23:14):
Well, this is good advice for everybody though.

(00:23:15):
So I’m going to take it.

(00:23:16):
I’m going to do it.

(00:23:17):
I mean, I’m learning too.

(00:23:18):
That’s why I asked you guys these questions.

(00:23:21):
Yeah.

(00:23:21):
So here’s another thing that students are really struggling with.

(00:23:25):
And that is you learn beginning programming or you learn a programming language.

(00:23:30):
Like say you knew Python, now you start learning Java.

(00:23:34):
And you read something and then you do some exercise.

(00:23:37):
And of course, you could ask…

(00:23:39):
your favorite chatbot, that exercise, and you’re very likely going to get a perfect answer.

(00:23:44):
What’s the value in that though, right?

(00:23:46):
It’s not that people want to have another program that prints prime numbers.

(00:23:50):
It’s those exercises are there to make you think and to make you a better programmer.

(00:23:56):
And so at that point, one needs to learn.

(00:23:58):
And for students, this is hard.

(00:24:00):
One needs to learn not to use the chatbot.

(00:24:02):
I mean, it’s just like if you want to learn Italian or to play the piano,

(00:24:06):
You need to do it yourself.

(00:24:07):
So I see my daughters who just graduated from high school.

(00:24:11):
They somehow grew up in the time when they internalized that lesson.

(00:24:15):
They know when to use these tools and when not to use these tools.

(00:24:18):
But the ones who are a few years older,

(00:24:20):
I hear from my fellow professors that there’s a lot of struggle going on with it.

(00:24:24):
Really?

(00:24:24):
People say, I’ve got to do my homework.

(00:24:27):
And so I’m just going to feed it to the chat board.

(00:24:30):
And so then what’s the point of doing the homework?

(00:24:32):
Well, they delayed, right?

(00:24:33):
So they delayed and delayed and they have a time limit now.

(00:24:36):
So now they need it fast.

(00:24:37):
Yes.

(00:24:38):
Yeah.

(00:24:38):
But then again,

(00:24:40):
also,

(00:24:41):
that means that somehow,

(00:24:42):
of course,

(00:24:42):
students have always procrastinated for as long as I can remember.

(00:24:46):
But how effective is then the homework as an educational tool?

(00:24:50):
I mean,

(00:24:51):
the homework is there so that students learn something,

(00:24:53):
that they get practice because they need that practice to keep on going in the

(00:24:56):
course and to not fall behind.

(00:24:59):
But it’s not there to just keep them busy.

(00:25:01):
So if the homework is collected and then someone mechanically graded without seeing

(00:25:06):
that it changed the student’s brain,

(00:25:08):
then the university is not doing a great job.

(00:25:10):
So what I was able to do with a small class is I was able to ask students direct

(00:25:16):
questions and say,

(00:25:17):
oh,

(00:25:17):
you did this.

(00:25:18):
Explain this.

(00:25:19):
And of course, then the chatbot is not useful for them.

(00:25:22):
So I think the teaching environment should also change somewhat.

(00:25:25):
If the previous way of checking work is no longer feasible because technology has

(00:25:30):
advanced,

(00:25:30):
maybe one has to do it in a different way.

(00:25:32):
Maybe there have to be more interviews.

(00:25:35):
And yes, that’s more expensive.

(00:25:36):
So the universities don’t love it.

(00:25:38):
But it’s interesting what you’re saying,

(00:25:40):
the value of this teaching methodology for students is applicable really for your

(00:25:45):
whole lifetime.

(00:25:46):
Sure.

(00:25:47):
That should be the job of the university, to teach you how to learn for the whole lifetime.

(00:25:52):
The university is not there to fill your brain with the finite set of facts.

(00:25:55):
It’s also instructive.

(00:25:56):
A lot of times people ask me,

(00:25:58):
you know,

(00:25:59):
advice in terms of like,

(00:26:00):
you know,

(00:26:01):
so if I’m at a conference,

(00:26:02):
you know,

(00:26:02):
someone’s asking me advice for students and things like that.

(00:26:06):
But whenever I ask any of the leaders in the Java community,

(00:26:10):
engineers,

(00:26:10):
developers,

(00:26:12):
professors like yourself,

(00:26:13):
they implement these very same strategies.

(00:26:16):
They started when they were young.

(00:26:17):
They never stopped, but they continue to do them now.

(00:26:20):
Like when I ask people, how do you keep up someone in their 40s or 50s or even 60s?

(00:26:26):
They’re doing the same technique naturally, one variation of just what you described.

(00:26:31):
Well, I’ve got to find out something that I need to do.

(00:26:33):
I’m going to use this new AI tool or whatever, blah, blah, blah.

(00:26:35):
I’m going to put it together.

(00:26:36):
It’s a little task, just exactly as you described.

(00:26:39):
These are the most successful people in the community by far.

(00:26:43):
And that’s something really that everyone can do provided they have time.

(00:26:46):
And so that I think is something that I’ve always been in a fortunate position that I’ve had.

(00:26:53):
I had that time that,

(00:26:55):
you know,

(00:26:55):
when you teach,

(00:26:56):
you don’t have to crunch out code for 40,

(00:26:59):
50,

(00:26:59):
60 hours a week.

(00:27:00):
So when you find yourself in a job where just the number of hours that is required

(00:27:06):
for you to just get your work done is so high that you then can’t learn.

(00:27:11):
And if you can,

(00:27:12):
try to find some other situation because your career probably has to last another

(00:27:17):
20,

(00:27:18):
30,

(00:27:19):
40 years,

(00:27:18):
depending on where you are.

(00:27:20):
And it will not if you do not have the time to keep up.

(00:27:24):
Well, excellent.

(00:27:25):
Let’s transition a little bit here and talk about conferences.

(00:27:28):
When I met you in Oslo at JavaZone,

(00:27:31):
you seemed to have,

(00:27:32):
we were having sort of side conversations.

(00:27:35):
You seemed to speak very eloquently and passionately about

(00:27:38):
unconferences and the whole conversation dynamic that takes place with unconferences.

(00:27:44):
Now,

(00:27:44):
I know you’re getting ready to head out shortly to Jcrete,

(00:27:48):
which is a beautiful unconference,

(00:27:51):
probably one of their premier unconferences in the Java community.

(00:27:55):
So let’s talk a little bit about unconferences because there too,

(00:27:58):
it’s a lot of idea generation happens at these things and a lot of innovation takes

(00:28:02):
place.

(00:28:03):
A lot of people sitting around hacking and enjoying the

(00:28:08):
uh sort of regular life as well sure so jcrete is of course in the sunny isle of

(00:28:13):
crete um i’m looking at out of the window right now in rainy dusseldorf and so i

(00:28:18):
can’t wait to be getting off the plane in a few hours where uh where it’s nice um

(00:28:24):
and so there is a social component uh to it of course but so let’s back up first of

(00:28:29):
all why does one go to a conference

(00:28:31):
Of course, you go to a conference because you want to learn what’s new.

(00:28:34):
But the other reason you go to a conference is you want to interact with people.

(00:28:38):
You want to talk to other people,

(00:28:40):
get ideas from them,

(00:28:42):
figure stuff out together,

(00:28:45):
establish new networking connections and all that.

(00:28:48):
And so the sitting in a lecture hall and being confronted with slides is probably

(00:28:54):
the least interesting part of most conferences.

(00:28:57):
The interesting part is what goes on in the hallway.

(00:29:00):
And so the unconference kind of says, okay, let’s give us more hallway.

(00:29:04):
Let’s make it so that there is more interaction.

(00:29:07):
And so the format works is that people say,

(00:29:11):
I want to talk about X,

(00:29:12):
but it’s not going to be a polished presentation.

(00:29:14):
And so there’s usually then a second person who says, oh, I want to talk about that too.

(00:29:18):
And then there’ll be a group of people then who get together in a room.

(00:29:23):
And usually there’s some people who have deep knowledge about this that they want to share.

(00:29:27):
And there are others who are deeply clueless, that’s usually me, and who want to learn.

(00:29:34):
That interaction is much more effective because I feel when I’m there,

(00:29:39):
I can stop the speaker and say,

(00:29:41):
that was too fast for me.

(00:29:42):
Or can you dig into this a little bit further?

(00:29:45):
Or we can all tell the speaker, oh, we know this part.

(00:29:48):
Just move on.

(00:29:50):
So you have a much better way to learn.

(00:29:53):
And also, it’s much more focused on what people actually want to think about.

(00:29:57):
It really is a very effective format.

(00:29:59):
And the way they are structured is, of course, that there’s

(00:30:03):
serious talks in the morning, and then there is fun activities in the afternoon.

(00:30:07):
So it’s also a bit of a vacation.

(00:30:11):
So I can highly recommend those to anyone.

(00:30:14):
And sometimes people say, well, my employer would never fund this.

(00:30:19):
So I actually remember we had this situation a couple of years ago at JCreed,

(00:30:22):
and there was a young Polish programmer.

(00:30:25):
And I said,

(00:30:25):
you mean your employer would not fund your being there with 50 people who know

(00:30:30):
about Java than just about anyone in the world?

(00:30:33):
So apparently the employer did see the light in the end.

(00:30:36):
And so we made a little video about it so that hopefully other employers see the same thing.

(00:30:40):
So what most of these unconferences purposefully try to do is get a mix of experts and novices.

(00:30:46):
Because for me,

(00:30:47):
it’s also super interesting to know how someone who is just getting started,

(00:30:50):
how they use the technology.

(00:30:52):
Also,

(00:30:52):
sometimes the people who get started,

(00:30:53):
they get started in more innovative industries than what we already know.

(00:30:58):
I mean,

(00:30:58):
we know how to do banking and Java,

(00:31:00):
but when someone comes with something completely new,

(00:31:03):
a young person,

(00:31:03):
that’s fascinating.

(00:31:04):
So we want young people in these events.

(00:31:09):
And so if you have the courage to appear dumb in front of a bunch of senior people, go for it.

(00:31:15):
It’s a lot of fun.

(00:31:16):
Well, I’d love to actually hope, hopefully I can come next year and shoot a lot of pictures.

(00:31:21):
I think the pictures will look beautiful there.

(00:31:23):
Everyone’s relaxed.

(00:31:24):
The setting is beautiful and you have a high concentration of really, really talented people.

(00:31:29):
Or as you said, other people who are extremely interested, right?

(00:31:33):
You know, new people.

(00:31:34):
And also I want to shoot some video as well to capture some of these stories

(00:31:37):
because I’m particularly interested in the dynamic,

(00:31:40):
what,

(00:31:40):
you know,

(00:31:41):
how this format essentially generates innovation,

(00:31:44):
generates,

(00:31:45):
you know,

(00:31:45):
how it changes people’s minds,

(00:31:46):
how it changes their thinking and how people share it together.

(00:31:49):
So I’d love to do like a series of videos with,

(00:31:51):
you know,

(00:31:52):
20 or 30 people there,

(00:31:53):
you know,

(00:31:54):
stringing it into something interesting.

(00:31:55):
Yeah.

(00:31:56):
And really it doesn’t have to be JCreed.

(00:31:57):
I mean, JCreed of course is a very well-known event and it may not be easy to get in.

(00:32:03):
But there are dozens of these unconferences in the Java world.

(00:32:08):
And many of them, it’s perfectly easy to secure a space.

(00:32:12):
And I mean, of course, you have to pay travel and hotel, get your employer to pay for that.

(00:32:17):
But I mean, it’s not super expensive.

(00:32:20):
So I would really encourage you to just join a local unconference wherever you are.

(00:32:27):
Yeah, excellent.

(00:32:28):
Okay, my friend.

(00:32:29):
Well, congratulations again for a lifetime of achievement.

(00:32:33):
I’m sure there’s a lot here to come.

(00:32:34):
You have a flight to make to Crete.

(00:32:38):
And any final words of wisdom you can leave us with?

(00:32:41):
Any advice?

(00:32:42):
I’d love to hear advice, especially from professors like you.

(00:32:46):
No, really, my advice is to take the time to learn new stuff and do it by some hands-on process.

(00:32:52):
Figure out what you want to do and then learn just enough to do that.

(00:32:56):
Repeat and rinse.

(00:32:57):
Beautiful.

(00:32:58):
Have a good flight.

(00:32:58):
We’ll see you soon.

(00:32:59):
Thank you.