부스트캠프2020

부스트캠프2020 멤버십을 마치며

한땀코딩 2020. 12. 27. 20:51

부스트캠프란

이 블로그에서 부스트캠프2020 챌린지를 후기글에서도 소개한 바 있듯이, 부스트캠프는 네이버 커넥트 재단에서 2016년부터 진행하고 있는 코딩 교육 프로그램입니다. 한 달간의 챌린지 기간을 거쳐 선발된 인원은 약 4개월의 멤버십 과정을 진행하게 됩니다. 코스는 JavaScript를 기반으로 한 웹, Swift IOS를 기반으로 하는 앱 코스 두 가지이며, 제가 선택한 것은 웹 풀스택 코스입니다. 멤버십은 8월부터 12월 말까지 대략 4개월 정도의 기간 동안 진행되었습니다.


무엇이 바뀌었을까

부스트캠프의 상세한 교육 내용을 적기보다는, 후기 및 회고의 느낌인 만큼 시작할 때의 저와 비교하여 지금의 저는 어떤 것이 바뀌어있는지를 기록해보면 어떨까 싶습니다. 사실 아직 글을 적는 현시점에서는 취업을 한 상태는 아니기 때문에 표면적으로는 드라마틱한 상태 변화는 없어 보일지도 모르겠습니다. 그래도 개인적인 기록의 차원에서, 또 혹시나 검색어를 통해 부스트캠프를 수료하는 사람들은 어떤 생각을 가지고 있는지 궁금하신 분들을 위해 간단하게나마 적어보겠습니다.

하나. 풀스택은 되어가는 것

부스트캠프를 거치면서 커리어를 선택하는 주니어의 입장에서 가장 큰 변화는 웹 프론트엔드 개발자로 진로의 방향을 굳힌 점입니다. 웹을 처음 배우던 시기에는 막연하게 서비스 전반을 이해하고 배포하는 과정까지가 즐거워서 백엔드를 희망했고, 부스트캠프 멤버십 초기에는 배워보니 서버도 클라이언트도 다 나름의 즐거움이 있어서 풀스택을 해야지!라고 생각했습니다. 하지만 웹이라는 어쩌면 엄청나게 거대한 분야에서, 모든 것을 다 아는 개발자라는 건 사실상 허황된 얘기라는 생각이 들었습니다. 기업들이 분명 분야별로 사람을 나눠서 뽑는 것에도 이유가 있을 것이고, 제네럴리스트는 여러 분야를 얕게 아는 사람이 아니라 여러 분야에 스페셜리스트가 되면서 자연히 완성되어가는 모습인 것 같습니다. 그래서 시작점을 하나 잡아 스페셜리스트가 된다면 '사용자'와 조금 더 가까이에서 직접적으로 연결 창구가 되는 클라이언트 쪽에 꼭 도전해보고 싶어졌습니다.

 

디자인 시스템과 Atomic Design

 

boostcamp-2020/Project02-A-RealTime-Translation-Messenger

파파고 API를 이용한 실시간 번역 채팅 웹/앱 서비스입니다. Contribute to boostcamp-2020/Project02-A-RealTime-Translation-Messenger development by creating an account on GitHub.

github.com

부스트캠프 최종 프로젝트로 진행했던 실시간 번역 메신저 푸파고의 깃헙 링크입니다. 해당 프로젝트를 하면서 단순히 React 하나만이 아니라, Redux, Storybook 같은 추가적인 기술과 아토믹 디자인을 적용해볼 수 있었습니다. 대학 시절에도 전공 때문에 가볍게 UI/UX 작업을 많이 했었는데, 이번엔 직접 디자인 내용으로 아토믹 디자인을 도입해 개발하다 보니 웹페이지를 조립하는 재미가 상당히 짜릿했습니다. 반응형까지 신경 쓰지 못했던 건 아쉬움으로 많이 남지만, UI 영역을 설계하여 재활용할 수 있게 만드는 디자인 시스템을 본격적으로 도전해보고 싶습니다.

둘. 들인 시간은 거짓말하지 않는다

(물론 패시브로 머리가 좋으면 시간을 조오금 덜 들여도 되는 건 확실한 거 같습니다 ^^;;)

비전공과 전공자의 가장 큰 차이는 절대적으로 들인 시간의 차이라고 생각합니다. 모든 일이 그렇겠지만, 개발은 특히나 들인 시간에 비례하여 실력이 성장한다는 단순한 이치를 더욱 극명하게 보여주기도 하는 분야인 거 같습니다. 특히, 기본기라고 불리는 알고리즘, 자료구조, CS 등은 끊임없이 단계를 올려가며 학습하고, 자료를 찾아보는 것 외엔 특별한 방법은 없지 않나 싶습니다.

이런 기본기와 관련하여 또 하나 느끼는 건, 특정 기술을 사용할 때 아래 세 가지 정도는 알아보고 시작하는 것이 필요하다는 것이었습니다.

  1. 이 기술은 어떤 문제를 해결하고자 등장했는가?
  2. 공식 문서에서 알려주는 사용 방법은 무엇인가?
  3. 기술의 작동 원리는 어떻게 되는가?

물론 시간에 쫓기다 보면 구현하는 데 급급한 경우가 많지만, 앞으로는 기술의 근간이 되는 원리를 이해하면서 사용해보려고 합니다. (특히 1번!)

셋. 남는 건 기록뿐

