brunch

You can make anything
by writing

C.S.Lewis

by 서일환 Oct 14. 2020

글쓰기와 코딩의 공통점

초기 인류의 조상들은 직접 만나서 말로 지식을 전달해야만 했다. 구전으로 전달하는 지식은 전달하는 사람의 능력과 전달받는 사람의 능력에 따라 정보의 질이 균등하지 않다. 말로 소통하는 것은 시간과 공간에 제약을 받는다. 글과 종이가 발명된 후로 인류의 지식 전달은 폭발적으로 이루어졌다. '말'은 저렴한 비용으로 즉시 만들어 낼 수 있는 특성이 있다. 전달하고자 하는 정보가 같더라도 '글'은 그것을 표현하기 위해서 '말'보다는 더 깊은 고민을 하게 만든다. 우리는 말 한마디를 할 때 깊이 생각하지 않지만, 글 한 줄을 적을 때는 깊이 생각하게 된다. 아마도 그것은 '말'은 순간적이고 '글'은 영속적인 특성 때문이 아닐까라고 추측해본다. 정보를 생산하는 측면에서도 그렇지만 정보를 소비하는 입장에서도 마찬가지다. '말'은 듣고 금방 지나가기 때문에 기억에서 금방 사라질 가능성이 높지만, '글'은 머릿속에 들어올 때까지 몇 번이나 곱씹으면서 읽을 수 있다.


요즘은 세상이 많이 바뀌었다. 유튜브를 비롯한 수많은 미디어에서 엄청난 양의 정보를 영상으로 제공하고 있다. 나도 영상을 통해 필요한 정보를 습득하고 있다. 내가 특히 좋아하는 영상은 어떤 일련의 주제들에 대한 정보를 시각적으로 가시화해주는 것이다. 이전에 경험해보지 못한 완성된 형태의 정보를 제공 받음으로써 앎에 대한 욕구를 상당히 해소할 수 있었다. 하지만, 여전히 나는 글이 좋다. 글은 내가 찾고 싶은 지점을 빠르게 찾을 수 있도록 도와준다. 잘 작성된 글을 읽으면 내 머릿속의 지식 계층 구조도 단단하게 자리 잡는 것을 느낀다. 무엇보다도 직접 글을 쓰면 복잡한 머리를 정리하는데 많은 도움이 된다. 나는 고등학교 때 이후로 계속 글을 썼다. 내가 주로 쓴 글은 일상 속에서 내가 보고 느낀 것에 대한 생각에 관한 것이었다. 글을 잘 쓰는 것은 아니지만 오랫동안 꾸준히 글을 써왔다. 최근 몇년 동안은 일상이 개발자로서의 삶이었다. 자연스럽게 개발 관련 글을 쓰다 보니 글쓰기와 코딩에는 몇 가지 공통점이 있다는 것을 새삼스럽게 느끼게 되었다.


작성하면 작성할수록 실력이 늘어난다


사람이 무언가를 잘하게 되는 가장 확실하고, 어쩌면 유일한 방법은 여러 번 반복하는 것이다. 코드를 작성하는 것도, 글을 쓰는 것도, 하면 할수록 더 잘할 수 있게 된다. '꾸준히 써온 거에 비해 네 글은 별로인데?'라고 반문할 수도 있겠지만, 지금의 상태도 많이 늘었다는 점을 호소하고 싶다. 코드를 작성하는 실력도 확실히 좋아진다. 나의 사례도 그랬지만, 오랜 시간 동안 주변 동료들을 관찰한 결과 시간이 갈수록 예전보다 더 나은 코드를 작성해냈다. 물론, 단순하게 반복만 하는 것으로도 어느 정도는 좋아지겠지만, 더 잘 작성하는 것에 대해 신경을 써야 한다. 신경을 쓴 사람과 쓰지 않은 사람의 실력 향상 그래프는 상승 곡선의 기울기가 다르기 때문이다.


긴 문장은 읽기 싫다


한 번에 읽기가 너무 긴 문장이나 문단은 독자를 지치게 만든다. 보통 문단 하나는 그 문단이 끝나기 전까지 문맥이 이어진다. 문단이 길어지면 독자들이 머릿속으로 문맥을 기억해야 한다. 뇌가 문맥을 기억하는 작업은 초반에는 비용이 저렴한 작업이지만 길어지면 질수록, 반복되면 반복될수록 더 많은 정신력을 요구한다. 정신력이 떨어지면 집중력도 덩달아 떨어지기 때문에 독자는 쉽게 지치게 된다. 코드도 마찬가지다. 하나의 함수에 너무 많은 행(line)이 있으면 읽기 싫다. 게다가 코드는 글과 달리 한 행(line)에서 또 다른 함수의 스택으로 들어가야 하는 경우도 있다. 글로 따지자면 문단을 읽다가 모르는 단어를 만났을 때 그 단어를 설명한 글을 보고 오는 것과 비슷하다. 


