03-Chandra-Guntur.txt

Birds-of-a-feather: Code Katas for Java by Chandra Guntur
Jim Grisanzio with Chandra Guntur
Duke’s Corner Podcast — OracleDevLive Preview — March 14, 2022
https://dukescorner.libsyn.com/oracledevlive-preview-birds-of-a-feather-code-katas-for-java

Duke’s Corner Podcast with Java Champion Chandra Guntur who previews his Birds-of-a-Feather session — Code Katas for Java — for the upcoming Oracle Developer Live Java Innovations conference on March 22nd and 24th.

Transcript:

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

(00:00:01):
Got a cool conversation here coming up with Chandra Guntur.

(00:00:04):
Chandra is a Java champion.

(00:00:06):
He’s a user group leader.

(00:00:08):
And he’s an engineer in the financial services industry on the East Coast of the U.S.

(00:00:13):
And he’s also a speaker at the Oracle Developer Live Java Innovations Conference,

(00:00:19):
which is coming up next week.

(00:00:21):
And so I’ll have links in the show notes so you can register and get involved with that.

(00:00:26):
It’s going to be a great event.

(00:00:28):
And Chandra’s session he’s going to run is going to be about Code Katas.

(00:00:33):
And this is really cool.

(00:00:34):
I’m going to be there because I’m really interested in this.

(00:00:36):
I didn’t know these existed until now.

(00:00:39):
But the general topic of learning, skill enhancement…

(00:00:44):
uh is really really a lot of interest to me personally and that’s what he’s going

(00:00:48):
to be talking about using this methodology of of you know code katas i’ll let him

(00:00:53):
explain it we’ll talk to you soon bye chandra welcome welcome to the program

(00:01:04):
Hello, Jim.

(00:01:04):
How are you doing?

(00:01:05):
It’s very good to meet you.

(00:01:07):
I’ve seen you online.

(00:01:08):
I’ve seen some of your videos, but we haven’t actually met.

(00:01:10):
This is the first time, and that’s cool.

(00:01:12):
I’m always interested in meeting new people.

(00:01:15):
And so the events team tells me that you are participating at this conference next month.

(00:01:21):
It’s Oracle Developer Live, Java Innovations.

(00:01:24):
And so they wanted me to have a quick conversation actually with you.

(00:01:28):
And I hear you’re talking about code katas.

(00:01:33):
And this is a BOF session.

(00:01:34):
So this is something new here for this particular event.

(00:01:37):
And so explain to me a little bit about what a Code Kata is.

(00:01:43):
Pleasure meeting you on video.

(00:01:44):
And I look forward to meeting you in person soon.

(00:01:47):
So I am speaking at this, I’m participating rather at this developer live session next month.

(00:01:53):
And I’ll be talking about Code Katas.

(00:01:56):
Code Kata is very similar if you’re familiar with martial arts.

(00:01:59):
Katas are forms of exercises that help you build your muscle memory through repeated patterns.

(00:02:05):
So you go perform a certain task.

(00:02:07):
If you watch the movie Karate Kid,

(00:02:09):
Mr.

(00:02:09):
Miyagi asked the kid to actually go wax on and wax off a lot of times.

(00:02:15):
And what it does is that it’s actually building our defense mechanisms for the kid

(00:02:18):
without him realizing it.

(00:02:20):
A CodeCata does something very similar.

(00:02:22):
A CodeCata is a programming exercise that helps you hone your skills through practice.

(00:02:28):
So you practice some programming exercises,

(00:02:30):
you repeat them a few times,

(00:02:32):
you know how to use a certain technology.

(00:02:35):
There are different ways in which a CodeCata can be set up.

(00:02:37):
And I’m just going to quote Confucius.

(00:02:40):
I don’t know how much this is true, but it’s… Well, I live in Japan, so…

(00:02:44):
So I live in Japan, so I’m familiar with Confucius and this whole concept here.

(00:02:48):
So yeah, please go ahead.

(00:02:51):
Yeah, so hopefully this is true of Confucius having said this, but it does go like that.

(00:02:56):
It says, I hear and I forget.

(00:02:58):
So when you sit in the classroom and you hear something, you have a tendency to forget it afterwards.

(00:03:03):
You see and you remember, you watch somebody do something and you may actually remember how it’s done.

(00:03:08):
But if I do, I understand.

(00:03:11):
And that’s what a CodeCata gives you.

(00:03:12):
It gives you the ability to perform a task repeatedly,

(00:03:16):
multiple number of times if you wish to,

(00:03:18):
so you can better understand how it works.

(00:03:21):
And that’s exactly the intent and purpose of using a CodeCata.

(00:03:25):
New concepts are introduced as coding exercises.

