배너 이미지

클린 코드 스터디, SSG 막코딩

클린 코드 스터디

독자가 개발자와 컴퓨터라는 점을 제외하면 개발자도 작가와 꽤 비슷하지 않나 싶습니다. 표현하고자 하는 대상의 이름을 정확히 알고, 같은 표현을 여러 방식으로 할 줄 알아야 한단 점 등으로 미루어봤을 때요.
글을 쓰고 퇴고하듯 매번 더 좋은 코드를 작성하기 위해 나름대로 노력해왔으나, 오픈 소스 코드를 여러개 까보며 보는 눈을 높여가고, 팀 프로젝트에서 남이 짠 코드를 수정해보는 등의 과정에서 그 중요성을 더욱 깊이 깨닫게 되어 리팩터링과 클린 코드 두 권의 책을 구매했습니다.

리팩터링 2판, 클린 코드

책이란 게 오랜 시간 누적되어 온 지식의 집합임은 분명하지만, 특정 서적을 1,000회 넘게 필사를 했다 한들 그걸 행하지 못하면 앎이 완성되지 않았다고 생각합니다. 더군다나 개발같이 지식이 실전과 아주 밀접해 있고, 관련된 지식이 오래 누적될 시간도 없었던 분야는 스터디보단 직접 부딪히며 문제를 해결해보는 게 대부분 상황에 더 도움이 될 거라 생각하고 살았습니다. 포프 님의 '스터디 절대로 하지 마라'란 비디오에 나온 맥락과 비슷하게요.

하지만 스터디를 제대로 진행해보지도 않고 덮어놓고 별로라고 생각하는 것도 별로 같고, '클린 코드'란 주제는 아무래도 책에서 배울 것도 꽤 많지 않을까 하여 이번엔 사람을 모집해 스터디를 진행해봤습니다.

범위를 정해두고 책을 읽고, 발표자가 내용을 정리하고 예제 코드를 TypeScript로 고쳐 작성해온 뒤, 주 1회 화상으로 발표하는 다소 뻔한 방식으로 진행했습니다.

SSG 막코딩

내용 정리를 어디에 할지 논의하던 중, GitBook 등을 활용해보기 위해 Github에 정리하는 게 어떻겠느냔 의견이 나와 Github에 정리하기로 되었습니다.
TIL 등이 있는 저장소를 잔디 채우려고 희한하게 애쓴 것처럼 보이며, git을 활용할 필요가 없을 때가 대다수에, md 파일만 넣어둘 거라면 그게 Github에 올라와 있을 필요가 있을까 하는 생각에 평소 아주 안 좋게 보긴 했지만, 마크다운 문법으로 편하게 글 쓸 수 있고 GitBook 자체도 꽤 괜찮아 보이는데다, Github Pages로 배포까지 가능한 것 같기에 그렇게 진행하려 했습니다. GitBook이 본인들 플랫폼에 집중하느라 Github Pages로 배포하는 도구는 손 놓은 지 오래란 사실을 알기 전까지는요.

SSG 결과물

그래서 그냥 평소처럼 비슷한 역할을 하는 걸 만들어버리기로 했습니다. 나름대로 구색은 갖춘 결과물이 나왔고, Github 저장소에서 코드를 확인하실 수 있습니다.

docs 폴더에 있는 마크다운 파일을 파싱해 작성해둔 html 템플릿에 내용을 채워 결과물을 만드는 꽤 간단한 작업입니다. 각종 메타 태그(작성자, 작성일, 최종 수정일 등)를 생성하고, 목차를 생성하고, 1장, 2장, 10장 등의 파일 정렬을 오름차순으로 하느라 좀 길어지며 난잡해지긴 했지만요.
클린 코드 스터디의 결과를 정리하느라 막코딩을 했다는 다소 어폐가 있는 것 같은 일이 벌어져 버리기도 했는데, 나름대로 base url 등을 위한 설정 파일도 따로 만들어두고, 템플릿도 수정하기 쉽게 해둬 넘지 말아야 할 선은 넘지 않았습니다.

프론트엔드는 정말 간단하게 내용만 갈아 끼우는 SPA, 다크 모드 토글, 생성된 목차에 지금 읽고 있는 부분 표시 등만 작업했습니다.
가벼운 문서 읽는데 너무 무거운 Syntax Highlighter는 쓰기 싫어서 hljs를 썼는데, 결과가 영 탐탁지 않긴 합니다.

회고

배운 것

같이 보면 좋을 자료나 예시를 찾아보고, 좋은 코드가 무엇일지 함께 고민하며 읽기 좋은 코드에 관한 생각을 더 깊이 해보는 계기가 됐습니다.
사실 매일같이 듣는 잔소리처럼 뻔한 부분도 많긴 했지만, 거기에 제 마음이 동하지 않으면 그저 잔소리로 여겨지고 똑같은 잔소리만 10년 넘게 듣게 되지 긍정적인 변화가 생기진 않기에, 적절한 시점에 좋은 스터디였다고 생각합니다.

캠을 활용하자

음성 통화로 스터디나 스크럼 등을 할 때마다 비언어적 표현이 모조리 사라져버리는 게 안타까웠는데, 캠을 활용하니 그래도 한결 나았습니다.
그냥 잡담하는 게 목적이 아니라면 어지간하면 캠을 활용하는 게 낫지 않을까 싶었습니다.

프로젝트를 하자

매주 예시 찾으러 돌아다니면서 느낀 건데, 간단하게 사이드 프로젝트라도 진행하면서 스터디를 곁들이는 게 좋을 것 같단 생각이 들었습니다.
예제 찾는 시간도 줄어들고, 직접 처한 상황에 문제 해결을 위한 공부가 될 테니 이해도 쉽고 기억도 오래갈 테니까요.

그래서 약 3주 남아있던 발표 일정을 없애버리고 발표자가 자료를 정리하는 것으로 마무리하고, 프로젝트를 진행하기로 했습니다.
아마 앞으로도 정말 이론적인 게 아니라면 이런 부류의 스터디는 진행하지 않을 것 같네요.


profile

이메일 주소는 공개되지 않습니다.

주의 : 비밀 댓글 사용 시 수정 기능을 이용할 수 있는 시간이 지나면 작성자도 내용 확인이 불가능합니다.
카카오페이 qr코드 모바일이시라면 클릭