Kanarupan's Legacy Layers

Entertaining the curious and capable minds with/via Software stuff

Better design decisions from principles


Decision Frameworks (there are many – a bit too many) could

  • speed up the process and help us encounter many fast & fluid situations,
  • standardize and be popularized to mobilize small and large group of individuals

They always have the dogmatic threat looming over and hidden underneath.

Hence, it’s ideal to develop a sense of the principles. Yes, the deepest ones are just feelings. We then strive to churn them out with some well-defined and or familiar notions.

The benefits of thinking from “first” principles and core philosophies.
– evaluate Decision Making tooling and frameworks (this understanding helps to choose the right fit and customize accordingly)
– not to become a pray for shallow gimmicks, wordplay and anything dogmatic

Caution
– only use them as current guides (not to be dogmatic in any case, trying to force/fit, we need something hold onto, temporarily)
– always be proactive to critically evaluate and improve
– the only possible `flawless’ idea candidate is “there are no flawless ideas’,

Developing the Design-Decision Sense

Understanding the below deeply will help to build the sense. The sense will be tacit but will lend itself overtime to be externalized/modeled more and more accurately. The items in the below list also will be improved eventually with a deeper set of ideas/meta-principles.

Most part of this list is a cliche by this time, but I just wanted to jot down all important ones and keep it evolving.
There’s an exhaustive list already in Wikipedia. I will be perusing that and moving interesting and/or useful ones here as well. Suggestions in the comments are welcome.

As of now the below subset is what I have used consciously or at least witnessed the wide usage in my own experience – simply, the ones I could endorse.

  1. SOLID
  2. 12-Factor App
  3. GitOps
  4. Design patterns (GoF)
  5. Unix philosophy
  6. Agility
  7. KISS
  8. GRASP
  9. Security
  10. Cloud-Native
  11. UI/UX (laws guides)
  12. …..

Meta-Principles

when faced with a decision making scenario, use the below guiding steps, without violating the previous step.
step 1: define the need/requirement (I actively discourage the negative term ‘problem’) with utmost care – no straw mans or force-fittings.
step 2: if the options are too limited/constrained then look for different representations (lossless as possible, climb the abstraction ladder, switch perspectives, vantage points)
step 3: get to the point where there are enough alternatives (at least 1, this could just happen straight away or after the effort at step 2)
step 4: work the way down with documented trade-offs and other decisions guided by first principles and core philosophies as much as possible.

It doesn’t work all the time, at least it serves a core set of guides to start with. And it will be interesting to see how each task lends itself (or NOT) to the above general approach.


Leave a Reply