또 다시 취준!! 그 전에 회고해보자고!

요들레이후·2024년 3월 11일
9

회고

목록 보기
1/1
post-thumbnail

토스 FE어시 들어가기까지

나는 작년 3월부터 6월 중순까지 sw부트캠프를 진행하고, 작년 7월부터 10월까지 스타트업 FE개발자로 4개월 일하고 두 번의 임금체불을 당한뒤 빠르게 퇴사 후 12월부터 이번년도 3월까지 toss에서 fe assistant직무로 3개월동안 근무를 했다.

스타트업에서 일할 때는 사수도 존재하지 않았고, 그렇다고 내가 주도적으로 개발을 할 수 없는 환경이기도 했었다. 빠르게 화면을 찍어내는 공장의 부품이 된 것 같았고, 학습하기에도 힘들었으며 코드의 품질을 생각하지 못하고 기능만 남기는 개발을 했다. 내가 나약한 탓인가, 나같은 상황에 놓였을 때 다른 사람들은 어떤 마인드셋을 장착하고 어떻게 행동할까 고민하던 때 엎친데 덮친격으로 임금체불을 2번 당해서 미련없이 퇴사를 하게 되었다.

그리고 11월 한 달 간 여기저기 서류를 내고 면접을 보러 다녔고, 어쩌다 toss frontend assistant를 하게 되었다. 내가 일했던 부서는 어드민 플랫폼 팀이었다. 발도 못 디딜 거라 생각했던 회사에 일을 하게 된 것이 너무 좋았다. 다른 부서에서의 fe assistant를 했던 사람들을 링크드인이나 깃헙에서 보면 전공자이신 분들이 많아보였고, 유명한 IT동아리를 하고 계신 분들이 많아보였다. 내가 어떻게 합격했지 의아해하며 첫출근을 했다.

한 달은 SDUI에 익숙해지기 위해 노력을 했던 것 같다. server driven ui, 말 그대로 서버가 규격화된 데이터(여기선 메타데이터라고 한다.)를 보내주면 거기에 맞춰 프론트 상태관리와 컴포넌트 개발을 해야한다. 처음 보는 폴더 구조(모노레포)와 생소한 패턴(context api의존성 주입, HoC, headless component, factory pattern,...)들로 혼란이 왔고, 일반적으로 부트캠프나 이전 회사에서 했던 개발 방식과는 너무나도 달랐다. 내가 알던 React는 그냥 신생아라고 하면 여기서 사용하는 React는 타노스같단 생각이 들었다.

해당 레포에는 그동안 주워들은 고오급 패턴들이 다 녹아져 있는 느낌을 받았다. 한 달 동안 코드베이스와 메타데이터를 익히는데 시간이 걸린 것 같다. 리액트도 잘 모르겠는데 개발 복잡도가 미친듯이 올라간 이 코드베이스를 보며 '와 나 3개월동안 일을 할 수는 있을까?'생각이 들었다.
첫 1~2주 동안은 작은 버그들 해결하며 폴더 구조도 파악하기 위해 마인드맵마냥 그려가면서 숙지했던 것 같다.

3개월동안 배운점 및 경험 list화하기

나에겐 커다란 기능 구현은 주어지지는 않았다. 평범한 인턴이 할 수 있을 버그 fix, 혹은 사이즈가 크지는 않은 컴포넌트 개발 정도 주어졌다. 그런데 그 버그를 고치고 컴포넌트를 개발하면서 하드 스킬 뿐만 아니라 소프트 스킬에서도 많은 것을 배우고 느꼈다. 이전에 4개월 일했던 것, 부트 캠프에서 배웠던 것보다 toss에서의 3개월이 나에게 더 밀도있는 성장을 안겨줬다.

하드 스킬

1. javascript 메서드 많이 익히게 되었다.

  • 자유자재로 객체를 조작하는 능력을 기르게 되었다.
  • Object.assign을 사용해 리액트 합성 컴포넌트를 작성해 재사용성이 극대화되는 컴포넌트를 제작하는 것에 대해서도 알게 되었다.
  • 자바스크립트 객체에서 key값이 존재하는지 판단하는 로직에서 hasOwnProperty를 많이 사용했는데, hasOwnProperty의 단점에 대해서 알게 되었다.

2. context api 제대로 사용하게 되었다.

  • 이전에는 상태관리라 생각했던 context api에 대한 오해를 바로 잡을 수 있게 되었다.
  • context api로 React 컴포넌트 트리에 비즈니스 로직을 의존성 주입하는 방법을 터득하게 되었다.

