Coders of Stillness
The introduction to Warriors of Stillness is about a person's entry into a martial arts school. Unfortunately for him, the master of the school had just embraced a new style that did not emphasize the skillful movements that he had come to learn. Instead, the new style involved a great deal of standing still. So the person prepared to leave. But as he was doing so, the master requested that he first try standing still for 100 hours. He did this and was convinced to stay.
In the martial arts, some of the principles are: (1) anticipating and preparing for your opponent's actions, (2) developing power from your core rather than relying on your extremities, and (3) using your opponent's strength to your own advantage. The combination of these things can result in a deftness in which movement is almost inapparent.
The limiting case of these principles can be a martial arts style in which no movement is apparent whatsoever. Perhaps, as the opponent approaches, he realizes that fighting is a bad idea after all, and decides to suggest tea instead.
In software, there are various things that encourage the equivalent of lots of skillful movement. There are code metrics that encourage developers to create many classes or many lines of code. At a slightly higher level, a project manager might track the number of features implemented, or a department head might track the number of projects that a team is simultaneously contributing to.
But these metrics also encourage the software equivalent of flailing, and efficient software development requires a different vision. That vision involves: (1) solving problems so as to anticipate and avoid subsequent ones, (2) choosing languages, libraries, and tools that minimize the amount of software that needs to be written, and (3) framing problems in ways that reveal when the best way of solving them does not actually require software development.
The limiting case of this vision is a software development style in which no code is written at all. Perhaps, as the product manager is on the way to the software developer's office, he realizes that the product is already capable of what he wanted, and decides to suggest coffee instead.
In the martial arts, some of the principles are: (1) anticipating and preparing for your opponent's actions, (2) developing power from your core rather than relying on your extremities, and (3) using your opponent's strength to your own advantage. The combination of these things can result in a deftness in which movement is almost inapparent.
The limiting case of these principles can be a martial arts style in which no movement is apparent whatsoever. Perhaps, as the opponent approaches, he realizes that fighting is a bad idea after all, and decides to suggest tea instead.
In software, there are various things that encourage the equivalent of lots of skillful movement. There are code metrics that encourage developers to create many classes or many lines of code. At a slightly higher level, a project manager might track the number of features implemented, or a department head might track the number of projects that a team is simultaneously contributing to.
But these metrics also encourage the software equivalent of flailing, and efficient software development requires a different vision. That vision involves: (1) solving problems so as to anticipate and avoid subsequent ones, (2) choosing languages, libraries, and tools that minimize the amount of software that needs to be written, and (3) framing problems in ways that reveal when the best way of solving them does not actually require software development.
The limiting case of this vision is a software development style in which no code is written at all. Perhaps, as the product manager is on the way to the software developer's office, he realizes that the product is already capable of what he wanted, and decides to suggest coffee instead.