2024년 7월 23일
스터디를 사랑한 개발자

지난 2년 간, 꾸준히 성장하기 위한 시스템들을 구축해왔으며, 이번에는 그 중 하나인 ‘스터디’에 대해 소개하고자 합니다.

지난 스터디

현재까지 페어 프로그래밍, 알고리즘, 면접, 블로깅, 프론트엔드 CS 등 10개 이상의 스터디를 직접 운영을 해보았고, 지금도 진행 중이다.

내가 스터디장이 아니라 스터디원으로써 참여했던 스터디로는 이력서 스터디, 책 ‘모던 자바스크립트’ 스터디, 면접 스터디 등이 있다. 하지만 이력서 스터디를 제외한 모든 스터디는 끝까지 운영되지 못하고 중간에 끝이 났다. 팀원들의 일정이 계속해서 맞지 않아 결국 파토가 나거나, 하나 둘씩 스터디원이 빠지기 시작하더니 자연스럽게 스터디가 소멸되는 경우도 있었다.

여러 차례 스터디의 실패를 겪고, 직접 스터디를 만들어야겠다고 생각했다. 예전에 프로젝트를 한 번 리딩해봤던 경험을 살려서 스터디도 잘 운영할 수 있을 거 같았다.

다양한 스터디 방식

1. 페어 프로그래밍 스터디

내가 가장 재밌게 했던 스터디지 않을까 싶다. 페어 프로그래밍은 스터디보다도 프로젝트 협업 방식 중 하나에 가깝지만 주기적으로 시간을 두고 실천했다는 점에서 스터디에 분류하였다.

Gloddy프로젝트를 시작한 지 얼마 안되었을 때이다. 팀원과 나름 컨벤션을 정하고 개발을 시작했지만, PR을 올릴 때면 코드 컨벤션이 맞지 않는 부분이 계속 발견되었다. 이에 페어 프로그래밍을 제안하였다. 한 명은 어떻게 설계를 하면 되는 지, 어떤 컨벤션으로 작성하면 되는 지 이야기를 해주는 네비게이터 역할을 하였고, 한 명은 키보드를 통해 네비게이터의 가이드 대로 개발을 하는 드라이버 역할을 하였다. 만약, 드라이버가 네비게이터 생각에 다른 의견이 있다면 언제든 지 이야기하여 열띈 토론을 펼쳤다.

페어 프로그래밍을 함으로써 가장 좋았던 점은 언제든 지 토론을 할 수 있다는 것이었다. 혼자 개발할 때는 무심코 넘어가는 것들이 많다. PR을 할 때는 그 코드의 결과물만 보고 글로 논의를 하게 된다. 실시간으로 논의할 수 없다는 점과, 과정에 대한 이야기를 하는 데에는 어렵다는 한계가 있다. 페어 프로그래밍을 하기에 앞서 팀원과 1시간을 약속했으나 너무 재밌고, 서로의 개발 과정에 대한 생각을 알아가는 과정이 흥미로워 3-4시간동안 했던 기억이 있다. 또한 페어 프로그래밍 덕분에 Gloddy 프로젝트의 초기 설정 과정에서 프로젝트의 전반적인 설계, 코드 컨벤션에 대해 맞출 수 있었다.

하지만 같은 작업을 해도 시간이 상당히 오래 걸린다는 단점이 존재한다. 그래서 프로젝트 개발할 때마다, 혹은 매일 진행할 수는 없다고 생각하였다. 그래서 매 주 프로젝트 팀원들과 모각코 시간이 있었는데, 그 때 3시간 정도 페어 프로그래밍을 진행하였다.

2. 면접 스터디, 알고리즘 스터디, 프론트엔드 CS스터디, 블로깅 스터디

여러 면접과 코딩테스트를 치르며 한없이 부족함을 느끼고, 꼭 채워야겠다고 느낀 것들이다. 잘 못하는 것이여서 그런 지, 혼자 하기에는 도저히 동기가 생기지 않았다. 그래서 같은 목표를 가진, 열정적인 팀원들과 같이 준비를 하면 어떨까 해서 시작하게 되었다.

면접 스터디는 한 명이 면접자가 되고 나머지는 면접관이 되어 면접을 진행한다. 그리고, 서로 피드백을 주고받는 방식이다. 알고리즘 스터디과 프론트엔드 CS스터디, 블로깅 스터디는 한 명씩 발표자가 되어 각자 준비한 문제/주제/아티클에 대해 발표를 진행한다. 그리고 다른 팀원들이 이에 대한 피드백을 주는 방식이다.

