28-Professor-Isidro.txt

(00:00:00):
Hey, it’s Jim.

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

(00:00:02):
So, got a great conversation here.

(00:00:04):
This is with Professor Francisco Isidro in Sao Paulo, Brazil.

(00:00:10):
He’s a professor of computer science at the University of ABC.

(00:00:13):
And this was a really long conversation.

(00:00:16):
I really like to explore education issues just on a personal level because I

(00:00:21):
struggled so much in school myself.

(00:00:23):
And I love to sort of understand how people learn, how they solve difficult problems.

(00:00:30):
So it’s always nice to talk to a teacher and to see what their experiences are with

(00:00:35):
students at any given time,

(00:00:36):
also at any given location,

(00:00:38):
because

(00:00:39):
Education is not the same in every single country around the world.

(00:00:43):
So we talked.

(00:00:44):
Obviously, he teaches Java.

(00:00:45):
He loves Java.

(00:00:46):
But more importantly, he loves students.

(00:00:49):
He loves to teach.

(00:00:50):
He loves to basically work with students and teach them

(00:00:56):
how to learn this technology.

(00:00:57):
Talked all about Java,

(00:01:00):
the features of Java,

(00:01:01):
some of the challenges in teaching students these days,

(00:01:05):
computer science,

(00:01:06):
in terms of the balance between what you need to teach a student to have a

(00:01:10):
well-rounded science background in computers versus what industry needs right now

(00:01:15):
when the student graduates and has to go work.

(00:01:18):
So lots of great stuff.

(00:01:20):
I found it very educational myself.

(00:01:22):
And that’s why I did it.

(00:01:23):
Hope you liked it.

(00:01:24):
And more coming.

(00:01:25):
Talk to you soon.

(00:01:26):
Bye.

(00:01:27):
Professor, Professor Isidro, welcome to Duke’s Corner.

(00:01:31):
Oh, that’s my pleasure, Jim.

(00:01:34):
I’m honored to be here talking to you.

(00:01:36):
Well, thank you.

(00:01:37):
Thank you very much.

(00:01:38):
It’s a pleasure to talk to you as well.

(00:01:40):
I’ve heard a lot about you.

(00:01:42):
And you are in Sao Paulo, Brazil, professor of computer science.

(00:01:47):
And I’m really happy to talk to you,

(00:01:50):
partially because I like talking to smart people in general,

(00:01:53):
but also specifically that you teach students.

(00:01:56):
And I’m always,

(00:01:57):
in every single one of these conversations,

(00:01:59):
in this podcast,

(00:02:00):
I’m always asking developers about their experiences in school,

(00:02:04):
their experiences learning.

(00:02:07):
I’m particularly interested in this,

(00:02:09):
not only from a community development sort of perspective,

(00:02:13):
but also me personally.

(00:02:14):
Everything I do is just, you know, because it’s all about me.

(00:02:16):
I’m interested in how I learned as a kid and stuff.

(00:02:20):
So I’m asking questions now all these years later.

(00:02:22):
And so that’s why it’s, you know, that’s why I’m really excited.

(00:02:25):
So, okay, so let’s just start off with who do you teach?

(00:02:29):
You know, what kind of environment are you in actually right now?

(00:02:32):
At university, my subjects are always related to programming, programming development.

(00:02:39):
For example, Java fundamentals, Java bases, the very introduction of Java operating systems.

(00:02:47):
That’s a very, very, very interesting lesson about how a virtual machine works that’s

(00:02:54):
All of this is based on operating system concepts.

(00:02:57):
Compilers.

(00:02:58):
Compilers is very, very difficult, but it’s very, very fun.

(00:03:04):
And distributed systems.

(00:03:06):
When you talk not only about networks,

(00:03:09):
but since client server,

(00:03:11):
sockets,

(00:03:13):
communication,

(00:03:14):
connected protocols,

(00:03:15):
not connected,

(00:03:16):
unconnected protocols to web sockets and the APIs,

(00:03:21):
all of this path.

(00:03:22):
Interesting.

(00:03:23):
So as a professor of computer science,

(00:03:24):
you’re teaching some non-trivial things like compilers and operating systems and

(00:03:29):
Java virtual machines and all these things.

(00:03:32):
I used to work at Sun on the OpenSolaris project.

(00:03:34):
So I worked in the Solaris department for about 10 years.

(00:03:40):
So I was around kernel developers for a long time.

(00:03:42):
And I noticed something that these were just a large number of very, very smart people.

(00:03:47):
Very interesting.

(00:03:49):
I’m passionate about computer science.

(00:03:51):
I’m a little bit suspect to talk about it because it’s difficult.

(00:03:55):
Yes, but it’s passion.

(00:03:58):
I don’t know.

(00:04:00):
It’s very, very, very nice to study computer science.

(00:04:04):
Really?

(00:04:05):
So is that something that like when you were a kid that,

(00:04:07):
I mean,

(00:04:08):
you just loved computers or solving problems?

(00:04:10):
I mean, how did that develop?

(00:04:12):
I started with computers when I was 11 years old.

(00:04:16):
Wow.

(00:04:16):
That is pretty young.

(00:04:18):
Now I’m 44, almost 45.

(00:04:21):
And I saw for the first time a computer that record programs on tapes,

(00:04:28):
on radio tapes,

(00:04:29):
much before floppy disks.

(00:04:31):
The computer was a CP300.

(00:04:34):
I don’t know if it was a Brazilian company.

(00:04:39):
The name of the company was Prologica.

(00:04:41):
And the model of the computer was CP300.

(00:04:44):
And it was programmed in BASIC.

(00:04:46):
I’m talking about 1989.

(00:04:50):
From this to now, I think I studied all day long.

(00:04:55):
And all kinds of lessons, courses about programming or how to operate a computer.

(00:05:02):
For example, I made a course about DOS system.

(00:05:06):
how to operate the command line in DOS 3.0.

(00:05:12):
And I started studying computer science, mastering degree, PhD, and started teaching from this.

(00:05:19):
I’m teaching since 2000.

(00:05:23):
Yeah, my first students in the university was in the year 2000.

(00:05:29):
Wow, interesting.

(00:05:30):
Well, yeah, I mean, I think to do all of that, you definitely need a lot of passion.

(00:05:36):
Yes,

(00:05:37):
it’s because,

(00:05:38):
as I said,

(00:05:39):
I mean,

(00:05:39):
well,

(00:05:39):
you know,

(00:05:40):
I mean,

(00:05:40):
a lot of this stuff is hard for me,