누군가에게 보여줄 때 깔끔해진다


대부분의 사람들은 혼자만 보는 글을 적을 때는 완성도 있는 문장을 만들기 위해 큰 힘을 쏟지는 않는다. 그러나 내 글을 읽는 사람들이 생기거나 생길 예정인 경우에는 짧은 글을 쓸 때에도 여러 번의 퇴고(推敲)를 거치게 된다. 코드도 마찬가지다. 누군가에게 보여줘야 정리가 된다. 가독성이 좋아지고, 호환성이 좋아진다. 남한테 코드를 보여주는 활동 중에 대표적인 사례로는 코드 리뷰(code review)를 하는 것이 있다. 코드 리뷰를 통해서 리뷰어(reviewer)들에게 좋은 피드백을 받고 코드의 품질이 좋아지게 만들 수 있다. 하지만, 실제 코드 리뷰를 진행하기 전인 준비하는 과정에서 이미 많은 코드들이 깔끔하게 정리가 된다. 코드 리뷰를 준비하는 그 과정 자체가 누군가에게 보여주기 위한 준비 과정이고, 글쓰기의 퇴고와 같은 행위라고 볼 수 있기 때문이다.


전체적인 글의 구성이 중요하다


단어 선택, 한 문장, 한 문단이 각각 잘 쓰이는 것도 중요하지만, 글 전체의 구조가 짜임새 있게 구성되어야 한다. 아무리 아름다운 짧은 글귀라도 전체적으로 정돈되어 있지 않으면 읽기가 싫어진다. 마치, 군무(群舞)를 출 때 전체적인 짜임새가 맞으면 개별적으로는 조금 잘못된 동작을 하더라도 여전히 아름다운 것과 비슷하다. 반대로, 한 명 한 명의 동작은 매우 아름답지만 전체적으로 조화를 이루지 못한다면 아름답다고 말하기는 힘들 것이다. 프로그래밍 언어도 함수나 라인 단위로의 잘 짜인 코드도 중요하지만, 전체적인 소스 패키지 구조를 잘 구성해야 한다. 잘 구성된 소스 패키지 구성은 별도의 문서 없이 그 자체만으로도 누구나 쉽게 개발 작업에 참여할 수 있도록 도움을 주는 가이드가 된다.


읽기 좋은 글이 좋다


어떤 전문가들은 많이 알면 알 수록 더 어려운 용어를 써야 한다고 착각을 한다. 나는 그것의 대표적인 사례가 법률 관련 분야라고 생각한다. 나는 대학교에 다닐 때 법을 공부한 적이 있다. 법을 공부하면서 내가 느낀 것은 '이건 배워서 쓰지 마라고 만든 것인가?'였다. 판사들이 만들어내는 판결문도 그렇지만 법 조문도 이해하기 어려웠다. 법은 모두가 지키라고 만든 것인데, 이렇게 어려워서야 누가 지킬 수 있겠는가? 최근에는 예전보다 쉽게 법을 쓰기 위한 노력들이 있다고 들었다. 앞으로는 더 좋아지길 기대하고 있다. 사실은 어떤 분야에 전문적일수록 누구에게나 쉬운 글을 만들어 낼 수 있어야 하는 거 아닐까? 바꿔 말하면 쉽게 설명할 수 없다면 전문가가 아니라고 생각한다. 코드도 마찬가지이다. 어설프게 지식만 많으면 남이 읽기 어려운 코드를 만들어낸다. 고급 컴퓨터 언어와 글의 본연의 목적은 사람이 읽을 수 있어야 한다는 것이다.


글은 읽기 좋게 작성된 그 자체만으로도 사람들의 머릿속에 쉽게 들어온다. 반면, 컴퓨터 프로그래밍은 사람이 읽기 좋은 것 만이 전부는 아니다. 컴퓨터가 효율적으로 동작할 수 있도록 작성해주는 것도 매우 중요하다. 결론적으로 글과 코드의 핵심적인 공통점은 내가 만들고 있는 콘텐츠가 어떤 식으로 쓰이게 될지 생각하며 만들어야 한다는 점이라고 생각한다. 



매거진의 이전글 신입 개발자의 취업준비
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari