December 28th, 2013.
I had a conversation my parents regarding my preparation for my departure to Japan in January 2014.
|Dad||:||Have you prepared all the electronics you need there?|
|Me||:||Yeah. Charger for notebook, and for handphones. All adapters are ready.|
|Dad||:||You wouldn’t bring the electric shaver?|
|Me||:||No, I guess. I’ll just bring the razor.|
|Mom||:||He’s still not accustomed to use it (read: electric shaver).|
|Me||:||Well, shaving with the electric shaver leaves several spiky remains. If I use the razor, it’ll be perfectly clean to the skin.|
|Dad||:||But, chasing perfection like that will only hurt you during winter. Since the air is so dry, it’ll be hurt to shave like that.|
Okay, that’s the prologue. My father’s line (read: the emphasized one in bold) still lingers in my head, at least ’till this post was created. I think about it throughly, why it does really hurt when I chase perfection. I am perfectionist, as my father and my older sister are. But the more I think, the more it makes sense.
I am a perfectionist in gaming (or the so-called completionist). When there’s achievement-related activity, I did it ’till I achieve it. For me, completing everything gives so much more satisfaction. However, when I can’t finish the side activity perfectly, sometimes it makes me upset, maybe up to the point I won’t touch the game for several months. Yeah, sometimes, chasing perfection is pretty annoying.
Well, sometimes, chasing perfection is really painful, and it does come with a great cost.
Perfection: Pain-Gain Trade-offs
In computer science, we are taught about brute-force algorithm will always yield the optimal solution. Optimal here means perfect solution, e.g. shortest distance, shortest time, cheapest cost, maximum returns, etc. It is perfect, but at a great cost: time/space. Brute force “stupidly” combine every possible combination in order to return the optimal solution. Iterating every combination takes time, up to the point “exponentially”. Storing every combination takes a lot of main memory. Here’s the catch: achieving perfection requires great, great sacrifice.
That’s why algorithm like greedy-best-first search, hill-climbing, simulated annealing, genetic algorithm, A*, etc. came to birth. They give local optimal solution, not the global optimal solution, but in relatively reasonable time/space. The trade-offs between performance and result is good enough. In this world, it is much more acceptable to get 100k in 1 hours rather than 150k in 3 days, right? That’s a simple illustration of heuristic-based algorithm vs brute-force algorithm.
And that’s why machine learning methods adopt this principle. Rather than looking for accurate rules on how something happens, it just look for general rules which accuracy is reasonably acceptable. Mistakes (indicated by mismatch) are things which can be overlooked, as long as the yield is satisfying. Let the imperfection be there, as long as it keeps true to the goal.
Chasing perfection here also applies to Software/Game Development. What I heard from my colleagues, software development in Japan is not as fast as the western does. When I ask them why, they told me because Japanese hold the product until it is truly perfected, while western already market the product before it is “truly polished”. A different in time-to-market (TTM) here is so significant. When one has an idea, TTM here will mark who’s the leader in the inovation. Game dev too, happens this way. Oh yeah, but this is not applied to everything in Japan, because from what I know, the hardware development in Japan is highly regarded with their polished, power-efficient, and long-lasting product (just take look at their cars and electronics).
Well, chasing perfection is okay, since it makes us true to our goals. But, being obsessive with perfection is wrong. Being imperfect is not something to be despised, rather as a reminder to fix it. Mistakes may indicate imperfection, but that doesn’t make us failure, right?
“We do not need to chase perfection. What we need, is searching for reasonable solution.”
— a random rambling at the end of year.