April 01, 2023
취업 준비를 하다가 12월에 우아한테크코스(이하 우테코) 5기 프론트엔드에 합격을 해서 현재 레벨1을 끝마쳤다. 사실 프리코스때까지만 해도 지원자가 너무 많아서 기대를 하나도 안했었다. 이런 개발 몰입 경험을 가져보고 싶었는데 우테코에서 원없이 이루는 중이다! 다니는 동안에는 너무 정신이 없어서 회고글을 하나도 작성하지 못했는데 기억이 휘발되기 전에 레벨 1 회고를 느낀점 위주로 해보려고 한다.
우테코는 그냥 개발을 잘하는 사람보단 문제 해결 역량을 키워내는 것을 목표로 한다. 그래서 개발 외적으로 하는 소프트스킬 관련 활동들도 많은데 그 중 하나가 온보딩 기간에 하는 연극이다. 나를 포함한 많은 크루들이 연극이라는 단어를 듣고 기겁을 했다. 특히 내향형 인간인 나에게 처음 보는 사람들과의 연극이란…🥹
하지만 지금 생각하면 미화된건가 싶기도 하지만 연극이 아이스브레이킹에 짱이었다. 연극을 준비하면서 웃고, 떠들고 마치 고등학생으로 돌아간 기분이었다. 그때 같이 연극을 했던 온보딩 조원들과는 “온보딩 망령들”로 불리면서 엄청 편한 사이가 되었다. 어제 방학식날에도 같이 보드게임을 하고 방탈출도 했다.
말그대로 매일 조원들과 30분씩 데일리 미팅을 진행한다. 데일리는 그날 엠씨에 따라 달라지는데 엠씨들이 가져온 주제로 떠들거나 게임을 하거나 자유롭게 진행한다. 처음엔 내향형이라 데일리에서 얘기하는 것도 되게 부끄럽고 낯을 많이 가렸는데 지금은 그냥 가벼운 장난을 칠 수 있을 정도로 친해졌다! 우리 조는 주로 게임을 했는데 다들 엄청 적극적이고 재밌다! 한 가지 아쉬운점이 있다면 데일리조랑 같이 회식을 못한 것…🥲 다들 레벨2에서도 잘 지내길…
우테코는 레벨마다 하나의 글을 작성해서 제출해야한다. 주제는 레벨마다 다른데 레벨1은 “우아한테크코스 한 달 생활기”를 주제로 작성해야 했다. 글을 작성하면 크루들에게 리뷰요청을 하고 모두가 approve 할 때 까지 피드백을 바탕으로 글을 수정한다. 평소에 글을 잘 안써서 쓰는 것이 많이 힘들었다. 다른 크루들 글 구경도 했는데 정말 필력이 좋은 크루들이 많았다.
미션이 끝나는 날마다 말하기 활동도 진행한다. 미션에서 학습한 내용을 바탕으로 학습로그를 작성해 페어와 함께 얘기하고 서로 질답하는 시간이다. 나는 웹 컴포넌트와 이벤트루프에 대해 공부한 내용을 작성했다. 페어가 내가 공부한 내용에 질문을 하면 내가 몰랐던 내용도 공부할 수 있어서 좋았다.
프리코스 끝나고 푹 쉬었던 크루들을 위해 기억을 다시 상기시킬 수 있었던 미션이었다. 도메인 로직과 뷰 로직을 분리하기 위해서 MVC 패턴을 사용했다.
처음으로 콘솔→웹UI로 구현했던 미션이었다.
웹UI로 넘어갈 때 도메인 로직을 하나도 건드리지 않아서 리뷰어의 칭찬을 받았었다ㅎㅎ
이전에는 콘솔 기반으로 구현하다가 처음으로 웹으로 구현했던 것이라 innerHTML
, insertAdjacentHTML
,이벤트 핸들링, TDD 등의 고민과 학습을 진행했다. 항상 테스팅은 했었는데 이번에 처음으로 TDD로 테스트를 먼저 작성하고 기능을 구현했다. 형체 없는 도메인을 테스트 하려니 어렵고 시간도 오래걸리긴 했지만 기능목록이 잘 작성되어있고 익숙해지니까 재미있었다. 특히 기능을 구현하고 먼저 작성한 테스트가 통과되었을 때의 짜릿함은 잊을 수 없다👍 물론 TDD의 단점은 시간이 많이 필요하다는 것이다.. 이 미션 이후로 TDD를 다시는 볼 수 없었다..🥲
구조에 대해 고민을 하다가 받았던 기분 좋았던 피드백 😆
컴포넌트에 대해 고민을 해 볼 수 있었던 미션이었다. 나는 개발자가 문제 해결을 하는 사람이라고 생각하고 그 중에서 프론트엔드 개발자는 복잡한 구조를 단순한 블록으로 나누는 문제 해결을 한다고 생각한다. 미션을 진행하면서 크루들 사이에서도 컴포넌트를 어떻게 정의할지 많은 의견이 오갔는데, 나는 컴포넌트가 외부와 분리되는 고유한 기능, 스타일 낮은 복잡도를 가져 재사용성할 수 있는 조각이라고 생각했다. 컴포넌트의 재사용성이 가능한 이유가 낮은 복잡도를 가진다고 생각을 했다.
그리고 이 미션부터 타입스크립트를 사용하기 시작했다. 나는 나름 타입스크립트를 사용해봤다고 생각했는데, 생각보다 타입스크립트의 세계는 넓었다.. 그래서 스터디를 시작했고 현재 이펙티브 타입스크립트 책을 읽고있다. 책 내용이 어렵지만 스터디원들이랑 같이 이야기할 수 있어서 재미있게 진행중이다.
마지막으로 비동기와 사용자 경험에 대해 고민을 해 볼 수 있던 미션이었다. TDMB에서 제공하는 영화 api를 fetch 해와 화면에 보여주고 모달, 별점 남기기, 무한 스크롤, 반응형, 스켈레톤UI, 에러핸들링 등 정말 많은 기능을 구현했다…!!!
비동기 로직에서 에러를 잡을 때 처음에는 then-catch
구문을 사용했는데, then
구문안에 스켈레톤 ui 로직과 movie fetching로직이 같이 들어가게 되어 체이닝이 너무 길어져서 async-await
과 try-catch
를 사용했다. 확실히 비동기 로직이 동기적으로 보이게 되어 훨-씬 깔끔한 코드가 되었다.
그리고 영화 미션은 UX에 대해서도 요구사항이 있었기 때문에 크루들끼리 서로 열심히 QA를 해주고 다녔다ㅋㅋ 사소한 오류라도 한 번 보게 되면 꼭 고쳐야하는 병이 있기 때문에 꽤나 고생했다…
사용자가 화면을 보다가 네트워크가 오프라인이 되면 이런 모달창도 띄워봤다. 미션을 하면서 어떤 것이 더 좋은 UX가 될까? 이런 고민을 많이 했던 것 같다. 예를 들어 스켈레톤 UI가 각 영화 이미지마다 구현되어서 먼저 로딩된 것들을 보여줄지, 아니면 전체가 다 로딩되었을 때 한꺼번에 렌더링을 할 것인지 등..
우테코에서 미션의 1단계는 페어프로그래밍으로 진행하고, 2단계부터는 페어와 헤어져서 혼자 진행하게 된다. 크루들이 가장 떨려하는 시간이 페어 매칭 시간이다. 페어프로그래밍을 거의 처음 해봤는데 정말 재밌고도 어려운 활동이다. 특히 페어와 코드 스타일이 다르면 서로 맞춰나가는 과정이 참 힘든 것 같다. 지금까지 페어들과는 딱히 힘든 점은 없었고 내가 모르는 부분들을 많이 배울 수 있었다. (나는 페어프로그래밍을 할 때 페어의 코드에 항상 의문을 던진다. 진짜 궁금하기 때문..) 내가 느꼈을 때 나는 구현에는 자신이 있지만 이론 부분이 많이 약하다고 생각했는데 페어들에게서 공부할 수 있는 키워드들을 얻어갈 수 있었다.
우테코에서 하는 미션이 좋은 점은 그냥 ‘이게 좋아서 썼어요’가 아니고 직접 구현해보고 본인이 사용한 기술에 대한 근거가 생긴다는 점이다. 뿐만 아니라 이론을 공부할 때도 무조건 “왜?”라는 의문을 던지게 되었다. 이벤트루프를 공부할 때도 왜 마이크로태스크큐와 태스크큐가 따로 존재하는 것인지, 왜 이벤트 위임은 이벤트 버블링 현상을 채택(?)했는지, 왜 Variable Environment와 Lexical Environment가 구분되어 존재하는지.. 끊임없이 의문을 던지고 있다. 물론 이 과정이 정말 피곤할 때도 있지만 의문을 제기하는 습관은 나쁘지 않다고 생각한다.
두 달간의 일을 하나의 글 안에 적기엔 너무 많아 빠진 일들도 많다. 레벨2에서는 회고글을 좀 더 자주 써야겠다는 반성을 하면서.. 글을 마무리한다!