GoF의 디자인 패턴을 읽고나서, 스터디 회고

2019-09-11

학교 동아리 내에서 북스터디용으로 읽은 책이다. 2019.07.07 - 2019.09.08 약 2달이 걸렸고 총 8회의 스터디를 했었다. 직전에 읽었던 클린코드 스터디와 달리 이번에는 스터디 내에서 위키 기록을 남겼다.

스터디 끝나고 회고를 진행하면서 7명이 돌아가면서 좋았던 점, 아쉬운 점, 개선할 점 등에 대해서 이야기를 나눴었고, 나는 어땠는지 개인 블로그에 한 번 더 남기기로 했다. 예전에 쓴 글을 보는 게 생각보다 재미있다ㅋㅋ

좋았던 점

1. 책 한 권을 완독했다

저번 클린코드 스터디 때도 그랬고 진짜 책 하나를 완독하는 것은 좋은 경험이라고 생각한다. 보통의 북 스터디들이 어떻게 굴러가는지를 생각해보면 겁내 뿌듯하다.

2. 실제 사례들을 들을 수 있었다

이 책이 꽤 오래되어서 좀 와닿지 않는 내용들이 많았다. 각 패턴마다 있는 ‘잘 알려진 사용예’ 항목은 그 때 당시에는 꽤 괜찮은 예제였을지 모르겠지만, 2019년에 적합한 예제들은 아닌 것 같다. 나름 좀 이해하고 싶어서 많이 찾아봤지만 1, 2장을 읽으면서 굳이 이런데 시간을 쏟아야 하나.. 현타가 쎄게와서 책 1/3 쯤 읽고 나서는 더 이상 구체적으로 찾아보지 않고 그냥 넘겼다.

학교 동아리방에서 진행하지만 졸업하고 이미 현직에서 일하고 계시는 분들도 함께 하는 스터디여서 이 부분이 잘 채워졌다. 실제 회사에서 일하면서 어떤 피쳐를 개발할 때 어떤 패턴을 고려해봤고, 실제로 적용할 때 어떻게 적용했었는지 등등..

3. 마음 편하게 모르는 것을 드러내고 아는 것을 말할 수 있는 분위기였다

매주 스터디 당일날 사다리 타기로 2명을 골라서 한 명이 발표하고 한 명이 위키 글을 쓰는 형태의 스터디지만, 사실상 질문과 답변이 메인이다. 발표자가 해당 내용을 완전하게 이해를 못 해도 스터디 구성원들에게 질문을 던지고 이런저런 이야기를 함께 주고받기 때문에 발표자의 부담 자체가 그리 크지도 않다.

다들 같이 학교생활을 해왔고 어느 정도 아는 사이여서 이런 분위기가 나온건지 모르겠는데, 이 부분이 제일 좋았다. 내가 말을 하면서도 잘못된 게 있으면 그 자리에서 정정 받을 수도 있다.

과거 경험을 돌아보면 프로젝트를 하건 스터디를 하건 나한테는 이런 분위기를 만드는것이 제일 어려운 부분이었다. 시스템보다는 개개인의 성격에 영향을 많이 받는 부분이라.. 확실히 달성하기 어렵다고 생각한다.

아쉬운 점

1. github issue 활용

이전 클린코드 스터디 때도 했었지만 매주 스터디를 시작하기 전에 어디에서 어디까지 읽는다는 내용의 issue를 등록한다. 각자 공유하고 싶은 내용이 있거나, 질문들을 스터디 전에 커멘트로 남기기 위해서 그렇게 했는데 잘 되지는 않았다.

스터디 회차가 진행될수록 커멘트 다는 사람들이 조금씩 늘어나서 좋았다. 예전에 이거랑 비슷한 상황에서 남들도 나처럼 뭔가를 하길 원하면 내가 계속하는 모습을 보여주고 긍정적인 측면을 은근하게 강조하면 된다고 배웠는데 그게 먹혀서 신기했다.

2. C++과 스몰토크, 책 특유의 문체, 와닿지 않는 예제들

C++, 스몰토크 둘 다 쓰지도 않고 C++ 한정으로 적용되는 설명들은 ‘음.. 그렇군…’ 하고 좀 넘어갔다. 이게 좀 거슬리긴 했는데, 책을 읽을수록 언어는 크게 문제가 되지 않았다. 내가 쓰는 언어에서 어떻게 적용되는지를 각자 찾아보면서 진행했고, 거의 Java, JavaScript였다.

