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.