(00:05:41):
so that’s how I describe it.

(00:05:43):
But if you have passion and if you have a lot of,

(00:05:46):
you know,

(00:05:46):
intelligence and smarts and and it’s not necessarily people don’t always describe

(00:05:51):
it like I do.

(00:05:52):
I’m coming a little bit from the outside in terms of more of the community

(00:05:55):
interactions and sort of,

(00:05:57):
you know,

(00:05:57):
the whole dynamic there.

(00:05:58):
what little programming I’ve done.

(00:06:00):
I’ve done just that, the command prompt behind a sun spark station, all alone.

(00:06:05):
It was just,

(00:06:06):
you know,

(00:06:06):
a piece of paper in front of me with a problem and maybe a book is a long time ago.

(00:06:13):
And just this big, huge 20 inch screen that was empty, you know,

(00:06:17):
And it did nothing unless I put something into it.

(00:06:20):
Now,

(00:06:21):
all these years later,

(00:06:22):
I go to conferences and I see people with these beautiful development environments

(00:06:27):
that are,

(00:06:28):
they’re all highly formatted and different colors.

(00:06:31):
And it’s just, everything’s sort of in one tool.

(00:06:34):
So one of the questions I had to you is, what’s the difference?

(00:06:38):
What’s the difference when I learned C at Northeastern a million years ago versus

(00:06:44):
one of the students now in your class,

(00:06:46):
all these years later?

(00:06:47):
In the beginning,

(00:06:49):
if we can say in the beginning,

(00:06:50):
I think we have less tools and the same amount of problems.

(00:06:58):
But you have less tools.

(00:07:00):
You have just a command line compiler.

(00:07:02):
You have, in the best situation, an editor, for example.

(00:07:08):
turbo c turbo pascal you didn’t have an a complex ide or a integrated tools that

(00:07:17):
you can version your software and container application and so on and deploy

(00:07:22):
automatic no no no you just have an editor and a command prompt just this but your

(00:07:29):
user still have a problem from the 80s

(00:07:34):
until now, 2023.

(00:07:35):
So what’s the main difference?

(00:07:39):
The amount of tools increased in a huge way.

(00:07:45):
You have IDEs, integrated developments, containers, you have infrastructure as a service.

(00:07:51):
You don’t have to have a machine, a physical machine.

(00:07:56):
Everything now is virtual.

(00:07:59):
But

(00:08:00):
What’s the main problem?

(00:08:01):
Users still have problems to be solved in different ways.

(00:08:07):
Now, to make a software, you have more complex pieces to join.

(00:08:14):
For example, you have a marketplace, but you have just to show your products online.

(00:08:22):
But you have to have a version to render on a huge screen or on a small screen.

(00:08:29):
OK, you have to know about front end, HTML, CSS, JavaScript, or any framework, Angular, React, whatever.

(00:08:37):
You have to know about responsivity.

(00:08:40):
You have to render your products on any size of screen using,

(00:08:47):
getting,

(00:08:48):
consuming data from an API that you have to develop it using an oriented object

(00:08:55):
programming language like Java to access a database to be deployed on a cloud environment.

(00:09:04):
If you have just one machine or if you have a farm of machines,

(00:09:09):
So you can deploy your application using a container or manually or automatically using,

(00:09:18):
for example,

(00:09:19):
your versioning system that as long as you make your…

(00:09:27):
you commit your software on your versioning system,

(00:09:31):
it automatically starts a pipeline,

(00:09:35):
a deploying pipeline automatically that you have just to set up this.

(00:09:40):
So from just one editor with a common line and these kind of different tools and

(00:09:48):
resources you have to develop it,

(00:09:51):
your user just have one problem to be solved.

(00:09:56):
The main problem that I try to

(00:10:01):
make my students see is you have to be passionate about your career about your

(00:10:09):
technology programming at all but be careful to fall in love about your tools for

(00:10:17):
example i’m i love java i love java i’m i started with java in 1996 i think version

(00:10:22):
1.1

(00:10:28):
From then to now, lots of evolutions.

(00:10:33):
But if I have to make a script using Python to solve a little problem because the

(00:10:40):
environment that I have to interact is previously configured by using Python

(00:10:47):
virtual machine,

(00:10:48):
OK.

(00:10:49):
Let’s try to learn a little bit of Python and try to solve the problem.

(00:10:55):
If I have to decide,

(00:10:57):
I have time,

(00:10:58):
I have budget about this,

(00:10:59):
okay,

(00:11:00):
I will try to set up all of my environment using Java.

(00:11:05):
But first of all, I have to think about my user.

(00:11:09):
My user has a problem.

(00:11:11):
And I have to try to make all of the knowledge that I have useful for him or for her.

(00:11:21):
So do you think,

(00:11:23):
is that point that you’re making in terms of teaching students that,

(00:11:27):
you know,

(00:11:28):
think about the…

(00:11:29):
the end user of your system versus focusing on your tool.

(00:11:34):
Is that something that they get?

(00:11:36):
In other words, have the students, has their mindset changed as a result of the tools?

(00:11:44):
Because the tools are really hiding a lot of the complexity or abstracting it out.

(00:11:49):
Yes.

(00:11:50):
So in theory, they’re more productive.

(00:11:52):
They can produce more because that stuff, there’s certain things they don’t have to worry about.

(00:11:58):
But does that change the development mentality?

(00:12:00):
Does that change how they think about solving problems?

(00:12:04):
Because it’s difficult for students.

(00:12:08):
I think maturity gets a lot of different point of views when you get older, like me, 45 years old.

(00:12:17):
But…

(00:12:18):
What’s the problem?

(00:12:20):
For example, it’s much easier to fall in love about your tools.

(00:12:24):
It’s much easier.

(00:12:25):
Because, ah, I’m at JavaScript.

(00:12:28):
Java developers hate C Sharp developers and JavaScript developers.

(00:12:33):
Okay.

(00:12:33):
In the beginning, okay.

(00:12:37):
Let the kids play.

(00:12:39):
But what’s the problem?

(00:12:41):
All the complexity to operate new tools and new programming languages…

(00:12:49):
makes you lose your focus on problem solving.

(00:12:53):
For example, let’s try to make an API using Spring or Quarkus.

(00:12:58):
OK?

(00:12:59):
OK.

(00:13:00):
They are very productive.

(00:13:03):
But what’s behind Spring?

(00:13:06):
Behind Spring, you have Java EE, Jakarta EE right now.

(00:13:11):
You have servlets.