책을 읽을때 어떤 문장이 제대로 이해가 안가면 그걸 꼭 해결해야 속이 편해서 그렇게 읽는 편인데, 이 책은 도저히 그렇게 못했다. 여기에서 예제로 나온 언어가 C++과 스몰토크 인것과 별개로 정말 내 독해력을 시험해보는것 같았다.

클린코드 책을 읽을때는 ‘모르는 내용’ 에 대해서 검색을 하거나 질문을 했다면, 이 책은 ‘이해가 되지 않는 문장’ 에 대해서 이런 저런 이야기를 나누는 상황이 꽤 있었다. 원문을 찾아보면서 어느정도 해결을 했지만, 제대로 해결 안된것도 좀 있었다…

정리하자면 이 책 자체가 불만이었다. 처음 선정했을때는 워낙 유명한 책이고 당연히 읽어야 하는 책이라고 들어서 괜찮을줄 알았는데, 읽으면 읽을 수록 이 책보다는 다른 책(헤드퍼스트)과 검색에 의존하는 부분이 꽤 컸었다.

회고하면서 ‘이 책을 왜 선정했는지’ 에 대해서 이야기를 들었는데, "보통 주니어로 입사하면 읽히는 책중 하나가 디자인 패턴이고, 구글링을 해서 배우기에는 패턴에 대해서 잘못된 정보들이 돌아다니기 때문에 어찌되었건 원서인 'GoF의 디자인 패턴'을 한번 보는게 좋다고 판단했다."고 했다.

듣고보니까 맞는말이다. 실제로 잘못된 내용을 쓴 블로그들이 좀 봤었고, 그것 때문에 내가 이해한게 맞는건지 많이 헷갈려했었다.

3. 블로깅 다 못함

앞에 했던 클린코드 스터디는 매주 회차가 끝날 때마다 재깍재깍 정리를 했었다. 이번에는 그게 잘 안되었다. 매주 패턴 3개씩을 진행하는데, 스터디 진행하는 것과 별개로 스스로 정리를 하기가 영 쉽지 않았다.

나무위키 문서 보는 거 마냥(…) 자꾸 곁다리 정보들에 호기심이 가서 계속 찾아보는 편이기도 하고, 특히 디자인 패턴이라는 주제 특성상 딱 해당 패턴 하나하나 끊어서 공부하고 넘기는 것이 불가능했다.

아직도 Singleton에 머물러 있는 것만 봐도 흑흑..ㅜㅜㅜ 하지만 계속 정리해 나갈 것이다.

4. 일관적이지 못한 위키 정리

스터디 끝나고나서 정리된 위키를 보니까 일관적이지 못했다. 첨부터 양식을 정해놓고 한게 아니라서 별 수 없긴한데 양식을 어떻게 정하는게 좋을지 모르겠다.

예전에 한참 발표 준비할 때가 생각이 났는데, 긴 발표 건 짧은 발표 건 중간에 발표자를 바꾸지 말라는 조언이 생각났다. 아무리 잘 맞춰놔도 다른 사람이기 때문에 말하는 톤이나 분위기가 확 달라지기 때문이다. 발표와는 다르게 글쓰기는 좀 덜할 것 같았는데 아니었다.

이것 역시 한 사람이 아예 문서틀을 잡아주는 게 나으려나 싶기도 하고.. 나는 이런 스터디 위키를 제대로 써본 적이 없어서 잘 만들어진 위키 문서를 좀 찾아봐야겠다.

마지막으로..

뭐든지 질문하면 정말 쉽게 쭉쭉 설명하는 걸 보고 감탄했다. 나는 어디서 주워들은 건 많아서 대충 아는 척은 할 수 있는데 그냥 그뿐이다. 제대로 해본 적이 없어서 그런 것 같기도 하고.. 제대로 설명을 못하면 잘 모르는 것 이랬으니 연습을 좀 해야겠다. 확실히 내가 잘 이해를 했을 때랑 적당히 대충 알 때랑 내가 말할 수 있는 내용이 너무 다르다는 것을 스스로 느꼈다.

카카오톡 사다리 타기로 매주 정하는데, 한 번도 안 걸린 사람이 나왔다! 그래서 발표를 안한 사람한테 가중치를 먹여서 사다리를 태우는 게 좋을 것 같다는 의견이 있었다.

요즘 핫한 오브젝트를 읽기 위해서 다음 책은 객체지향의 사실과 오해를 읽기로 했다. 10월 초에 시작하니까 딱 연말에 끝내기 괜찮을 것 같다.