This made me think of the wisdom of learning between Confucius and Laozi in ancient Chinese philosophy.
Confucius treats learning as cultivation: you do not really know something just because you were instructed in it. You know it by practicing, reflecting, making mistakes, and gradually developing judgment.
Laozi gives the complementary warning: “In pursuing learning, every day something is added. In pursuing the Tao, every day something is dropped.” Mastery is not only accumulation. It is also subtraction: removing unnecessary abstraction, ceremony, cleverness, and control.
Software architecture seems to need both. You learn it in a Confucian sense, by doing real work and living with the consequences. You improve it in a Taoist sense, by noticing when the system has accumulated structure that no longer serves the people, incentives, and constraints that actually shape it.
That is why the article’s point about incentives resonates. Architecture is not just what you design on paper. It is what survives contact with the organization that produces and maintains it.
> Laozi gives the complementary warning: “In pursuing learning, every day something is added. In pursuing the Tao, every day something is dropped.” Mastery is not only accumulation. It is also subtraction: removing unnecessary abstraction, ceremony, cleverness, and control.
Well, your (or your LLM's) interpretation is a bit less nuanced than the original. The verse from DDJ you mention is more about letting go and living a simple life, a bit the opposite of programming where we actually need an adequate level of complexity to handle the complexity of the world.
As a side note, even if you are not a native English speaker, trying to formulate thoughts without the support of LLMs is very welcome here.
"code on, code off"