(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.
