코드스쿼드 마스터즈 코스 CS10을 마치며

Jane·2021년 2월 6일
15

(👆 코드스쿼드 CS10 종료 기념으로 만든 채팅 어플리케이션 - 코드스쿼드 과정이랑은 관련 X)

코드스쿼드 CS10

코드스쿼드에는 다양한 사람들이 모여있다. 개발자로 일하다가 오신 분, 컴퓨터 과학을 전공하신 분, 타 부트캠프나 국비지원 과정을 수강하고 오신 분 등 개발을 접한지가 꽤 되신 분들도 있고, 나와 같이 전혀 다른 전공 또는 직군에 있다가 코드스쿼드를 통해 처음으로 개발자로서의 발걸음을 내딛는 분들도 계시다. (물론 모집테스트가 있기 때문에 모든 팀원이 기초적인 프로그래밍은 할 줄 아는 상태로 코드스쿼드를 시작한다.)

각자의 배경도, 개발에 대한 경험도 천차만별이지만, 코드스쿼드에 들어오면 신기하게도 동일한 얼굴을 갖게 된다. 특정 회사의 홈페이지에 들어가면, 대문에 장식되어 있는 구성원들의 얼굴만 봐도 그 회사의 가치관과 인재상이 느껴지듯이, 코드스쿼드에 속한 사람들 또한 특유의 공통된 분위기를 공유하고 있다. 몇 가지 단어 또는 문장으로 함축할 수는 없지만 대체로 자신이 알고 있는 지식을 나누기 좋아하고, 누군가 힘들어하는 것이 느껴지면 총총 달려가 응원의 메시지를 보낸다. (+ 스스로에게는 엄격하고, 자책을 많이하는 것도 공통점이다😂)

혼자 항해하는 것이 아니라 함께 나아가서 그런가, 구성원들의 수준은 천차만별이지만 CS10 과정에서 생존한 사람들이 공유하는 정서도 비슷하다. 누군가에게는 매우 쉬운 미션이었을 테고, 누군가에게는 앞이 깜깜해지는 미션이었을텐데 회고할 때 비슷한 소감을 이야기한다는 건, 미션을 홀로 해결하는 것이 아니라 함께 헤쳐나갔다는 뜻이다. 학교에서도 서로 공유하고 협력하며 배울 수 있었으면 좋았을텐데, 이제야 이런 경험을 해보는게 아쉽기도 하고, 고등학교를 넘어선 대학에서도 지식의 공유가 적극적으로 일어나지 않는 현실이 안타깝기도 하다.

코드스쿼드를 경험한지 겨우 한 달 남짓 되었으면서, 이 이상 판단하고 혼자 감동받는 것도 웃긴 것 같아 이만 각설하고 CS10 이전과 이후의 내 모습에 대하여 성찰해보려고 한다.


CS10 이전 vs. CS10 이후

1. 모르는 것을 부끄러워 하였고, 소속 집단의 수준에 비해 쉽다고 생각되는 문제는 이해가 되지 않아도 질문하지 않았다.
→ 솔직하게 이해되지 않는 부분들을 공유하며, 살면서 그 어느 때보다도 적극적으로 질문했다. 질문한 부분보다 삽질을 통해 혼자 해결한 부분이 더 많기는 하지만, 입을 꾹 닫고 절대 질문을 안 하며(또는 있어보이는 질문만 하며) 학창 시절을 보냈던 나로서는 정말 큰 발전이다.

2. 개념 + 책 위주로 공부하는 것을 선호했고, 무언가를 만들어가며 학습하기를 어려워했다.
→ 12월 3일에 쓴 효과적인 프로그래밍 학습 방식만 보더라도, 나는 만들어가며 배우는 것보다는 지식 학습을 선행한 뒤, 응용하는 것을 선호해왔다. 그렇지만 CS10에서는 그 방법을 적용할 수 없었다. 미션을 2일 안에 해결해야 하고, 각 미션마다 데이터베이스, 운영체제, 네트워크 등 다루는 CS과목이 바뀌기 때문에 관련 내용을 충분히 이해한 뒤 미션을 해결할 시간이 없었다. 미션의 난이도가 어려워지면서 후반부에는 개념 공부에 집중하고 미션 1만 구현하는 등 미션을 완료하지 못하는 일도 잦았지만, 전혀 기초 지식이 없는 분야에 대하여 구글링으로 지식을 습득하고 프로그램으로 구현하려는 시도 자체가 나의 오래된 관성에 반하는 것이었으며, 충분히 값진 경험이었다고 생각한다.