(00:13:13):
You have, for example, Java Reflection.

(00:13:16):
You have depth-first algorithms to make the dependency injection mechanism work.

(00:13:25):
All of these tools and frameworks and libraries hide all of this complexity.

(00:13:32):
But when everything works very good, anything goes okay.

(00:13:39):
But the main problem,

(00:13:41):
when something goes wrong,

(00:13:44):
when you have a bug on your software,

(00:13:47):
how can you trace this bug?

(00:13:50):
It’s a framework issue, can be.

(00:13:53):
It’s a library issue, can be.

(00:13:56):
It’s a…

(00:13:57):
bad usage of this kind of library because you make a prototype,

(00:14:04):
and it’s working,

(00:14:05):
and you try to use the same way in the different project,

(00:14:09):
and it is not working anymore.

(00:14:11):
So why did I do wrong that it is work here?

(00:14:16):
It works OK here, but it’s not work.

(00:14:18):
I’m trying to do a misusage of this framework.

(00:14:24):
Or it’s never on my logic, on my application.

(00:14:28):
So this kind of different levels of errors are very, very hard to trace, mainly for students.

(00:14:39):
Why?

(00:14:40):
Because industry cannot wait five years, six years, four years to form a computer scientist.

(00:14:50):
They want developers, they want computer scientists starting today to work tomorrow.

(00:14:57):
So there’s a pressure about you have to learn fast, fast, fast, fast.

(00:15:03):
But in this kind of unordered way to learn, you have some gaps in your knowledge.

(00:15:13):
That’s the main problem that I try to help my students to fill these gaps.

(00:15:20):
Well, is there a difference, though, then?

(00:15:24):
I mean,

(00:15:24):
so if I go to school,

(00:15:25):
I guess I suppose it depends on where you’re going to school,

(00:15:28):
what country,

(00:15:29):
what program,

(00:15:30):
what university.

(00:15:31):
If I want to be – if I want to have a four-year degree or a six-year degree,

(00:15:37):
like a master’s degree in computer science,

(00:15:41):
what is the distinction between that degree versus just a programming degree?

(00:15:47):
In other words,

(00:15:48):
if you want it – or like an electrical engineer,

(00:15:50):
I mean a lot of the developers I know are electrical engineers.

(00:15:54):
Yes.

(00:15:55):
There’s multiple degrees here that you can get at university that will have you end

(00:16:01):
up in one way or another working for a tech company as a programmer or something

(00:16:07):
comparable on a team like that.

(00:16:09):
So what are the differences between some of these different degrees?

(00:16:14):
I’m trying to make some associations.

(00:16:17):
For example, you are a developer.

(00:16:20):
In 80% of the case,

(00:16:22):
the software you are going to make can solve problems in the very,

(00:16:30):
very large approach.

(00:16:33):
For example,

(00:16:34):
I can be a physicist,

(00:16:37):
an electrical engineer,

(00:16:38):
a chemical engineer,

(00:16:40):
and learn programming skills.

(00:16:43):
For sure, for sure.

(00:16:44):
And all those skills I can apply to solve, for example, my neighbor, a small entrepreneur near me.

(00:16:56):
small companies is more okay or big companies okay but but the computer science

(00:17:03):
career the computer science university gives you a huge view it can make your your

(00:17:13):
mind blow about lots of different aspects from the beginning they start you you

(00:17:22):
turn on your computer

(00:17:25):
on electricity and your software runs on a cloud environment,

(00:17:29):
you can get all the information of how those paths work from the how to turn on

(00:17:40):
your machine until

(00:17:42):
your environment on a cloud system, your application on a cloud system.

(00:17:47):
You have breaking systems, you have network, distributed systems, compilers, automata.

(00:17:54):
For example, today, how can I validate

(00:17:59):
an input field using regular expressions.

(00:18:03):
What’s the base?

(00:18:04):
What’s the main purpose of regular expression?

(00:18:08):
Formal languages, formal languages, state machines.

(00:18:14):
For example, here in São Paulo, it’s impossible to go anywhere without Waze.

(00:18:21):
What’s the main algorithm running on Waze?

(00:18:26):
the dextra algorithm, the shortest path algorithm.

(00:18:32):
And you study this on graphs, on the graphs lessons.

(00:18:39):
What’s so easy to have new programming languages or new frameworks now?

(00:18:47):
Why 10, 20 years ago?

(00:18:50):
It was so difficult.

(00:18:51):
Which languages did we have 20 years ago?

(00:18:55):
Let’s see.

(00:18:56):
Java, C Sharp, C, C++, Delphi, Pascal, and Visual Basic.

(00:19:05):
OK, six, seven, 10 languages.

(00:19:07):
There’s a lot more now.

(00:19:09):
Now.

(00:19:11):
100 languages.

(00:19:12):
Why is it so fast?

(00:19:14):
Because you can make compilers so fast.

(00:19:18):
You can make virtual machines so fast.

(00:19:24):
But which kind of knowledge are on these aspects?

(00:19:32):
Operating systems,

(00:19:33):
computer architecture,

(00:19:35):
memory management,

(00:19:36):
file system management,

(00:19:38):
hot reload,

(00:19:39):
development tools.

(00:19:40):
When you save your file, your application reloads.

(00:19:44):
Hot reload is about file system, is about memory management, is about process, process management.

(00:19:52):
You study this on operating systems.

(00:19:54):
Not only about programming,

(00:19:57):
you can be a developer using these tools,

(00:20:00):
but a computer scientist can be able to give these tools to other developers.

(00:20:07):
Okay, so it seems like, and I’ve asked this question before, I have a friend who works at…

(00:20:14):
Oracle Labs.

(00:20:14):
And she also has a PhD, but, you know, she does research and she is creating new systems.

(00:20:23):
And then,

(00:20:25):
you know,

(00:20:26):
when the company wants to make it into a product,

(00:20:29):
you know,

(00:20:29):
they hand it off to an engineering team.

(00:20:31):
And I said, oh, I thought you’re an engineer.

(00:20:32):
She says, yes, well, we’re doing science.

(00:20:34):
We’re doing creation.

(00:20:35):
We’re doing a much, much higher level thing.

(00:20:37):
And then when they get it spec’d out and working, maybe a little bit of a prototype and

(00:20:42):
And they just hand it off to a team that actually does the coding of everything.

(00:20:46):
So,

(00:20:46):
I mean,

(00:20:46):
it also seems like that sort of tension or concept actually is in school too,

