오늘의 장작은 공부군요, 토비의..
오늘은 참전? 이라기 보다는 그냥 제가 공부해 온 이야기를 공유하고 싶습니다.
개발자로 일하고 있었지만, 개발자로 커리어를 개발해야겠다고 마음을 정하지 않았던 시절에
(그래서 이때까지는 대학졸업후 의식적으로 '공부'라는걸 하지 않았습니다.)
어떤 서비스 개발을 외주를 준적이 있어요.
개발이 끝나고 코드를 받았는데 요건은 충족하는데 뭔가 마음에 들지 않았아요.
로직을 파악하기도 힘들고 얼음판 위에서 동작하는 코드 같았습니다.
근데 마음속으로 이게 코드품질이 안좋다고 생각이 드는데도
정확히 뭐가 어떤 부분이 잘못된지도 모르겠고 어떻게 해야 품질을 개선할 수 있을지 몰랐습니다.
이렇게 이렇게 하는게 좋다는 것의 청사진이 머리속에 있어야 하는데 말이죠.
앞으로 서비스할 코드에 대해서 모호한 부분을 남겨두고 싶지 않아서,
많이들 추천해서 일단 샀지만 50페이지 읽다가 만 토비의 스프링을 책장에서 꺼내서 읽기 시작했습니다.
거의 일년걸려서 vo1, vo2 를 읽으면서, 아 프레임워크라는게 이런 의미를 가지고 있구나, 예외처리가 정말 중요하구나,
이 코드가 레이어가 나누어지지 않아서 이렇게 복잡하고 기능추가가 안되는구나,
테스트가 한개도 없어서코드를 만질때 마다 불안한거구나,
문제점이 뭔지 알게된게 시작이었습니다. 그렇게 읽은 내용들을 적용해서 코드를 고치고
2019 겨울에 일본사람들에게 한국 미용클리닉 소개하고 예약을 도와주는 포탈사이트 형태의 서비스를 출시했습니다.
서비스는 어떻게 되었냐구요? 얼마지나지 않아서 일간 PV가 30정도까지 성장했어요.
구글 광고를 붙이려고 했는데 포탈사이트는 오리지널 컨텐츠가 없어서 안된다고 해서 포탈 사이트 내에서,
자체 컨텐츠를 포스팅하기로 하고 명동에가서 사진도 찍고 그랬습니다.
근데 코로나가 터졌습니다. 그렇게 서비스를 종료했어요..
(코로나가 아니었어도 금방 접었을것 같습니다 제가 이런 서비스를 제공하는데 별로 관심이 없다는걸 깨달았거든요.)
그렇게 책을 읽어야겠다고 생각하고, 2019년 부터, 주5 하루에 한시간에서 한시간 반 정도 기술책 읽기를 시작한지 어느덧 5년차 입니다.
그리고 이것은 작은 회사에서 사수없이 일하는 저한테는 성장을 위한 최고의 처방전 이었습니다.
작은 조직이다보니 주도적으로 개발을 할 수 있는 환경이었고, 읽은것들을 바로바로 코드베이스에 적용했을때 실제로 문제가 해결되거나 경감되는게 긍정적인 피드백 고리를 만들었어요.
처음에는 낮은 레벨에서 코드를 잘쓰는 방법에 관한 책들 클린 코드 같은, 이어서 조금 더 높은 레벨에서 시스템의 구조를 만드는데 도움이 되는 책들을 읽고, 팀이 생기고 나서는 개발 방법론 메니징관련 책을 읽는 식으로,
필요한 것들 + 흥미가 있는 분야를 공부해 왔습니다.
15권 남짓 읽은것 같은데, 새로운 관점을 제시하거나 관점을 확장시켜주는 책들이 많이 기억에 남는것 같아요.
몇가지 소개하자면, IDDD라는 책은 예제코드를 보고 아, 뭔가 제대로 서비스로 제공 하려면 코드가 이렇게 복잡해 질 수 있고 그러면서도 관리할 수 있게 되는구나 라는걸 알려준 책입니다. CRUD에 머물러있던 제 생각의 천장을 깨버렸습니다.
이벤트 프로세싱이나 IAM 부분은 현재 서비스를 개발하는데도 정말 많이 참고했습니다.
SRE 라는 책은, 마찬가지로 시스템의 규모가 커지면 인프라가 이렇게 복잡해질 수 있구나 reliability 를 향상시키려고 여기까지 하는구나 라는걸 배웠습니다. 또 개발자가 메니징을 하면 이런식으로 문제에 접근하는 구나 하는것도 배웠고요.
현재 서비스의 worker에 grafana를 도입한것도 이 책을 읽고나서 입니다.
FP in kotlin 라는 책을 읽고는 다른 패러다임 사용하면 같은 기능도 이렇게 다르게 깔끔하게 구현이 될 수 있구나, 패러다임이 바뀌어도 관심사 나누기 같은 변하지 않는 근본적인 '선' 도 있구나 하는걸 배웠습니다. 이 책은 너무 어려워서 두번 읽은 챕터도 있고 완독하는데 1년이 넘게 걸렸습니다. 일부 처리에 스트림을 적용하고 싶은데 아직 적용은 못했고, 이책을 읽고나서는 map이나 flatMap 같은 컴비네이터를 더 잘 활용할 수 있게 되었습니다.
요즘은 crafting interpreters 를 읽고 있습니다. 백오십페이지 남짓 읽었는데 요 몇년간 읽었던 책중에서는 제일 재밌는것 같습니다.
프로그래밍 언어도 결국은 언어의 한 분류고, 우리가 쓰는 언어랑 매칭 시킬 수 있는 부분이 있다는걸 배웠는데 너무 흥미로웠습니다.
예를들어 영어에서 단어 형태(동사, 명사 등) 랑 구문(1,2,3,4,5형식 같은) 으로 문법을 만들 듯 프로그래밍 언어에서도 비슷한 형태로 문법이 형성된다는게 재미있었습니다. 아직 다 읽지는 않았는데 다 읽고 나면 지금 프로젝트의 code-gen 부분에서 개선할 점을 많이 찾을 수 있지 않을까 하고 기대하고 있습니다.
저처럼 사수가 없는 환경에서 성장해야 하는 분들에게는 책을 읽으면서 (책의 저자를 사수로 삼아),
배운것들을 적용하면서 긍정의 피드백 고리를 만드시는 걸 추천합니다.