3. 배열, 클래스 등 자바의 기초적인 내용 외에 인터페이스, 람다, 쓰레드, 소켓 등 기본적인 내용들에 대한 이해가 없었고, 이들을 활용하지 못했다.
→ CS10 과정을 이수하며 자연스럽게 예외처리, enum, 람다, 쓰레드, 소켓 등 이전에 사용하지 않았던 자바의 기능들을 직접 프로그램에 적용하게 되었다. 또한 객체지향의 사실과 오해를 읽고, 미션들을 수행하며 이전보다 객체지향에 대한 이해가 깊어졌다. (잘하는 팀원들의 설계를 보고, 클래스 다이어그램을 그려보는 것도 많은 도움이 되었다.)

4. 프로그램으로 무언가를 만들어보고 싶어했지만, 적극적으로 시도하지 않았다.
JavaScript로 투두리스트를 만들어 본 다음, 거의 처음으로 만들어 본 프로그램이 코드스쿼드 1차 테스트 과제로 나온 루빅스 큐브였는데, CS미션을 하며 간단한 프로그램이지만 10개의 프로그램을 만들어볼 수 있었다. 미션과는 상관없이 마지막 개인 프로젝트로는 JavaFX를 활용한 채팅 어플리케이션을 만들어 보았다. 소켓과 서버소켓을 사용해서 서버와 클라이언트를 만들고, SceneBuilder를 이용해 디자인 한 UI를 연결시켰다. 직접 100%짠 것이 아니라 여러 튜토리얼을 보고 공부하며 각 튜토리얼에 나오는 코드들을 조합하여 만들어 낸 결과물이긴 하지만, 이전에 HTML과 CSS, JavaScript를 겉핥기로나마 공부한 적이 없었다면 이조차도 해내지 못했을 것 같다. 앞으로도 프로그램을 개발하는데 사용하는 도구가 바뀌어도, 이 생태계에서 삽질하고 학습했던 경험은 다른 도구를 학습하는데도 큰 도움이 될 것 같다고 느꼈다.

5. 자료구조 외 CS 지식이 전혀 없었다.
→ 여전히 겉핥기 식으로만 알지만, 마스터들의 수업과 그룹 리뷰를 통해 다른 CS과목들에 대한 키워드를 습득할 수 있었다. 이 부분은 코드스쿼드 과정 중과 후에 꾸준히 보충해 나가야하는 부분인 것 같다. 프로그래밍에 대한 흥미를 잃지 않도록 프로젝트를 계속 수행하면서, CS 관련 지식도 틈틈이 채워나가야겠다.

6. 백준 이외에 알고리즘 문제 풀이 플랫폼을 사용해보지 않았고, 알고리즘 문제 풀이에 필요한 알고리즘 이론 및 파이썬 기본 문법에 대한 지식이 부족했다.
→ 알고리즘 이론 공부라곤, 하루 날 잡고 패스트 캠퍼스 알고리즘 이론 강의를 완강한 것밖에 없었다. 16시간 동안 밥도 안 먹고 앉아서는 2배속으로 정렬 알고리즘부터 다익스트라, 크루스칼, 프림, 백트래킹 등 다소 난이도가 높은 알고리즘까지 지식을 우겨넣었다. 당시에는 이해가 다 되는 걸로 착각하고 "알고리즘 너무 재밌다. 나 적성있나?"라고 생각했는데, 이틀 밤 자고 일어나니 어려운 알고리즘은 하나도 기억이 나지 않았다. 코드스쿼드 과정 시작 이후에는 매일 알고리즘을 한 문제씩 풀며, 추상적으로만 알았던 개념들을 익혀나갔고, easy 난이도의 문제들은 대부분 내 힘으로 풀 수 있게 되었다. 또한 알고리즘 데이마다 다른 플랫폼의 문제들이 미션으로 주어져 백준 외에도 Programmers, LeetCode, Hackerrank 등 다양한 플랫폼을 사용해 보았다. (+ DP를 만나고 난 이후부터는 하루 한 문제씩 풀기를 포기하고 이것이 취업을 위한 코딩테스트다를 일주일에 2챕터씩 하는 것으로 목표를 하향 조정하였는데 더 이상의 하향 조정은 안 될 것 같다🙄)

7. 발음은 좋지 않지만 영어 논문을 읽고, 에세이를 쓰고, 토론하는 것에 익숙했다.
→ 유일하게 퇴화한 능력이다. 벌써 교육학과 영어영문학 수업을 안 들은지 1년이 넘었다. 교환학생도 영어영문학과로 갔다오고, 학교 수업도 거의 영어 강의만 골라 들었어서 이렇게까지 빠르게 영어를 못해질 줄 몰랐는데, 읽기를 제외한 영어 실력이 급속도로 퇴화하고 있다. 발음은 좋지 않았어도, 영어로 내 의견을 표현하는 것에는 무리가 없었는데 코로나로 사람들을 잘 안 만나다보니 한국어 말도 잘 안 나온다. 남은 과정 기간 동안에는 Tech 관련 영어 뉴스를 아침마다 읽고, 영어로 느낀 점을 표현해봐야겠다. 또한 기술 문서를 영어로 읽거나 영어 강의를 듣는 것에는 문제가 없지만 한국어로 공부하는 것보다 습득 속도가 느려 한국어로 된 책을 사고 있는데, 어느정도 프로그래밍 전반에 대한 이해가 생기면 이것들도 원서로 바꿔야겠다.