(00:20:52):
because if you’re in a CS degree and industry is waiting for these kids to graduate

(00:20:58):
to get onto a product team,

(00:21:00):
that they might not be able to be as focused in school because there’s a lot more

(00:21:06):
to learn in a CS degree than there is if you’re just going to do product development.

(00:21:10):
So basically it’s research versus product development is sort of what I’m asking about.

(00:21:16):
There’s another association.

(00:21:17):
For example, my brother is a doctor.

(00:21:20):
When you finish the medicine course, here in Brazil, you’ll take six years, but you are a generalist.

(00:21:29):
If you have to be a specialized doctor, you have more two, three, or four years, depending on the kind of

(00:21:38):
Specialism.

(00:21:39):
Why?

(00:21:40):
In four years of computer science course, you have to be a specialist.

(00:21:46):
It’s impossible.

(00:21:47):
You have no time available.

(00:21:51):
What a university can give to a student?

(00:21:55):
A general vision of lots of different subjects,

(00:22:00):
networks,

(00:22:01):
rating systems,

(00:22:03):
algebra and math,

(00:22:06):
algorithms,

(00:22:07):
data structures,

(00:22:09):
et cetera,

(00:22:09):
web development,

(00:22:11):
and so on,

(00:22:11):
databases.

(00:22:13):
But in most cases at university, you don’t develop a product.

(00:22:18):
Develop a prototype or a little project.

(00:22:21):
And I always try to tell my students, on your vacation, what you do on your vacation?

(00:22:28):
Okay, you can take a rest.

(00:22:31):
Good, perfect.

(00:22:33):
But try to reserve a time to solve someone’s problem and make it work.

(00:22:43):
For example, you have a relative with a small market or a small company.

(00:22:50):
Okay, which kind of problem he has?

(00:22:54):
Try to make a software and put it on production.

(00:22:58):
Deploy it on a

(00:23:00):
cloud provider because your software must be useful so useless software is just a

(00:23:07):
bunch of lines of code software must be useful must software must solve a problem a

(00:23:15):
real person problem

(00:23:18):
I always ask to my students, name your user.

(00:23:21):
Name your user.

(00:23:22):
What’s your project?

(00:23:23):
It’s not the e-commerce.

(00:23:25):
It’s John Systems.

(00:23:27):
It’s Jim Systems.

(00:23:29):
It’s Mary Software.

(00:23:32):
Because you can see other person in the other side.

(00:23:37):
And you can put yourself on this condition, on his condition, on her condition.

(00:23:42):
Interesting.

(00:23:43):
When you mentioned on vacation solving a problem,

(00:23:46):
actually doing some work,

(00:23:48):
one of the things that I’ve been to a bunch of universities in China and India and

(00:23:54):
Indonesia, doing various talks, this is a long time ago.

(00:23:58):
And one of the things I would always tell students is,

(00:24:00):
you know,

(00:24:01):
get involved in open source projects now,

(00:24:04):
right?

(00:24:04):
Because the open source community,

(00:24:07):
you could develop your,

(00:24:09):
you know,

(00:24:10):
credibility,

(00:24:11):
you can make friends,

(00:24:12):
you can contribute to communities.

(00:24:13):
And once you contribute to community, you basically develop credibility.

(00:24:16):
you know, a reputation, right?

(00:24:20):
Yes.

(00:24:20):
Actually in the community.

(00:24:22):
This is all before GitHub,

(00:24:23):
but now GitHub makes it so much easier because it’s a,

(00:24:27):
I mean,

(00:24:27):
again,

(00:24:28):
it’s a very advanced tool.

(00:24:29):
It’s an entire universe up there.

(00:24:32):
And so are students doing that?

(00:24:34):
Are students at this age?

(00:24:35):
Because, I mean…

(00:24:37):
Years ago, it was a little bit harder, but now it’s very, very easy.

(00:24:42):
So I’d imagine that students are actually contributing to the projects.

(00:24:49):
Because,

(00:24:49):
for example,

(00:24:50):
to be alone,

(00:24:51):
it’s very difficult to study,

(00:24:53):
to keep motivated,

(00:24:54):
to make the right question.

(00:25:00):
It’s very difficult.

(00:25:02):
The problem is not the answer.

(00:25:05):
The problem is the question.

(00:25:07):
Most of times, we don’t know how to do the right question, even for Google Stack Overflow or ChatGPT.

(00:25:18):
What’s the best question that I have to make when I want to solve a problem?

(00:25:25):
And if you are on a community, it’s much easier to

(00:25:30):
to have orientation about more experienced users you have if you have if you are

(00:25:36):
new if you are a newbie on some technology you can learn much faster and help new

(00:25:45):
members it’s very important because the advanced user was a new member in the

(00:25:52):
beginning and

(00:25:54):
You cannot forget where you’re from.

(00:25:58):
And it’s not just about only, makes only right code.

(00:26:04):
To be on a community, it’s about helping people and be helped by other people.

(00:26:10):
Because I always tell my students, make a software to a real user.

(00:26:14):
Okay,

(00:26:15):
because you have to make the experience to talk to a different person that does not

(00:26:21):
think like you think.

(00:26:23):
It’s not logic.

(00:26:26):
They are worried about their company, their business.

(00:26:30):
Okay.

(00:26:31):
When you are a new user,

(00:26:33):
you have this kind of experience because you have to ask something to a more

(00:26:38):
experienced user.

(00:26:39):
And sometimes you can think, oh, I’m bothering him.

(00:26:46):
I don’t know.

(00:26:46):
I don’t want to bother him.

(00:26:48):
But try to talk to someone because sometimes

(00:26:52):
This kind of experienced user can help you to be more productive,

(00:26:57):
to know how to solve your problem,

(00:26:59):
and you can create a friendship.

(00:27:04):
That’s the main point.

(00:27:06):
Software is about people.

(00:27:07):
People is about people.

(00:27:08):
Community is not about technology.

(00:27:11):
Community is about people, to have friendships, to have partnerships.

(00:27:16):
For example,

(00:27:17):
if you ask a more experienced senior developer,

(00:27:21):
he can remember you when he needs another member to his team.

(00:27:26):
Right.

(00:27:27):
You are now.

(00:27:28):
Yeah, that’s a good message.

(00:27:30):
I mean, I’m glad students are doing that because it’s…

(00:27:35):
I’ve been working in open source for about 20 years.

(00:27:38):
And one of the nice things about it is that it does provide a mechanism for

(00:27:42):
contribution because communities are,

(00:27:45):
to one degree or another,

