There are different kinds of sports when you classify on how do you train people for the sport. There are one shot sports like archery, athletics with a single focussed task on winning. Then there are individual multi shot sports and team sports.
Mental and Physical fitness is a pre-requisite for any sport for we will not talk much about it; eating, exercising and sleeping well will be part of any training. For majority of the one short sports the line is blurred between drills, practices and performances. You don’t want the players to think in a one shot game, they have to behave as trained by the coach. For years they will be doing things that will help them in just one thing, to take the best shot at their sport every time they hit the track.
The training changes from when moving from one shot to multi shot sports. Sports were individuals compete against another head to head falls in this category. Here the difference starts to arrive between drills, practice and performance. Drills for a tennis player is to work on weak areas and improvise on certain shots until it becomes muscle memory, practice is to have a fun game with another athlete to practice the shots and learn in a match setting. If we note that practice matches without drills will not help a tennis player get stronger with their shots and having drills alone without practice will not help them win matches.
Then the added layer of complexity for team sports where you need drills & practices for sure but there has to be a game plan that is a shared understanding among all the players, camaraderie within the team, post match analysis. The method of training a sportsperson for one shot sports won’t work in a multi shot team sport setting.
If we draw parallels to software development, it falls close to the team sports category. Yet a lot of executives design the environment to groom people for one shot sports. Many of the developer training lessons concentrate on development as if all three drills, practice and performance are all the same and the more someone keeps doing the more experienced they get.
Drills in software development are activities like code katas and architectural katas, Game plans are activities like planning meetings and retrospectives, Practice matches are activities like group refactoring/coding sessions and hackathons; also not to forget to educate software engineers to take care of the most neglected part which is their fitness. Many of the executives I had interacted with sadly neglect all these aspects and are worried only about the delivery part of software engineering. Engineering’s effectiveness comes only when the skills are improved using all the types of activities not just exposure to development and production problems.