TIL (Today I Learned)

코드 스쿼드 기간 동안 매일 TIL을 작성했었는데, 내 블로그 주소가 초보 개발자 모임이라는 페이지에 공유가 되고, 미션 유출에 대한 위험이 생겨 TIL의 반 이상을 덜어내면서 회고에 대해 다시 생각해보게 되었다. 알고보니 직접적으로 미션과 관련된 키워드가 아닌 "데이터베이스" 등과 같이 포괄적인 주제에 대해 공부한 내용 등은 기재해도 괜찮았어서, 천천히 해당 내용들을 살릴 생각이지만 이번 일을 겪으며 회고의 목적에 대한 의문이 생기게 되었다.

나는 왜, 무엇을 위해 회고를 작성하는가

글을 개인 저장소로 옮기며 마치 내가 공부했던 내용들이 사라지는 것과 같은 느낌을 받았다. 그들은 분명 내 머릿속에 남아있고, 삽질의 경험들은 몸에 체화되고 있는데, 왜 공부한 내용들이 휘발되는 느낌이 드는 것일까? 사실은 블로그에 정리만 하고, 충분히 소화하지는 못한 것이 아닐까? 열심히 공부하고, 새롭게 알게된 점을 TIL에 적는다고 해서 그 내용들이 온전히 내 것이 되는 것이 아닌데, 자기 만족을 위해 TIL을 작성하고 있던 건 아니었는지 다시 생각해보게 되었다.

일단 TIL 작성(+공유)을 통해 얻은 것들에 대해 생각해보자.

  1. 5주 동안 꾸준히 회고를 작성하며, 시간 사용과 생활 습관을 관찰할 수 있었다. #til 채널을 통해 다른 팀원들의 시간 사용 및 습관을 접하니, 나의 하루를 객관적으로 평가할 수 있었다. 다른 팀원들은 10~12시 사이에 학습을 마무리하고 작성한 til을 공유하는데, 나는 지나친 욕심으로 인해 5~6시까지 잠들지 못하다가 피곤한 컨디션으로 미션을 시작하는 일이 잦았다. 문제점을 파악하고, 후반부에는 조금 더 많이 자고 몸을 돌봤다. 또한 꾸준한 타임트랙킹을 해보니 슬랙과 다른 사람들이 작성한 til 확인, 50개 정도 가입되어있는 개발자 그룹들의 뉴스들을 캐치업하는데 너무 많은 시간을 활용한다는 점을 깨달았다. 그래서 아침에 일어나서 핸드폰은 꺼두고, 슬랙은 즐겨찾기에서 해제해 두었는데, 훨씬 집중도가 높아지는 걸 경험했다.

  2. TIL을 통해 다양한 학습키워드 및 지식들이 구조화되는 과정을 기록해 놓았고, 이 기록들은 나중에 해당 주제에 대해 다시 학습할 때 좋은 가이드가 될 것 같다.

  3. TIL을 꾸준히 작성하고, 코드스쿼드 슬랙에 공유하다보니 멤버들이랑 많이 친해질 수 있었다. TIL을 구경하며, 줌의 정적에서는 파악되지 않았던 고민들을 파악하고 서로 응원할 수 있었다. 또한 Yeon, Nas, Bibi 등 학습 내용을 자세하게 작성해주는 멤버들의 TIL을 보고는 모르던 개념들에 대해 많이 배울 수 있었다.

TIL 작성의 side effect

  1. 코드보다 한글을 더 많이 쓴다. 개발자의 글쓰기 등 글쓰기의 중요성에 대한 강연도 들었지만, 그건 프로그래밍 실력이 뒷받침 되었을 때의 이야기고, 나는 이러다가 개발자가 아닌 작가가 될 것 같다. 최대한 글보다는 코드를 많이 치기 위해 자바의 정석 학습 방법도 바꿨지만, 더.더.더. 많이 바꿔야 할 것 같다. 항상 존경하는 K는 24시간을 나의 48시간(또는 그 이상)처럼 사용하는데, 블로그 글은 간단 회고만 작성하고, 엄청난 속도로 다양한 책을 습득하고, 프로젝트를 진행한다. K의 시간 사용 및 학습 방법을 보며 느끼는 점이 많은데 나도 이제부터는 TIL은 간단하게 한 일, 5줄 이내의 회고만 작성하고 지식 습득 및 프로그램 작성에 할당하는 시간을 늘려야겠다. 회고는 이렇게 한 달에 한 번 정도 길게 하는 걸로 충분할 것 같다.

  2. 다른 사람들의 시선을 의식하게 된다. 솔직하지 않은 회고는 회고의 의미가 없다고 생각하기에, 최대한 솔직하게 TIL을 작성했고, 부족한 점을 드러냈다. 그렇지만 부족한 것도 하루이틀이지, 매일 반성만 하고 개선은 하지 않는 사람은 매력이 없지 않을까?라는 생각에 전 날 부족한 회고글을 올리면 그 다음 날에는 이를 악 물고 열심히 했고, 삽질로 인해 별로 한 일이 없다고 느껴지면 잠에 들지 못했다. TIL 작성이 아니었다면 오늘도 열심히 했어!라고 생각하며 잠들었을 것 같은데, 솔직하게 기록하고, 그 내용을 공개해야 한다고 생각하니 잠에 들지 못했다.

