[네이버 부스트캠프 8기 Web-Mobile] 부스트캠프를 마치며

JeongYong·2023년 12월 23일
2


업로드중..

부스트캠프를 진행하면서 경험했던 것을 시간순으로 적어보려고 한다. 이 회고 글에 목적은 부스트캠프에서 배우고, 느꼈던 것을 다시 리마인드 하기 위해서다.

부스트캠프 지원

부스트캠프를 지원하기 이전에 나는 혼자서 CS, 알고리즘 공부만 하던 사람이였다. 제대로 된 프로젝트도 안 해봤고, 협업, 협력 이런 것과 담을 쌓아둔 지 오래였다. 근데 개발자에게 협업은 정말 중요하고, 나에게는 꼭 채워나가야 할 중요한 숙제였다. 그래서 나는 최고의 동료들이 모이고, 함께 성장할 수 있는 부스트캠프에 지원하게 되었고, 운 좋게 부스트캠프에 참여할 수 있게 되었다.

챌린지

제한된 시간 내에 강도 높은 프로그래밍 미션을 완수하는 경험을 반복하며 스스로 문제를 해결하는 방법을 훈련합니다. 동료들과 서로의 미션 수행을 점검하고, 문제 해결과 성장을 위해 공유하고 피드백을 주고받는 방법을 연습합니다.

부스트캠프에 여정은 챌린지부터 시작한다. 하루 단위로 미션을 완수해야 하고, 다음 날 캠퍼들과 문제 해결 과정 피드백 등을 공유한다. 공식 일정은 저녁 7시까지이지만 나를 포함한 내가 만났던 대부분의 캠퍼는 저녁 7시 이후에도 계속 학습하고, 정리하고, 미션을 수행했다. 모든 캠퍼가 정말 열정이 넘쳤고, 나 또한 살면서 가장 열심히 했던 것 같다. 내가 챌린지 과정을 진행하면서 가장 어려웠던 것은 캠퍼들에게 내 문제 해결 과정을 공유하는 것이었는데, 이런 경험이 익숙치 않다 보니 그랬던 것 같다. 그런데 어느 순간 어렵지 않게 공유하고 있는 내 모습을 봤을 때 성장했다는 느낌이 확 와닿으면서 정말 뿌듯했다.

챌린지 과정에서 배운 것은 크게 다음과 같다.

문제 해결 방법

문제를 체계적으로 해결하는 방법을 배웠다.

  1. 문제를 정확히 이해해야 한다.
    그래야 구현해야 할 것이 명확히 보인다.
  2. 문제를 이해하는 과정에서 불확실성을 제거해야 한다.
    모르는 개념이 나오면 이해할 때까지 학습을 시작한다.
  3. 구현해야 할 것을 나열해 본다.
    이 과정에서 최대한 함수, 기능 단위로 나누는게 중요하다.
  4. 구현 해나간다.

위 같은 체계적인 방법으로 미션을 해결해 나갔고, 매우 효과적이었다. 어느 순간 미션만이 아닌 어떤 문제라도 같은 방법을 적용해 나가는 내 모습을 보았다. 이러한 좋은 습관을 들이는 것이 얼마나 중요한지 깨닫게 되었다.

성장하는 방법

내가 성장하기 위해서는 미션을 해결하고 끝이 아니다.
학습했던 개념과 어떤 문제에 봉착했고, 그것을 어떻게 해결했는지를 정리하는 과정이 필요하다.
정리하면서 얻을 수 있는 이점은 다음과 같다.

  1. 몰랐던 개념을 한 번 더 각인시켜 준다.
  2. 문제를 해결하는 과정을 명확히 알 수 있게 해주고, 더 효율적인 방법을 생각할 수 있게 해준다.
  3. 정리한 것을 문서화함으로써 망각으로부터 지켜준다.

여기서 학습했던 개념을 정리할 때는 그대로 따라 쓰는 게 아닌 나만의 언어로 재구성하는 것이 중요하다. 그래야 온전히 내 지식으로 만들 수 있다.

소통하며 함께 성장하기

