7월 초, 어쩌다보니 친구와 무작정 즉흥으로 코타키나발루 여행을 떠나게 됐다.
(여행을 이륙 24시간 전에 결정했다ㅎ. 99% J에게는 꿈만 같았던 일)
계획에 없던 여행이라 이 지출에 대한 타당한 이유가 필요했고, 내 커리어 2년을 스스로 축하하는 의미를 갖고 갔다 오기로 했다.
이 글은 그 코타키나발루로 향하는 비행기 안에서 주저리주저리 적은 회고록이다.
📉 개발자 호황기에서 불황기로
2019년 7월 15일, 지금 회사에 프론트엔드 신입 개발자로 입사를 했다.
구직활동을 하던 때를 설명하자면 나는 4학년 막학기를 마치고 코스모스 졸업을 앞둔 상태에서 6월부터 본격적인 구직활동에 들어섰다.
그 때는 확실히 지원자 입장에서 지원할만 한 회사들(참고로 나는 어느 정도 규모와 회사만의 상품 및 서비스를 갖고 있는가를 중점으로 보았다.)도 많았고 회사들도 성장을 위해 양질의 개발자를 빼앗기지 않으려 앞다투어 채용시장에 참전하곤 했다.
실제로 이 때 개발자 연봉이 수직상승하기도 했고... (물론 모두가 알만한 기업에 한해서...ㅎ)
하지만 2년이 지난 지금에 와보면 상황이 좀 많이 달라졌다. 종종 채용 플랫폼을 뒤적거리곤 하는데 내가 몸 담고 있는 프론트엔드 포지션의 경우 신입을 뽑는 기업은 한 페이지 이내에서 골라볼 수 있을 정도이다. 심지어 그렇게 메리트가 있는 기업이냐는 또 다른 문제이다. 물론 경력이라고 해도 전처럼 막 쏟아져나오지는 않는다.
아무래도 타 포지션에 비해 진입장벽이 낮고 대부분의 서비스가 프론트엔드 사이드에서 큰 기술력을 필요로 하지 않은 경우가 많기 때문일 수도 있다. 하지만 다른 동료분들 얘기를 들어봐도 비단 프론트엔드 만의 일은 아닌 것 같다.
자세히 말할 순 없지만 현 시장 자체가 얼어붙어있다보니 비용절감을 위해 여러 회사에서 개발자 연봉을 동결하는 경우도 많다.(심지어 삭감하는 곳도 봤다...)
물론 개발자 입장에서도 그동안 거품이 심했다고 생각하고(시장 관점에서 이야기다.) 현재 그 조정이 시작되었다고 생각한다. 내가 여기서 할 수 있는 거는 그저 더 좋은 개발자가 되기위해 공부하는 것이라 생각한다.
개발용역이라 풍자되던 직업에서 뉴스에 나올 정도로 너도나도 하고싶어하는 직업, 그리고 다시 그렇게 모셔가는 정도는 아닌 상황이 되었다. 고작 몇년 사이에 바뀌고 바뀌는 게 참으로 격세지감이다.
🌏 시공간데이터 시각화는 나에게 맡기세요
입사 후 나에게 주어진 첫 번째 feature는 지도 상에 잔여 인벤토리를 도넛 차트 형태의 마커로 시각화 하는 것이었다. 1
그리고 이것을 시작으로 지금까지 줄곳 지도, 지리, 시공간데이터 쪽으로 일을 많이 했다.
(회사 특성으로 사실 입사 시 과제테스트도 지도관련 문제이긴 했다.)
관련된 큰 프로젝트를 4개 정도를 진행해왔고 그에 따라 엄청난 성장을 했다고 생각한다.
단순 시각화부터 렌더링 최적화, JS 쪽에 라이브러리가 부족해 geohash 관련 코드를 직접 개발하기도 하고 정말 오랜만에 삼각함수를 직접 써가며 pathToPolygon 함수도 구현하는 등 머리를 말랑말랑하게 만드는 순간도 많았다.
지금 보면 참으로 엉망인 코드들이 많은데 어떻게 그렇게 개발을 했는지 모르겠다😂
처음엔 지도 컴포넌트에 대한 이해도가 많이 부족했고 특히 이를 React와 접목시켜 사용했을 때 렌더링 성능 관리를 잘 못한 부분이 있었다. 딴에는 막 throttle, debounce로 제어하려고 하기도 하고 참 애를 썼던 것 같다. 하지만 여러차례 스텝업을 거칠 때마다 이 부분도 항상 발전시켜왔다. 한 페이지를 예로 들면 User Interaction에 총 2000ms가 걸리던 페이지를 30ms 수준까지 개선시키고 이제는 그 지도를 컴포넌트화하여 사내 package로 npm 배포하여 사용할 예정이다.
이 부분은 한 번에 개선한 게 아니라 2000ms -> 500ms -> 30ms 등 순차적으로 발전한 모습이 스스로 보기에도 느껴져 더 뿌듯하다.
2년차 남짓 주니어의 만용일 수도 있겠고 물론 그렇겠지만 이제 지도에 관한 요구사항은 무엇이든 수용가능하겠다는 자신감이 생겼다.
시공간데이터 시각화? 저에게 맡겨주세요.
🏃 나의 장점을 찾다
작년 이 맘때 쯤이었다. 나는 당시 회사에 돈을 벌어다 주기 위한 정부과제를 맡아 개발 중이었다. 해당 솔루션은 데이터 수집을 위한 앱이었고 나는 그 앱에 들어갈 웹뷰와 백오피스를 담당하여 구현했다. 그리고 문제는 사용자가 일반인이었고 리워드 시스템이 있었다는 것이다.
물론 제한적인 사용자를 대상으로 한 서비스였지만(Weekly 기준 2천명 정도) 돈이 걸려있는 문제에 사용자들은 호락호락하지 않았다. 첫 서비스 개시 날부터 CS 문의는 폭주를 했고 나는 대응을 해야했다. 들어오는 대로 다 쳐냈다. 당시를 생각하면 진짜 미친 듯이 일했던 것 같다😂
그리고 그 때부터 이 말을 듣기 시작했다.
"벌써 다 했어요?"
내가 손이 빠른 편이었나보다.
기존에는 어떻게든 확장성이 좋은 코드와 더 나은 코드를 작성하는 것을 우선으로 두고 리소스를 투자했었지만 이런 상황에서는 일단 이슈를 쳐내는 게 중요했고 내 안에 잠자고 있던 생산성이란 아이가 날뛰기 시작했던 것이었다.
그렇다고 막코딩을 한 것은 아니다. 생산성과 코드퀄리티 사이의 적절한 밸런스를 찾고 그것을 거듭 반복하여 서비스를 제공하면서 계속적으로 발전시키는 것.그것을 목적으로 작업하였다.
평소에 청소도 80%를 두번 하면 96%다. 라는 지론을 갖고있던 나에게 이러한 작업스타일은 개발적 가치관으로 자리를 잡게되었고 애자일 방법론에 어울리는 인재가 되었던 것같다.
"아 나의 장점은 생산성이 좋고 그것을 조절할 줄 아는 사람이라는 거구나."
🤔 아쉬웠던 점
너무 한 부분에 특화된 작업을 위주로 하다보니 기술적으로는 엄청난 성장을 했다고 생각하나 다른 부분에 대해서는 아쉬운 부분이 많다고 생각한다. 그 중 세가지를 추려보고자 한다.
- 테스트의 부재. 이미 사이즈가 너무 커져버린 프로젝트이거나 일정 상 기한이 너무 촉박해 테스트를 도입하기 힘든 상황이 많고 반복되었다. 요구사항이 변경되고 추가됨에 따라 기존 기능에 영향이 있는 경우 이 부분은 직접 고려해야한다는 게 리소스가 오히려 많이 투입이 되기도 했다. TDD를 꼭 도입하고 싶었는데 아직 시작조차 못했다. 다만 사내 라이브러리의 경우 아무래도 단위 규모가 작고 함수 위주일 것 같아 쉽게 도입이 가능할 것 같다.
추가로 개인적으로 개발하고 있는 라이브러리가 있어 거기에서는 간단하게나마 테스트코드를 작성 중에 있다. - 열려있는 AWS 권한에 비해 DevOps 쪽 경험을 많이 하지 못했다. CI/CD 파이프라인 구축도 사내에서 작업해주시는 분이 있다보니 그 분한테 맡기기만 했고 내가 이걸 어떻게 배우고자하려는 모습이 많이 부족했다. 적어도 내가 내 서비스는 혼자서 구축하고 배포는 할 수 있어야 된다고 생각하는데 그 능력이 많이 부족하다고 생각한다. CI/CD, 도커, AWS 비용 절감 등에 대한 부분은 내가 이제 공부해야할 부분이다.
- 아무래도 큰 데이터를 마주하다보니 이걸 가지고 어떻게든 결과물을 만들어내고 싶은 욕구가 가득했다. 하지만 클라이언트 단의 특성과 언어의 한계가 있다보니 성능적으로 내가 "와 이걸 이렇게까지 개발을 했어." 할 만한 게 없다고 생각한다.
이 부분은 Rust와 WebAssembly를 공부하고 있고 이 둘의 접목을 통해 개선시킬 수 있는 부분이라 기대를 하는 바이다.
🗓️ 23년 하반기를 시작한 나의 다짐
시간은 흐르고 상황이 어떻든 성장은 한다. 나는 인정받고 있으니 조급해하지말되 안주하지도 말자.
- 광고용어로 퍼블리셔가 판매할 수 있는 광고 단위를 뜻한다. [본문으로]