글쓰기가 어렵기만 한 개발자에게
언제부턴가 개발자도 글을 써야 한다는 분위기가 생겨나고 있지만 마음 한편에 남아있는 의문은 여전하다. 정말로 개발자가 글을 잘 써야 할까? 개발자가 글을 잘 쓸 수 있을까? 새로운 언어와 기술 스택을 공부하기에도 부족한 시간에 글까지 써야 한다니. 막막하기만 하다.
개발자도 글을 잘 써야 한다. 개발자이기에 더 잘 쓸 수 있다.
우리 개발자들은 글을 잘 쓰기 위해 필요한 태도와 습관을 이미 갖추고 있다. 인지하지 못하고 있을 뿐이다. 그래서 오늘은 개발자가 글을 잘 써야 하는 이유와 잘 쓸 수 있는 이유를 이야기해볼까 한다.
이 글에서 이야기하는 글은 소설이나 시 같은 문학을 의미하지 않습니다. 말하고자 하는 바를 전달하기 위한 수단으로의 글을 이야기합니다. 이 글에서 이야기하는 잘 쓴 글은 문장이 유려하거나 멋짐을 의미하지 않습니다. 이해하기 쉽고, 내 생각을 잘 전달할 수 있는 글을 의미합니다.
개발자도 글을 잘 써야 하나요?
코드도 글이다
코드는 요구사항을 상세히 표현하는 수단이다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다.
로버트 C. 마틴의 <클린 코드> 중 코드는 Java, Python과 같은 개발 언어로 작성한 글이다. 코딩은 컴퓨터가 목표한 기능을 수행하기 위해 필요한 과정을 개발 언어로 작성하는 일이다. 개발 언어로 작성할 뿐 여느 글쓰기와 다름없는 행위다.
로그인 함수를 구현하기 위해 필요한 과정을 코드 대신 글로 적어보자. 평소 글을 잘 쓰는 사람과 그렇지 않은 사람의 결과물이 매우 다를 것이다.
이메일이랑 비밀번호가 입력됐는지 확인하고 입력이 안 되어 있는 게 있으면 알려주고, 입력이 되어 있으면 이메일 주소가 형식에 맞는지 확인하자. 가져온 이메일과 비밀번호를 서버에 보내서 DB에 등록된 정보랑 일치하는지 확인한 다음에 일치되어 있으면 메인 페이지로 이동시키고, 그렇지 않으면 다시 확인해보라는 알럿을 띄우자. 아! 그 전에 만약에 이메일이랑 비밀번호가 형식에 맞지 않으면 형식이 맞지 않다고 알럿을 띄우고, 함수도 종료시키자. (...구구절절 구구절절...) 이메일과 비밀번호가 입력되었는지 확인한다. 입력되지 않았으면 '이메일과 비밀번호를 입력해주세요.' 알럿을 띄우고 함수를 종료한다.
이메일 주소 형식이 올바른지 확인한다. 올바르지 않다면 '올바른 형식의 이메일을 입력해주세요.' 알럿을 띄우고 함수를 종료한다.
입력된 이메일과 비밀번호가 DB에 등록된 정보인지 서버에 요청한다. 등록되지 않은 정보라면 '입력하신 이메일과 비밀번호를 다시 확인해주세요.' 알럿을 띄우고 함수를 종료한다.
메인 페이지로 이동한다.
이 글을 개발 언어로 옮기는 일이 코딩이기 때문에 글을 잘 쓰는 연습을 한다면 보다 간결하고 논리 정연한 코드를 작성하기 쉬워진다.
개발자도 글을 쓰며 일한다
개발자는 일할 때 글을 쓰지 않는 직군이라고 생각하는 사람이 많지만 개발자도 수시로 글을 쓰며 일하는 직군이다. 커밋 메시지와 코드 리뷰가 대표적인 예시다. 특히나 개발자는 구두로 피드백이나 질문을 주고받기보다는 모니터 너머에 있는 개발자와 글을 통해 소통을 할 일이 잦기 때문에 글을 잘 써야 생산성을 높일 수 있다.
개발자가 글을 잘 쓸 수 있을까?
소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다.
로버트 C. 마틴의 <클린 코드> 중
개발자는 공대생의 한계 때문에 글을 못 쓸 수밖에 없는 조건을 가지고 있다고 생각하기 쉽지만 나는 그렇게 생각하지 않는다. 오히려 다른 직군에 비해 글을 잘 쓰기 위해 필요한 태도와 습관을 충분히 갖췄다고 생각한다.
간결하고 읽기 쉬운 코드를 고민한다
우리 개발자들은 어떻게 하면 코드를 더 간결하고 읽기 쉽게 작성할 수 있을지 고민한다. 이런 태도는 글을 쓸 때도 많은 도움이 된다. 내가 따로 설명을 하거나 주석을 달지 않아도 이해할 수 있는 코드가 무엇인지 고민하듯, 별도의 설명 없이도 나의 생각이 쉽게 잘 전달될 수 있도록 노력해야 글을 잘 쓸 수 있다. 개발자들은 이 노력이 몸에 베인 사람들이므로 글을 쓸 때 금방 적용해볼 수 있다.
리팩토링을 통해 코드를 다듬고 다듬는다
개발자들은 코드를 한 번 짜고 끝내는 것이 아니라 계속해서 그 코드를 쪼개고, 중복을 제거하고, 이름을 바꾸며 다듬고 다듬는다. 처음부터 완벽한 코드를 짜낼 수 없다는 사실은 글쓰기에도 똑같이 적용된다. 무수히 많은 퇴고를 거쳐 훌륭한 글 한 편이 완성된다. 개발자들은 처음부터 완벽한 글을 탁- 써낼 수 없다는 사실을 쉽게 받아들일 수 있다.
다른 사람 코드를 유심히 읽으며 배운다
다른 개발자는 변수명을 어떤 식으로 짓는지, 어떤 문법을 어떻게 활용했는지 남의 코드를 유심히 읽으며 내 코드에도 적용해본다. 글을 잘 쓰기 위해서도 다른 사람은 어떤 단어를 사용하고, 문장 구조는 어떤지 살펴보며 내 글에서 활용해봐야 한다. 개발자들은 다른 사람의 글을 통해 배움을 얻는 방법을 능숙하게 익힐 수 있다.
상호 피드백을 통해 좋은 코드가 만들어진다는 사실을 안다
개발자들은 코드 리뷰를 통해 피드백을 주고받는 일이 익숙하다. 서로가 서로의 코드를 피드백하며 더 좋은 코드를 만들어간다. 개발자만큼 피드백에 열려 있는 직군이 많지는 않다. 잡지 에디터들이 처음 글을 기고할 때 힘든 점 중 하나는 편집자들에 의해 자신의 글이 수정되는 일이라고 한다. 다른 사람이 수정한 글은 내 글이 아닌 것 같은 느낌 때문에 그렇다고 한다. 개발자들은 코드 리뷰를 통해 코드를 고쳐나가는 행위에 열려있기 때문에 피드백을 통해 좋은 글로 고쳐나가는 태도를 갖추기 쉽다.
혼자 하면 힘들고, 오래 걸린다.
혼자서는 코딩도 글쓰기도 잘 해내기 힘들다. 시행착오를 겪느라 오래 걸리기도 한다. 요즘 개발자들이 과거에 비해 짧은 시간에 우수한 프로덕트를 구현할 수 있는 이유는 함께 지식을 공유하고 축적하기 때문이다. Github와 같은 거대한 오픈소스 생태계는 개발자들에게 혼자서는 만들어낼 수 없는 위대한 성장을 가져다주었다.
함께 할 때 더 잘할 수 있다. 올해 8월부터 태진님과 함께 일을 하기 시작했다. 태진님이 오신 다음부터 혼자서 할 때보다 즐겁고 빠르게 많은 것을 함께 해내고 있다. 다른 사람과 함께 한다는 이유만으로 평소보다 코드를 신경 쓰고 깔끔하게 다듬는다. 리뷰를 통해 더 나은 코드를 만들어내기도 한다. 함께 하기에 더 빠르게 성장할 수 있게 되었다.
서로가 서로의 성장에 박차를 가해주는 이 순간을 더 많은 사람들과 나누고 싶다. 함께 했을 때 더 즐겁고, 더 올바른 방향으로, 더 멀리 나아갈 수 있음을 믿는 분들을 만나고 싶다. 그런 분이 계신다면 언제든 트레바리 개발직군 채용공고를 보고 연락주시면 좋겠다.