챌린지 과정에서는 아침마다 미션을 해결하면서 알게 된 것과 문제 해결 과정을 캠퍼와 공유하는 시간을 가진다. 나는 다른 캠퍼의 문제 해결 과정을 보면서 다양한 문제 해결 방법을 알 수 있었고, 몰랐던 것을 알게 되었다.
이러한 소통의 힘이 내 성장을 더 가속화 시킨다는 것을 느꼈고, 나도 자주 소통하며 캠퍼에게 긍정적인 영향을 줘야겠다고 생각했다.

회고의 중요성

부스트캠프에서는 금요일마다 회고를 작성한다.
처음 나는 회고를 왜 써야 하지?? 라는 의문이 들었다.
근데 회고를 작성하면서 내가 잘했던 것과 못 했던 것을 명확히 알 수 있었고, 목표지점까지 가는 방향을 수정할 수 있는 정말 강력한 힘이 있다는 것을 알게 되었다.

만약 내가 회고를 쓰지 않았다면, 그 방향이 맞는 줄 알고 계속 갔을 것이고, 결국 일이 잘못된 것을 알았을 때는 많은 시간을 허비하지 않았을까 싶다.

여기서 가장 중요하다고 느꼈던 것은 내가 못했던 것을 정확히 인지하고, 보완하기 위한 의식적인 노력이 꼭 필요하다는 것이다.

결국 메타인지를 높이기 위한 부스트캠프의 큰 그림이 아니었나 싶다.

멤버십

챌린지에서 뛰어난 성장을 보여준 참가자는 멤버십에 입과할 수 있습니다.
본 과정은 8주의 학습스프린트와 6주의 그룹프로젝트로 구성되어 있습니다.

나는 멤버십에 입과 할 수 있었는데, 운영진 외 아무도 합격 기준을 모른다.
내가 생각했을 때는 미션 해결하고, 학습 정리하고, 만약 못했다면 주말 시간을 이용해서 꾸준히 하는 모습을 보여주면 운영진분들이 좋게 봐주지 않나 싶다. 당연히 출석률도 좋아야 한다.

학습스프린트

학습스프린트는 실제 서비스 개발에 필요한 도메인 지식과 기술을 학습하고 실습해 보는 과정이다.
부스트캠프는 정말 좋은 게 다 떠먹여 주지 않는다. 스스로 성장하는 방법을 어느 정도 유도만 해주는 느낌이다. 정말 야생이지만 부스트캠프가 목표로 하는 지속 가능한 개발자를 양성하기에는 최적의 방법이라고 생각한다.

내가 학습 스프린트에서 배운것은 크게 다음과 같다.

딥다이브

미션에 필요한 라이브러리를 직접 구현해 나가면 머릿속에는 "이게 왜 이렇게 동작하지?" "이게 왜 필요한 거지?" 이런 식의 의문이 자연스럽게 떠오르기 시작한다. 이 과정에서 기술에 대한 깊은 탐구가 이루어지고 이해도 또한 자연스럽게 향상된다.
그러면서 나는 다음과 같은 능력이 향상되는 것을 느꼈다.

  1. 코드 읽기
  2. 코드를 더 효율적으로 작성하기
  3. 코드, 기술을 남에게 설명하기

그래서 정리하자면

  1. 얕은 이해로는 좋은 코드를 작성할 수 없다. 그러면 깊은 이해가 필요한데 이때 필요한 게 딥 다이브이다.
  2. 항상 "왜?"를 달고 살자, 딥다이브는 거창하지 않다. 그냥 "왜?"라는 한마디면 충분하다.
    "왜 이렇게 작동하는지", "왜 이게 필요한지" 이러한 의문이 들면 그것이 해결될 때까지 반복한다.

그룹프로젝트

그룹프로젝트는 캠퍼들이 그룹을 이루어 완성도 있는 서비스를 개발한다. 부스트캠프에서 챌린지, 학습스프린트를 거치면서 배웠던 것을 실제 실무 환경에서 적용해 보는 과정이라고 보면 될 것 같다. 이 과정을 나는 백엔드 개발자로 참여했고, 한 번도 사용해 보지 않은 기술을 적용해야 하기에 막막했다. 하지만 지금까지 해왔던 과정도 똑같기 때문에 두렵지 않았고 오히려 기대됐다.

