# Tasteful software > 취향이 있는 소프트웨어. 취향이 있는 소프트웨어. ## 생각 조각 누구나 무엇이나 만들 수 있는 시대일수록 취향이 더욱 중요해지겠다. 난 취향이라는 게 그냥 타고난 심미안이나 절대음감 같은 게 아니라(왜냐하면 인간이 타고난 재능 차이는 생각보다 크지 않으므로) 꾸준히 갈고 닦으며 벼려낸 무언가일거라고 믿는다. [개리 클레인](https://wiki.g15e.com/pages/Gary%20Klein.txt) 등이 말하는 전문적 직관skilled intuition이라는 개념이랑도 어느 정도 겹치는 것 같다. 갈고 닦는다는 건 산에서 10년 도를 닦는다거나 하는 게 아니라, 기존 연구들을 부지런히 읽고 본인의 마음 속에서 하나의 정합적인 틀로 담아내려고 노력하는 방식에 가까울거라고 믿는다. 물론 완벽하게 정합적인 지식의 총체란 불가능하니 이 시도는 성공할 수 없고 언제나 진행형이다([동사로서의 완벽](https://wiki.g15e.com/pages/Perfect%20as%20a%20verb.txt)). 게다가 내가 만들어가는 틀이 변하는 세상 안에서도 계속 유용하려면 꾸준히 뭘 비워내야만 한다(unlearning). 이런 취향을 가져야 수많은 가능성 중에서 무엇을 선택할지 잘 결정할 수 있다. 이 말은, 수많은 가능성 중 대부분을 버린다는 뜻이기도 하다. ## 내 취향 내가 세운 [디자인의 정의](https://wiki.g15e.com/pages/Definition%20of%20design.txt)를 만족할 것: > 모든 시스템에는 더 이상 제거할 수 없는 [내재된 복잡성이 존재](https://wiki.g15e.com/pages/Law%20of%20conservation%20of%20complexity.txt)한다. 이를 해당 시스템에 관여하는 여러 엔티티(네트워크를 이룬 컴퓨터들과 네트워크를 이룬 인간들)의 제한된 요소(메모리, CPU, 기억, 인지, 어텐션, 몸, 환경, 각 엔티티 간 정보전달채널의 지연, 대역폭, 정확성 등)에 가장 효율적으로 분배하고, 각 요소들을 [서로 이롭게 연결](https://wiki.g15e.com/pages/Design%20is%20beneficially%20relating%20elements.txt)하는 일이 디자인이다. 이 때 디자이너는 각 요소의 물리적 속성보다는 요소가 전체 시스템 내에서 [실제로 수행하는 기능 또는 역할이 무엇인지를 기준으로 생각](https://wiki.g15e.com/pages/Distributed%20functional%20decomposition.txt)해야 한다. [#ref](https://wiki.g15e.com/pages/Definition%20of%20design.txt#definition) 적을수록 좋다: - 할 수 있는 일의 양(capabilities)이 동일하다면 기능(features)이 적을수록 좋다. (참고: [Simplicity is not the answer](https://wiki.g15e.com/pages/Simplicity%20is%20not%20the%20answer.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](https://wiki.g15e.com/pages/Original%20Wiki.txt) - [FIT](https://wiki.g15e.com/pages/Framework%20for%20integrated%20test.txt)