24년 1학기 한국외대 멋사 11기 운영진으로 백엔드 세션을 진행했던 기록을 회고하고자 한다.
멋사 세션을 진행한 것은 올해 한 가장 좋은 선택들 중 하나라고 느낄 정도로 의미있었다. 작년에 공부를 제대로 하지 않았다고 생각해 올해 운영진으로서 세션을 제대로 진행하지 못할 수도 있다고 걱정했고, 겨울방학때부터 한학기 내내 기본기를 다지는 공부를 정말 열심히 했다.
운영진으로 들어가기로 결정한 이후, 부족했던 장고 기본기를 다지고 좀 더 심화된 공부를 하고 싶어서 백엔드 개발을 위한 핸즈온 장고 책을 구매해 매일 공부했다.
책에 나오는 코드는 최대한 모듈의 사용을 지양하고 기본 모듈을 자세히 분석하고 활용하는 코드들이었다. 프레임워크와 라이브러리가 서버를 만드는데 필수적이라고 생각했었기에 이런 날것의 코드가 어색했지만 코드들을 최대한 분해해보니 진정 기본기에 대해 익힐 수 있었다.
그렇게 약 한달동안 공부하고 정리한 결과이다. 많은 내용은 아니고 지금 다시 읽어보면 잘못 이해한 부분도 많았지만, 모듈과 아키텍처의 역할에 대한 고민 없이 코드를 썼던 초창기를 만회하고, 점점 기본기를 디벨롭해가는 시작점이 될 수 있었다.
1-2월 내에 동아리 운영을 위한 크고작은 회의와 더불어 한학기동안 아기사자들에게 진행할 세션 자료를 만들어야 했다. 백엔드 운영진 3명이 역할을 분배한 결과 나는 약 3주간 진행하는 Git 사용하기, 장고로 웹서버 최초 실행하기, MTV 패턴을 이해하기 위한 Word Counter 만들기 실습, 데이터베이스 핵심 이론, 장고 모델 개념 및 실습 파트를 맡았다.
이 세션자료를 정말 잘 만들고 싶다는 마음이 컸다. 작년에 아기사자였을 때 나의 최고의 교재가 세션 자료였기 때문에, 나의 세션으로 백엔드의 세계를 처음 접하게 될 아기사자들을 위해 정말 도움이될 자료를 만들고 싶었다.
또, 반추해보면 아기사자때의 나는 개념보다는 코드 자체에 대한 암기와 모방에 집중했던 것 같다. 그러나 코드를 냅다 따라 쓰는 것도 중요한 공부지만, 그 뒤에 개념에 대한 이해가 따라올 수 있도록 세션을 구성하고 싶었다.
세션자료는 2월부터 3월까지 약 한달동안 작성과 수정을 거듭했다. 1-2주일 안에 작성은 끝났지만, 이후에도 매일 틈날때마다 검토를 거듭하며 수정하고 보충했다. 특히 나는 이미 아는 내용을 쓴다기보단 내가 다시 공부하면서 내용을 쓰는 것이었기 때문에, 아기사자 입장에서 궁금할 것 같은 내용을 정성껏 추가했다. (색깔도 되게 예쁘게 했다. 알록달록..)
처음보는 내용, 복잡한 코드로 가득한 자료이기에 잠시만 흐름을 놓치면 내용을 이해하기가 쉽지 않다. 따라서 가독성에도 매우 집중했다.
나는 대주제와 큰 흐름을 놓치지 않도록 하여 가독성을 높이고자 했다. 세션의 대주제를 설명하고, 대주제를 위한 흐름을 크게 크게 정리하고, 자세한 내용을 설명한 뒤에는 다시 흐름과 대주제를 복기했다. 지금 뭘 하고 있는지, 무엇을 위해 코드를 짜고 있는건지 끊임없이 상기해주는 것을 제일 중요하게 여겼다.**
세션의 마지막 주차는 배포 세션이다. 배포가 제대로 하면 상당히 난이도가 높은만큼 작년 세션에서는 클라우드타입을 활용한 원클릭초간단날로먹기(?) 배포를 했다. 물론 그때도 빌드 에러가 많이 났었지만...
올해 클라우드타입의 프리티어가 없어지고, 없어진 김에 AWS를 사용해 제대로 배포를 해보기로 결정을 했다. 더불어 nginx와 docker까지 활용해 안정적인 배포를 위한 최소한의 아키텍처를 구현했다.
배포 경험이 없지 않았지만 제대로 알고 쓴다고 생각하지 않았고, 백 운영진들과 함께 이 기회에 배포의 하나부터 열까지 실습해보고 공부해보았다. 처음엔 알수 없는 에러도 많이 생기고 개념도 잘 이해가 되지 않았지만, 여러번 연습해보니 복잡한 배포 과정의 하나 하나가 왜 진행되는지 알 수 있었다.
그렇게 겨울방학은 장고의 기본기를 다지고, 세션 준비를 하고, 배포 연습을 하고, 중간중간 프로젝트를 진행하면서 나름 알차게 보낼 수 있었다. 3월 중순쯤엔 운영진들끼리의 여러번의 피드백을 통해 세션 자료도 완성되었다. 부족한 것들을 보충하다보니 양이 굉장히 많아졌다.
3월 말부터는 12번의 세션을 진행했다.
매주 이틀 가량의 시간을 써서 세션 내용을 정리하고 세션을 어떻게 진행할지 계획을 세웠다.
세션은 1~2시간 안에 그날 필요한 개념 설명과 실습, 에러 해결까지 모두 진행되어야 하기 때문에 미리 계획을 세우고 흐름을 거의 암기하듯 준비해야 착오없이 진행될 수 있었다. 내가 세션을 맡은 팀에는 3명의 아기사자가 있었는데, 다들 백엔드가 처음이지만 충분히 관심도 많았고 따라오고자하는 열정도 많았기 때문에 정말 내가 알고 있는 모든 지식을 잘 전달해주고 싶었다. 그러나 나또한 아기사자에서 벗어난지 얼마 안된 실력이기에 눈높이에 맞춰서 잘 전달해주고 싶었다.
그래서 최선을 다해 준비하고 조리있게 전달해주려고 노력했다. 세션자료를 적었을 때처럼 대주제에 대한 이해를 충분히 시키고, 설명 중간중간 계속해서 대주제를 상기시켜주며 이해도를 높이고자 했다.
그 결과로 "설명이 도움이 많이 됐다", 내지는 "알아듣기 쉽게 설명을 잘 해준다"는 말을 세션 내내 많이 들을 수 있었다.
물론 빈말과 감사의 말이 대부분이겠지만 ^-^ 아기사자들이 잘 읽고, 또 잘 듣고 이해할 수 있게 잘 쓰고 잘 말하려고 몇달간 노력했기 때문에 그런 말들이 특히나 기억에 오래 남았고, 이후 내 동기부여의 원천이 될 수 있었다.
개발 공부를 정말 제대로 시작한 건 올해 1월부터인데, 약 9개월이 지난 지금 느끼는 건 개발자도 결국 회사원이라는 것이다. 어느곳에서나 실력만큼이나 인성과 소통능력이 중요한 것처럼, 개발실력만큼이나 중요한게 얼마나 협력에 열린 마인드인지, 또 어떻게 말하고 써서 내 의도를 잘 전달할수 있는지 라는 걸 깊게 느꼈다.
그만큼 잘 쓰고 잘 말하는 일명 소프트스킬은 당연히 너무나 중요할 수밖에 없다. 이번 세션은 그런 중요성을 몸소 깨닫고, 또 어느정도의 자신감을 얻고서 꾸준히 노력할 것을 결심하게 된 중요한 계기가 된 것 같다.
우리 팀 아기사자 3명, 많게는 백엔드 아기사자 9명이 모이니 정말 다양한 에러를 마주칠 수 있었다.
그러나 나는 공부가 부족했던만큼 작년에 프로젝트를 하면서 정말 수많은 갖가지 에러에 부딪혔었다. 아기사자들이 에러메세지를 보여주면 '이게 뭐지'가 10프로, '아 이거 어디서 본 에러였는데'가 90프로였을 정도였다. 환경변수 에러, 깃 에러, 가상환경 에러, 마이그레이션 에러... 내가 기본기가 부족했던 적에 부딪혔던 수많은 에러 덕에 아기사자들의 에러를 보고 많이 고쳐줄 수 있었다. 처음 보는 에러도 옆에서 함께 머리싸매며 고친 적이 매우 많았다.
한 명이 아닌 무려 아홉명의 에러를 함께 고칠 수 있다는 건 흔치 않은 기회이다. 많은 에러들을 처리하며 또 하나씩 배워갈 수 있었고, 이렇게 많은 에러들을 만날 수 있었던 것도 세션에서 얻었던 소중한 경험 중 하나이다.
무엇보다 아기사자들이 함께 잘 따라와주고 열심히 질문해주어서 너무너무 고마웠다. 백엔드 아기사자들 중 몇명은 잘 안따라와서 곤란하기도 했고, 다른 길을 가거나 방황을 하는 사람들도 있는데, 우리 팀의 아기사자들은 세션 이후로도 스스로 정말 열심히 공부하고 본인의 길을 찾아가는 것 같아서 지금도 옆에서 큰 뿌듯함을 느끼고 있다.
이렇게 누군가를, 심지어 개발을 처음 접하게 되는 사람들을 위해 지식을 정리하고 나눠줄 수 있는 기회는 정말 흔치 않다는 걸 알고 있다. 소중한 기회였고 올해 내가 제일 잘 한 선택이라고 생각하는 만큼, 어떤 식으로 준비를 하고 세션을 진행했는지 기록할 것이다.
세션에서 내가 어떤 식으로 설명했는지 흐름을 복기하며 적어보고 싶다. 말과 글의 스타일은 조금 다를 수 있지만, 세션에서 내가 말했던 흐름들을 최대한 복기하며 고칠 점은 고치고, 기록하고 공유할만한 점은 공유하고 싶다.