Code and Badminton
Dec 2, 2017
Random thoughts about badminton and code, hopefully can form a good post.
This post I want to share how playing badminton helps me in coding.
To be able to write a program, a simple program, we have to learn the programing language. We need to learn programming language syntax, like how to write a function, how to write a class. And also the tools should we use to write code, to compile and execute the program.
The samething is applied for badminton, we need to learn its rules. To play badminton, we need to follow its rules. We can’t score by hitting the shuttle outside of the court. We can’t score by touching the net. We also need to know the type of shuttle cock, the type of racket we can use to play badminton.
In order to play a badminton game, knowing the rules is not enough. We need to learn how to perform different shots, we need to learn how to move, how to defense from an attack, how to collaborate with your partner. Of course the first thing to learn is how to serve.
After knowing these skills and practice for a while, the next step is learn how to play a good game. That’s where strategy comes in. By using the word “good game”, I don’t mean a “win game”. These words are different, but sometimes we just assumed they are the same.
Knowing programming language isn’t enough. To be able to write a working program, we need to have something more than just a programming language. We need to learn how to transform human logic to programming language, how use your editor, how to write test, how to refactor the code, how to read other code.
To write a good code, it requires strategy as well as playing badminton. The basic skills we need to write good code is design, refactor, testing. It requires to perform these skills together in order to write a production application.
If we agree in “good game” isn’t about win and lose, we may find out that to say a good game, it’s just about ourselves’s feelings whether we performed well. In software development, we see ourselves perform well based our feeling on the output of our work - the code we wrote. We feel good when the code follows standards, they are readable, extensible. To keep this standard in our code, it requires a strong discipline, and more or less, think about other team members may inherit our code in the future.
I hope you find it makes sense to you until this point. For the next part I want to discuss about concepts in badminton, and see how it related to code. Warning, I will dump a lot of personal opinions.
We need to hit the shuttle from a distance
The most basic concept in badminton is hitting the shuttle from a distance. Imagine you want to hit the wall using your fist, the more power you hit, the longer distance from your fist to the wall. Is it correct?
Same concept with hitting the shuttle, we need to start from a distance. We need to know where the shuttle should be hit and prepare before it comes.
By practicing few times the same shot, we remember the shuttle path. We can visualize the shuttle path in our head, we subconciously know where to hit.
The shuttle flies very fast, player needs to move fast and early toward the shuttle. It may be not true. Move too early or too late are both no good.
The time we use to determine whether we move early or late is the time our opponent’s racket touch the shuttle.
To have a good timing, we have to master the point number 1 to prepare to move toward the shuttle.
There are good players who can perform deception shots. They make a fake movement(s) to pretend to hit the shuttle in this direction, then suddenly change before the moment the racket hit the shutle. This is an expert skill. To deal with it, we can’t move before the racket touch the shuttle, we have to be patient and calm in this moment.
Before each shot, we have to stop and look, quick plan for different possibility. A fast movement requires a long pause.
Different grip for different shots
Some people think there is only one way to hold the racket, or holding it in which way doesn’t matter. Different kind of shot requires different grips.
Some grips are quite similar, however a tiny different makes a huge different. I am going to give an example. We can’t use forehand grip to hit a backhand shot. In backend shot, the wrist rotate and send the power to the racket through the thumb. In forehand shot, the power is generated from swing, and the more gaps between racket and palm, the more powerful shot you can perform.
If we just focus on the game and shuttle, it’s quite difficult to see the different grip players are using. They can change the grip in a very short moment. They are trained for doing that effortless. To observe this, we can’t just look at the game merely, we need to look deeper. If we pay enough attention, and look deeper to the basic of a specific shot, we can see how player prepare for the next shot, why they hit this way, why they move back to the center quicker than other shots, how can they generate a big power like that…
The purpose of different kind of shots
Perform different kind of shots makes a better game. Imagine if I can only perform 1 kind, your opponent know where I am gonna hit and prepare even before my racket touch the shuttle. They can plan far ahead, and I am gonna lose.
For the same position of the shuttle, we can return in different ways. An forehand shot can be returned by a forehand shot, a drive, a drop, plus cross court forehand, cross court drive, cross court drop. An net shot can be returned by a tap, flick, net shot, plus cross court hit.
Some shots are more difficult than others. The risk to fail this shot is higher. Despite a lot of practice, they are still riskier than other shots. However,if we successfully perform this shot, the more chance we win this point.
Watching different games, we may notice that some team (or player) perform a very “safe” hits, some team are aggressive in attacking. Their strategies are different, but in common, they have to choose a set of shots they match with their style and strategy. I can’t answer which strategy is better, it is likely depend on how people execute it than the strategy itself.
Learn from the top players
There are a lot of good players. In my time, there are Lindan, Lee Chong Wei, Lee Yong Dae, Tien Minh, Fu HaiFeng, Kevin Sanjaya, Taufik… And their games are recorded and public in Youtube, Facebook. There are also some commentator clips that explain how they play. All are available for free. If we want to learn from them, just start typing on your browser their name, and watch.
Sometimes I ask myself, how to return this shot. I may not find the answer immediately, but I now know where to find the answer.
Practice make perfect. It trains our subconsciousness to learn and react to an action.
When we are in a training, we can pay attention to our posture, our wrist, our legs, how we are gonna move. When we are playing, we don’t have time for these, we focus more about the shuttle & game strategy, these thing should be done automatically without conscious. If we need to pay attention of this concrete things, we don’t have enough time to read the game strategy and our opponents.
Smashing is the most powerful shot in badminton, and it’s the most favorite shot for all players.
When I started playing badminton, I see smashing is so cool. I want to learn it right away. Imagine a player jumps high in the air, swing the racket with full power, hit the shuttle. The sound of shuttle and the string likes the gun shot, and the shuttle is like an arrow flying to the opponent court.
But, there is drawback. Smashing requires more energy. It does require more time to recover. If your smash isn’t dangerous enough, opponent can return it and you may need to pay extra more energy to recover and catch the next shot.
There are some more thing to talk about in badminton, which I can spend the whole day to talk more. However, I know that I already talked too much about badminton. What is the point? Is there any relevance to coding?
Developer isn’t the only career that requires to practice. As a developer, we learned a lot of stuffs from school and from work. Some developers just stop at knowing stuffs, and they don’t practice skill that they don’t use for the current job. However, some other developers constantly practices, and they even update themselves with the newest technologies. The more skills we have, our decisions, our options are more. The game - career path is more interesting. By the way, game isn’t about things that not serious, but game is professional, it is the chance to show the stategies + skills through practicing. It’s a chance to prove people’s progress in study, practice.
Anything else? Ofcourse, but I would love to see you find out yourself.
Lastly, here is a bonus GIF