코드스쿼드 CS 과정 회고

Snoop So·2023년 3월 5일
0
post-thumbnail

3개월만의 취업, 그리고 번아웃

작년 초, 부트캠프를 수료한 후 개발 공부를 시작한지 고작 3개월째에 모회사에 프론트엔드 개발자로 입사를 하게 되었다. 경력이 하나 없었던 내가 감사하게도 입사할 수 있었던 건 회사에서 디자이너로서의 경력을 크게 사주셨기 때문이었다.

입사 시점 당시의 나는 대략 위와 같은 이런 상태였다. 내가 어느 정도 알고 있다고 생각했는데 사실 아무 것도 몰랐다. 그럴 수 밖에 없었던 건 부트캠프에서는 구현하는 방법만 알려줄 뿐, 그게 왜 그렇게 설계되었는지 알 필요가 없었다.

회사에서는 Svelte, Typescript를 메인으로 사용하고, 특히 컴포넌트는 별도의 레포에서 바닐라 자바스크립트의 Custom Component를 사용하고 있었다. React마저 익숙하지 않은 상태에서 처음 배우는 프레임워크를 적용해야 했다. 덕분에 회사를 다니는 동안 매일 새로운 좌절감을 맛볼 수 있었다.

분명 개발을 시작할 때쯤의 나는 이렇지 않았었다. 내가 직접 만든 컴포넌트들을 기능하게 만드는 건 너무나 즐거운 일이었고, 그렇기 때문에 기존의 커리어도 과감히 포기하고 이 길을 선택했다. 하지만 전공자로 시작해 수월하게 진행했던 디자인과 달리 개발은 일단 모르는 것이 너무 많았고 결국 크게 번아웃이 왔다. CS 지식이 없어 내가 겪었던 어려움을 추려보자면 다음과 같다.

CS 지식이 없어 겪었던 어려움

  1. 모르는 단어가 너무 많았다.
    동료 개발자들이 사용하는 단어 자체가 생소한 것이 많았다. 또, 공식 문서를 읽었을 때 이해하기 너무 어려웠다. 일례로 테스트 코드 작성을 위해 Jest를 도입해보려고 했지만 계속 해당 파일의 경로를 읽어오지 못하는 문제를 겪었다. 공식 문서를 읽어보려고 노력했지만 모르는 단어가 너무 많아 좌절했다.
  2. 다른 사람의 코드를 이해하기 어려웠다.
    지금 생각해보면 동료들은 어떤 패턴을 가지고 개발을 했는데, 나는 그런 것들을 알지 못해 다른 사람의 코드를 이해하는데 더 많은 시간이 걸렸던 것 같다.
  3. 혼자서 버그를 해결하기 어려웠다.
    자바스크립트 내부 동작 원리를 이해하지 못하다보니 버그가 발생할 경우 어디서부터 디버깅을 해야할지 감이 오지 않았다. 내가 작성한 코드에서는 어김없이 버그가 발생하곤 했다.
  4. 발생하는 문제들이 개선되지 못하고 계속 반복되었다.
    신입이 못하는 건 어찌보면 당연할 수 있지만, 개인적으로 스스로 회사 다닐 때의 나를 평가해봤을 때 가장 아쉬웠던 건 단점을 개선되는 모습을 보여주지 못했던 점이라고 생각한다. 무엇을 공부해야 이 문제들을 근본적으로 해결할 수 있는지 알지 못하다보니 악순환이 반복되었다.

개구리를 해부하지 말고, 만들어보기

사실 퇴사 전까지만 해도 걱정이 더 앞섰다. 취업 시장이 급속도로 얼어 붙고 있었고, IT 업계의 대량 해고 사태로 경력자들이 대거 이직을 준비하는 상황에서 신입 개발자의 취업은 더 어려워질 것이 불 보듯 뻔했다. 이제 막 쌓여가고 있는 작고 소중한 개발 경력과 꽤 괜찮은 연봉을 버리고 나오는 결정을 하기까지 정말 많이 망설였던 것 같다. 하지만 이미 과정을 들었던 남자친구의 강력한 추천, 그리고 멘토 분의 조언으로 결국 퇴사를 하고 코드스쿼드 과정을 시작하게 되었다. 그리고 걱정은 오래가지 않았다. 과제만 했는데도 엄청 성장했기 때문이었다. 입학 과제는 Node.js를 이용해 태양계를 구현하는 것이었다.


내 입학 과제. 각 행성들은 공전 주기에 맞춰서 움직인다 :)

시험에 합격하고, 드디어 본 과정을 시작했다. CS 과정은 정말 즐거웠다. 어설픈 실무를 경험하고 난 후라 더 몰입할 수 있었다. CS 과정을 관통하는 큰 기조는 개구리를 해부하지 말고, 만들어보는 것이었다. 이게 무슨 말이냐 하면... 나는 CS 과정에서 이런 것들을 만들었다.

  • Linked List 구현하기
  • CPU 구현하기
  • 메모리 구현하기
  • XML 파서 구현하기
  • 프로세스 구현하기
    등등 ...


물론 대략 이런 허접한 모습이긴 했다.

즉, CPU를 이해하기 위해 CPU의 구성요소들을 하나 하나 뜯어보며 외우는 것이 아니라, 그냥 그걸 직접 만들어버리는 것이다. 솔직히 고백하자면 CS 과정을 들으면서 이론 공부에는 제대로 집중 못했다. 그렇지만 이것들이 실제로 어떻게 동작하는지는 제대로 알게 되었다. 여기에 코딩에 자신감이 붙은 건 덤이었다.

