In the movie The Karate kid. Daniel, played by Ralph Macchio, wants to learn Karate to be able to defend himself from his highschool’s bullies.
Daniel, obviously admired martial arts but was clueless of the arts.
Trust the Process
I am going to borrow a principle here from John Sonmez. John talks about “trusting the process”. The idea is that if you do enough of something you will get good at it. If you do something over and over again eventually you get better. I have found that if you write a lot of code, you get better. The idea is not to focus on the results. You just have to trust that if you do enough of it you will get better. In his talk, John says that most people give up early in the process. Hence, if you trust the process you will reach your goal and thus, the results you are aiming for.
Lately, I’ve tutored many different students. All these students have something in common. They struggle to understand ideas that feel so second nature to me. That’s because I’ve written a lot of code. So, the ease of things like problem-solving, breaking down problems into smaller pieces, asking google the right questions has come after many years of practice.
Daniel wanted to become a Karate expert overnight. Mr. Myagi had Daniel do repetitious tasks such as waxing the cars, painting his fence and sanding his patio. These repetitious tasks made gave Daniel almost an instinctive reaction to Karate moves. While Daniel was focused on becoming a Karate expert. Mr. Myagi knew better, that being, that it would come through repetition.
Sometimes individuals become interested in completing a sophisticated application or website. They don’t realize that to be able to do that they will require lots and lots of practice and skill. You can only gain that skill by doing a lot of coding. So it’s ok to write many smaller applications, write tons of bad code.
And eventually, you will get better and write beautiful code resulting sophisticated applications.
The Advice of a mentor is Invaluable
For most people, it’s natural to go on their own. Many are reluctant to get advice and guidance. A mentor will be able to provide focus.
As a newbie in anything, it’s hard to determine on your own, what’s important and what’s not. It’s difficult to create your own roadmap. You don’t know what you don’t know.
This can lead you to waste a lot of time in the process. A mentor can guide you and help you avoid traps. A good mentor can also help you create a solid road map.
Daniel was fortunate to find Mr. Myagi. Mr. Myagi didn’t only teach Daniel how to fight but the morals and principles behind self-defense. We are not all as lucky as Daniel, so we must be proactive to seek out a mentor.
If you are starting out and feel overwhelmed, seek out a mentor. Software development is a vast ocean. There are a million technologies, frameworks, professions in the field. It can be overwhelming trying to navigate this vast ocean on your own.
Seek out someone who can help you navigate the waters faster and more efficiently. If you don’t have a good mentor at work, seek one outside of work.
Even if you have to pay someone to mentor you, it would be well worth the expense. Some sites like Wyzant.com have tutors available. The goal of most tutors is to help with specific programming skills in specific languages. However, many of these tutors have vast experience in the field. I’m sure they wouldn’t mind providing coaching as part of their tutoring.
You don’t need to be the best to win
In the end, Daniel wins the Karate tournament. Daniel was not, by any means, the best martial artist in the tournament. Some fighters had skills that came from years and years of practice. Many were way stronger than Daniel. Many were also faster and more agile.
What Daniel had, were a few moves that were really wired together tightly. Delivering successful software products is like that. You may not have the best coding skills. You may not be the most proficient algorithm creator.
What you should have are the skills necessary to deliver a quality product that the customer needs. You should be a good team player that collaborates well with the functional team. You should also know your limitations and know when to seek help.
As you go on your learning journey learn a few things at a time. Learn them really well and add more as you go.
Patience is Key
Daniel was very patient as he did just about everything in Mr. Myagis to-do list until he blew up one day.
Don’t be like Daniel. To become a great programmer, you will require years and years of practice. Be patient. You will become better. But, you have to be focused. You have to specifically target those areas that will make you better.
Things like writing clean code. practicing TDD, gaining a better understanding of how things work behind the scenes, will make you a more efficient programmer.
Time in and of itself does not get you experience. You must have a good road map. You must use your time as efficiently as possible.
There are no shortcuts but there are certainly a lot of wrong long paths.
If you need a mentor drop me a line at @fernandozamoraj on twitter and I’d be glad to help you or provide you with resources to help you.