3. 선언적인 코드 작성할 수 있게 되었다

  • ts-pattern과 zod를 통해 런타임시에도 검증이 가능한 선언적인 코드를 작성하는 방법을 터득하게 되었다.
  • 함수 작성 시 return type을 확실히 하라는 피드백, 무분별한 as unknown as (바꿀 type) 사용 지양, 변수 네이밍, 등등 선언적이고 협업을 하기 위한 좋은 코드를 작성하는 방법에 대해 자잘하게 배울 수 있었다.

4. 다양한 패턴을 경험하게 되었다

  • 리액트에서의 객체지향 패턴을 작성해서 중복되는 코드를 줄일 수 있음을 알게 되었다. (ex. factories 폴더 하위에 Wrapper객체를 작성하고 모든 필드들의 index파일에 그 Wrapper객체를 가져다 사용)
  • HoC 패턴을 경험할 수 있게 되었다.

소프트 스킬

1. 시간을 정해 빠른 피드백을 구하자.

  • 빠른 실행 후 빠른 피드백을 구하는 것이 모두에게 좋은 결과를 안겨준다.
  • 나의 시간을 더 투자해서 혼자 고심하는 시간이 길어지고 처음에 맞췄던 싱크에서 예상치 못했던 복병들을 혼자 발견하고 그것에 대해 혼자서 고민하다 보면 함께 가야하는 길에서 혼자 이탈하게 되는 경우가 많았다.

구체적인 해결 방법 : 제한 시간을 정해서 분석하는데, 팀원들에게 왜 분석해야 하는지 어느 정도 시간을 가져서 분석할 것인지 공유한다.

  • ex. 말씀하신 방향성에 대해서 검증이 필요할 것 같아요, 1시간 내에 코드랑 데이터가 어떻게 흘러가는지 분석하고 다시 말씀 나눠도 될까요?

2. 분명한 의도를 잘 전달하자.

  • 계약이 만료되면 나의 코드들은 레거시가 되고, 어드민 플랫폼 팀을 계속 개발하는 프론트 개발자분들은 언젠가는 내 코드를 만지게 될 수도 있다. 그렇기에 코드의 의도를 다같이 공유하고 있어야 하기에 로직 설계 시 같이 싱크를 맞춰 개발을 진행하거나, 코드리뷰를 빡세게 진행했다. 혹은 페어프로그래밍을 통해 리펙토링을 진행한 적도 있다.
  • 그러한 상황들 속에서 질문을 할 때 왜 질문을 하는지 의도가 불분명하면 -> "얘 그래서 뭘 얻고 싶은거지? 단순 궁금증인가?"라는 물음표가 뇌리를 스침 -> 이것이 반복되면 신뢰의 문제로도 귀결이 될 수 있다.

구체적인 해결 방법 : 질문을 할 때 내가 지금 질문을 통해 어떤 것을 얻고 싶어하는지 혹은 정말 단순히 몰라서 물어보는지 분명한 의도를 같이 전달하는 것이 중요하다.

  • 의도를 함께 전달하면 상대방도 사람이기에 현재 나의 상황을 이해하고 공감해서 포인트를 잘 집고 모르는 부분을 설명해준다.
  • 상대방에게 단순히 선택지와 정답을 물어보는 것 보다는 선택지를 주고 나는 어느 선택지가 더 타당하다고 느끼고 왜 그렇게 생각하는지를 같이 물어보면 더 효율적인 질문이 될 수 있다.

3. 다양한 상황 속에서 잦은 피드백 구하기

  • 2번이랑 연결이 될 수 있는데, 이제 반대의 상황이다. 내가 설명을 드리는데 상대방이 내 설명이나 의도를 파악한지 잘 모르겠을 때 내가 먼저 물어봄으로써 상대방의 이해의 정도를 끌어내고 싱크를 맞춘다.

구체적인 해결 방법 : 설명을 드린 뒤, 이해가 됐냐고 바로 되물어보기

  • 먼저 이해가 됐냐, 안 된 부분이 있으면 바로 말씀해달라고 말하면 상대방도 본인이 이해가 되지 않은 부분에 있어서 편하게 말을 할 수 있게 되고 싱크를 맞출 수 있게 된다.