(00:03:28):
And if you are taking the CADA,

(00:03:30):
yours is the initiative to actually go solve it and try to understand why you’re

(00:03:34):
solving it in a certain way.

(00:03:36):
So, OK, so it’s a specific.

(00:03:38):
So it’s not just a bunch of exercises like a homework assignment.

(00:03:41):
There are specific specific patterns that you’re introducing here.

(00:03:47):
Right.

(00:03:48):
And so the concept is to repeat them.

(00:03:52):
So I’m a little bit unclear about like,

(00:03:54):
OK,

(00:03:54):
if you solve the problem once,

(00:03:57):
do you then solve it again or do you build upon it?

(00:04:02):
That’s an excellent question.

(00:04:04):
And there are multiple ways in which you can do this, right?

(00:04:07):
There’s a form where you could actually just take a blank slate and start writing some code.

(00:04:12):
And through trial and error, figure out how certain things work.

(00:04:17):
The problem with the trial and error approach is that you actually may actually

(00:04:21):
skip over some of those elements that got you to the final solution.

(00:04:26):
What if someone else already knows the solution, the right way to do it?

(00:04:29):
And what they did was take away some of the key pieces that you do need to learn

(00:04:33):
and deletes them,

(00:04:34):
replaces them with to do,

(00:04:36):
fix these things so you can get this code to work.

(00:04:39):
And you’re only focused on solving that particular API construct or programming

(00:04:44):
part that gets you to solve the problem.

(00:04:46):
What it does is tends to focus more on the actual items that you would like to learn.

(00:04:53):
This template of code that would finally work,

(00:04:56):
but is missing the vital pieces that you need to learn,

(00:04:59):
and you repeat this template a few times,

(00:05:02):
you know how this piece of code works.

(00:05:05):
It’s a different approach compared to a trial and error of,

(00:05:08):
let me write everything from a blank slate and let’s see how it works.

(00:05:12):
That’s the intended purpose of using a CodeCarta over,

(00:05:15):
let’s say,

(00:05:16):
any other programming practice where you are just repeatedly writing something from

(00:05:20):
a blank template.

(00:05:21):
Interesting.

(00:05:22):
So is this a well-known technique in software engineering education?

(00:05:29):
Is this something that everyone is familiar with?

(00:05:33):
I am not sure how familiar a lot of folk are with the code cutter models.

(00:05:37):
I mean, there are a few models in which people learn.

(00:05:39):
Some people learn by reading books.

(00:05:41):
Some people learn by watching videos.

(00:05:43):
And then there is a third group of people.

(00:05:44):
Unfortunately,

(00:05:45):
I belong to that group of people who can only learn by getting their hands dirty

(00:05:50):
with whatever they’re trying to learn.

(00:05:52):
This model or this set of people or individuals will heavily benefit from having

(00:05:57):
code cutters as a way of learning a new programming practice or a programming technology.

(00:06:03):
What also helps is the fact that when you create a code cutter,

(00:06:08):
you can also include some amount of theory in terms of comments or in terms of how

(00:06:13):
the API is laid out,

(00:06:14):
which also helps the reading audience understand the code better as well.

(00:06:20):
There are different venues and then you can always create videos of you solving the

(00:06:24):
code kata for folk who would like to learn through a video mechanism.

(00:06:28):
I think a code kata is probably one of the easiest ways in which you can cover all

(00:06:33):
kinds of folk who want to learn.

(00:06:35):
I’m not sure how familiar a lot of developers are with Code Cutters, but it is quickly catching on.

(00:06:42):
As of now,

(00:06:43):
I’m familiar with a lot of Code Cutters that exist on GitHub,

(00:06:46):
and a lot of folk are availing of these and contributing to them as well.

(00:06:50):
I believe it’s a growing mechanism.

(00:06:53):
Interesting.

(00:06:54):
I’m really interested in innovative ways to learn, you know, whatever it is.

(00:07:00):
And so this sounds fascinating to me.

(00:07:02):
I’m actually going to explore this for myself, to be perfectly honest.

(00:07:07):
Okay, so you’re going to run this session.

(00:07:09):
It’s a birds of a feather session.

(00:07:10):
So tell me a little bit about how it’s actually going to be run.

(00:07:15):
Yeah, sure.

(00:07:16):
So what we intend to do in the words of first session is one,

(00:07:20):
understand where the necessity for Code Katas came into being,

(00:07:23):
at least for me,

(00:07:25):
how I went about building Code Katas,

(00:07:27):
what Code Katas have I already contributed towards,

(00:07:30):
and how these are being used to sort of learn new techniques and how a code cutter

(00:07:35):
in general is created,

(00:07:37):
right?

(00:07:37):
What do we do?

