# Tasteful software

> I think that the more we live in an age where anyone can make anything, the more important taste becomes. I believe that if each person makes software infused with their own taste, there will be more software in the world that is better than what we have now.

I think that the more we live in an age where anyone can make anything, the more important taste becomes. I believe that if each person makes software infused with their own taste, there will be more software in the world that is better than what we have now.

## What taste is

Since "taste" is such a vague word, it would be good to narrow down its meaning a bit before starting.

- **Not an innate talent**: I believe taste is not just something like an inborn aesthetic sense or absolute pitch (because differences in innate human talent are not actually that large), but rather something honed and sharpened through steady refinement. It also seems to overlap to some degree with the concept of skilled intuition discussed by people such as <Gary Klein>.
- **Not something attained alone on a deserted island**: I believe that honing one's taste is less like cultivating oneself in the mountains for 10 years, and closer to diligently reading existing research, going through trial and error, and trying to internalize it all into one coherent framework within one's own mind.
- **Not something finished**: Of course, a perfectly coherent totality of knowledge is impossible, so this attempt cannot succeed and will always remain in progress ([Perfection as a verb](https://wiki.g15e.com/pages/Perfect%20as%20a%20verb.txt)). Moreover, if this framework is to remain useful even in a changing world, one must keep emptying things out of it continuously (unlearning).

If it does not require innate talent, does not require a profound experience of enlightenment, and does not need to be complete, then I can say that I have taste too. Of course, I do not know whether it is good taste or not.

I believe that having this kind of taste helps one make good decisions about what to choose among countless possibilities. This also means throwing most of those countless possibilities away. I believe that if each person makes software infused with their own taste, there will be more software in the world that is better than what we have now.

## My taste

I want it to satisfy the [definition of design](https://wiki.g15e.com/en/pages/Definition%20of%20design.txt) that I established:

> 모든 시스템에는 더 이상 제거할 수 없는 [내재된 복잡성이 존재](https://wiki.g15e.com/pages/Law%20of%20conservation%20of%20complexity.txt)한다. 이 복잡성을 시스템에 관여하는 여러 요소(네트워크를 이룬 컴퓨터들과 네트워크를 이룬 인간들)의 제한된 부품들(메모리, CPU, 기억, 인지, 주의, 몸, 환경, 각 엔티티 간 정보전달채널의 지연, 대역폭, 정확성 등)에 가장 효율적으로 분배하고, 각 요소들을 [서로 이롭게 연결](https://wiki.g15e.com/pages/Beneficially%20relating%20elements.txt)하는 일이 디자인이다. 이 때 디자이너는 각 요소의 물리적 속성보다는 요소가 전체 시스템 내에서 [실제로 수행하는 기능 또는 역할이 무엇인지를 기준으로 생각](https://wiki.g15e.com/pages/Distributed%20functional%20decomposition.txt)해야 한다. [#ref](https://wiki.g15e.com/en/pages/Definition%20of%20design.txt#definition)

The less, the better:

- If the amount of work it can do—the capabilities—is the same, then fewer features are better. (See: [Possibility rather than features](https://wiki.g15e.com/en/pages/Capabilities%20over%20features.txt))
- If the features are the same, then less code is better.
- If the amount of code is the same, then a higher proportion of open source is better.
- If the amount of code is the same, then declarative code is better than procedural code.

A strong feeling or deep curiosity:

- A strong feeling or deep curiosity that makes me want to greatly change the existing way. For example: "[This is not a tree](https://wiki.g15e.com/pages/It%20is%20not%20a%20tree.txt)."
- A strong feeling or deep curiosity that something that ought to exist in the world still does not exist (or that something that ought not to exist in the world still does).

[Exceptionally excellent usability](https://wiki.g15e.com/en/pages/Exceptional%20usability.txt):

- Think deeply about how to achieve both ease of learning and ease of use. Strive not to compromise.
- If forced into a situation where compromise is unavoidable, choose ease of use.
- Do not do [distorted user-centered design](https://wiki.g15e.com/en/pages/Distorted%20user-centered%20design.txt).

Design that fits the grain:

- Software does not exist in a vacuum. Depending on the context in which software is placed, various natural "grains" emerge in different directions: business grain, technical grain, design grain, and so on. For example, software placed in the context of the web should not go against the grain of <HTTP> and <HTML>. (See: [Semantic HTML is mostly a silver bullet](https://wiki.g15e.com/pages/Semantic%20HTML%20is%20a%20silver%20bullet,%20mostly.txt))
- When you align well with the grain, everything becomes easy and light; when you go against the grain, everything becomes difficult and heavy.

Well-designed constraints:

- You need to know specifically what not to do in order to freely explore the remaining space of possibilities. Without well-designed constraints, exploration is constrained instead.
- Only when structural mechanics becomes sufficiently advanced and constraints become extremely sophisticated can a variety of modern buildings finally come into being.

## Software / talks / writing that influenced my taste

(In alphabetical order, excluding articles)

- [The extended mind](https://wiki.g15e.com/pages/The%20extended%20mind%20(book.txt))
- [FIT](https://wiki.g15e.com/en/pages/Framework%20for%20integrated%20test.txt)
- [The Humane Environment](https://wiki.g15e.com/pages/The%20Humane%20Environment.txt)
- [Inventing on principle](https://wiki.g15e.com/pages/Inventing%20on%20principle.txt)
- <Original Wiki>
- [Representational State Transfer](https://wiki.g15e.com/pages/Representational%20State%20Transfer.txt)

## Taste and copycats

If your taste is lacking, you cannot make even a good copycat. That is because, when trying to emulate a good product, you lack the ability to discern which elements of the good product should be copied. Or, thinking you are making an "improvement," you end up making it worse.

For example, in the case of Windows copying the Mac, the Start menu + taskbar + system tray spent nearly 10 years wasting the screen edge without even taking advantage of [Fitts's law](https://wiki.g15e.com/pages/Fitts%20law.txt). (If I remember correctly, this was finally fixed when <Windows Vista> came out.)

## Concepts worth considering

These are concepts I have not yet organized well, but want to chew over further.

- [UI density](https://wiki.g15e.com/pages/UI%20density.txt)