(00:27:47):
open.

(00:27:47):
There’s different licenses, different structures and stuff.

(00:27:50):
But in general, they’re looking for people to contribute.

(00:27:53):
And I also find that senior people have this sixth sense looking out for people who are contributing.

(00:28:04):
Sometimes communities can be very messy and very noisy,

(00:28:06):
and there’s all of a sudden someone in the corner there that’s asking a really good question.

(00:28:10):
They have a bug and they’ve actually submitted a patch for it.

(00:28:13):
Someone did a little bit of work here, so let’s go talk to that guy.

(00:28:18):
This also gets into open source and agile development methodologies and things like that.

(00:28:23):
I’m with the students that you’re working with.

(00:28:26):
Is that something that you talk about?

(00:28:29):
in terms of working in teams and things like that, team development.

(00:28:33):
I mean,

(00:28:33):
every conference I go to,

(00:28:34):
I see people,

(00:28:36):
I see developers sitting in the corner,

(00:28:39):
huddled around a computer.

(00:28:40):
It’s rarely just one person.

(00:28:42):
There’s usually a group of people looking at one screen, kind of hacking on something.

(00:28:46):
Um, and of course in their day jobs.

(00:28:48):
And I also talked to people who do,

(00:28:49):
you know,

(00:28:50):
pair programming as well,

(00:28:51):
which was for me would be a little bit,

(00:28:54):
a little intimidating,

(00:28:55):
but,

(00:28:56):
uh,

(00:28:56):
nevertheless,

(00:28:57):
it is one of the styles.

(00:28:59):
These are ways of, of coding, um,

(00:29:02):
Is this something that you talk about with students?

(00:29:05):
For example, I think the onboarding of anyone in our development team is always an intimidating period.

(00:29:17):
Why?

(00:29:18):
Because you don’t feel capable.

(00:29:20):
I’m not able to reach this kind of knowledge of this team.

(00:29:26):
I’m like a syndrome, the imposter syndrome.

(00:29:30):
And it’s a trap.

(00:29:32):
It’s a very dangerous trap because if you are hired or if you are invited to

(00:29:41):
participate of a team,

(00:29:43):
of a community,

(00:29:44):
you have to know that everyone on this team

(00:29:48):
must learn their whole life.

(00:29:51):
Nobody has answers for anything.

(00:29:55):
Everyone is learning about something, even if you have a basic question.

(00:30:03):
So, what do I try to incentivize to my students?

(00:30:07):
Make teams because you have different people,

(00:30:12):
different ways of thinking,

(00:30:14):
different personalities,

(00:30:16):
different approaches for the same problem.

(00:30:21):
And you can learn with all of this.

(00:30:25):
You can learn a lot.

(00:30:26):
Because it’s not about like only solving a problem.

(00:30:30):
It’s the very important thing.

(00:30:32):
But you can learn different ways to solve a problem.

(00:30:37):
You can teach someone how to solve a problem a different way.

(00:30:42):
You can…

(00:30:44):
Try to solve a conflict between two members of your team that are not in common

(00:30:53):
opinion with some kind of decision of the project.

(00:30:57):
All of these are unique experiences, unique opportunities.

(00:31:02):
to be a better developer because you have to talk to someone who has difficulty

(00:31:10):
translating into words the problem.

(00:31:13):
It’s very common in the programming area, in the programming career.

(00:31:18):
You are trying to talk to a user that cannot explain the problem.

(00:31:24):
You have to guide him

(00:31:27):
or you have to guide your end user on how to know what’s the main need.

(00:31:34):
And teamwork, it’s a very, very rich opportunity.

(00:31:40):
And you talk about open source,

(00:31:43):
not only participate on existing open source projects,

(00:31:47):
try to make your project available on GitHub,

(00:31:53):
for example.

(00:31:54):
Make your software open because other users can reach your code and be part of your team.

(00:32:01):
Right.

(00:32:02):
And then that asserts your leadership, right?

(00:32:05):
So you do that in school, three, four years in school, you graduate, you’re contributing to community.

(00:32:13):
Well, first you have a CS degree from your class and then you have a…

(00:32:18):
You’ve got some code on GitHub,

(00:32:20):
and you’ve contributed,

(00:32:20):
so you have your own community,

(00:32:23):
actually your own project,

(00:32:24):
and you’ve contributed to X,

(00:32:25):
Y,

(00:32:26):
and Z projects out there.

(00:32:27):
Now,

(00:32:27):
all of a sudden,

(00:32:27):
you’ve got a portfolio of work that you can show,

(00:32:31):
plus you’ve got 102 people that you know in the community around the world.

(00:32:36):
It seems like job hunting would be easier if you did that, right?

(00:32:40):
Yeah.

(00:32:41):
So one thing about portfolio,

(00:32:43):
for example,

(00:32:44):
most of my,

(00:32:46):
lots of friends used to say,

(00:32:48):
ah,

(00:32:48):
portfolio doesn’t worth.

(00:32:51):
No, it worth, it worth a lot.

(00:32:53):
Ah, no one sees your portfolio.

(00:32:56):
No, that’s not the point.

(00:32:58):
Your portfolio is a preparation to make you more confident.

(00:33:03):
Right.

(00:33:04):
to an interview because you have real problems and you have to solve those real problems.

(00:33:10):
And if your technical leader interviews you,

(00:33:14):
he can,

(00:33:15):
this kind of people can ask you things that you are able to

(00:33:21):
It’s not about how to show only what you’re able to do,

(00:33:25):
but you make yourself more confident on an interview process,

(00:33:32):
on a job hunting process.

(00:33:35):
Exactly.

(00:33:36):
Interesting.

(00:33:37):
Okay.

(00:33:37):
Let’s talk about Java for a few minutes.

(00:33:39):
You mentioned that you love Java and you, you’ve been around with Java for a couple of decades now.

(00:33:47):
So tell me a little bit about Java.

(00:33:49):
I,

(00:33:50):
I remember way back at sun,

(00:33:52):
this was the hottest thing at the company and then many,

(00:33:55):
you know,

(00:33:55):
but you know,

(00:33:56):
it has evolved tremendously.

(00:33:58):
Yes.

(00:33:59):
So, and I talk to developers now and very, very young and they don’t,

(00:34:04):
really have any working memory from the creation of Java and the early evolution.

(00:34:08):
They just love it now for what it does.

(00:34:11):
And they describe it as really easy to use and fast and this and that.

(00:34:15):
And I remember, oh, those were not words that we used to describe Java 20 years ago, right?