그룹프로젝트는 애자일로 진행되는데, 애자일을 함께 자라기라는 책을 읽어서 알고만 있을 뿐이지 구체적으로는 알지 못했다. 하지만 부스트캠프를 통한 스프린트, 데일리스크럼 진행하다 보니 흐릿했던 것이 선명해지기 시작했고, 그 과정에서 다음과 같은 다양한 것을 배우고 느낄 수 있었다.

다양한 시각으로 보기

기존에 나는 내 입장에서만 코드를 바라보고 구현했다. 하지만 부스트캠프를 하면서 나만 알 수 있는 코드는 그리 좋지 않다는 걸 깨달았다. 특히 여러 개발자가 협력하는 그룹프로젝트는 더욱더 그렇다.
그러면 어떻게 코드를 구현해야 할까?

동료 개발자 입장에서 코드를 바라본다. 그러면 이 코드가 이해하기 쉬운지 간단하게 알 수 있는 안전장치가 될 수 있다.

또한 유저 입장에서 바라 보는 시각도 중요하다.

유저 입장에서 우리의 App을 사용했을 때 경험을 충분히 생각해 본다.

또 내가 백엔드이기 때문에 프론트엔드 개발자 입장에서 바로보는 시각도 중요하다.

프론트엔드 개발자 입장에서 서버의 Api를 사용할 때 경험을 충분히 생각해 본다.

이렇게 다양한 시각은 어떤 것에도 적용할 수 있고 협력에 있어서 필수적이라고 생각한다.

진정한 협력이란?

나는 그룹프로젝트를 진행하기 전에 협력이라는 것에 별다른 생각이 없었다. 단순히 함께 일하는 것 정도로 생각했다. 하지만 그룹프로젝트를 하면서 진지하게 생각하게 되었고, 내가 깨달은 것은
진정한 협력이란 개인의 기술, 지식, 경험, 자원을 서로 공유하고, 서로의 차이점을 존중하면서 공동의 목표인 프로젝트를 구현해 나가는 것이라고 생각한다.

딥다이브를 더 체계적으로 확실하게

그룹프로젝트를 진행하면서 기존 딥다이브를 더 체계적으로 확실하게 재정의할 수 있었다.

  1. 우리가 원하고자 하는 것이 무엇인가?
  2. 원하는 것을 이루고자 어떠한 것들이 필요한가
  3. 그러한 것들중 그것을 선택한 이유는?
  4. 다른 팀원들을 충분히 납득시킬 만한 이유인가?
  5. 그것을 선택했을 때 문제점 또한 파악했는가?

이러한 체계적인 방법으로 더 완성도 있는 서비스가 만들어진다고 생각한다.

마치며

7월부터 시작한 부스트캠프가 끝이 났다. 정말 힘들기도 했지만, 확실히 얻어가는 건 정말 많았고, 한층 더 나를 인간으로서 개발자로서 성장시켜 줬다. 부스트캠프를 하지 않았다면 내가 배웠던 것을 깨닫는 데 더 긴 시간이 걸렸을 지 모른다. 이러한 소중한 경험을 할 수 있게 해준 부스트캠프 운영진분들 마스터분들 캠퍼분들 너무 감사하다. 특히 마지막 그룹프로젝트를 함께한 팀원들 너무 감사하고, 배울 것도 많은 훌륭한 팀원이었다.

이제 부스트캠프는 끝났지만 내 개발 인생은 시작이다. 부스트캠프에서도 강조한 지속 가능한 개발자가 되기 위해서 지금까지 배웠던 것을 자주 리마인드하고 어딜 가서든 실천해 보려고 한다.

부스트캠프 8기 정말 최고였고, 참여한 모든 분들 고생했다고 전하고 싶다.

boostcamp Web-Mobile

0개의 댓글