사실, 스터디 특성상 ‘피드백’면에서는 나보다 실력이 뛰어난 개발자가 있지 않다면 얻어가는 것이 적을 수 있다는 점이 있다. 피드백이 도움이 되기 위해서는 날카로운 지적이나 새로운 의견에 대한 제시가 있어야 하기 때문이다. 하지만, 피드백 외에도 얻어갈 수 있는 점들이 많다. 스터디의 장점 에서 더 자세히 이야기하겠지만 메타인지, 다양한 시각 그리고 강제성이라는 스터디의 강력한 장점이 있다.

이러한 장점들이 있기에 나는 스터디를 통해 배우고자 했고, 앞으로도 꾸준히 실천하고자 한다.

스터디를 운영하며 나는 스터디를 끝까지 유지시키기 위해 여러가지 시스템을 도입했다.

스터디를 유지하기 위한 시스템

1. 정해진 요일과 정해진 시간

스터디를 하며, 가장 두려운 이야기가 ‘다음 주에 우리 언제할까요?’였다. 모든 스터디원의 일정을 맞추는 것은 항상 스트레스였다. 각자의 상황이 전부 다른 스터디원의 일정을 하나로 맞추는 것은 힘든 일이었고, 논의 끝에 모두가 일치하는 스터디 시간이 없다면 불가피하게 스터디에 참여하지 못하게 되는 인원이 생기기 마련이었다.

그래서 스터디 요일과 시간을 미리 정해놓으면 어떨까?라는 생각을 하게 되었다. 미리 정한 요일과 시간에는 항상 그 스터디를 진행하는 것이다. 그렇다면 면접이나 코딩테스트같은 중요한 일정이 아니라면 대부분 참여를 할 수 있을 것이라 생각했다.

물론, ‘해당하는 요일과 시간에 시간이 되는 사람’으로 스터디원 범위가 좁혀진다는 단점이 있지만, 그럼에도 충분히 가치가 있었다.

2. 보증금과 벌금

스터디를 유지하기 위한 두 번째 시스템으로는 보증금과 벌금이 있다. 인간의 손실 회피 성향을 이용한 것이다. 사람은 자신이 얻지 못한 것보다, 자신이 가지고 있는 것을 잃을 때 강한 회피 성향을 느낀다. 만약 내가 스터디에 성실히 참여하면 전부 잃지 않을 수 있는 돈인데, 스터디에 참여하지 못하게 되어 돈을 잃는 것은 상당히 슬플 것이다.

벌금은 이러한 인간의 손실회피 성향을 이용한 제도이고, 보증금은 이러한 벌금에 대해 서로가 껄끄러운 상황을 만들지 않기 위한 제도이다. 스터디가 시작하기에 앞서 보증금을 미리 걷고, 스터디가 종료되면 벌금을 재분배한 차액을 돌려주는 방식이다.

처음부터 보증금과 벌금 제도를 처음부터 도입한 건 아니다. 처음에는 이러한 시스템 없이 진행을 했었다. 이러한 시스템이 없을 때는 출석률이 75%정도 되었다. 스터디 때 한 명씩은 꼭 빠졌던 거로 기억한다. 하지만, 이러한 시스템을 도입한 이후, 면접이나 사고같은 불가피한 사유가 아니라면 전부 다 참여를 해주었다. 출석률은 95%정도 되었다.

이렇게 정해진 요일과 시간, 그리고 보증금과 벌금은 스터디원들의 이탈을, 그리고 빠지지 않기 위한 시스템으로 만들기는 했지만 나를 위한 시스템이기도 했다. 예를 들어 목요일에는 코딩테스트 스터디를 한다면, 그 날은 나는 무슨 일이 있어도 코딩테스트 스터디를 위해 준비를 하는 것이다. 스터디에 앞서서 코딩테스트 스터디 문제들을 살펴보고, 혼자서 발표를 연습해보는 것이다. 그리고 ‘돈’이 걸려있기에 나 또한 책임감을 가지고 스터디를 운영하고 참여하게 된다.

나를 강제하게 만드는 시스템을 구축한 것이다.

