Lessons software engineers can learn from Kohli.

Naveen Muguda
4 min readNov 4, 2018

Software Development is a collaborative, creative and demanding human endeavor and it shares traits with other such endeavors. In this post, I compare it with batsmanship of cricket.

Cricket is a beautiful game with complex rules, played over longer durations compared to other games. The qualities required to excel in cricket are similar to those required to excel in developing software systems.

Multiple Considerations.

There are ten modes via which a batsman can get dismissed. Software systems can fail or underperform for many reasons too. Some of these dimensions are correctness, reliability, performance, scalability, use-ability, maintainability, and extensibility.

A batsman who can avoid dismissals of certain kinds might still be susceptible to others. This necessitates batsmen to develop a technique that increases the probability of their survival.

Similarly, for a software system to survive the test of the market expectations, competitors and time, it is paramount to apply right techniques of development and maintenance. Good software systems have to be built by good engineers.

Approach

One of the best proponents of batting is Virat Kohli.

He holds many important records in the game and is expected to get more. I believe that his methods and techniques would be relevant to software developers.

Risk Averse-ness vs Flamboyance

At the risk of over-simplification let me compare some statistics of Virat Kohli with other cricketers.

Shahid Afridi is known for flamboyance and has scored some big hundreds. His average innings lasts approximately 19 deliveries and scores a boundary once every 6.3 deliveries. While Kohli’s an average innings lasts 53 deliveries and scores a boundary once every 10.2 deliveries. Most teams would pick Kohli over Afridi because of his higher average. Consistency trumps occasional brilliance.

One can compare this with software development: software which is difficult to understand, has limited testing, is less reliable will typically not outlive software which exhibits contrasting characteristics.

Rigour

Virat doesn’t score a boundary for about 90% of the deliveries he faces, he still manages a strike rate of 93. This is possible because of his ability to score 1s and 2s, He does this with a high frequency.

He is known for keeping a high level of fitness, which needs sustained and rigorous training as well as discipline on dietary front.

“Everything around Virat and his lifestyle is amazingly boring. But in his case, boring is beautiful and boring is essential. He knows greatness is carved out of monotony.” says an award-winning cricket journalist.

Similarly to develop good software systems one needs to do the basics well, repeatedly and continuously. Rigour and discipline have to be exercised over prolonged durations of software development.

Tools

while a rich cricketer like Virat might have access to the best bats, He would still outperform lesser cricketers even if he had bats of lesser quality.

This would be true in the world of software development, one can use the best datastores, message queues and methodologies, if the software developers can’t use them well, the system might not be of adequate quality.

Evolution

Rahul Dravid, a great thinker of the game said this about Virat “But over time, his evolution has been remarkable. He has just got better and better, and there’s a great lesson in it there for all youngsters.”

Software development involves an ocean of knowledge, technologies, concepts, perspectives, domains. Business landscapes can be vast and dynamic. Software engineers need to evolve too, knowledge seeking and refinement should be a constant endeavor.

(Deliberate) Practice

“During practice sessions, he would be the first one to be on the ground and the last one to leave.

On the surface, it may appear like a routine, but in his mind, he enters every session with specific targets. Often morning net practice is followed by well-deserved rest and gym session in the evening.”

Software Engineers can have a similar approach to theory. Different aspects of theory (like concurrency, immutability, distributed systems) should be understood in isolation and then integrated into their day-to-day routine.

Teamwork, setting and demanding high standards

A batsman in cricket not only has to run for himself but has to do for his partners. Virat runs as hard for his partner as he does for his own. If his partner were to be slow it would slow down Virat’s scoring as well.

Same is true for software development. We need to exhibit high collective standards, which means demanding excellence from other team members. We need to collaborate on code and design reviews. We might have to help other developers by sharing knowledge, pairing, mobbing etc.

--

--