Boxing and Coding
Originally published on Impulso blog (formerly HE:Labs), on 21 January 2014.
Fridays are ‘sparring days’ at the boxing gym where I train. We fight 2 minute rounds, with 30 seconds intervals in between. Each round we fight a different opponent. By the end of the session, everyone sparred with everyone.
This setup makes things interesting, for example: on the first round you get a person with weak defense, and you beat them without mercy for the whole 2 minutes. Second round: the person is much lighter and much faster. They run circles around you, punishing your head and body like there’s no tomorrow. Third round: your opponent keeps walking towards you like a raging bull, and you have to keep them away. Fourth round: your partner never throws a punch. They only wait for you to attack so they can counter-punch you. You have to be extra careful when attacking to avoid getting hit. Different people, different styles, different challenges.
Power, speed and aggression will only take you so far in boxing. What really makes a good fighter is the ability to adapt, learn new things and overcome challenges as they appear.
To me, this is a perfect analogy to the life of a developer. Each project is a whole new challenge. You can work on a given project for years and say “I have years of experience working with Rails”, and then a new project comes up, with different business rules and different requirements, and you have to learn a lot of new stuff that you’ve never seen before. There is no such thing as “learn everything there is about programming”. That’s impossible. As with a fighter, what makes a great developer is not only the amount of stuff he/she already knows, but the capacity to adapt, learn new things, and overcome the obstacles that emerge every day.
In boxing, coding and life, there’s always a bigger challenge.
Keep coding (and punching)!
Addendum
Originally published as a comment on Disqus on 18 September 2014
I should add something: sometimes you will score a quick knockout, à la Mike Tyson: you’ll implement a feature or correct a bug with no hassle, in a short time, a real walk in the park. But sometimes you’ll face real WARS between you and the application. Implementing the new feature will be a long and painful battle, and when it’s over you’ll be exhausted, hurt, and probably traumatized for life.
(I guess I’m having a bad day at work…)