4. 의도적으로 내 코드를 내가 먼저 리뷰하자

  • 말 그대로 내 코드에 내가 댓글을 달면서 이런 코드를 작성하게 된 배경 혹은 해당 함수가 하는 일 같은 것을 미리 작성해서 상대의 코드리뷰 시간을 단축시킨다.

etc..

객관적으로 봤을 때 하드스킬은 눈에 띄게 성장했다고 보기엔 어려운 것 같다. 평범한 인턴이 낼 수 있는 임팩트는 냈다고 생각한다. 하지만 토스 이전의 내가 알고 있는 지식들 및 내 실력과 경험에 비해선 정말 밀도 있는 성장을 했다 자부할 수 있다.

이전엔 이렇게 피드백을 받은 적도 없고, 피드백을 구해도 누구나 다 할 수 있는 말을 해주시곤 했다. 내가 잘 하고 있는지, 고칠 점이 무엇인지, 어느 점을 극복해야 더 폭넓은 성장을 할 수 있을 지 항상 목말랐었는데 이제 나의 단점을 마주할 수 있게 되어서 너무 좋았다.

그리고 꽤나 직설적인 피드백을 받았다함은 내가 그들과 깊게 커뮤니케이션을 하며 일을 했다는 증거가 되기도 해서 기뻤다. 나의 단점을 알아봐주는 사람들과 함께 일을 할 수 있어서 좋았고, 피드백을 받은 시점이 퇴사까지 2주가 남은 시점이었는데 2주동안 받은 피드백 기반으로 단점을 보완하려고 노력했다.

1시간 분석하고 모르겠으면 물어보고, 내가 개발하려는 로직이 현 레포 내에 혹은 토스 라이브러리에 존재하는지 바로 물어보는 태도를 길렀다. 그리고 이야기를 나눌 때 내 의도가 상대방에게 제대로 전달이 되었는지 확인하기 위해 항상 내 의견 뒤에는 "이해가 되셨을까요? 이해가 안 된 부분이 있으면 바로 말씀해주세요"라고 말하는 버릇을 기르려고 노력했다.

피드백을 받고, 계약까지 2주가 남은 기간동안 태도적으로는 이전보다 더 주도적인 업무를 했던 것 같다고 생각한다. 3개월동안 목표 중 하나가 나도 코드리뷰할 때 팀원분에게 조언을 한 번이라도 해드리고 싶다고 생각했는데, 계약까지 1주 남았을 때 그 목표를 이룰 수 있었다. (js문법 falsy값 평가해서 return 하는 색다른 방법 -> if로 걸러내지 않고, filter(Boolean)을 사용하는 방법을 제안드렸다 키키 귀엽다 나 자신~)

일 외적으로도 소모임과 엔지니어링 위클리를 하면서 스터디도 진행하고, 한 달에 한 번씩 커피챗을 신청하며 토스 프론트엔드 개발자들의 생각을 들을 수 있었던 기회가 많았다.

처음으로 디자이너 분과 협업을 했고, 디자이너 분의 의도가 담긴 컴포넌트를 개발하기 위해 의사소통도 진행하여 구두로 싱크를 맞춰나간 경험도 있다.

실력있는 사람들과 함께 협업했던 3개월을 보낼 수 있어서 좋았고, 실력을 더 길러서 이 사람들과 또 같이 일하고 싶다는 생각이 들었다. 지금 당장은 힘들 수도 있지만 언젠가 돌고돌아 다시 협업 관계로 만날 수 있었으면 좋겠다!

토스 인터랙션팀에서 RollingNumber를 출시했다는 메세지에 팀원에게 퇴사할 때 만들어달라고 했는데 진짜 만들어주셨다 감동 ㅜ

profile
💩 잘㈛는건 ㅇr닌데, 포ブl㈛ズl 않을꺼○F. ㄴr는 별로 코딩을 잘㈛ズl는 않ズl口ざ, ㄱH발ㅈr를 포ブl㈛ズl 않을꺼○F. ュ 정도로 포ブl를 먼저 んı작ㅎŁ⊂ト면, ㅇr무것도 도전㈛ヱ 싶ズl 않을 꺼○F. 💩

1개의 댓글

comment-user-thumbnail
2024년 11월 22일

안녕하세요! 혹시 토스 어시스턴트 직무 인터뷰는 어떤 방식으로 진행되었는지 간략하게 알 수 있을까요..? 라이브 코딩이라고 써있는데 자바스크립트 라이브 코딩인지, 리액트인지 아니면 그냥 기술 면접인지 팁이라도 알고싶어서요 ㅠㅠ!

답글 달기