이전 글들에서 간단한 것은 무종속성, 짧은 길이, 단일 흐름 등의 특징을 갖고
사람은 상대성, 단일코어, 감각적, 뚜렷한 목표의 필요, 속도감, 구체성 등의 특징을 갖는 직관을 갖는다고
떠올려보았다.
그럼 최종적인 목표인 간단하게 바꾸기는 어떻게 실현할 수 있을까?
복잡한 것을 간단한 것들의 조합으로 바꾸는 것이다.
이런 느낌일 것이다.
5개로만 나누어도 10개의 관계가 생겨 총 15개의 개념이 생겨버린다.
만약 n개로 나눈다면 O(n^2) 스케일로 개념이 생기는데
이건 간단하게 만들고자 하는 이치에 맞지 않다.
일단 연결을 줄여보도록 하자.
연결을 줄인다는 건 종속성을 줄인다는 것과 통하는 말이므로
간단한 것으로 만드는 과정의 일환으로 볼 수 있다.
종속성을 (n-1)개로 줄이는 방법은 쉽게 구상해낼 수 있다.
그런데 이 경우에도 문제가 있다.
많아지면 많아질수록 혼란하기도 하고
논리 선상에서 같은 지위에 놓여있다보니
상대적인 식별이 어렵다는 것이다.
또한 흐름조차 잡아낼 수가 없다.
따라서 이렇게 흐름을 나타내는 것을 추가적으로 둘 필요가 있다.
이렇게 하면 한방향 흐름을 나타낼 수 있고 이 흐름의 목표를 이름으로서 둔다면
목표가 무엇인지 몇번이고 상기시킬 수 있다.
또한 이렇게 분명하게 흐름이 잡혀있고 그걸 인지하면서
개발이든 공부든 여타 다른 일이든 하면
어느새부턴가는 "아 이거 다음에 그거 나온다" 라는 걸 감각적으로
아는 순간이 찾아올 것이고 속도와 재미는 덤으로 따라오지 않을까?
마지막으로 길이를 짧게 하는 것과 구체적으로 만드는 일에 대해 살펴보도록 하자.
사실 이 둘은 되게 상반되게 느껴진다.
그러나 둘이 공존하는 게 가능하다.
이렇게 연결을 반 정도 끊는 것이다.
이러면 4개의 개념이 된 것과 같다.
공부로서의 예를 들면 배경지식으로서 받아들이고
이미 아는 것이니 더 보지 않는 것에 해당하고
개발에서는 시스템의 동작이랑 연관되지 않는 흐름을
Utillity로 따로 빼는 것에 해당한다.
또, 구체적으로 만드는 것에 대해 살펴보면
프로젝트나 단순 테스트가 해당한다.
test case를 만들어내는 클래스를 만들어내거나
배운 내용을 기반으로 게임 같은 걸 만들어본다거나
등등이 이에 해당하는 것이다.
따라서 최종적으로 복잡한 것을 풀어낸 가장 이상적인 형태는
아래와 같다는 결론에 도달하게 되었다.
'생각 > 간단하게 생각하기' 카테고리의 다른 글
사람의 직관에 대하여 (1) | 2022.12.26 |
---|---|
간단한 것은 어떤 특징이 있을까? (0) | 2022.12.26 |
복잡한 것과 간단한 것에 대해 (0) | 2022.12.26 |