코드스쿼드를 수료한지 만 6개월이 지났다. “좋은 사람들”과 “같은 관심사”를 두고 함께 공부하는 것이 어려웠다는 걸 여러 방면에서 절절히 느꼈던 나는 작년 한 해 스터디를 결성하고 유지하기 위해 최선을 다했다. 그 과정에서는 분명 실패한 것도, 혹은 실패에 가까운 것들도 많았다. 그럼에도 불구하고 아직까지 순항중인(?) 스터디도 존재한다.
이번 스터디 회고록에서는 같은 공부를 함께 하는 사람들이 왜 함께하기 어려운지, 어떤 일을 그간 겪어왔는지 적어보고자 한다.
“케미가 맞는다.” 혹은 “케미 돋는다” 등의 표현은 “조화가 잘된다.” 혹은 “잘 어울린다.” 정도의 뉘앙스로 해석할 수 있지 않을까. 스터디도 그런 것 같다. 한명한명 팀원이 중요하고, 각자의 역할이 조화가 잘 될 때 잘 굴러가는 것 같다. 실패했던 스터디를 돌이켜보면, 각자가 절대적으로 수평적이었어서 역할이 불분명했던지, 혹은 어떠한 이유로 잘 어울리지 않던지 했던 것 같다.
근데 케미 돋는다는 표현은 어디서 온걸까? 아마도 “화학적인 결합”에서 “화학” 중 “화”정도만 떨어진 느낌으로 “케미”가 되지 않았을까 싶다. 개발을 공부하는 사람들을 원자라고 치면 이런 해석도 해볼 수 있을 것 같다. 아래는 입자간 거리에 따라 퍼텐셜 에너지가 어떻게 변하는지에 대한 그래프이다.
블로그 저자에 따르면, 다음과 같다.
원자들은 정전기적 상호작용을 한다. 인력 상호작용은 퍼텐셜 에너지를 낮춰 안정화시키며, 반발력 상호작용은 퍼텐셜 에너지를 높여 불안정하게 만든다. 원자 간 상호작용(인력, 반발력)은 거리에 의존한다. 거리가 가까울수록(작은
문과라서 어려운 얘기 다 제끼고 간단하게 보면, 끌어당기는 힘이든 멀리 떨어뜨리는 힘이든 거리가 가까울 수록 그 변화가 크고 멀어질수록 변화가 작다고 여겨진다.
기울기가 0인지점이 인력과 척력이 균형을 이루는 지점으로 퍼텐셜적으로 가장 안정적인 형태가 된다. 이 그래프 상으로 기울기가 0이 되는 지점은 극소값과 저 멀리 y축이 0에 가까워지는 로그함수 끝부분에 이렇게 2개가 있다.
전자는 가깝게 서로가 잘 엮여져서 이상적으로 협업식의 스터디를 잘 하고 있는 것이라 하면 후자는 서로 각자 원하는 것을 서로가 모르게 각자 해서 stable한 상태라고 할 수도 있지 않을까. 하지만 분명하게 말할 수 있는 것은 후자의 경우는 그냥 각자 공부하는 것과 크게 다르지 않다. 모각코라는 말로 요즘에는 힙하게 쓰이는 것 같다.
기울기가 0이 되는 지점은 딱 하나있다. 딱 하나 있는 극소점에 가까워 지는 것은 균형된 상태를 의미하고, 좋은 방향으로 스터디를 운영한다는 것이 그렇다고 가정할 때, 스터디에 대한 극소점은 각자의 고민과 니즈를 한 지점으로 모으는 형태가 되어야 한다. 프로젝트나 스터디를 진행하게 되면, 어느 순간부터는 책임감만 남아 성장지향점 없이 자리만 하게 되는 경우가 올 수밖에 없는데, 그런 지점을 없애기 위해 끊임없이 노력해야한다. 높은 확률로 스터디를 유지하기 위한 어설픈 시스템은 오히려 생각을 모으는 것에 대해 방해물이 되어버리고는 한다.
아직까지 잘 운영되고 있는 스터디가 있다.
작년 봄, 스터디를 만들었었다. 앞으로 우리는 구직이라는 명확한 목표를 준비할 필요가 있었다. 구직 전형은 크게 알고리즘 코딩테스트와 과제전형 테스트가 있었는데, 후자의 경우를 함께 스터디해보고자 했다. (전자는 사실 방법이 아주 많기도 했고, 문제를 해결하는 각자의 스타일이 참 다르기도 하여 상호간 영향을 주기 어렵다 판단했다.)
아쉬운 점 :
아직까지도 함께 공부해주고 있던 데이지와 이제 볼 수 없는 A님, 빰빰 셋이 스터디 설립과 운영의 틀을 잡는데 큰 힘을 들였다. 막상 이것저것 기준을 세우고나니 너무 괜찮아보였다. 고생하면서 공부하는 모두와 함께 하고 싶었다. 그렇게 준비가 되지 않은 채로 8명이나 사람을 모아버렸다.
예견된 실패였던 것 같다. 코드스쿼드 과정이 한창이었어서 힘들었던 걸까. 스터디는 첫 과제 전형 사이클 만에 반파되었다. 함께 삽을 떴던 멤버부터 탈주각을 잡았고, 뒤늦게 들어온 사람들도 이 핑계 저 핑계로 나와 맞지 않아 나간다는 말을 돌려 말해주었다. “각자 코드를 작성하고 상호 리뷰를 하는 방식”의 스터디 형태는 전체 인원의 절반이 한 사이클만에 나갈 정도로 좋지 못했다. 이 때의 경험이 나중에 스터디를 다시 만들 때 큰 도움이 되었다.
ssafy, 부스트캠프, 우아한테크캠프 같은 더 좋은 기회가 있었고, 그런 기회를 각잡고 준비할 수도 있었지만, 스터디를 계속 하겠다고 남은 모두가 정말로 눈물나게 고마웠다. 두번째 사이클은 첫번째 사이클처럼 망치는 형태로 남기고 싶지는 않았다. 이 시기에 운 좋게 좋은 학습기회를 얻었다. 우아한 형제들 김민태 이사님께서 운영하셨던 우아한 테크러닝이다.
잘한 점 :
두번째 사이클에서는 좋은 학습기회를 나누고, 성과보다는 과정 중심으로 스터디 과정을 개편했다. 스터디를 통해 남는 것이 없어도 괜찮을 것 같다는 생각을 했다. 왜냐하면, 첫번째 사이클에서 우리는 코드스쿼드 과정을 병행하면서 무언가를 더 하는 것이 얼마나 부담되는 일인지 절절하게 느꼈기 때문이다. 같은 시간에 모여서 강의를 보고, 무슨 말을 하는지 같이 듣는 것 정도가 두번째 사이클이 되었다. 그것이 종료될 때 쯤에는 코드스쿼드 과정도 딱 맞게 끝나기에 “과정 끝날때까지만 버텨보자”라고 서로를 다독였다.
아쉬운 점 :
버티는 것만 해서 그런가. 사실 눈에 띄는 성과가 남지는 않았다. 그렇다고 해서 “그럼 시간낭비였네” 라는 말에 대해서는 동의할 수는 없다. 이번 사이클을 통해 서로가 스터디라는 목적으로 모였으나, 끈끈해졌다. 스터디는 앞서 말했던 것처럼 각자의 니즈가 스터디의 방향과 맞지 않을 때는 탈주자가 생기기 마련이다. 다만, 이번 기간을 통해 웬만한 풍파에는 무너지지 않는 스터디가 되었다. 또 저명한 인사의 의견을 듣는 과정을 통해 (심지어 우리는 크롱이라는 거대한 존재로부터 가르침을 받고 있었지만) 각자에게 있어 큰 동기부여가 되었다(고 믿고있다).
요컨대 이번 사이클은 다음에 필요한 추진력을 얻기 위함이었던 거다.
슬슬 코드스쿼드 종료 시점이 되었고, 스터디가 열린다는 소식이 이곳저곳에서 들렸다. 각자도생하는 시간이 진짜 와버린 것이다. 그리고 이때쯤 같이 공부할 수 없냐는 말이 많이 들렸던 시점이기도 했다. 하지만, 모두와 함께 공부할 수는 없었다. 첫번째 사이클에서 더 많은 사람들과, 모두와 함께 하기 위해 노력했지만, 그렇게 했다가 진짜 말 그대로 스터디가 망해버렸기 때문이다.
코로나 시기에 최대 4인으로 오프라인 모임이 굳혀졌던 것이 6인으로 늘어났고, 우리는 스터디 인원을 딱 2명만 더 충원하기로 했다. 이쯤부터 빰빰은 탈주자와 대화를 하지 않는다는 말이 돌거나, 혹은 빰빰과의 스터디에서 탈주자는 척결대상이다. 라는 말이 들리게 하도록 했다. 첫번째 사이클에서 느꼈듯이 조직이 무너지는 것은 잘못된 시스템으로부터 기인하지만, 개개인의 책임감에도 분명한 의존성을 가진다고 생각했다.
잘한 점 :
그래서 나중에 뭔가 같이 하기를 희망했던 사람들에게는 아주많이 미안하지만, 코로나시국 최대모임 가능인원으로 스터디 인원을 딱 맞추고 나머지는 스터디의 리소스와 노하우를 공유하는 형태로 나름대로의 성의를 표하는 형태로 진행이 되었다. 매정한 사람이 될지언정 다시 스터디가 깨지는 모습을 보고싶지는 않았다.
이 시기에는 다들 빠른 시기에 구직하는 것을 목표로 해서 알고리즘 같은 개개인별로 편차가 크고, 시간이 오래 걸리는 주제를 다루지 않았다. 과제 전형을 목표로 하는 스터디가 되면서, 동시에 면접을 함께 준비할 수 있도록 구성했고, 가용할 수 있는 리소스를 최대한 활용했다.
과제 리소스는 알음알음 물어 얻은 과제 리소스를 활용했다. 한주 간 과제에 필요한 내용을 실습 세미나를 진행하는 형태로 스터디를 했다. (놀랍게도 이때 진행한 자료가 녹화본으로 다 남아있다.) 이후 과제 내용을 순수하게 자바스크립트만 활용해서 리액트의 라이프사이클을 어설프게나마 고려하며 구현하게 했고, 상호 피드백 하는 형태로 스터디를 했다. 또 주말 중 하루 오후시간을 통으로 비워놓고, 제로백의 형태로 다시 과제를 구현하는 형태로 진행했다.
과제 리소스를 얻는 것은 진짜 어려웠은데, 면접 리소스는 인터넷에 널려 있었다. 다만, 준비하는 과정이 과제 전형보다 조금 더 복잡했다. 말을 해야 하는 테스트이기 때문에 지식을 정리하는데서 그치는 것이 아니라 면접 상황을 가정하고 각자가 필요한 지식을 설명하게 하도록 했다. 우리가 취했던 방법은 특정 주제에 대한 미니세미나 + 각자에게 할 질문을 2개이상 만들어 오고 현장에서 모범답안으로 피드백을 하는 것이었다. 질문거리가 참 많이 나왔고, 나중에는 질문 거리만 모아서 다시 스터디를 하는 형태로 스터디가 진행되었다.
아쉬운 점 :
이때는 감사하게도 모두의 고민이 동일한 지점으로 모여있어서 스터디를 할 때 크게 어려웠던 점은 없었다. 계획적인 측면에서는 원래는 우리가 밟고 있는 과정의 선배를 하나 초빙하고, 해당 분야에서 나름 이름을 날리고 있는 친구를 초빙해서 모의 면접까지 하는 것을 계획했었다. 날짜도 잡고 구체적인 계획도 잡았는데, 우리가 너무 준비가 안된 것 같아서 차마 모의 면접을 진행하지는 못했다. 그때는 공부를 해도해도 할게 생겼더랬다.
스터디를 진행하면서 성공 사례가 생기기 시작했다. 일단, 나부터 규모가 꽤 큰 회사의 공채로 입사가 결정되었다. 연이어서 네카라쿠배라고 불리는 회사에 두명이나 인턴으로 들어갔고, 또 어떤 친구는 기업 프로젝트를 다루는 과정에 선발되어 입과했다. 이 때쯤 비슷한 체급의 회사에 또 다른 친구가 인턴으로 선발되어 들어갔다. 기업 프로젝트를 다루던 친구는 인턴과정을 거치지도 않고 바로 정규직으로 입사가 되었고, 이 시점에 나는 공채로 입사했던 회사를 개인적인 사정으로 그만두고 지금 다니는 회사에 입사했다. 끝으로 우리 스터디에서 마지막 한발로 끝까지 남았던 친구는 어마어마한 회사로 전환형 인턴으로 입사하게 되었다. (존버필승) 여름부터 가을초입동안 약 4개월 정도의 시간을 지나며 우리의 상황은 취준생에서 현직자로의 변화가 생겼다.
진짜 위기는 이때부터였다. 각자 회사에서 다루는게 달라졌고, 각자 원하는 것도 달라지기 시작했다. 니즈가 하나의 지점으로 합쳐지지 않는 시기가 진짜 와버린 것이다. 우리는 ‘자바스크립트’ 라는 하나의 공통점만 있었을 뿐이지 다 다른 것을 개발하고 있었다. 목표점을 달성하고 나니 동기부여도 잘 되지 않았다.
잘한 점 :
이때쯤 무엇을 공부할까에 대해 2-3주 정도 긴 텀을 갖고 휴식해가며 고민했다. 지금까지 우리는 일단 구현하는 공부만 해왔다. 이미 구현된 결과물에 어떤 안정성을 부여하는 형태의 개발을 공부하지 못했지만, 현업에서는 이것을 기본으로 여긴다. 그래서 우리는 리팩토링이라는 책으로 북스터디를 하기로 했다. 잘한 점은 각자 니즈가 분명한 선에서 달라지기 시작했는데 그럼에도 불구하고 하나의 방향으로 잘 합쳤다는 점이다.
아쉬운 점 :
안타까운 것은 북스터디는 참 지루했다는 것이다. 특정 챕터를 다뤘고, 과거 우리가 공부했던 내용을 리팩토링하는 형태로 스터디 방향을 잡았다. 다만, 효율적이지 못하다는 생각을 했다. 악취가 나던 코드를 작성했던 우리의 과거를 정리해보는 형태였는데, 그러기에 우리는 너무 게으른 어른이 되어있었고, 의식적으로 코드를 고친다는 것 이외의 어떤 것도 얻어갈 수 없었다.
그래서 다시 스터디에 대한 긴급소집을 했다. 서로의 생각을 듣는 과정을 또! 했다. 우리가 크롱께 너무 잘 배워서 지금의 스터디 방식이 시간낭비인 것 같다는 판단이 섰고, 새로운 것을 배워야 동기부여가 될 것이라는 결론을 세다.
자바스크립트를 또 하긴 해야하는데, 지금까지 다룬 어떤 기초적인 것이 아닌 실제 우리의 업무에 도움이 되는 공부를 하고 싶었다. 모두가 테스트에 대한 니즈가 있다는 것을 회의과정에서 확인했고, 테스트를 공부하는 스터디로 전환을 했다.
그럼 “테스트 공부는 잘되었냐”고 물으면 그건 또 아니다. 처음에는 공통의 영상 자료로 스터디를 했는데, 이게 또 결과가 썩 좋지 못했다. 이때 영상 자료는 나로부터 준비되고 제공되었어야 했는데, 회사 일에 치여 지내느라 영상 자료 준비를 제때 하지 못했다. 꾸역꾸역 준비한 영상자료를 받아본 친구들도 집중력있게 보지 못했다. 긴 고민 끝에 결정한 스터디가 2주만에 또 엎어질 위기에 있었다. 그래서 다시 회의를 했다.
우리는 과거와 같은 큰 볼륨의 스터디를 진행하기에 너무 바빠졌고, 너무 나이를 먹어서 빨리 지치게 되었다. 그래서 스터디에 대한 페이스를 각자가 맞추도록 합의를 봤다. 다만 그럼 앞서 얘기했던 모각코같은 현상이 발생하게 된다. 그래서 최소한의 장치만 만들었다. 동일한 컨셉의 간단하지만, 그렇다고 너무 간단하지는 않은 결과물을 각자의 니즈에 맞게 만들어보는 것이다. 이때 결과물의 최소 단위는 우리가 향후 결정할 최소단위의 백로그의 요구사항을 맞추는 형태가 되어야 한다고 합의 했다. 이때 어떤 형태로든 테스트는 반드시 들어가야 한다. 리액트를 다룬다면 react-testing-library를, 뷰를 다룬다면, vue-test-utils를 다뤄야 한다. E2E 테스트를 바란다면 cypress나 그 이외의 자신이 결정한 라이브러리를 다루기로 했다. 그 전에 우리는 Jest를 알아햐하니 Jest부터 공부하기로 해서 현재는 각자의 스텝에 맞춰 Jest를 스터디 하고 있다.
아직까지 잘 운영되고 있다며 적었던 소제목이다. 우리의 스터디는 서로의 니즈를 끊임없이 맞춰가는 과정 속에서 유지될 수 있었다. 다른 스터디처럼 성실하게 블로그를 정리한다거나 깃헙의 잔디를 심는것에 집착한다거나 하지는 않는다. 단기간에 결과를 내는 그런 스터디는 아니었지만, 우리 스터디는 그렇지 않은 스터디 치고, 꽤 오랜시간 나름대로 스트레스를 조절하며 노하우를 유지한 채로 운영되고 있다.
큰 제목이었던 질문인 “우리들의 스터디는 왜 유지하기 어려울까?”에 대한 답이 이번 회고에서 되었다고 생각한다. 그렇기에 가장 감사한 것은 같은 고민을, 비슷한 공부를 한 사람들과 함께 끈끈하게 공부하고 있다는 것이다. 햇수를 넘기면서까지 말이다. 그동안 실력자가 많은 팀은 있었지만, 유지되는 팀에 있는 것이 가장 어려웠다. 각자의 위치에서 다루는 것은 달라졌지만, 고민거리가 있을 때마다 모여서 나누는 집단이 생겼다는 것이 작년 한 해를 놓고 볼때 가장 자랑스럽게 얘기할 수 있는 성과 중 하나이다.
읽어주셔서 감사합니다 :)
Special thanks to. snow