mailgithub

toss frontend accelerator 4기 회고

스스로를 돌아보며

thumbnail

3주 교육을 한 문장으로 표현하면?

스스로를 발전시킬 가능성과 방법을 찾았다

3주 동안 진행된 Toss Frontend Accelerator 를 나에게 있어 한 문장으로 요약하면 위와 같다.
스스로 부족한 부분을 인지하고, 발전시킬 가능성과 가능성을 현실로 만들기 위한 방법도 찾을 수 있었다.
배우고 느낀 것이 많았던 시간이었고, 인생에 있어 가장 알찼던 3주였다.

좋은 코드에 대한 기준과 기준을 만들고 찾기 위해 다양한 경험과 시도를 했던 귀중한 시간을 돌아보려한다.

교육을 진행하기 전 후

교육 받기 전, 성장하고 싶어 여러 기술 스택과 아티클을 찾아보며 지식을 쌓는데 집중했었다.
분명 나아지는 것이 있었지만 만족감을 느끼진 못했다. 보다 근본적인 변화가 필요하다는 것을 느끼고 있었다.
하지만 근본적인 변화가 무엇일지 어떻게 해야할지 전혀 갈피를 못 잡고 헤매고 있었다.

교육을 받으며 그동안 복잡해서 터질 것 같게 만든 원인을 알 수 있었고
전문가의 사고 흐름을 보고 배우며 좋은 방법을 습득할 수 있었다.
그리고 점차 나만의 근거와 기준을 찾을 수 있었다.

과거엔 어떤 방식을 보며 "이게 왜 좋을까요?" 라는 질문에 보편적인 사용 사례, 아티클 이 주요 관점이었다면,
지금은 스스로 생각한 근거기준을 관점으로 답할 수 있는 사고 흐름을 만들고 있다는게 큰 차이이자 발전인 것 같다.

나를 가장 크게 바꾼 4가지 배움

좋은 코드를 작성하기 위한 다양한 방법과 전문가의 행동을 볼 수 있었다.
그 중 나에게 있어 큰 임팩트와 변화를 만들어주었던 4가지를 정리하려한다.

1. Red -> Green -> Refactor 와 결과 만들기

작은 목표를 세우고 진행하기

교육을 받기 전, 가장 큰 병목은 결과를 만들어내기 위한 전처리 과정이 많다는 것이다.
디렉토리 구조 구성하기, 유틸 함수 분리하기가 대표적인 예시가 될 것 같다.

어떤 큰 목표가 있을 때 먼저 작은 목표로 분리한 후, 그걸 위해 무엇을 해야할지 고민하는 과정을 가지게 되었다.
목표가 커서 어떻게 해야할지 감도 안 잡히고, 생각만 많아져서 실행을 못하던 이전과 달리
목표를 작게 만들어 해야할 것이 분명하게 보이고, 생각을 적게하고 실행에 옮길 수 있었다.

작게 분리된 목표 덕분에 얻은 건 다음과 같다.

  • 생각할게 적어 머리가 편안하다.
  • 유의미한 결과를 빠르게 볼 수 있고, 개선이 필요한 점도 빠르게 파악할 수 있다.

효율적인 시간 관리를 할 수 있게 되었고, 계획 -> 실행 -> 재조정 선순환을 만들 수 있었다.

2. 한 번에 하나씩

여러 개를 동시에 굴리면 인지부하가 높아진다. 한 번에 하나씩 하자.

A 를 하다가, B 라는 문제를 마주치면 B 를 하고, B 를 하다가 C 라는 문제를 마주치면 C 를 하고...(무한 반복)
이렇게 꼬리의 꼬리를 물다가 머리가 아파오고, 원래 하려던 것을 놓친 경험이 많았다.
이걸 해소하기 위해 3주 간 여러 사고 훈련과 방법을 써볼 수 있었다.

리팩토링 과정에선 코드를 수정없이 그대로 옮기며 한 번에 하나씩 하는 것을 알 수 있었고
한 가지 작은 목표를 정하면 그것을 잘 완수하기 위해 10분 타이머라는 방법을 적용했다.
(회고를 작성하는 지금도 10분 타이머를 활용하고 있다)

이전에도 뽀모도로를 통해 집중하는 시간을 관리했었지만,
목표 달성을 위해 10분 동안 치열하게 머리를 쓴다는 점에서 큰 차이가 있었다.
10분이라는 시간이 생각보다 큰 가치를 줄 수 있단 것을 이제야 알게 되었다.
(10분 타이머를 오후 내내 사용하니 뇌를 거의 다 써서 두통이 온다는 것도 알 수 있었다.. 그동안 뇌를 여유롭게 썼구나..)

더 나아가 10분 안에 목표를 완수하기 위해 더욱 작은 단위로 쪼개고, 명확한 목표를 세우는 습관도 만들 수 있었다.
낭비하게 될 시간도 10분으로 줄일 수 있었다. 이전에는 반나절을 날려버리는 경우도 많았다.

Red -> Green -> Refactor & 결과 만들기와 한 번에 하나씩을 더하니
두 방법이 시너지를 이루어 긍정적인 힘을 만들어주는 것을 느끼고 있다.

3. 이상적인 형태 생각하기

기획서와 코드를 1 대 1 로 대응되는 이상적인 형태를 생각하자

과거 시도는 해보았지만 "이건 좀 어려운데" 라고 생각하고 포기했던 기억이 난다.
구현을 하다보면 여러 맥락이 얽혀 나중에 보면 "이게 뭔 코드지", "어떤 기획을 나타내는 코드지" 라고 자문자답을 자주 했었다.

