Personal Laws of Design

Collaboration over Automation

Collaboration breeds an environment where systems and their users operate towards a discovered shared end goal, and enhances the innate abilities of all actors involved. Automation on the other hand, is driven solely by one actor towards their own imposed and possibly detrimental goal.

Collaboration allows and encourages mistakes, and uses them to enhance innate ability of all actors. Automation on the other hand, punishes and forbids mistakes, and creates a cost center around them both monetarily and emotionally.

Collaboration puts discovery, and searching for better strategies as its utmost priority. Automation on the other hand, discourages discovery in favor of optimizing what is already discovered.

Collaboration encourages requests between actors, and encourages questioning the validity of both the request and its processing. Automation on the other hand, encourages one actor to command the others, and does not encourage questioning the validity of the command or its processing.

Collaboration encourages a universal understanding of the larger picture. Automation on the other hand, promotes delegation and convenience at the expense of outsourcing such understanding.


Good Learning and Teaching are Experiential

Good learning is more than retaining or memorizing information. Good teaching is more than transferring information from point A to point B.

Good learning involves the acceptance of said information into the functioning processes of the learner. Good teaching involves creating such an acceptance.

Good learning involves more than seeing and consuming text, photos, or videos, but instead involves using all available senses (sight, taste, feel, sound, touch, etc.). Good teaching involves creating environments, media, and processes where such senses can be utilized to their utmost effectiveness.

Good learning involves blending information with actionable scenarios, and correlating the two. Good teaching involves the creation of such scenarios blended with the relevant information.

Good learning means understanding the relations of isolated information into larger contexts. Good teaching involves communicating the larger context when isolated information is presented.

Good learning emphasizes experiencing information. Good teaching emphasizes creating such experiences.


Evolution is a Design Decision

Evolution is essential for thriving. Needs, wants, and circumstances can change at a moment’s notice. Systems that cannot evolve when necessary will eventually collapse.

Evolution requires understanding the conceptual models that the system offers, and the contexts in which they work and don’t work in. Such an understanding gives prose to where and how evolution must occur.

Evolution requires dependence on abstractions and generalities, and not particulars that require evolution at different rates. That is to say, loose coupling between evolvable components is necessary for creating evolvable boundaries in the larger system.

Evolution requires understanding and exploring different possibilities, and is not focused on concrete steps that must be adhered to.


Context is King

Context denotes the decisions that are right and wrong. Some decisions can be right in certain contexts, and wrong in others.

Context requires less dogmatism, and more pragmatism. Even my personal design laws must be applied pragmatically, and trade offs and variances must be considered in different contexts.

Context requires understanding systems and ideas in their entirety, and which parts of the systems or ideas apply to a specific context. Individual parts of evolvable systems in different contexts should be applicable to other contexts, even if not in whole.

Context requires ideas to fit within it. General ideas should be applicable to a large amount of contexts, but not need to service the entirety of such contexts. Particular ideas should be applicable to a smaller number of contexts, but should service them more in their entirety. General ideas defines how the particular ideas are formed within a context.

Context requires understanding possibilities, and how those possibilities are affected by the context. In such a case, the context serves as a factor in the equation for the result of a possibility. The ability to quickly experiment with different possibilities in a context is essential for making correct decisions.


Objects are Best Used as Agents of Knowledge

Objects encapsulate knowledge they understand. Such knowledge can represent the static bits of information in their corpus, but also the processes for representing such information which are static bits of information themselves.

Objects take many forms of representation (code, neurons, physical tools, etc.), and provide interfaces for interacting with their knowledge. Whatever is behind those interfaces is what is encapsulated within the object. Yet, the interface itself is knowledge that an object encapsulates, and represents to the outer world.

Objects that can learn from their contexts are rich in individual meaning, encapsulate lots of knowledge, and have the ability to evolve into different contexts using their pool of knowledge. Such objects should enrich their context by providing highly capable interfaces to request information from them in order to aid evolution. If such an object were to provide an interface that commands its actions rather than request its information, then it is not being used to enrich its context, and it would not be compatible with evolution.

Objects that are static in their knowledge require their surrounding context to give meaning to them, encapsulate little, and have little ability to evolve on their own. Such objects should invite their usage by providing a small and simple interface to interact with them to aid evolution. If such an object were to expose a large and informational interface, then it cannot not be given full meaning in different contexts, and it would not be compatible with evolution.


Human Wisdom must Contain Human Power

Human wisdom increases when systems are designed to be collaborative instead of automative.

Human wisdom increases when systems can teach their users through experience, and encourage their users to learn from their teachings.

Human wisdom increases when systems can evolve to serve their user’s ever changing needs at the moment those needs become apparent.

Human wisdom increases when systems are designed to correctly fit their context, and make use of the appropriate principles at the correct volume to do so.

Human wisdom increases when systems present objects with the appropriate interfaces given their levels of knowledge.

Human wisdom must contain human power, or else we risk terrible consequences.

— 7/12/2025




Ending Commentary

Some laws I adhere to in design. Design to me does not solely mean the act of making a product look incredible, easy to use, or accessible as that is quite a narrow view point on real systems. It also does not solely refer design patterns in code or overall software architecture. Both these perspectives are essential, but are too narrow to consider in isolation when considering entire systems. The Design of Everyday Things by Don Norman gives great insight, as well as the ideas of many others (especially Bret Victor).

These laws are meant to be applied to technological systems in different domains (programming, UI Design, project management, etc.). I also belive that these laws have been largely ignored in todays systems, and that is naturally something I would like to change.

Update: Some have asked about specific examples of where I think these laws have been violated. Much of my other writing contains examples of these violations, and I intend to explore more examples in future writing. However, doing so here would make readers focus on the examples rather than the true meaning of the laws themselves. In other words, I don't want this to attract comments such as, "ThIS eXamPLE dOESn'T tALk aBoUt tHiS nEW fEatURE iN jAVa, sO tHE enTIRe aRTiCLE (which isn't about Java) iS bS."