(00:34:19):
Yeah.

(00:34:23):
So tell me a little bit about why Java is so good.

(00:34:26):
Why is it so great?

(00:34:27):
I mean, you use it in class.

(00:34:29):
How do kids adapt with it?

(00:34:31):
How do you teach it?

(00:34:32):
How has it evolved?

(00:34:34):
I think in Brazil, we have…

(00:34:38):
Two extremes.

(00:34:39):
Either you love Java or you hate Java.

(00:34:44):
It’s not a midterm.

(00:34:47):
So why most of students hate Java?

(00:34:51):
I was trying to investigate this.

(00:34:54):
Most because our attitude, our attitude as professors.

(00:35:00):
Why?

(00:35:01):
Okay, most of my students complains about Java is the verbosity of Java.

(00:35:07):
You write a lot compared to Python, for example.

(00:35:11):
To make a print on your screen,

(00:35:13):
public class,

(00:35:14):
my class,

(00:35:15):
public static,

(00:35:15):
void,

(00:35:16):
mainstream,

(00:35:16):
args,

(00:35:17):
system.out.println,

(00:35:19):
hello.

(00:35:20):
In Python, print hello.

(00:35:22):
Why?

(00:35:24):
I always try to explain to my students.

(00:35:26):
Good, very good.

(00:35:28):
You write a lot.

(00:35:30):
But for me, it’s neutral.

(00:35:32):
Verbosity is control.

(00:35:36):
System.alt.println

(00:35:39):
It’s about you are printing a message on your output device from your operating system.

(00:35:47):
You describe anything.

(00:35:50):
Because printing can be printing on a screen, writing a line on a file, sending a message to a network.

(00:35:58):
Which kind of print you want?

(00:36:00):
Just for a single print.

(00:36:02):
Oh, but the header of your main method is huge.

(00:36:09):
Yes.

(00:36:10):
If you are learning, try to understand it’s just a header.

(00:36:15):
It’s just a header.

(00:36:16):
I won’t try to explain what public means,

(00:36:19):
what static means,

(00:36:21):
what void means,

(00:36:23):
and what array means in our first class,

(00:36:27):
on our first lesson.

(00:36:28):
just a header.

(00:36:29):
Try to be used to do this mechanically.

(00:36:33):
OK,

(00:36:34):
when we advance on our lessons,

(00:36:38):
we can decode each term of this public static void main string args header.

(00:36:47):
OK, give time to time.

(00:36:50):
Give time to each different aspect, different component of your heading.

(00:36:57):
OK, object-orienting.

(00:37:00):
programming.

(00:37:01):
Java is one of the most complete programming language to understand all concepts of

(00:37:10):
objected oriented programming.

(00:37:12):
Because you have hitter,

(00:37:14):
you have interface implementation,

(00:37:16):
you can implement all of the design patterns,

(00:37:20):
the 34 design patterns of Gang of four,

(00:37:23):
you can implement solid,

(00:37:24):
you can implement different

(00:37:27):
layers of code,

(00:37:28):
you can implement hexagonal architectures,

(00:37:31):
you can implement clean architecture,

(00:37:33):
or you have a very powerful language on your hand.

(00:37:39):
You have flexibility.

(00:37:41):
What we can develop with Java?

(00:37:43):
Desktop applications.

(00:37:45):
Yes.

(00:37:45):
Eclipse, NetBeans are desktop applications made by Java.

(00:37:50):
APIs, web systems.

(00:37:52):
The most productive framework for making forms in Java is JSF.

(00:37:59):
I think in the

(00:38:00):
using all those programming languages at all.

(00:38:04):
JSF is the most productive framework to make forms.

(00:38:10):
You can make games.

(00:38:11):
You can make games.

(00:38:13):
For example, Minecraft is one of the most successful games in the history made in Java.

(00:38:20):
You can develop mobile applications using Android.

(00:38:23):
Ah, but now we have Kotlin.

(00:38:25):
Okay, but in the beginning you had Java and…

(00:38:29):
You can now develop in Java and publish on Android.

(00:38:34):
You can develop in Java for iOS using the Robo Mobile VM framework.

(00:38:41):
You can develop in Java for IoT devices, the same language, a different amount of different applications.

(00:38:52):
When I show to my students,

(00:38:54):
I can develop an API in this Windows machine here and deploy it on a Raspberry Pi

(00:39:02):
chip and it works.

(00:39:04):
That’s the main point when we are talking about portability.

(00:39:09):
Portability is about it.

(00:39:10):
I can develop it on a Windows machine and run on a Raspberry Pi device.

(00:39:17):
And I think Java can approach all of those things.

(00:39:22):
different issues.

(00:39:24):
And it solves those problems very elegantly and with lots of different resources.

(00:39:34):
So is that something that a young student can appreciate?

(00:39:37):
Because you just described really the whole market.

(00:39:41):
There’s many, many specialties within what you just actually described.

(00:39:48):
I mean, a young student in college, is that something that they can grasp?

(00:39:52):
In terms of understanding the breadth of all the things that the technology can do.

(00:39:57):
I don’t know if I can give some market examples, but when I try to introduce Java to young students.

(00:40:05):
Oh, how many students here, how many people here watch Netflix?

(00:40:10):
oh okay thank java because you have netflix on your home because all of the

(00:40:18):
intelligence of netflix was made in java so sometimes the marketing the software

(00:40:26):
industry is very very distance distant from university and we professors at

(00:40:33):
university uh we have difficult to know what what are the

(00:40:39):
well how can i say most successful case study case using java why industry is

(00:40:45):
adopting java for example i was talking to heather another opportunity java

(00:40:51):
champions are the the

(00:40:55):
Most important thing to tell people or tell new students,

(00:41:00):
tell new professionals why the software industry is adopting Java.

(00:41:05):
Because they are acting on software industry right now.

(00:41:09):
So when we have successful cases of Java,

(00:41:15):
we can use this to convince our students because Java is powerful.

(00:41:23):
Java is fast.

(00:41:25):
Java is fast, very, very fast.

(00:41:27):
Java is flexible.

(00:41:29):
Java can optimize your resources.

(00:41:33):
It’s not like, oh, Java is heavy and slow.

(00:41:37):
No, no, no.

(00:41:38):
You are thinking in the past 20 years version of Java.

(00:41:44):
No, now Java is very, very, very fast.

(00:41:48):
in most benchmarks is faster than C language.

(00:41:52):
Instructions?

(00:41:53):
No, memory management.