(00:07:39):
There’s a certain process to how a code cutter is created.

(00:07:42):
Now, it’s not very prescriptive.

(00:07:43):
There are several ways in which you can create code cutters, but there are some…

(00:07:49):
helpful features that anyone new who’s trying to create a codecutter,

(00:07:53):
not just take one,

(00:07:53):
but to create one,

(00:07:55):
should be aware of.

(00:07:56):
It’s a developer experience concept that we’re going to talk or discuss heavily in the session.

(00:08:02):
Okay, so it’s going to be very interactive then, right?

(00:08:06):
Absolutely.

(00:08:06):
It will have to be very interactive because there will be a lot of back and forth

(00:08:10):
on how things can be handled in terms of developer empathy,

(00:08:15):
for lack of a better word,

(00:08:16):
understanding how a code carter taker understands and uses a certain technology,

(00:08:22):
what they should and shouldn’t know.

(00:08:24):
how we have to put ourselves in the place of that individual who’s taking the

(00:08:29):
CodeCarta and understand what they’re trying to learn.

(00:08:31):
What are we sharing with them that would help them better grasp or keep or retain

(00:08:37):
their interest in continuing with the CodeCarta?

(00:08:40):
These are important concepts,

(00:08:41):
and this will be something that I hope will be on the agenda when we talk about this,

(00:08:45):
or at least I’ll try to steer the conversation towards that.

(00:08:48):
It sounds really interesting.

(00:08:50):
It also sounds like just,

(00:08:52):
you know,

(00:08:52):
we’re meeting here for the first time,

(00:08:54):
but I’m just listening to you explain this.

(00:08:56):
It sounds like this is something that you’re genuinely interested in,

(00:08:59):
but also you’re genuinely interested in sort of teaching.

(00:09:03):
Is that something like in terms of working with the community that you do a lot in your career?

(00:09:10):
I am quite passionate about teaching myself.

(00:09:13):
I’ve been teaching for a long time,

(00:09:16):
not through some certified programs,

(00:09:18):
but I’ve been participating in some sort of a teaching mechanism for over two

(00:09:23):
decades now.

(00:09:25):
What I am very interested in is sharing what I know,

(00:09:29):
not with the intent of just sharing it, but learning what I don’t know by sharing it.

(00:09:34):
When I share,

(00:09:35):
it’s the only time when someone else realizes that I’m making a mistake,

(00:09:39):
and that’s when they have an opportunity to correct me.

(00:09:42):
So I always find that to be a very open model,

(00:09:45):
and I am absolutely welcoming of anyone who can come in,

(00:09:49):
critique,

(00:09:49):
suggest,

(00:09:50):
or otherwise give me some alternates of what I’m sharing.

(00:09:56):
If I don’t share what I don’t know,

(00:09:58):
If I don’t share what I know, I will never come to know what I don’t know.

(00:10:02):
And that’s a model I approach it with.

(00:10:05):
I’ve been involved in the community for a while.

(00:10:07):
I’ve been at the New York JavaScript for almost two decades now.

(00:10:11):
I’m a founding member of the Garden State Java User Group, which is the New Jersey Java User Group.

(00:10:17):
And I guess I’ve been participating in both volunteering and leading at the Java User Group communities.

(00:10:26):
And that’s something I believe brings people together, networks, and I’m quite passionate about that.

(00:10:32):
Wow, that’s really cool.

(00:10:34):
Okay, so this is really fascinating.

(00:10:37):
I’m looking forward to your session.

(00:10:38):
I’ll be there for sure because I’m interested personally now that you’ve piqued my interest here.

(00:10:44):
And hopefully in the future we’ll meet – I’m actually from New York originally,

(00:10:48):
by the way,

(00:10:48):
so I’m from your part of the world –

(00:10:51):
and um hopefully i can get back there for uh for some conferences in person real

(00:10:56):
live not virtual stuff um i think my fingers that happen soon i look forward to

(00:11:01):
that but okay but for now we got uh next month march 22nd and 24th got those dates

(00:11:08):
right yeah march 22nd and 24th we’ll have links for people for people to register

(00:11:13):
it’s going to be a great conference this is like two dozen speakers there so it’s

(00:11:16):
going to be a lot of variety

(00:11:18):
a lot of Oracle engineers, and also from the community as well.

(00:11:23):
So it’s going to be a slightly different mix, so that’ll be good.

(00:11:26):
And Chandra, it was great talking to you.

(00:11:28):
We’ll see you soon.

(00:11:30):
I look forward to meeting you in person, and thank you so much for taking the time for this.

(00:11:34):
Thanks.

(00:11:34):
Bye-bye now.

(00:11:35):
Take care.

(00:11:35):
Bye-bye.