Coaches train athletes/sportspersons to improve their performance.

Companies train developers to improve their performance.

Are we missing out something when we train developers?

How do coaches improve the performance of athletes and sportspersons?

  • Coaches train them on skills specific to their sport / events.
    • Footballers get trained on dribbling and shooting, batsmen on their stance and bowlers their grip. Sprinters get trained on starting from the blocks.
  • Training on playing well as a team.
    • Footballers get trained on passing the ball, cricketers throwing to the wicketkeeper, sprinters passing the baton.
  • Practice exercise to improve strength, stamina and agility.
    • These attributes are essential irrespective of the specific game. They also “carryover”. If you have good strength and stamina and change your sport, it will be useful in the new sports

How do companies train developers?

  • Training on specific skills and technology.
    • C++, JAVA, AWS, node.js
  • Training on working well as a team.
    • Scrum, Agile and other processes
  • The missing piece ???
    • What training will help developers regardless of language and technology?  

The missing piece is training on certain fundamentals that allow the developers to deliver well engineered and well-designed code at speed.

These are picked up “on the job” if the programmers are lucky to get a good team lead or mentor.

A few examples

  1. How to read code.
  2. How to make code modular and less interdependent.
  3. Writing Readable code
  4. Systematic Design
  5. Debugging

Do you agree? What else would you add to the list?