(00:41:55):
I think that’s the point.

(00:41:56):
It’s a very hard work to do,

(00:41:58):
Jim,

(00:41:59):
because you have to convince students that are looking for facilities and not

(00:42:07):
always knowledge.

(00:42:08):
Well, it’s also interesting, you know, you get these perceptions, like such and such is old.

(00:42:14):
You know,

(00:42:15):
I mean,

(00:42:15):
I’ve read,

(00:42:16):
you know,

(00:42:16):
like news articles when there’s,

(00:42:18):
you know,

(00:42:18):
whenever there’s anniversaries,

(00:42:20):
you know,

(00:42:21):
Java’s old,

(00:42:21):
right?

(00:42:23):
Well, yeah, Python is the same age, you know, and it’s like…

(00:42:28):
I never understood, you know, and things have evolved.

(00:42:31):
JavaScript is the same age.

(00:42:32):
Exactly.

(00:42:33):
I mean, all that’s, I mean, exactly.

(00:42:36):
So, I mean, these things have evolved and the technology continues, you know, to evolve.

(00:42:41):
And it’s not the same thing now as it was 20 years ago.

(00:42:45):
Nothing is, unless it’s been abandoned.

(00:42:47):
Okay.

(00:42:48):
And there’s, and the Java community is massive and you go to these conferences and

(00:42:52):
I mean, the conferences are all sold out all over the world.

(00:42:55):
Even now, in difficult economic times, you’ve got conferences in Europe that are totally sold out.

(00:42:59):
And you go there and you look and half the people are in their 20s and 30s.

(00:43:04):
So I never understood this concept of ranking languages either,

(00:43:09):
because we have more languages now because presumably there are more things that

(00:43:16):
are needed to do specialized tasks.

(00:43:19):
So, yes, you go to the grocery store, there’s not just one item.

(00:43:22):
There’s many items in the grocery store because you need sugar and flour and meat

(00:43:27):
and all these different things to make a meal.

(00:43:30):
You’re building a system for a big multinational corporation that’s got 250,000

(00:43:36):
employees all over the world.

(00:43:38):
And it’s going to be a mixed environment.

(00:43:41):
You’re going to have mixed customers.

(00:43:43):
And the developers working in that environment are going to have mixed skills.

(00:43:48):
And I just never understood this concept of ranking all these things.

(00:43:51):
Number one, this year.

(00:43:52):
Number two, I just never got it.

(00:43:55):
Especially since whenever I personally talk to, especially the young developers,

(00:44:01):
And how they very cavalierly say, just, oh, yeah, it’s great.

(00:44:05):
It’s so easy to code now and stuff like that.

(00:44:08):
And the perception, I think some of the perception of this oldness is coming from old people.

(00:44:18):
Because when you talk to the young people, people are actually doing work.

(00:44:22):
Okay.

(00:44:22):
They’re out there actually doing work.

(00:44:24):
They tell a very different story.

(00:44:25):
Like yourself, you’re telling a very different story.

(00:44:28):
It’s the same thing that people talk about, oh, Java is about to die.

(00:44:33):
Oh, there’s a list of all other programming languages that must die before Java.

(00:44:39):
For example, COBOL.

(00:44:41):
And why Java does not die or will never die?

(00:44:46):
Think about a car race.

(00:44:49):
You are a pilot.

(00:44:51):
You are a driver of a very, very, very competitive car race.

(00:44:56):
And your team, your engineering team, are also engineering drivers.

(00:45:02):
engineers and pilots.

(00:45:05):
So they are developing,

(00:45:07):
they are improving your car to be more and more competitive,

(00:45:13):
more and more efficient,

(00:45:14):
more and more powerful because they can go into the car

(00:45:19):
and drive it with you.

(00:45:22):
Your car is Java.

(00:45:24):
Your team are the community.

(00:45:27):
You have the best developers around the world working hard,

(00:45:31):
hard,

(00:45:32):
very hard to improve the performance,

(00:45:35):
the stability,

(00:45:37):
the facility of Java environment,

(00:45:40):
not only programming language,

(00:45:42):
the whole environment,

(00:45:44):
the Java virtual machine mainly,

(00:45:46):
because now you have

(00:45:47):
Clojure, Scala, and other languages that runs on virtual machine.

(00:45:53):
It’s a complete environment because there are a lot of work,

(00:45:57):
working hard to make it very,

(00:46:00):
very,

(00:46:01):
very powerful and

(00:46:03):
Lots of people that try to teach Java are stuck on a technology, on Java 7 technology.

(00:46:12):
That’s the main problem.

(00:46:14):
We have to upgrade the knowledge of our colleagues,

(00:46:19):
our other professors,

(00:46:21):
our team of instructors,

(00:46:24):
because Java is fascinating.

(00:46:26):
Why young developers don’t realize it is fascinating?

(00:46:31):
It’s fascinating.

(00:46:32):
There’s a lot of resources.

(00:46:34):
Yeah, it is an interesting dynamic.

(00:46:36):
I really enjoy having these conversations,

(00:46:39):
especially with someone like yourself,

(00:46:41):
since you’ve seen the evolution.

(00:46:43):
You can describe the old and the new.

(00:46:47):
So what was it like teaching Java 15 years ago versus, say, 2000?

(00:46:52):
versus now?

(00:46:52):
I mean, because two things have changed.

(00:46:55):
The technology has changed significantly, and people have changed.

(00:46:59):
Humans change.

(00:47:01):
I mean,

(00:47:01):
if you talk to an old professor versus,

(00:47:04):
you know,

(00:47:05):
like a young professor,

(00:47:06):
they describe two different student bodies.

(00:47:08):
So what’s it like now versus, you know, specifically teaching Java, though?

(00:47:12):
I think…

(00:47:14):
My challenge is the best way to explain new language features.

(00:47:20):
Why?

(00:47:20):
Because it changes.

(00:47:22):
You get used to programming in an old style.

(00:47:25):
You get used.

(00:47:26):
For example, when Java 8 introduced Lambdas and Streams, wow, what was the impact?

(00:47:33):
But if you try to read streams, mainly streams, for example, it’s much easier than reading a loop.

(00:47:43):
Wow, it’s much more significant when you make a map or a reducing operation or a to-list operation.

(00:47:53):
It’s much more elegant when you make a lambda loop.

(00:47:58):
Oh, you reduce the amount of code drastically.

(00:48:02):
When you are trying about records,

(00:48:05):
well,

(00:48:06):
a big problem of developing APIs,

