brunch

You can make anything
by writing

C.S.Lewis

by delight Mar 19. 2023

코딩과 글쓰기는 비슷한 점이 많다

골든래빗이 펴낸 '개발자 원칙'은 다양한 기업 현장에서 뛰는 나름 경력 있는 개발자들이 개발에 대한 각자 중요하게 생각하는 것을 담은 책이다. 9명이 강조하는 개발자 원칙이 담겼는데, 글쓰기를 업으로 삼다 보니 글쓰기과 코딩이 비슷한 점이 많다는 내용을 담은 장동수 데이원컴퍼니 CTO의 글이 눈길을 끈다.


글을 읽다 보니 글쓰기와 코딩은 비슷한 점이 참 많은 것 같다. AI와 관련한 변화에 직면한 것도 그렇고. 챗GPT가 나오면서 글쓰는 일에도 변화가 있을 것이란 전망이 많은데, 코딩 쪽 역시 마이크로소프트 깃허브가 내놓은 코딩 AI 도우미인 코파일릿이 많은 관심을 끌고 있다.


책을 보면 글쓰기와 코딩이 비슷한 부분은 다음과 같이 요약된다.

  유시민의 글쓰기 특강에서 유시만 직가는 문학적 글쓰기와 논리적 글쓰기의 영역을 구분하면서 문학적인 글쓰기는 타고난 재능이 중요한 예술이지만 논리적인 글쓰기는 훈련으로 향상할 수 있는 기능이라고 했습니다. 코딩은 극단적인 형태의 논리적인 글쓰기입니다. 글쓰기와 비슷해서 코딩을 잘하려면 코드를 많이 읽고 많이 쓰고 많이 생각해야 합니다.
  개발자 채용 면접을 하다 보면 코드 리뷰는 어떻게 하는가라는 질문을 자주 받습니다. 코드 리뷰는 다른 개발자의 코드릉 읽고 생각하고 토론하는 행위인 다독과 다상량입니다.  코드 리뷰에는 소극적이면서 코딩을 잘하고 싶어하는 개발자들이 있습니다. 많이 읽지 않고도 잘쓰는 것은 불가능합니다.  아무것도 안 앍는 것보단 뭐라도 읽는 게 좋습니다. 기왕 읽는 거라면 좋은 코드를 읽는 게 좋습니다. 그냥 읽기만 하는 것보다는 생각하고 토론하는 것이 좋습니다.
  코드를 읽을 때는 처음부터 끝까지 빠르게 여러 번 반복해서 읽어야 합니다. 긴 시간을 들여 한줄 한줄 꼼꼼히 있다 보면 중도에 포기하게 됩니다. 전체를 파악해야 조각이 이해되고 조각이 이해돼야 전체를 파악할 수 있습니다.  다시 읽기 전에 코드를 읽고 파악한 내용을 종이에 그려보면 더 좋습니다. 두 번쨰 읽을 때는 처음 읽을 때보다 더 짧은 시간이 걸리지만 더 많은 것을 이해할 수 있습니다.  책속의 글자를 읽는 데는 책과 시간만 있으면 되지만 책을 읽고 내용을 온전히 이해하려면 책 속에 포함된 문장만으로는 부족합니다. 글쓴이의 의도와 배경을 포함한 문장 해석에 필요한 부가적인 정보인 컨텍스트를 이해해야 합니다.
  코드를 읽고 온전히 파악하려면 코드 그 자체만으로는 부족합니다. 작성자의 의도와 배경 등 코드의 해석에 필요한 부가적인 정보인 컨텍스트가 필요합니다.  문제는 컨텍스트가 광범위하게 흩어져 있다는 겁니다. 요구사항이나 명세 등의 형식을 갖춘 문서, 이슈 관리 시스템에 남겨진 질문과 답변, 버전 관리 시스템의 커밋 로그, 회의록, 주고 받은 메일, 슬랙의 채팅 기록, 심지어 회사를 오래 다닌 몇몇 개발자 머릿 속에만 있는 컨텍스트도 많습니다.


코드를 추천해주는 코파일럿의 등장으로 코드 읽기의 중요성은 더욱 커지고 있다는 게 필자 생각이다.

  코파일럿이 등장하면서 코드를 읽는 능력은 더욱 중요해 졌습니다. 몇 글자만 치면 코파일럿이 그럴듯한 코드를 추천해 줍니다. 개발자는 입맛에 맞는 코드를 선택해서 입맛에 맞게 고치면 됩니다.
  문제는 입맛입니다. 많이 먹어봐야 맛을 잘알 수 있습니다. 더 좋은 코드를 선택하고 선택한 코드를 주어진 상황에 맞게 고치려면 코드를 빠르고 정확하게 읽을 수 있는 안목이 있어야 합니다. 거대한 코드 덩어리를 분석하는 일도 어렵지만 코드의 한 조각을 보고 맥락을 파악하는 것은 더욱 어려운 일입니다. 주니어와 시니어의 격차가 더 줄어들었다고 한 숨 쉬는 시니어도 있고, 같은 이유로 환호하는 주니어도 있습니다. 그러나 평소에 코드 읽기 연습을 많이 해서 안목(코딩 근육)을 키웠담녀 코파일럿은 축복이지만  그렇지 못한 개발자들에게 코파일럿은 같이 일하고 싶지 않은 버그 제조기에 불과합니다.


좋은 코드는 몇 가지 특징이 있다. 이것도 글쓰기 원칙과 크게 다르지 않다.

  가독성은 좋은 코드의 필수 조건이다. 현실 세계의 개발에서는 온전히 새로운 코드를 작성할 기회보다 기존 코드를 수정하고 덧붙이는 기회가 많습니다. 이때 기존 코드가 읽기 쉽다면, 제대로 고칠 가능성이 높아 집니다. 가독성이 좋은 코드는 관행을 잘 따릅니다. 관행은 작게는 팀, 넓게는 조직 전체에 일관되게 적용되어야 합니다.
  일관성 있는 코드가 읽기 좋습니다. 일관성은 없지만 사전적 의미에 더 잘 맞는 변수 이름보다는 뜻이 안 맞더라도 규칙이 일관된 변수 이름이 더 좋습니다. 반복, 재귀, 대칭을 적절하게 활용하면 코드에 리듬감이 생깁니다. 대부분 음악은 앞 소절을 들으면 다음 소절을 거의 예측할 수 있습니다. 좋은 코드도 비슷합니다. 비슷한 듯 다른 코드가 반복되는 것처럼 보이지만 코드 일부 만으로 전체를 예측할 수 있고 그 예측에 맞지 않는 부분도 단순 반복이나 중복 코드가 아닌 패턴의 확장으로 자연스럽게 이해됩니다. 짧은 코드가 읽기 좋습니다. 함축적인 코드보다는 명시적인 코드가 읽기 좋습니다. 단순 명료한 코드가 읽기 좋습니다.
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari