2021.06 ~ 2022.01 ## 회고 명실공히 프로그래머스의 가장 중요한 페이지인 시험 응시 페이지를 프론트엔드 개발자 없이 리뉴얼했다. 팀에 프론트엔드 개발자가 1명이어서 다른 일로 바빴고, 마침 Node.js 경험이 있는 백엔드 개발자 2명이 팀장님 눈에 포착되어서 그랬던 것 같다. 그렇게 백엔드 개발자 2명, 기획자 1명, 디자이너 1명으로 파트를 구성해서 시험 페이지 리뉴얼을 진행하게 되었다. 이 당시 나의 프론트엔드 경험은 일천하기 그지없었는데, 그렙에 입사하기 전에는 React 튜토리얼만 잠깐 다뤄봤었고 입사한 후에는 CoffeeScript와 JQuery를 사용해봤을 뿐이었다. 그래도 다른 백엔드 개발자는 개인적으로도 React를 사용해본 경험이 있고 이전 회사에서도 잠깐 프론트엔드 업무를 봤다고 하셔서 그 분이 일단 프론트엔드를 전담하기로 결정했다.나는 먼저 백엔드 API를 최대한 만든 다음 프론트엔드 업무에 들어가기로 했다. 일정 산정 결과 3개월 안에 QA와 배포까지 가능하다는 결론이 나왔는데 실제로는 8개월이 소요되었다. 일정 예측이 벗어난데에는 예상 못한 상황이 발생한 탓도 있었지만, 단순히 개발해야할 일이 많아서였다. 입사한지 얼마되지 않은 기획자 분은 일의 볼륨을 모를 수 밖에 없었겠지만, 팀장님과 디자이너와 나를 포함한 개발자들은 무슨 생각을 했던 것일까. 이전에 LMS 리뉴얼할 때 한 브랜치에서 모든 작업을 진행해서 충돌로 고생한 경험이 있어서 피쳐 플래그를 도입했다. 여러가지 라이브러리나 툴을 검토했는데 필요한 기능을 만족시키고 사용 방법도 심플한 Flipper로 결정했다. 개발을 진행할 때 Flipper로 기능을 막아둔 상태에서 지속적으로 master 브랜치에 병합했더니 충돌 이슈를 거의 겪지 않았다. 그리고 리뉴얼 페이지를 릴리즈할 때도 한 번에 오픈하는 것이 아니라 응시자 수가 적은 시험부터 수동으로 오픈할 수도 있었다. 이번 프로젝트에서 몇 안되는 만족스러운 선택이었다. 개발에 들어갈 때는 디자인 작업을 시작도 하지 않은 상태였지만 필요한 데이터는 기존과 거의 동일할 것이라고 가정하고 API 작성을 시작했다. 상세 화면이 나오지 않은 상태라서 응답을 러프하게 만들 수 밖에 없었고 기존 로직을 재사용하다보니 API 작성은 며칠만에 끝났다. 그래서 프론트엔드 개발에 착수했는데, 다른 개발자 분이 기본적인 컴포넌트 설계와 타이핑을 끝내놓은 상태여서 바로 컴포넌트 개발을 시작할 수 있었다. vue.js의 composition api를 사용했는데 react의 hook과 사용 방법이 비슷해서 빨리 적응할 수 있었던 것 같다. 그 다음부터는 말 그대로 컴포넌트 공장이 되었다. 효율적으로 컴포넌트를 찍어내기 위해 상태관리를 vuex에서 hook 방식으로 바꾸기도 했고, tailwind나 swrv 같은 새로운 라이브러리를 도입해보기도 했다. 개발을 진행하면서 프로그래머스에 숨겨진 기능이 정말 많다는 것을 느꼈다. 심지어 조건문의 조건을 만족시키다가 우연히 발견한 페이지도 있었는데, 해당 기능의 존재를 아는 사람이 팀원 중에 아무도 없었다. 그래서 회사 초기부터 있었던 대표님이 언제 어떻게 사용하는 기능인지 알려주셨다. 그 외에도 정말 사용하는 경우가 드문 순위 대시보드 같은 기능들도 처음 기획할 때는 생각을 못했다가 나중에서야 떠올릴 수 있었다. 개발 중에 예상 못한 큰 상황이 두 번 발생했다. 7월에 큰 장애가 발생해서 한 달 동안 팀 전체가 안정화 작업에만 집중하기로 해서 개발을 중단했던 일과, 플랫폼팀이 신설되면서 같이 개발하던 개발자 분을 뺏긴 사건이다. 앞선 상황은 개발 일정과 데드라인이 함께 밀려서 큰 이슈는 아니었지만, 안 그래도 부족한 개발자가 더 줄어든다는 사실에는 한숨밖에 나오지 않았다. 그래도 데드라인이 외부의 계약으로 설정된 것이 아니라 팀 내 로드맵에 의한 것이어서 팀장님과 논의 후 변경할 수 있었지만 빡빡하다는 사실은 변하지 않았다. 열심히 개발하고 기능 QA를 진행했는데 버그 티켓이 100개 가까이 나왔다. 일단 처음으로 릴리즈하는 시험에서 사용하는 옵션에 맞춰서 버그 수정 우선순위를 정했는데 그것만 해도 수십 개였다. 이 다음부터는 힘들지 않은 티켓을 세는 것이 더 쉬울 지경이었다. 특히 css는 너무 어려워서 프론트엔드 개발자 분께 SOS 요청한 것이 한 두번이 아니었다. 그럴 때마다 시간을 빼앗는 것 같아서 죄송한 마음과 애초에 백엔드 개발자에게 프론트엔드를 맡긴 것이 잘못이라는 삐딱한 생각이 충돌했다. 그렇게 최초 릴리즈 후 거의 3달이 더 지나고서야 버그 티켓을 모두 처리했고 비로소 완료 처리를 할 수 있었다. 이번 프로젝트로 얻은 것이 몇 가지 있다. 첫 번째는 피쳐 플래그 사용 경험이고 두 번째는 어디가서 프론트엔드 해봤다고 할 수 있다는 자부심이고 세 번째는 다시는 일정 추산을 이렇게 하지 말아야겠다는 반면교사이다. 너무 힘들었다.