(00:48:09):
you have to make a DTO,

(00:48:11):
et cetera,

(00:48:12):
et cetera.

(00:48:12):
No, no, no, make a record.

(00:48:13):
record much easier, much faster, much more productive.

(00:48:18):
But it’s a hard task to teach Java and be up to date to the new features of

(00:48:27):
language because the new features of Java language are made to make your life easier.

(00:48:35):
So go with this kind of thinking that your life will make easier and you will try to

(00:48:43):
Completely rewrite your code in a more elegant way and a more efficient way.

(00:48:51):
And, oh, for example, virtual threads.

(00:48:54):
Wow, it’s amazing because you can create thousands of threads.

(00:49:00):
But on your code, it doesn’t change anything.

(00:49:04):
It changes on your virtual machine.

(00:49:06):
wow it was a very very very hard project but what’s the difference between the old

(00:49:12):
style threads and the new style threads to you developer nothing changes the

(00:49:20):
operating systems changes everything that’s the main purpose of how can we show

(00:49:27):
java as a

(00:49:29):
fantastic language a fantastic framework what can make your work easier and what

(00:49:35):
can make your work easier without changing anything that you wrote previously

(00:49:42):
interesting really yeah so

(00:49:45):
Yeah,

(00:49:47):
that is an amazing statement,

(00:49:49):
actually,

(00:49:49):
to be able to evolve the technology so many years without breaking it.

(00:49:54):
Yes.

(00:49:55):
Yeah, because you have a legacy code.

(00:49:59):
How can you keep your legacy code?

(00:50:02):
Java has this kind of, I don’t know, this kind of premise, because…

(00:50:08):
Java tries to keep legacy code working with new features.

(00:50:14):
It’s stable.

(00:50:16):
It’s previsible.

(00:50:18):
It’s predictable.

(00:50:19):
You cannot change a version of Java and your system, your application crashes.

(00:50:24):
It’s very difficult to happen this.

(00:50:29):
Well, I think your students are in good hands down there, and Sal Paolo, professor.

(00:50:35):
Thank you so much.

(00:50:37):
Yeah, no, this is very inspiring.

(00:50:41):
I sort of wish I stuck with the coding when I was a lot younger,

(00:50:44):
because I think,

(00:50:45):
well,

(00:50:45):
I can always start now,

(00:50:47):
right?

(00:50:47):
Because the tools are a lot easier to use now.

(00:50:49):
Yeah.

(00:50:49):
Yeah.

(00:50:51):
The problems keep the same.

(00:50:53):
Yeah, yeah, exactly.

(00:50:54):
The problems are the same, but the tools make it much more easier and more powerful.

(00:50:59):
And in theory, I mean, I think also…

(00:51:02):
I’m a lot older now.

(00:51:04):
I have a lot more just general life experience,

(00:51:06):
but I’m highly motivated to learn as an older student using more powerful tools.

(00:51:13):
I think there’s a lot of something to be said with older people getting into coding as well.

(00:51:21):
Because they have life experience with solving problems.

(00:51:24):
That’s the point.

(00:51:26):
Sorry.

(00:51:26):
That’s the point.

(00:51:27):
I have lots of students that are migrating on career migration.

(00:51:33):
For example, lawyers or engineers or marketing people migrating to code.

(00:51:40):
And lots of them with 34, 40 years.

(00:51:41):
People older than me.

(00:51:46):
50 years old, I’d like to code.

(00:51:48):
Okay, the first lesson before learning anything, know that it’s going to be difficult.

(00:51:56):
Oh, but the younger people, it’s difficult to them.

(00:51:59):
And it’s difficult to you and difficult to me.

(00:52:03):
It’s difficult to everyone.

(00:52:05):
It’s not easy.

(00:52:06):
So you can use your life experience to optimize your studies.

(00:52:12):
I think that’s the main point.

(00:52:14):
What’s the difference between a young developer and an older developer?

(00:52:19):
Life experience.

(00:52:20):
Here you have time to go wrong.

(00:52:24):
You can make lots of mistakes, code mistakes, etc.

(00:52:29):
You have time to get back.

(00:52:31):
Here, you know that your actions must be more precise.

(00:52:36):
So that’s the difference.

(00:52:39):
Because this kind of life experience will make yourself focus on your studies.

(00:52:47):
Absolutely.

(00:52:47):
Motivation.

(00:52:48):
Yes.

(00:52:49):
And discipline.

(00:52:50):
And discipline.

(00:52:51):
Yeah, actually in a sense of not wanting to waste time like you did when you were in school.

(00:52:58):
That’s it.

(00:53:00):
All right.

(00:53:00):
Well, Professor, I would love to.

(00:53:02):
We’re actually having a Zoom conversation here, obviously.

(00:53:06):
But I’m in Japan and you are in Brazil.

(00:53:08):
But it would be great to meet you live someday at some conference.

(00:53:11):
I’d love to get to Brazil.

(00:53:13):
I’ve had a few opportunities to go.

(00:53:14):
I know a couple of people there from Sun and from Oracle.

(00:53:19):
And I would love to make a tour your way.

(00:53:22):
If I do, I will let you know.

(00:53:24):
So let’s wrap this up.

(00:53:25):
Is there anything else that we left out that you want to leave us with?

(00:53:30):
Well, first of all, for me, it was an honor to participate of your podcast.

(00:53:38):
I’m part of your audience.

(00:53:39):
I used to watch your podcast.

(00:53:43):
I’m here with my idol.

(00:53:44):
So sorry, Jim.

(00:53:45):
Thank you.

(00:53:48):
And if you come to Brazil, please let me know because we’re going to have a coffee or a barbecue.

(00:53:54):
We can call our friends to join us in our meeting.

(00:53:58):
And I think one thing that I can tell to my students and everyone who’s watching us,

(00:54:05):
software is about people.

(00:54:06):
Don’t forget this.

(00:54:07):
Don’t forget this.

(00:54:09):
Learning programming is hard and in our career you have to learn until your last day of life.

(00:54:19):
You have to learn to learn for your whole life.

(00:54:24):
If I was stuck on basic in 1999, 1989, 1989, I was without any kind of job today.

(00:54:33):
So you have to evolve as a person, technically, and don’t forget your user.

(00:54:40):
Your user is the most important people in the whole process of software development.

(00:54:45):
Beautiful.

(00:54:45):
All right, Professor, thank you very much, and we’ll talk to you soon.

(00:54:48):
Really appreciate it.

(00:54:49):
Thank you so much, Jim.