심해에서 올라오는 중입니다
내가 잘하고 있는 걸까?
어떤 것부터 시작해야 하지?
프론트엔드 개발자로 일하며, 나는 매일 스스로의 부족함을 마주한다. 그리고 미래를 위해 갖춰야 할 역량은 끝도 없이 쏟아진다.
불안함에 동아리와 스터디를 시작했다. 좋은 동료들을 만난 만큼, 자연스럽게 나를 그들과 비교하게 되었다.
- 어떤 이는 디자인 시스템에 관심이 많아 직접 구축하며 UI 개발에 깊이 몰입한다.
- 또 다른 이는 DevOps와 인프라에 관심을 갖고 Docker와 쿠버네티스를 학습한다.
- 어떤 이는 UX를 넘어 DX를 고민하며 직접 라이브러리를 만들기도 한다.
그들과 나를 비교할수록, 나는 한없이 깊은 심해 속으로 가라앉는다. 불안속에서 허우적대다 문득 정신을 차리고, 하나씩 해보기로 결심했다.
운이 좋게도 나는 빠르게 취업할 수 있었다.
하지만 독학으로 ‘당장 필요한 기술’만 익혔던 나는 실무에서 기초 실력의 부족함을 크게 느꼈다. 그래서 다시 JavaScript부터 차근차근 공부하기 시작했다.
공부와 실무를 병행하며 사내 프로젝트를 진행하다 보니, 자연스럽게 프로덕트 안정화와 기능 개발에 관심이 생겼다. 오랜 시간 동안 다양한 라이브러리를 도입하고, 아키텍처 구조를 고민하며 컨벤션을 직접 기획했다. 이 모든 것을 바탕으로 대규모 리팩토링을 진행했고, 프론트엔드 안정화를 위해 밤낮을 고민했다.
작은 불편을 줄이기 위해 시작한 일이었지만, 점차 ‘더 개선할 수 있는 일은 무엇일까?’ 를 스스로 묻기 시작했다.
Proof of Concept 기반 DX 개선
작게 시작한 사내 개선은 어느새 내 욕심이 되어 있었고, 그만큼 더 깊은 학습을 필요로 했다. JS조차 끝이 없는 세계지만, 완벽하지 않은 상태에서도 나는 다음 단계(Infra와 DevOps)로 나아갔다.
Docker로 이미지를 만들고, CI/CD 환경을 구성하기 위한 공부를 시작했고, 공부한 내용을 바탕으로 사내에서 PoC를 진행했다. 몇 주간의 노력 끝에 눈에 보이는 성과를 만들어냈지만, 곧 의문이 들기 시작했다.
“이게 정말 효과적인 개선일까? 내가 제대로 해낸 게 맞을까?”
앞서 배포환경에 대한 회고도 진행하지 못한채 새로운 문제들이 생겼다.
사내에서는 반복적인 문법 오류로 인한 이슈들이 끊임없이 발생했고, 각기 다른 개발자들이 일관성 없는 코드를 작성하며, 수정과 에러가 이어졌다.
“이걸 어떻게 줄일 수 있을까?”
그쯤 여러가지 라이브러리를 찾아보았고, 특히 Toss의 es-toolkit를 관심있게 살펴보았다.
그리고 사내에서 사용하는 문법을 통용하는 내부 패키지를 만들어보자는 결정을 내렸다. 그렇게 다시, 또 하나의 시도를 시작했다.
배우고 있는 JS, 성능 최적화, 추상화, 클라우드, 인프라 개념들이 정리가 안된채 머릿속을 휘저었지만, 진행하던 공부를 멈추고 프로젝트를 개발했고, 실사용까지 완료했다.
그 결과, 사내 패키지를 기반으로 코드 작성이 일관되면서 코드 리뷰가 수월해졌고, 개별 함수 단위로 구성된 내부 유틸 패키지를 통해 tree-shaking 부담도 줄었다.외부 라이브러리 의존도를 낮추면서, 신규 프로젝트 투입 시 학습 비용과 초기 에러 발생률도 줄어들었다
표면적으로는 성공이었다. 하지만 조직내에서 내 역할에 대한 검증을 해줄 리더의 부재로, 제대로 검증받을 기회는 없었다.
그래도 내가 문제를 찾고, 주도적으로 도전해볼 수 있다는 자신감 을 얻었다.
물론 여전히 어설프고, 새 개념이 등장하면 어색하고 두려운 나지만, 그 불안은 학습으로 어느 정도 극복할 수 있다는 사실도 함께 깨달았다.
어느덧 3년 차.
프론트엔드라는 직무뿐 아니라, 세상의 모든 직무는 끝없이 배워야 하는 길 위에 있다. 나는 그동안 두 번의 이직 준비를 했다. 한 번은 좋은 결과가 있었고, 지금은 많은 고민 속에 새로운 도전을 진행하고 있다.
두려움 속에서 멈춰도 괜찮다. 계획을 세우는 것도, 무작정 시작하는 것도 좋다. 다만 실패를 두려워해서, 아무것도 하지 않는 것만은 피했으면 좋겠다.
그동안 나는 수많은 책을 사고, 인강을 듣고, 스터디를 운영하고, 클라우드 자격증을 준비하며 시도했다. 그 과정에서 많은 시도들을 끝까지 이어가지 못했다. (물론, 일부는 ‘끝’ 이 어디인지조차 명확하지 않기에 단정짓기도 어렵다.)
그때는 그런 나를 ‘실패했다’ 고 생각했다. 하지만 그건 실패가 아니라, ‘그저 과정이었다’ 는 것을.
SIPE
올해 초, 나는 ‘SIPE’ 라는 동아리 활동을 마무리했다. (물론 DND, DevOcean 등 다양한 동아리 활동도 진행했지만)
그곳에서 멋진 사람들을 만나며 자극받기도 했고, 비교 속에서 열등감을 느끼기도 했다.
동아리는 나에게 큰 동기였고, 주도적으로 스터디와 프로젝트를 운영하며 성장의 체감도 분명했다.
하지만 지나친 의존을 끊기 위해 동아리를 그만두기로 결심했을 때, “혼자서도 잘할 수 있을까?” 하는 불안이 밀려왔다.
그리고 벌써 4개월이 지났다. 코딩 테스트와 TypeScript 공부는 자주 멈췄지만, 코드를 쓰고, 책을 읽고, 아키텍처와 도메인 분리를 고민하며 오픈소스 기여도 해보았다.
그동안 내가 느낀 것들을 정리해보면, 아주 단순하다.
무언가를 처음부터 잘하는 사람은 없다.
한 가지만 잘하는 것도 좋지만(물론 이 방법이 내가 생각하는 성공의 지름길이겠지만), 필요한 것을 찾아 다양하게 해보는 것도 충분히 멋지다
단, 자주 나를 객관화하고, 부족한 점을 정리해보자.
그리고 계속해보자. 끈기 있게. 포기하지 말자.
지금 어떤 선택을 하든, 어떤 고민을 하든, 불안한 건 너무나 당연하다.
올해의 절반이 지나가는 이 시점, 도전의 좌절과 빠르게 흘러간 시간에 회의감이 들 수도 있다.
하지만, 그것들은 결코 나쁜 시간이 아니다. 나이키에서 자주 본 문구처럼, Just do it. 그저 해보자.
그러면 언젠가 우리는, 지금보다 훨씬 더 나은 사람이 되어 있을 것이다.
이 글을 마무리 하며
하루를 마칠 때면 스스로에게 이렇게 말한다.
“짧은 시간이지만, 정말 많은 걸 해냈어. 오늘도 수고했어.”
그리고 아침이 되면, 나에게 말한다.
“그만 자고 일어나”
나는 끊임없이 불안을 느끼는 사람이지만, 그만큼 계속 무엇인가 하는 사람이다.
그래. 나는 T 다.
올해 절반을 보내며 스스로에 대한 정리로 글을 마무리 해보겠다.
내가 느끼는 부족함
- 논리적인 대화
- 어려운 코드 읽기
- 프로그래밍 언어, CS 지식
- 한 가지 목표를 끝까지 끌고 가는 끈기
- 비즈니스 도메인 분리 및 아키텍처 설계를 위한 코드 작성 역량
올해 남은 시간 동안 내가 해보고 싶은 일
- 발표 많이 하기
- 오픈 소스 많이 읽고, 생산성 높여주는 라이브러리 주도적 개발해보기
- 코드 리뷰 많이 하기 (부족하지만 코드리뷰 요청 해주시면 열심히 해보겠다..)
- ‘추상화와 분리’ 를 고려해서 구현 많이 해보기 (이런 주제에 관심이 있으시면 언제든지 연락해주세요)
- 건강 챙기기 (제일 중요한데 제일 못한다. 나는 돼지다.)