Monday, 28 September 2015

Most of us understand this Chinese phrase as a form of martial arts. It may be interesting know that the literal meaning of this phrase has no reference to martial arts. In fact, the Chinese phrase with a closer meaning to martial arts would be Wushu, which is also a popular sport.What is the meaning of Kung Fu?Kung Fu (Gong Fu in pinyin) may be roughly translated as an achievement requiring careful practice and perseverance. Thinking on, this is the essence of Chinese martial arts too. You may have seen at least one Kung Fu movie where the hero learns a new fist or fighting style with lots of practice and perseverance.Have you heard about the Shaolin temple in China?

It is considered to be the definitive school of Chinese martial arts. A version of history credits Bodhidharman, a prince from the Pallava kingdom of South India who became a buddhist monk, to have taught the martial arts to the monks of this temple.Let me share a story about a king who went to the Shaolin temple and asked the master if he can be taught black belt level Wushu in a week's time. The master asked the king to stay at the temple overnight. The following morning, the king was greeted by a fascinating sight. There was a big lake near the temple and the king saw the master digging furiously at its banks with a small stick."What are you doing, master?", the king asked.The master replied, "I am trying to build a canal from the lake to our temple to solve our water availability problem"."Are you foolish? How do you plan to achieve this task, which requires good planning and the right tools, with only a small stick?" asked the king."No more foolish than you, my king", said the master, "who wanted to learn the martial arts which would require years of careful practice, in a week's time".Today, the qualitative aspects of a product like the user experience, finesse, intuitiveness, build quality and simplicity are considered to be more important than its functionality. Building quality in has to be carefully planned and provisioned, and cannot be achieved through quirks. A company, famed for its products with exceptional user experience, is found to spend at least half of the development time in getting its products tested through multiple levels of beta users. In the quarterly release cycle that they follow, they plan feature development only for the first 6 weeks and plan the remaining half of the development time for beta testing with controlled user groups. Fighting the conventional urge of feature obsession (how many features can we pack into this quarterly release?), they showed better sense in planning and providing for quality by limiting the scope and explicitly allocating time for hardening.James Grenning has talked about the physics of debugging where he says that the time it takes to fix a defect is proportional to the time it takes to find it. Every software increment requires a minimum time for hardening. We can choose to plan and provision for that explicitly or rush on and pay it off later. It is better to prefer the planned approach, because we may end up spending more time on debugging if we choose to harden later. Thus, a one-plus-one coding pattern, where we spend the first day on writing the code and the following day on reflecting (testing, paired reviews and refactoring) is more efficient than cramming up as many features as we can while coding and following it up with a crash course in testing.Software development is craftsmanship; part engineering and part art. In my opinion, it is the artistic part that renders the quality and elevates the user experience. And art cannot be rushed; it gets better when we persevere and are careful, somewhat like Kung Fu.In our quest for product excellence, let us ask yourselves: did we Kung Fu our quality?