Concurrency in Go - 스터디 회고

Johnny·2021년 11월 5일
0

Saturday Night 스터디

목록 보기
7/8
post-thumbnail

올 초에 Saturday Night 스터디를 참여한 이후 The Ultimate Go, Concurrency in Go두번째 주제까지 스터디가 완료되었다.

일과 스터디를 병행하면서 그동안 생각하고 느꼈던 점들을 KPT 방식의 회고를 해보려 한다.

Saturday Night이 뭐야? 🤷‍♂️

Saturday Night 스터디는 뜻이 맞는 주변의 지인들이 함께 모여 만들어진 주말 스터디 그룹이다.
다 함께 스터디할 주제를 정하고, 발표하고자 하는 챕터를 스스로 선정하여 주중에 학습하고 매 주 토요일 밤 9시부터 한두시간 정도 발표를 통해 그룹 스터디를 진행한다.

Saturday Night
주변인이 아니더라도 공개 스터디 그룹이기 때문에 누구나 언제든 참여 의사만 있다면 참여할 수 있습니다.
Go언어 주력의 스터디가 아닌 모두가 흥미를 가지는 주제라면 한다! 우리는

🐔기

  1. 어느날 현재 재직 중인 회사의 팀장님으로부터 커피한잔 하자는 제안을 받았다.
  2. 커피마시러 갔다.
  3. 슬랙 스터디 채널에 끌려갔다. (?)

개발자 = 자기주도 성장은 정말이지 누구나 꿈꾸는 이상일 것이다. 이러한 이상을 실현하기 위해 자습, TIL, 1일 1커밋을 계획하곤 하지만 이런 목표들은 보통 실천하기가 어렵거나 오랜기간 유지되기가 힘들다.
그 이유는 학습을 병행해야 한다는 개발자의 현실이 가장 큰 발목을 잡곤 하는데, 한번 생각해보자.
하루종일 회사 의자에 앉아서 코드를 보고 퇴근 후 또 코드를 봐야 한다는게 쉬운 일일까?

나는 게으른 사람이고 게으르기 때문에 강제성이 없으면 스스로 무언가를 오랜 기간 하기 어려운 유형의 사람이다. 심지어 아무리 재밌는 게임이어도 두 세달만 해도 질려서 하지 않는다. 캐릭터도 마찬가지다. 생성해서 열심히 키우다가 어느덧 질려서 다른 유형의 캐릭터를 생성하는 사람이다.

이런 나도 위에서 언급한 3가지 방식의 자기주도 성장을 시도해본 사람이다.


자습하기 위해 구매한 Java의 정석은 절반도 못읽었다.


Node.js 교과서도 70%밖에 읽지 못했다.


Swift를 배우고 싶어서 구매한 전자책도 20%밖에 못읽음(...)


유일하게 내가 재밌게 다 읽고 블로그에 정리까지 한 책이다.

'책을 읽는 루즈한 행위가 나랑 맞지 않는건 아닐까?'

그래서 TIL처럼 매일매일 개발일지를 블로그에 작성해본 적도 있다. 첫 개발일지는 2019년 8월에 시작해서 2020년 2월을 마지막으로 작성된 적이 없다.

'그럼 1일 1커밋은 가능하지 않을까?'

하겠냐

난 시도는 하는 사람이다. 끝을 보지 못하는 사람일 뿐
by 찍먹왕 Johnny

Saturday Night을 시작하고 벌써 해가 바뀌어 간다. 언제까지 할 수 있을까?

Why Go?🐭

스터디를 주최하신 Gump님은 Go언어에 열광하고 계셨고 스터디 설립 기념으로 첫 주제는 The Ultimate Go가 되었다.

Go언어는 현 회사에 재직하며 접하게된 언어다. 이전부터 존재는 알고 있었지만 딱히 배우려는 시도는 없었던 언어였다. 오히려 나는 Rust에 관심이 조금 있었다. Node.js로 프로젝트를 진행하던 당시 오픈채팅에 들어갔었고 그곳의 JavaScript 개발자들은 Rust를 좋아하는 경향이 있었기에 자연스레 관심이 생겼었다.

여담으로 사실 이 시기에 내가 속한 팀에는 상당히 큰 모험이 있었는데, Go언어를 학습하지 않은 상태에서 회사로부터 Go언어 기반의 프로젝트 과제가 주어졌었다.
시작 전부터 고난이 예상되었는데 팀원들과 학습을 병행하며 프로젝트를 진행했지만 역시 결과는 처참했다.
Go언어를 모르고 익숙하지 않은 QUIC 프로토콜을 사용하니 매일매일이 삽질이었고, 삽질이 반복되니 사기는 저하되고 그것이 일정 관리에까지 영향이 전해져 결국 프로젝트가 중단되는 경험을 겪었다.

결과는 실패지만 그 실패가 나에게 긍정적인 영향도 준 것 같다.
프로젝트의 주제로부터 내가 배워야할 게 얼마나 많은지 뼈저리게 느꼈고 Go언어로 코드를 작성하면서 Java 언어로 코드를 작성하는 것과 비교하며 왜 Go가 코드를 작성하기 편한지를 알게 되었다.

무엇을 얻었지?

얼마전만 해도 나는 CLI 프로그램이 어떻게 만들어지는지 원리를 궁금해하던 사람이었다.
그랬던 내가 이제 Go언어로 CLI 프로그램을 만들어서 실무에서 사용하고, 다른 팀에 도움이 될만한 프로그램을 만들고 있다.
물론 아직까지 영어마냥 Go언어가 네이티브하지는 않지만 남들이 한번이라도 써보게 할 수 있는 프로그램을 만들 수 있게 된건 나름 자랑스럽다. 😤