이렇게 강제로만 스터디가 굴러가지는 않는다. 스터디에는 활력소가 필요하다. 이제는 이러한 스터디의 활력소를 위한 시스템을 소개하고자 한다.

스터디에 활력소를 불어 넣어주는 시스템

1. 아이스 브레이킹과 목표 설정

스터디 첫 날에는 항상 자기소개를 한다. 자기소개에 꼭 ‘어떤 목표를 가지고 스터디에 임하게 되었고, 무얼 얻어가고 싶은 지’ 이야기를 하도록 한다. 그럼으로써 서로에 대해 알아감과 동시에, 같은 목표를 바라보고자 한다. 보통 스터디원을 모집하기에 앞서 모집글에 ‘스터디 목표’란을 미리 적어두어, 그 목표를 기반으로 각자의 목표를 추가하기도 한다. 예를 들어 경험 스터디라면 ‘내가 겪은 프로젝트 경험에 대해 잘 설명할 수 있는 개발자가 되자’이다.

보통 3가지 정도 목표를 설정한다. 그러면 이제, 그 목표를 이루기 위해 스터디 계획을 세우고, 스터디 시간을 보내면 되는 것이다.

2. 끝나고 자유로운 만담

첫 날을 제외한 스터디 날에는 스터디 시간이 되면 바로 스터디를 진행한다. 스터디가 끝나면 스터디원들과 이런 저런 이야기를 한다. 스터디원들과 요즘 취업 근황은 어떤 지, 스터디 준비하면서 어떤 게 어려웠는 지, 고민은 무엇인 지 등 이런 저런 자유로운 이야기를 나눈다.

스터디를 시작하기에 앞서 먼저 이런 자유로운 이야기를 왜 하지 않느냐면, ‘스터디의 효율성과 집중성’을 위해서이다. 스터디를 시작하기에 앞서 이야기를 하면 그 이야기의 끝이 어디까지 갈 지 모르고, 이는 스터디의 지연으로 이끌게 된다. 이러한 지연은 본격적으로 스터디를 시작할 팀원들의 주의를 분산시킬 것이라 생각했다.

그래서 보통 스터디가 끝나고 스터디원들과 자유로운 만담의 시간을 가졌다.

느낀 점

1. 자신이 준비한 만큼 가져간다.

스터디는 절대로 누군가가 떠먹여주지 않는다. 스터디는 자신이 한 만큼만 가져갈 수 있는 합리적인 시스템이다.

그 무슨 일을 해도 그렇겠지만 스터디 또한 참여만 했다고 무언가 얻어갈 수 있다고 생각하는 것은 큰 오산이다. 스터디를 준비하며 학습한 것, 발표하며 얻게 되는 메타인지, 그리고 발표 후 함께 서로의 의견을 공유하고 비판적인 시각에서 바라봐주는 스터디원들의 다양한 시야로부터 우리는 많은 것들을 얻을 수 있는 것이다. 만약 스터디를 위해 준비하지 않았더라면, 이 중 제대로 얻을 갈 수는 있는 것은 없을 것이다.

2. 긍정적인 칭찬보다는, 날카로운 비판이 더 효과적이다.

스터디를 진행하며 긍정적인 칭찬를 들어보기도 하고, 날카로운 비판을 들어보기도 했다. 이 중 대체로 후자가 기억에 오래 남았고 남는 것이 많았다.

긍정적인 칭찬은 잠깐은 기분이 좋지만 나를 안주하게 만들었다. ‘아, 이 정도면 되는구나’.

하지만 날카로운 비판은 나를 살아나게 만들었다. ‘아, 더 열심히 해야겠다’, 동기적인 측면 뿐만 아니라 ‘이렇게 하면 안되는구나’ 방향성에 대해, 혹은 방법에 대해 새롭게 모색하게 되었다. 그래서 나는 스터디를 시작하기에 앞서 ‘성장을 위해 날카로운 비판도 많이 해주세요’라 이야기를 한다.

스터디의 장점

1. 메타인지

내가 지금까지 운영한 스터디 진행 방식은 대부분 ‘발표’와 ‘토론’이었다.