앞으로의 방향

앞으로는 To-do + Done 리스트 작성을 기반으로한 주간 일기 형식으로 회고 방식을 바꾸려고 한다. 오늘 우연히(?) 호눅스의 2021년 2월 1주 주간일기를 보게되었는데, 이것보다는 조금 더 살을 붙이겠지만, 이런 포맷으로 간단하게 회고하고 최대한 프로그램을 설계하고 코드를 짜는 시간 및 기술 문서를 읽는 시간을 늘려야겠다.


CS10 종료 = 새로운 시작

CS10이 종료되었지만, 후련하거나 시원한 기분이라기 보다는 더 큰 폭풍이 불기 전에 잠깐 잠잠해진 바닷가를 거닐고 있는 기분이다. 앞으로도 개발자가 되기까지 수많은 어려움이 닥치겠지만, 지금까지의 인생도 쉽게 살아지지는 않았으니 다음 폭풍도 잘 이겨낼 수 있을 것이라고 생각한다. 아직은 밝힐 수 없지만, 끝나지 않을 것 같은 어둠이 지속되던 시기도 있었는데 다시 햇빛으로 나와 사람들을 만나고 좋은 환경에서 공부할 수 있게 되었으니 감사하며 하루 하루를 살아내야겠다. 버티지 말고 즐겁게 살자!

14개의 댓글

comment-user-thumbnail
2021년 2월 6일

💬"전혀 기초 지식이 없는 분야에 대하여 구글링으로 지식을 습득하고 프로그램으로 구현하려는 시도 자체가 나의 오래된 관성에 반하는 것이었으며, 충분히 값진 경험이었다고 생각한다."

이부분 전적으로 동감합니다.
저도 매 미션마다 야생에 놓인 기분이었는데,
그 덕분에 뭐부터 해야하는지? 미약한 생존법들을 조금씩 익히게 된 것 같아요😂

1개의 답글
comment-user-thumbnail
2021년 2월 6일

글을 정말 잘쓰시네요!!! 링크 걸어둔 내용들까지 진짜 꼼꼼하신거 같아요 제 회고랑은 차원이 다르군요ㅋㅋㅋㅋㅋㅋ 대단하세요 본받겠습니다👍🏻👍🏻

1개의 답글
comment-user-thumbnail
2021년 2월 7일

제인은 일찍부터 사람들에게 좋은 영향을 많이 준것 같아서 대단하면서도 부럽네요! ㅎㅎ 새로운 여정 응원합니다!

1개의 답글
comment-user-thumbnail
2021년 2월 7일

저와 달리 다방면으로 많은 고민들을 하셨군요. jane 같은 분이 있으셔서 팀 전체적으로 학습 분위기가 좋아지는 거 같습니다. 특히 온라인으로 사람들과 공부하는거라서 "함께자라기" 라는게 말처럼 쉽지 않은데, jane은 공유하시는 글들을 통해서 알게 모르게 그 역할을 가장 톡톡히 해내고 있다고 생각해요. 덕분에 이 시간의 값어치가 훨씬 높아지고 있습니다. 감사하다는 심심한 인사의 말씀을..

이런 치열한 흔적들이 보이는 글을 보고있으면 자연스레 스스로 반성하는 시간을 가지게 되는거 같습니다. 어제 간단히 이번 글 읽고 침대에 누워서 이런저런 생각들도 했구요 ㅎㅎ 저도 저 나름대로 잘 해내고 있다고 생각이 들지만, 더 열심히 하시는 분들을 보면 역시 더 동기부여가 될 수 밖에 없네요! 코드스쿼드에서 가장 열심히하는 분을 꼽자면 jane일겁니다. 이대로 졸업까지 꾸준히 화이팅이에요. 👍

ps. 10pm-5am 취침하고 계시죠?!😆

1개의 답글
comment-user-thumbnail
2021년 2월 10일

👍👍 수고했어요 ♥️

3개의 답글