자연스러움

코드를 작성하는 것은 정말 재미있는 일이다.

아주 작은 기능을 담당하는 작은 조각 하나를 만든다.
그런 조각을 2~3개 더 만들어 그것들끼리 연결을 지어놓는다.
이렇게 해 놓으면 꽤 많은 기능을 처리해낸다.
작은 조각 하나하나는 아주 단순한 몇 가지 기능만 할 뿐인데, 그런 것들이 2~3개만 모여도 꽤 다양한 기능을 해낸다.

2~3개의 조각이 모인 그것을 또 여러 개 만들어본다.
그리고 그것들이 상호 작용하게 한다.
서로 연결을 지어주는 것만으로, 훨씬 더 많은 기능을 담당하게 되었다.

이제 꽤 큼직해져 버린 그것을 잘 패턴화해 놓으면, 그건 또 하나의 작은 조각이 된다.
그런 조각들을 점점 쌓아 나간다.
정말 엄청난 일을 해내는 뭔가가 만들어진다.

내가 여기에 “객체”, “컴포넌트”, “서비스”, 이런 단어를 사용하지 않고 그냥 “조각"이라고 한 이유는,,
이미 우리의 머릿속에는 “객체”, “컴포넌트”, “서비스” 등에 대한 어떤 고정된 형상이 만들어져버렸다.
그 고정된 형상을 떨쳐버리는 좋은 방법 중 하나는, 다른 이름을 사용해버리는 것이다 ㅋㅋ

사실, 우리가 사는 이 세상이 이런 모습이 아니던가?
우리의 삶의 터전인 대자연이 바로 이런 모습인 것 같다.
그냥 그 자연의 모습을 닮도록 만들 뿐이다.

근데, 이게 너무 어렵다.
이 자연의 모습처럼 만들 수만 있다면 참 좋을 텐데,
그렇게 만드는 것이 너무 어렵다.

그래서 나의 중요한 설계 원칙 중 하나는 “자연스러움”이다.
복잡한 이론들은 잘 모르겠고, 계속해서 “그래서, 그렇게 하는 게 자연스럽냐?” 라고 자신에게 물어본다.
자연스러운 그 느낌에 도달하기 위해 계속 그림을 그려보고 코드를 이리저리 바꿔본다.
거기에 테스트 코드는 참 좋은 도구다. (자연스러움을 추구하느라 기능이 엉망이 되면 안 되니까 ㅋㅋ)
테스트 코드라는 안전한 토대 위에서, 자연스러움을 찾아가기 위한 행위를 맘껏 펼쳐본다.
그러다 적당한(?) 지점을 만나게 된다.
정답은 없다.
그냥 적당한 어느 지점에서 스스로 만족감을 느끼게 되면 일단은 오케이다!
그 자연스러움이 무너지면, 거기서부터 자연스러움을 되찾기 위한 행위를 다시 시작한다.

이렇게 하려면 반드시 전제되어야 할 게 있다.
나 자신이 자연스러운 모습이어야 한다는 것이다.
가장 나다운 모습으로 자연의 일부로 살아가고 있을 때, 내가 만드는 것들의 자연스러운 모습 또한 찾아낼 수 있는 것이다.

사실 “자연스러움"이란 말은 이상한 말이다.
자연 속에서 허용된 모습 그 자체가 모두 자연스러운 모습일 텐데, 굳이 뭔가를 보고 “자연스럽다"라고 하는 건 이상하다.
우리가 이 세상을 얼마나 부자연스럽게 만들어 놓았으면, “자연스러움"이라는 단어가 생겨나야 했을까?

이전 글에서 얘기한 ‘프레임워크, 개발표준’ 따위가 자리 잡고 있다면, 자연스러움은 들어설 자리가 없다. (이전글 참고 ㅎㅎ)
내 몸에 맞지 않는 어색함을 입고 있으면 불편한 부분이 나타날 수밖에 없다.
그 불편함을 감추기 위해 또 다른 뭔가를 덧씌운다.
더 불편해진다.
프레임워크에, 개발 표준에,, 거추장스러운 기술 셋을 덕지적지 붙여나가는 모습이다.

우리 삶에서 자연스러움을 추구할 수 없는 이유 중 하나는, “테스트 코드"와 같은 안전망이 없어서가 아닐까 싶다.
우리 삶에도 다양한 시도와 실수를 용인해 줄 안전망이 있다면,
이 세상을 살아가는 것도, 코드를 작성하는 것과 같이 재미난 일이 되지 않을까?

나에겐 그런 안전망이 있다.
그래서 맘껏 뭔가를 해 볼 수 있다.


tmi 1
이건 오전 내내 작성한 코드가 너무 마음에 안 들어서, 머리 식힐 겸 산책하고 돌아와서 쓴 글이다. ㅋㅋ

tmi 2
이전 글이 너무 길다는 독자들의 원성(?)이 있었다.
내가 무슨 작가도 아니고, 그냥 나를 위한 메모일 뿐인데, 그냥 넘기려고 했다가,
아내도 한마디 했다. “너무 길어~~”
자주자주, 그때그때 써버리자 ㅋ