지금은 기획서를 보고 이런 형태의 코드가 나왔으면 좋겠어 와 같이 이상적인 형태를 떠올리고, 큰 틀을 잡고 진행하고 있다.
이전과 가장 큰 차이점은 무작정 구현부터 하지 않는다는 점이다.

기획서와 문제를 보고 생각할 시간을 가지고(with 10분 타이머),
이상적인 형태와 방향성 즉 멘탈 모델을 가지고 문제를 풀어나가는 습관을 만들고 있다.
목표는 해석하지 않아도 이해할 수 있는 코드이다.

4. 사용처에 가까이 (응집도)

가지고 있던 큰 병목인 결과를 만들어내기 위한 전처리 과정이 많다에서 파생된 나쁜 습관이 있었다.

미리 만들어둔 디렉토리에 위치하도록 코드를 분리하며, 수많은 파일 생산과 함께 응집도가 깨지는 것이다.
각 파일의 라인 수는 줄어들었지만, 페이지에서 기능을 종합해서 보려면 많게는 10개 이상의 파일을 봐야했다.
여러 파일을 오가며 인지부하를 높이고, 그걸 머릿 속에서 조합하는 리소스를 더하고, 수많은 시선 이동을 만드는 방식이었다.
어떤 유형의 코드인가(api, util, hooks) 에만 집중했고, 언제 어디서 사용하는가를 고려하지 않았기에 발생한 문제였다.

앞선 1,2,3번의 과정을 체화하는 과정을 통해 파편화된 코드를 작성하는 습관은 자연스럽게 해소할 수 있었고,
응집도를 더욱 높이기 위해 사용하는 쪽에 가까이 두는 의식적인 훈련을 이어가고 있다.
데이터 패칭도 사용하는 쪽과 최대한 가까이 두는 것을 의식하며 구현을 하고 있다.

이 과정에서 이전에 내가 생각했던 고민과 기준에 명확한 근거가 없었다는 것도 인지할 수 있었다.

고민 1. 이미 같은 레벨의 다른 컴포넌트에서 패칭했는데 상위에서 한 번만 하는게 좋지 않을까?

TanStack Query 의 캐싱에 의해 데이터 패칭은 한 번만 이루어진다.
사용하는 쪽에서 호출한다고 문제가 될 건 없어보인다.
오히려 상위에서 한 번만 호출하려는 의도로 인해 다양한 패칭 코드가
page 에서 다뤄지고 있어 복잡도가 올라가는 문제가 발생한다.

고민 2. 계산하는 로직을 중복으로 선언하는 것보다 상위에서 한 번만 하는게 좋지 않을까?

여러 번 했을 때 퍼포먼스 이슈가 발생하는가?
그렇지 않다면 여러 번 계산하는게 문제가 될 건 없어보인다.
오히려 페이지에서 다루지 않아도 될 맥락이 노출되어 있어 복잡도가 올라간다.

이렇게 생각을 하니 코드를 모으지 않을 이유가 없었다.
이런 주제로 이야기를 하다보면 "어.. 그러네요.. 굳이 분리할 이유가 없네요..?" 라고 답하는 경우가 많았다.
그리고 교육을 받으면서 의도를 가지고 구현을 하다보니, 각 구현마다 스스로 판단한 기준을 가지고 이야기를 할 수 있었다.
더 좋은 판단이 있고 납득이 된다면 재조정을 하는 과정을 가지며 좋은 방향으로 나아가는 느낌도 받을 수 있었다.

3주 동안 좋은 코드를 보고 배우며, 위와 같은 근거와 기준 만들기를 반복하며 좋은 코드의 가치관을 만들 수 있었다.

마무리하며

스스로를 발전시킬 가능성과 방법을 찾았다

처음 작성한 3주 교육을 한 문장으로 표현한 것이다.
이번 Toss Frontend Accelerator 를 통해 좋은 코드에 대한 정의와 다양한 방법을 보고 배울 수 있었다.
그리고 어떤 눈부신 기술 스택이 아닌 문제를 다루는 사고의 흐름과 행동을 바꾸는 과정이었다고 생각한다.
내면의 변화를 만드는 과정이 정확한 표현일 것 같다.

사고의 흐름과 행동을 바꾸는 과정을 각자의 방법으로 체득하는 과정이 있었기에
병목을 마주쳤을 때 어떻게 나아갈지 스스로에게 맞는 방법도 찾을 수 있었다.
그렇기에 스스로를 발전시킬 가능성과 방법을 찾았다 라고 표현했다.

돌이켜보면 너무나도 가치 있는 3주였다.
그동안 정체되고, 아쉬웠던 성장의 혈을 뚫고 나아갈 수 있는 터닝 포인트가 되었고
주변의 많은 도움 덕분에 나의 부족한 면을 드러내지 못하는 두려움과 파생된 질문에 대한 두려움 등을 마주할 수 있었다.
짧은 피드백 주기를 가져가며 빠르게 더 좋은 방향으로 바로잡는 과정의 가치도 알 수 있었다.

양질의 교육 자료와 코스, 사람마다 가지고 있는 내면의 병목을 찾고 이끌어내주시는 코치님, 열정 넘치는 훌륭한 동기분들
좋은 환경과 기회를 만들어주신 모든 분들께 감사하다는 말씀을 드리며 회고를 마친다.