힘들었던 점

CS 과정에서 가장 힘들었던 점은 인풋이 진짜x1000000000 너무 많다는 것이다. 사실 이건 당연하다. 왜냐하면 컴퓨터 공학과에서 최소 2년은 족히 들어야 할 내용들을 2달 안에 알려주겠다는 거니까. 그런데 여기에 난이도가 꽤 어려운 코딩 미션까지 해결해야 하다보니.. 어느새 개념 공부는 뒷전이 되었다. 면접 준비하면서 후회를 엄청나게 할 느낌이 벌써부터 온다. 수업을 다시 복습하며 꾸준히 공부해야겠다. 한 동료가 github에 자신이 공부한 것을 목차로 작성하고, 해당 목차에 작성한 글들을 링크하여 깃허브에 올려둔 것이 인상깊어서 나도 그렇게 정리해보려고 한다.

그래서 문제는 해결되었을까?

  1. 이제 모르는 단어를 봐도 무섭지 않다.
    하지만 이렇게 코드 작성에 집중하며 공부한 것을 후회하진 않는다. 막힐 때 무엇을 공부해야 하는지 키워드를 얻었기 때문이다. CS 과정 전에는 코드를 작성하다 막혔을 때 어떤 것부터 풀어나가야 하는지 몰라 포기를 했다면 이젠 그렇지 않다. 오히려 내가 문제 상황이 발생했을 때 그 문제와 연관되어 키워드를 한번 더 복습하게 된다면 더 와닿고 심도있게 이해할 수 있게 된다.
  2. 다른 사람의 코드를 드디어 이해하게 되었다.
    사실 난 CS 과정 전에는 Class를 어떻게 쓰는 건지도 몰랐다. 개발 팀장님이 OOP를 공부해오라고 해서, 인터넷에 써있던 개념 정의 대충보고 아~ 이해했어 시전했던 기억이 난다. 객체 지향 프로그래밍과 함수형 프로그래밍 수업을 듣고 난 뒤, 그 때 동료들이 어떤 생각을 갖고 그런 코드를 짰었는지를 이해하게 되었다.
  3. 디버깅에 자신감이 붙었다.
    자바스크립트 엔진의 내부 구조를 공부하고, Node.js의 여러 타입들, 내장 함수들을 공부하다보니 내 오류가 어디에서 발생되었겠구나, 하는 감이 잡히기 시작했다. 그리고 애초에 디버깅에 유리하게 코드를 작성할 수 있게 되었다. 바로 입력(View), 분리/검증(Controller), 저장/생성(Use-Case), 형식/변환(Presenter), 출력(View)으로 로직을 분리하는 것이다. 이건 사실 회사 다니면서 개발 팀장님께서 알려주셨던 방법이었는데 그때는 어떻게 해야할지 몰라 적용하지 못했었다. 사실 이건 수업에서 지나가듯 나온 내용이었는데, 저걸 듣고 바로 코드에 적용해보니 버그가 생겼을 경우 어디에서 오류가 발생하는지 잡아내기가 정말 수월해졌다.
  4. 설계를 할 수 있게 되었다.
    하나의 완결된 프로덕트를 매주 2개씩 만들어내야 하는 환경이다보니, 이제 설계는 이렇게 하는 게 좋겠다, 하는 감이 온 것 같다. 단적으로 작년부터 진행하던 개인 프로젝트를 다시 설계하고 있는데 처음부터 로직을 다시 작성하고 있다. 예전에는 설계도 없이 무작정 코드를 작성했다면, 이제는 큰 그림을 그려가며 코드를 작성할 수 있게 되었다고 느낀다.

앞으로의 목표

  1. 코드스쿼드 무사히 수료하기
    내일부터는 자바스크립트, 리액트를 심도있게 공부하게 된다. 코드스쿼드를 모두 마무리 했을 때, 구현한 코드에 대해 왜 그렇게 구현했는지 명확한 답을 낼 수 있는 개발자로 성장하고 싶다.
  2. 개인 프로젝트 완성
    코드스쿼드를 끝내기 전까지 개인적으로 프로젝트 한 개를 완성하는 것이 목표이다. 주니어 디자이너였던 시기를 떠올려보면 혼자 완결된 프로덕트를 만들었을 때 가장 많은 자신감이 붙었던 것 같다. 이런 자신감이 붙지 않은 채로 입사를 하게 되었을 경우 회사에서 겪었던 번아웃이 반복될 것이라 생각한다.
  3. CS 복습 및 심화 학습: 알고리즘, 데이터 구조 공부하기 (+네트워크)
    한 코드스쿼드 선배와 커피챗을 했었는데, 모든 것을 얕게 외우기보다는 특정 영역을 정해두고 심도있게 파볼 것을 조언해주셨고 나도 그게 옳다고 생각한다. 코딩 테스트 준비 겸 알고리즘과 데이터 구조를 심도 있게 공부하고, 추가적으로 네트워크에 대해서도 가볍게 공부해볼 예정이다.
  4. 방통대 1학기 무사히 수료하기
    어쩌다 올해 신입생이 되어버렸다. 가장 궁금했던 C언어를 배울 좋은 기회가 될 것 같다. 다른 일정이 우선순위가 높기 때문에 우선 졸업이 목표이긴 하지만, 시간이 허락하는 내에서 최선을 다해볼 예정이다.

0개의 댓글