기록의 중요성은 매일매일 깨닫지만 이번에는 그중에서 무엇을 기록할 것인지에 대해 멤버십 프로젝트를 거치면서 좀 더 명확해진 느낌이 듭니다.

  1. 보일러플레이트
    • 개발을 하다 보면 비슷한 코드를 반복하여 작성할 일이 많습니다. 혹은, 어떤 문제를 해결하거나 함수를 작성했을 때, 이걸 이후에 다시 찾게 되는 경우가 많은데 이때 사용한 코드를 보일러플레이트화 시켜서 모아둘 필요가 있을 거 같습니다. 코드부터 시작해서 설정 파일, 스크립트 같은 것도 모두 포함되겠죠.
  2. 개발 일지
    • 이번 최종 발표에서 개발일지와 문서화의 부족에 대해 살짝 언급이 있었는데, 개인적으로 프로젝트 진행 중에 아쉬움이 많이 남았던 부분이기도 합니다. 노션을 통해 공유는 실시간으로 하고 있지만, 일별 개발 진척상황이나 스프린트 회의가 부족해서 순수하게 개발 경험에 대한 기록이 상대적으로 부족했습니다. 소위 말하는 TIL 같은 개념이 될 텐데, 이걸 의무감에 작성하는 것이 좋지 않다고는 느끼지만 동시에 이렇게 억지로라도 시작하지 않는다면 절대로 습관이 될 수 없는 것 중에 하나라고 생각합니다. 특히 프로젝트를 진행한다면 팀으로서 맞닥뜨린 문제는 함께 해결하고 그 해결 과정을 꼭 기록화하면 좋을 거 같습니다.
  3. 블로그
    • 블로그는 지인을 통해서도 그 중요성을 매번 강조받기도 하고, 개발자 커뮤니티에서도 추천하는 좋은 기록 방법 중 하나입니다. 관련해서 저도 캠퍼 테크 세미나에서 가볍게 발표를 했는데, 아직도 습관적으로 작성하는 것이 쉽지는 않습니다. 개인적으로 보일러플레이트와 블로그는 그 성질이 달라야 한다고 생각하고, 그냥 코드를 적어놓기보다는 개발 일지를 좀 더 타인이 이해하기 쉽게 정리하여 정제한 뒤 공개하는 공간이 블로그라고 생각합니다. 항상 고민하는 부분은, 이 글을 나와 비슷한 문제를 가진 사람이 찾아 들어와서 읽었을 때 그 고민을 해결해줄 수 있을까?라는 점인데, 글도 완벽/완성의 개념이 없어서 항상 퀄리티와 시간 사이에서 아슬아슬하게 줄타기를 하는 기분이 듭니다.

넷. 비교는 끝이 없다

멤버십은 마인드 컨트롤과의 싸움이기도 했습니다. 세상엔 저보다 잘하는 사람이 너무 많고, 그만큼 또 저를 부러워하는 사람도 분명히 있을 겁니다. 하지만 항상 비교가 되는 건 어쩔 수 없는지라, 하루에도 몇 번씩 울적해졌다가 기분이 풀렸다가를 반복하곤 했는데 결론은 결국 내가 들인 시간이 적으니 그만큼 더 노력해야지, 로 귀결되었습니다. 누군가 나보다 잘하든 못하든 결국 평가를 받게 되는 건 저 개인이기 때문에 비교란 건 참 소모적인 일이지 않나 싶습니다.

어떻게 보면 세속적이지만 이런 우울감이나 무력감이 들 때 가장 간단한 해결책은, 그냥 시간을 더 생산적으로 쓰면 됩니다. 물론 말로만 쉬운 일이지만요! (ㅎㅎㅎ...)

마지막. 뭔가 찝찝하면 무조건 해결하고 가자

음... 이 정도는 괜찮겠죠...?라고 말한 거 치고 이번 팀 프로젝트에서 제대로 해결된 것이 단 하나도 없습니다. 이건 회사 생활에서도 분명 깨달았던 건데, 직군이 바뀌면서 또... 반복하고 있네요.

제일 큰 사고는 아무래도 git이 꼬여서 갑자기 코드가 통째로 사라지는 이슈였습니다. 물론 깃의 특성상 모든 건 복구가 되지만, 한쪽을 복구하면 한쪽이 꼬이고... 또 이걸 번복하기 위해서 github의 revert 기능을 이용했는데, 이렇게 하면 그냥 변경 사항을 다시 변경사항으로 덮는 거라 본질적으로 커밋이 꼬인 문제는 해결이 되지 않습니다.

잘못된 브랜치로 푸시가 됐다면 (애초에 이렇게 할 수 없도록 막는 것이 가장 중요하겠지만요!) 그 자리에서 바로 해결을 하고 가야 이후 커밋이 꼬여서 프로젝트 전반을 수습할 일이 없어집니다. '나중에 해야지'가 절대 안 되듯, '이 정도는 괜찮겠지'도 코드에서는 절대 있을 수 없는 일이라고 생각합니다.


마치며

이런 감상 이외에도 당연히 기술적으로도 많이 성장했습니다. 이제는 JavaScript로 어떤 서비스를 처음부터 끝까지 만들어볼 수 있는 토대를 마련한 기분이 듭니다. 시작 전에는 혼자서 공부하라고 하면 엄두도 못 내던 것들부터 시작해서, 개발을 팀과 함께 하면서 정말 많이 배우고 또 알려주기도 한 거 같습니다.

결과적으로 적고 보면 늘 주변에서 듣는 뻔한 소리 같기는 합니다만, 사람은 언제나 직접 겪어봐야 깨닫는 모양입니다. 부스트캠프 동안 정말 좋은 분들은 만나고, 또 제게 성장에 대한 자극을 준 팀원들과 함께할 수 있어 정말 감사한 5개월이었습니다.