2023년 회고
주니어 프론트엔드 개발자의 1년 회고
dukjjang •
2024년 1월 4일
회고
2023년을 돌아보며
2023년은 나에게 잊을 수 없는 한해였다. 10년 넘게 하던 일을 그만두고 개발자라는 직업으로 커리어 전환을 했기 때문이다. 지난 한해를 돌아보고 부족했던점을 성찰하고 더 나은 2024년을 보내기 위해 기록하려 한다.
개발자로서 1년
2022년은 개발자가 되기 위한 기초를 쌓았다면 2023년은 실전을 경험하며 다양한 경험치를 쌓은 한해였던 것 같다. 상반기는 리액트 네이티브를 중점적으로 다루며, 2개의 앱을 만들었다. 상반기 내내 앱 런칭을 향해 열심히 달렸다. (그냥 갈아넣었다.) 결론적으로 런칭에는 모두 실패했지만, 정말 많은것을 배우고 경험할 수 있었던 시간이였다.
자세한 사항은 얘기못하겠지만 대략적으로 내가 한 경험에 대해 돌아보자면
우선 기술적으로는 리액트 네이티브에 대해 정말 많은 것들을 경험했다. 진행했던 프로젝트의 기술적 요구사항은 수준이 굉장히 높았는데, 이에 대해 많은 압박감을 느끼면서도 최대한 퀄리티 높은 앱을 만들기 위해 부단히 노력했었다. 야근은 기본이였고, 퇴근하고도 1~2시까지는 무조건 공부를 하고 잠에 들었었다. (안그러면 구현이 힘들었다.) 내가 개발했던 앱들은 기본적으로 시중에 나와있는 앱들과 많이 달랐다. 하나도 일반적인게 없었다.
UI나 애니메이션부터 얘기하자면 첫번째 개발했던 앱은 보통의 앱 UI와 달리, 앞 뒷면을 가지는 3D형태의 카드 UI였다. 바텀 탭 또한 앞면일때는 보여지고 유저가 화면을 x축으로 스와이프 하는 값에 따라서 화면 밑으로 사라지게끔 애니메이션을 구현했다.
화면 스와이프 애니메이션은 화면을 스와이프 하면 그냥 카드를 뒤집는게 아니라, 화면을 스와이프 하는 x축의 값에 따라서 카드를 뒤집어야 했다. 깊이감을 주기 위해 멀어지는 화면쪽은 더 어둡고 가까워지는 화면쪽은 점점 밝아지게 하는 디테일등을 구현했다. (왼쪽으로 스와이프하면 왼쪽은 어두워지고 뒷면이 올라오는 오른쪽면은 어두운 상태에서 밝아지도록)
또한 이 스와이프 되는 화면은 그냥 일반 카드UI처럼 사진하나 있는게 아니라, 메인 화면 자체였기에 y축 스크롤 하면 스크롤도 가능해야 했고, 각 컴포넌트에서는 서버와 데이터를 주고받아야 했기에 정말 구조적으로도, 컴포넌트 설계부터 많은 고민을 하며 개발했던 것 같다.
그러면서 자연스레 react native의 제공되는 컴포넌트의 특성들, 예를들면 ScrollView와 FlatList의 차이라던지, 웹과 다른 css 기법들이라던지 등등의 기본기적인 부분들은 물론이고, 애니메이션(Animated, reanimated) 에 대해서도 많은 공부가 되었고, 많은 경험치를 쌓을 수 있었다. 덕분에 지금은 stack간의 transition이나 웬만한 복잡한 애니메이션을 개발함에 있어서도 크게 어려움이 없다.
두번째 앱에서는 유저의 위치를 트래킹하고, 그 값을 서버로 전송하고, 받은 값에 따라서 알림을 띄우는등의 보다 앱스러고 네이티브적인 기능들을 개발했다. 계속해서 백그라운드에서 위치를 추적하면 배터리 소모가 심했기에, 일정 거리이상 움직일때마다 트리거하여 앱을 깨우고, 위치값을 서버로 보내도록 개발했었다. 이를 위해 기존 라이브러리를 커스텀하고, 심지어 잘 모르는 네이티브 코드를 배워가며 수정하며 기능을 개발했었다. 이외에도 FCM, 알림, 딥링크, 음성녹음 번역, 지도(구글맵,애플맵) 등의 기능들을 개발했다. (지금 생각해보니 정말 많은 것들을 했다.)
그렇게 상반기 내내 팀원들과 열심히 달렸지만 회사의 방향성이 달라지면서 런칭은 하지 못하게 되었다. 정말 아쉬웠지만 지금 생각하면 주니어로서 경험하지 못할 많은 것들을 경험한 것 같아 감사하게 생각하고 있다.
8월부터는 하반기에는 우리 회사의 주력 사업인 아큐브 웹 서비스의 프론트엔드 업무를 맡아서 일했다. 8년넘게 운영되어온 서비스인 만큼 거대한 레거시가 나를 기다리고 있었다. 처음에는 간단한 기능하나 수정하는데에도 히스토리를 파악해야 하다보니 시간이 오래 걸려 정말 힘들었었다. 또한 기술적으로 고민이 많았다. 이전 신규사업팀에서는 리액트 네이티브, 리액트(웹뷰), 타입스크립트 등 최신 프레임워크와 라이브러리로 개발했었는데, 현재는 JSP로 구성된 프로젝트이다보니 바닐라 자바스크립트로 개발해야 했다. 그래서 최신 개발시장의 기술스택과 동떨어진채 도태되는 것은 아닐 생각도 들었다.
하지만 나는 생각을 고쳐먹었다. 반대로 생각해보면 기본기를 다질 수 있는 기회라고 생각도 들었고, 기존 코드들을 고치며 많은 것들을 배울 수 있다고 생각했다. 그 후로 나는 매일 기존의 낡고 오래된 코드들을 어떻게 하면 더 좋게 만들 수 있을까? 어떻게 하면 더 좋은 구조로 만들 수 있을까? 어떻게하면 수정요청이 들어왔을때 더 빠르고 효율적으로 고칠 수 있을까?
이런 고민들을 가지고 개발에 임했다. 한정된 환경이지만 그안에서 최대한의 퍼포먼스를 내고 싶었다.
이때 '프레임워크 없는 프론트엔드 개발' 이라는 책을 보며 많은 도움을 얻었었다. 웹 컴포넌트를 도입해서 팝업 컴포넌트도 개발하고, 제이쿼리와 var로 떡칠된 이전 코드들을 ES6 문법으로 고치고, 천줄이 넘는 기존 페이지 코드를 각 기능별로 나누어 클래스로 리팩토링하는 등 물리적인 일의 양도 많았지만 이렇게 틈틈이 개발하며 정말 재밌게 일했던 것 같다.
물론 어쩔때는 이렇게까지 할 필요가 있을까? 하는 의문도 들었지만, 이전에 비해 확실히 개발효율성도 올라가고 (세번에 걸쳐 수정해야 할것을 하나의 자바스크립트 파일만 수정하면 됨, 기능별, 컴포넌트별로 나눠져 있어 히스토리 파악, 수정, 개발에 용이), 버그 발생도 줄고(var 없애고, 콜백지옥 async await으로 바꾸고), 성능향상(필요없는 모듈 분리, 무거운 제이쿼리 표준문법 대체, 이미지 lazy 로딩) 까지 있었다보니 나름 성과가 있었다고 생각이 든다.
하지만 그럼에도 불구하고 퇴근 후 혼자 사이드 프로젝트 하며 리액트로 개발할때면 현타가 왔다... 회사에서 어렵게 어렵게 고치고 머리써가며 개발했던 부분들을 리액트나 next.js로 개발하면 정말 손쉽게 개발할 수 있다. 심지어 어떤 부분들은 신경도 안써도 되고 알아서 해준다.
물론 나는 기본기가 많이 늘었고, 프레임워크나 라이브러리의 도움없이 개발할 수 있다는 자신감도 생겼다. 하지만 하루가 다르게 발전하며 AI시대를 맞이하는 현 시점에서 더이상의 원론적인 개발경험은 크게 중요한 것 같지는 않다고 생각이 든다.
또 내가 값지게 경험한 것은 부분은 기획자, 마케터, 디자이너, 백엔드 개발자 등의 여러 동료들과 함께 소통하며 실제 사용자들이 이용하는 서비스를 개발하고 운영해본 경험이다. 지금까지 크고 작은 여러 프로젝트를 진행하면서 매번 배우고 깨닫고 성장했던 것 같다. 동료들과 함께 무언가를 만들어서 사람들에게 제공하는 그 자체가 정말 재밌으면서도, 한편으로는 돈을 받고 일하는 프로로서 얼마나 책임감있게 일해야 하는지에 대해서도 많이 배웠다.
부족했던 부분
1. 글로 기록하지 못함.
올해 초 블로그를 직접 만들고 자주 글로 생각도 정리하고 개발기록도 남기자고 다짐했었다. 하지만 나는 올해 글을 거의 쓰지 못했다. 아니 안했다. 충분히 시간이 있었음에도 하지 않았다. 물론 나는 기록하고 싶은 생각들도 많았고 사건들도 많았지만,적어도 글을 쓰기위해서는 그것에 대해 생각하고 더 알아보고 개발이라면 개발도 해보고, 그것을 곱씹고 사람들에게 혹은 나에게도 도움이 될만한 무언가를 배출할 수 있는 여유가 필요하다고 생각한다. 내게 시간은 있었지만 그런 여유는 1년내내 없었다. 왜냐하면 지금 블로그에 기록하는 것보다, 내가 실제적으로 배우고 공부하고 부딪히는것이 훨씬 중요한 시기라고 느꼈기 때문이다. 기록하는 것은 나에게도 도움이 되고 나를 알리는데에도 도움이 된다. 하지만 나는 그냥 흔한 기술 블로그들처럼 특정 버그 하나 해결하고 방법 적는 그런 글은 쓰고 싶지 않았다. 가끔씩 일찍 퇴근하는 날 집에와서도 나는 공부하거나 사이드 프로젝트 개발하기 바빴다.
하지만 지나고보니 좀 허무하기도 하다. 내 개인적으로도 기록도 없고, 개발적으로도 아무런 기록이 없었다. 성장과 경험도 좋지만 올해부터는 그 성장과 경험을 기록하고 곱씹을 수 있는 여유를 만들어야겠다는 생각이 든다.
앞으로 내가 일하는 방식이 바뀌지도 않고 크게 여유가 생길것 같지도 않다. 하지만 적어도 한달에 한번이라도 힘을 빼고 나의 생각이나 짧은 회고라도 남기려고 노력해야겠다. 그게 시간낭비가 전혀 아닐테니
2. 인간관계
나는 최근 2년 내내 일과 공부에 올인하다 싶이 살아왔다. 가족도 잘 못보고 친했던 지인들과 자연스레 멀어지고, 친구들도 자주 못보게 되면서 가끔씩 '내가 무슨 부귀영화를 누리자고 이러고 있나?' 하는 생각이 들때가 있다.
나는 원체 목표 지향적인 사람인지라 지금의 삶이 즐겁고 만족스럽다. 하지만 내가 나의 목표를 하나씩 이루고 성장해가며 삶을 살아가는데 나의 옆에 축하해주고 기뻐해줄 사람이 아무도 없다면? 그건 과연 행복한 삶인가? 하는 질문이 따라온다.
같이 성장하고 같이 기뻐하고 같이 슬퍼하는 삶이 풍요롭고 행복한 삶이라고 생각은 하면서 나는 그렇게 살지 못했던 것 같다. 물론 나의 인생에 있어 최근 2년은 그럴 수 없는 시기였을 수도 있다. 인생을 살며 모든것을 다 가질 수는 없으니까.
하지만 그럼에도 최소한의 밸런스는 지켜야 겠다는 생각이 든다. 일이 1순위인 것은 변하지 않더라도, 그 사이사이에 사람들로 꼭 채워야겠다. 그게 원동력이 되어 일도 더 즐겁게 할 수 있을거라 기대하며.
3. 독서 부족
작년 한해는 개발서적도, 그 외 책들도 많이 읽지 못했다(산 책은 많음). 나는 실전으로 부딪히며 배우고 터득하는게 가장 빠른 길이고, 가장 좋은 학습방법이라 생각하는 사람이다. 하지만 그럼에도 책이 주는 이성적 깊이는 다르다고 생각한다. 그래서 책을 또 왕창 샀다.
최근에는 회사 동료가 스터디를 제안해서 매주 모여 스터디를 진행하고 있는데, 한달동안 진행해보니 의견을 자유롭게 주고받으며 배우는 부분은 좋았지만, 그때 잠깐은 흥미롭고 배운 것 같지만 사실 그건 내것이 아니라는 생각이 들었다. 또 내가 당장 몰라도 되는 부분을 공부할 필요는 없다고 느꼈다. 도움이 된다는 말에 속아 아무리 공부해봤자 그 지식은 죽은 지식이 맞는 것 같다. 내가 해당 분야에 대해 막히거나 궁금할때 그런 공부를 해도 전혀 늦지않다. 스터디를 한다면 내가 지금 궁금하고 마주한 문제를 해결할 수 있는 분야의 스터디를 해야겠다고 느꼈다. 안그래도 나는 마주한 문제가 너무 많기에 우선 혼자 부단히 책을 읽고 공부할 예정이다.
최소한 한달에 한권은 읽기!
마치며
어려운 시기에 개발자로 일 할 수 있어 감사한 한 해였다. 부족한 점이 많지만 나를 믿어주는 동료들과 팀장님께도 참 감사하다. 올해는 일 외적으로도 내가 목표하는 것들이 있어 열심히 달려볼 생각이다. 올해 말 회고때는 지금보다 더 성장하고 발전해있는 내가 되있기를!