아 참!
MongoDB 데이터 마이그레이션 작업을 한다고 메모리 점유율을 8GB나 처먹고 OOM 발생하는 배치 프로그램을 만든건 안자랑이다. ^^ㅋㅋㅋㅋㅋㅋ

Concurrency in Go

누군가로부터 개발에서 동시성 요소는 중요하다.라는 이야기를 귀에 딱지가 앉게 듣다가... 개념만 듣고 이해하기에는 내가 너무 햇병아리라 공부하게 되는 계기가 되었다.

그리고 난 그 선택을 후회했다...
동시성은 생각보다 상당히 어려운 주제였고, 심지어 그것을 어렵게 써낸 책이라고 생각한다. 물론 좋은 내용이지만 지금의 내가 이해하기에 어렵다는 뜻이다.
햇병아리인 나에게는 아직 와닿지 않는 내용들을 담고 있으며 실무적인 요소로 응용하여 풀어내는 생각을 하기엔 나에게는 실무 경험이 너무나도 부족했다.

오랜 시간이 지난 후엔 내가 이해할 수 있는 수준으로 성장되어 있으면 좋겠다.

Keep

  1. 서브 주제 발표
    이번 Concurrency in Go 메인 주제는 상당히 어려웠기 때문에 시간이 지날수록 루즈하게 느껴지고 이해도 안가서 숨이 턱하고 막혔는데 서브 주제 발표들이 끼어들면서 환기가 이루어졌다.
    Dave님의 gRPC 주제는 모두 받아들이기엔 하이 레벨의 내용이었지만 QUIC 프로토콜을 사용해본 경험이 있어서 기본적인 개념은 알아들을 수 있었다!
    Owen님의 주사위 포커 게임 프로젝트는 매우 참신했다!

  2. 무언가를 한다라는 안도감
    개발자라는 직업은 빠르게 변화하는 트렌드와 새로운 지식들에 센시티브하게 반응할 수 있어야 한다.
    위에도 소개했지만 나는 게으르다. 게으른 내가 새로운 것에 센시티브하게 반응하지 않을 때 Saturday Nitght 스터디는 그런 나를 센시티브하도록 강제해준다.
    '게으른 내가 뭐라도 하는구나'라는 현실은 나의 마음을 안심시켜준다.

Problem

  1. 스터디 개근 실패
    백신 맞고 저승을 헤맸기 때문에 두 번을 참석하지 못했다. 심지어 그때 바이너리님의 서브 주제인 Git 발표를 듣지 못한게 너무너무 아쉽다... 재밌는 주제였고 오랜 토론이 오갔다고 들었는데 너무 아쉽다.

  2. 회피하게 되는 발표
    주제들이 어려웠고 어려운 주제들을 이해하지 못한 상태에서 내용을 정리하고 발표해야 한다는 것에 큰 압박감을 느꼈다. 살면서 발표를 자주 해본 적도 없고 글을 잘 정리하는 편도 아니어서 매번 발표 순번이 오게되는게 스트레스다.

  3. 습득되지 않는 내용을 스터디하는 것
    학습이란 내가 모르는 지식을 습득하기 위해 하는 행위다. 하지만 내가 모르는 지식이라고 해서 모든 것이 학습을 통해 습득될 수 있을까?
    흥미가 생기지 않거나, 너무 어려워서 이해를 하지 못하는 주제들을 스터디를 통해 시간을 할애하는 것에 회의감이 드는 경우가 종종 있었다.

Try

  1. 스터디 개근에 대한 집착 버리기
    회사를 다니며 매 번 주말에 시간을 내서 스터디를 한다는건 쉽지 않은 일이다.
    사람의 생활이 일정한 패턴으로 반복되게 되면 우울함과 스트레스를 받을 수 밖에 없고 주중마다 얻는 피로도는 일정할 수 없다.
    스터디를 개근해야 한다는 목표는 또 다른 스트레스를 낳을 수 있는 접근 방식이라고 생각한다.
    물론 '그룹' 스터디이기 때문에 스터디원들에게 피해가 가지 않는 선에서 나를 위한 선택을 하는 것도 한가지 방법일 수 있겠다.

  2. 적정 레벨의 주제 선택
    나의 상태를 기준으로 너무 높은 레벨의 주제를 잡으면 내 스스로가 그 주제를 이해하지 못하는 상태로 발표를 하게 될 뿐더러 그런 발표를 듣는 스티디원들의 입장을 고려해볼 필요가 있다.
    지금까지의 나는 스터디원들의 질문에 속시원하게 긁어주는 발표를 해본 적이 없다. 또 어떤 날은 내가 발표한 주제를 이해하지 못한 상태로 발표를 진행해 스터디원들에게 도움이 되지 못하는 발표가 된 적도 있었다.
    누구를 위한 발표이고 누구를 위한 스터디인지를 생각해보자.
    내가 이해할 수 있을만한 주제인지 파악을 하려면 스터디 주제를 선택하기 전에 먼저 가볍게라도 학습할 내용을 훑어볼 필요가 있다.

profile
배우면 까먹는 개발자 😵‍💫

1개의 댓글

comment-user-thumbnail
2021년 12월 7일

이제야 읽어 봤어요 🙂
우리는 모두 어설펐어요. 하지만 함께 공부한 시간들이 우리를 성장 시켜준것만은 분명합니다.
앞으로도 쭉 함께해요! 응원합니다 😈

답글 달기