자신이 푼 코딩테스트 문제를 발표하고, 프론트엔드 CS에 대해 발표하고, 자신이 작성한 블로그 글을 발표한다. 발표를 하며 내가 무엇을 알고, 무엇을 모르고, 더 나아가 새로운 궁금증이 생기고, 제 3자 입장에서 생각까지 할 수 있게 된다. 혼자서 글을 작성할 때, 혹은 혼자서 이야기를 할 때는 모른다. 실제로 나는 내가 공부한 내용을 혼자서 직접 글로 적어보기도 하고, 혼자서 발표를 하며 녹음도 해보았다. 이 때는 ‘공부한다’에서 그쳤다. 하지만, 스터디 시간에 누군가에게 이야기를 하며 설명할 때는 ‘누군가가 듣고 있다’는 의식 때문인 지 메타인지가 극대화 되었다. 내가 완벽하게 알 지 못하는 내용에 대해 이야기를 할 때면 절고 있는 나를 발견할 수 있었다.

2. 다양한 시각

위에서 이야기했던 ‘발표’ 이후에는 항상 토론이 뒤따른다. 발표자가 작성한 문제 혹은 글에 대해 서로의 시각을 이야기한다. 다른 방식으로 푼 풀이가 있는 지, 혹은 부족한 내용이나 보충할 내용이 있는 지에 대해 자유롭게 이야기를 한다. 이러한 자유로운 이야기 속에서 새로운 풀이 방법이나 기술에 대해 알게 되고, 다른 사람의 시각을 알게 된다. 이러한 과정 속에서 내 시야는 더 넓어질 수 있다.

3. 동기

스터디는 내가 공부를 하게 만드는 ‘동기’임과 동시에 같이 같은 길을 걸어가는 ‘동기’다.

해야 하지만 하기 싫은, 예를 들어 면접 스터디 같은 경우 내가 아무리 면접을 연습하고 싶지 않아도 면접 스터디가 있기에 연습을 하고 준비를 해야 한다. 나의 큰 동기가 되어준다. 또한 ‘나 혼자 면접을 준비하고 있는 게 아니구나’ 느끼고, 나와 같은 길을 걸어가는 동기들이 생긴다.

스터디가 있었기에 지금까지 내가 꾸준히 ‘프론트엔드 개발자’로써 성장할 수 있는 큰 버팀목이 되었고, 내가 선택한 길을 꿋꿋이 나아갈 수 있는 힘이 되어주었다. 그런 과정에는 지금까지 함께한 수많은 스터디원 또한 함께했다.

4. 강제성

스터디의 경우 요일과 시간이 정해져 있기에 그 날에는 약속을 잡지 못한다. 만약 스터디가 없었더라면, 그 날에 놀러도 가고 싶고, 친구도 만나고 싶고, 쉬고 싶었을 것이다. 하지만, 스터디가 있기에 그 날에 놀거리를 생각조차 하지못한다. 처음에는 이러한 것 때문에 스트레스를 많이 받았다. 친구와 놀지도 못하고 스터디를 무조건 해야하는 것이 부담감으로 다가왔다. 하지만, 시간이 지남에 따라 오히려 놀며 시간을 허루투 쓰는 것보다 100배는 더 의미 있게 시간을 쓸 수 있다는 것을 깨달았다. 더 나아가 스터디가 끝나고나서 가지는 자유로운 만담의 시간은 큰 힐링 이 되었다.

스터디는 나에게 강제성을 부여함으로써 다른 길로 새지 않고 꿋꿋이 내가 선택한 길로 나아가는 장치가 되었다.

앞으로의 방향

나에게 부족함이 느껴지는 것이 있고, 그 부족함을 다른 사람과 함께 채울 수 있다면 나는 스터디를 직접 만들어 운영하는 편이다. 이번 주로 3개의 스터디(면접, 블로깅, 코딩테스트)가 끝이 난다. 그리고 추진 중인 스터디는 코딩테스트와 이력서이다. 코딩테스트 스터디는 만족감이 너무 컸고, 알고리즘과 자료구조를 익히는데 큰 도움이 되어 계속 운영하기로 마음 먹었다. 이력서 스터디는 서류를 지원하며 한없이 부족함을 느꼈고, 스터디를 통해 같이 한다면 큰 힘이 될 것이라 느껴서 만든 스터디이다. 또한 전에 다른 분이 운영한 이력서 스터디에 참여했었는데 만족감이 너무나도 컸다.

앞으로도, 꾸준히 나는 스터디를 운영하며 꾸준히 내가 선택한 길에 대해 나아가고자 한다.