빠르게 흘러 갔던 2022년의 회고록

이렇게 또 한 해가 가버렸다..

개발


기술스택 - 마이그레이션

회사에서 많은 기술 스택 변화가 있었다 React-Native 개발자로 입사하여 어느 정도 시간을 보내고 앱의 완성도와 유지 보수의 편의성을 한 단계 더 높이기 위해 WebView를 선택하였는데 개발 초반에는 하나의 Stack에 하나의 WebView를 사용하였다 이렇게 하니 상태 관리나 디버깅 부분이 너무 어려워 하나의 웹뷰로 관리하기 시작했다. 추후 결제 시스템 및 카메라 기능을 사용을 하게 되면서 이런 독립적인 기능들은 새로운 스택을 만들고 새로운 웹뷰를 만들어 사용하였다

웹뷰로 개발을 진행하면서 React로 사용하다 유저들에게 조금 더 빠른 환경을 제공하고 싶어 NextJS로 마이그레이션을 진행하였으며 이때 서버 상태 관리인 react-query를 도입하였고 스타일 부분은 Tailwind CSS를 사용하였다

먼저 Nextjs를 사용했을 때 라우팅 시스템이 굉장히 편리해서 좋았고 거기다 서버 렌더링이 가능하기 때문에 유저에게 굉장히 빨리 페이지를 보일 수 있는 부분이 마음에 들었다 데이터 요청이 거의 없는 부분들에 한해서 미리 HTML 페이지를 만들어두는 SSG를 적극 사용하였고 간간이 데이터 요청이 필요한 곳은 ISR과 서버에서 미리 페이지를 만들어서 응답을 하고 싶을 때는 SSR을 사용하였다

Tailwind CSS는 빠르고 쉽게 개발할 수 있는 부분이 좋았는데 보통 디자인을 할 때 인라인 스타일에 먼저 작업을 해보고 그 후에 CSS-in-JS로 옮기곤 했는데 Tailwind CSS를 사용 후부터는 인라인에만 작업을 해도 돼서 편했다 하지만 className에다 스타일을 입력하다 보니 View 부분에서 코드가 지저분해 보일 수 가 있고 props를 넘겨주어 상황에 맞게 스타일 설정하는 부분이 힘들었다 그리고 스타일들을 어느 정도 외워서 사용해야 하는 부분 말고는 만족하면서 사용하고 있다

그리고 올 한 해 react-query를 만난 건 정말 큰 행운이었다고 생각한다 거대한 리덕스의 보일러 플레이트를 사용하지 않고 더 쉽고 빠르고 정확하게 서버 데이터를 불러올 수 있는 게 좋았다 물론 완전히 리덕스를 삭제한 건 아니고 전역 상태와 서버 상태로 분리하여 개발을 진행한다 react-query에서 데이터가 로딩 중일때 isLoading을 사용하여 스켈레톤 UI 를 더 쉽게 적용할 수 있고 간편한 게 data라는 값으로 데이터를 불러올 수 있었다 이 밖에 캐싱 기능을 통해 데이터를 원하는 시간만큼 캐싱을 할 수 있어 API 호출을 줄일 수 있었다

회사에서 비즈니스 모델 추가로 인해 결제 기능도 개발을 진행하였다 처음에는 결제 관련 코드를 hook로 만들어 사용하였는데 앱 특성상 학생들이 주로 사용하는 앱이다 보니 부모님이 결제를 할 수 있는 부분이 필요해 웹에서도 결제를 할 수 있게 개발을 진행하였는데 hook로 만든 코드를 더 쉽고 편하게 관리하기 위해 사내 npm 모듈로 만들어 관리를 진행하였다. 여기서 결제는 독립적으로 운영하기 위해 RN에서 새로운 스택을 만들고 그 위에 결제용 Webview를 추가하여 개발하였다


개인(일상)


공부

개발 공부는 정말 끝이 없는 것 같다 시간이 지날수록 배워야 할 것이 배로 늘어나는 것 같다

개인 프로젝트 생산성 앱인 WEEK를 리팩토링 작업을 진행하였다 처음 취업 준비를 할 때 만들었던 앱이다 보니 초반부터 설계 부분이 엉망으로 되어 있어 리팩토링 과정이 힘들었다 차라리 그냥 새로 만들까? 하는 고민만 10번 넘게 했다. 함수명, 파일명부터 다시 새로 지었고 폴더 구조도 개편을 했다 비동기 처리를 위해 여전히 리덕스와 사가를 이용 중인데 react-query를 사용하다 다시 saga를 사용하니 역체감이 확실히 느껴졌다 saga의 보일러 플레이트가 정말 거대하다는 게 느껴졌다

그리고 생산성 앱의 필수요건인 위젯을 완성하였다 비록 ios에 한하여 만들긴 했지만 네이티브와 연동하여 수많은 삽질 끝에 만든 거라 정말 뿌듯했다 2가지 사이즈를 만들었고 카테고리 리스트를 변경할 수도 있다 2023년에는 안드로이드 위젯을 만드는 게 목표이다

타입스크립트를좀 더 제대로 사용 하고 싶어 책을 읽기 시작했다 단순 inferface를 만들어 컴포넌트 props 값들의 타입을 지정해 주거나 함수 params들의 타입을 지정해 주는 등 간단한 기능들만 사용을 하고 있어 이거보다 조금 더 정확하고 안전하게 타입을 지정하여 사용하기도 하고 제네릭 타입을 잘 사용 싶다는 생각이 들어 이펙티브 타입스크립트를 사서 읽고 있다. 여러 가지 사례들을 기반으로 어떻게 타입스크립트를 쓰면 좋을지 알려줘서 내용이 괜찮다고 생각하지만 막상 읽기 시작하니 내용이 조금 어려워서 조금만 집중력이 흐트러지면 금세 놓쳐버린다 예제 코드를 따라 하면서 천천히 읽고 있는 중이다.

책을 읽는 것을 좋아하고 많이 읽으려고 노력하는데 읽은 책들을 어떻게 메모를 하는 게 좋을지 그리고 어떻게 써먹을 수 있을까에 대해 고민이 들었다 그저 메모를 하게 되면 나중에 책의 내용이 메모장에 있는지조차 모를 경우가 많았다 이 부분을 조금이라도 해결하기 위해 옵시디언이라는 노트 앱을 사용하였는데 이 앱의 가장 큰 장점인 자료들을 연결할 수가 있었다 예를 들어 React에 관한 책을 읽고 버츄얼 돔에 관한 주제들이 있으면 브라우저 렌더링 이란 주제와 연결할 수가 있다 또한 연결한 주제들을 그래프 뷰로 볼 수 있어 한눈에 보기 쉬우며 필터 기능도 간단해서 원하는 주제만 쉽게 파악이 가능하다

미라클 모닝

11월 정도부터 미라클 모닝을 시작하였다 나는 학생 시절부터 늦은 밤 새벽 시간 때를 좋아해 최대한 밤에 잠을 안자려고 했는데 금요일이거나 공휴일 전날이 되면 긴 밤을 을 보내려고 일부러 커피를 늦게 마셔 잠을 최대한 자지 않으려고 했고 해가 떠있는 시간보다는 밤이 더 좋았다

그런데 어느 날 너무 피곤한 나머지 일찍 잤더니 일찍 눈이 떠져 시계를 보니 새벽 5시였다 이때 서재에 들어와 창밖을 보면서 잔잔한 음악과 따뜻한 차를 한잔하며 책을 읽었는데 이때의 기분은 밤의 시간과는 또 다른 매력이 있었다 아무것도 없는 고요한 아침 새벽 그리고 창문을 열면 간간이 들려오는 자동차 소리와 묵직한 공기가 느껴졌다.

이때 고요한 하루가 좋아 지금까지 새벽시간에 일어나게 되었고 평상시에는 5시에 일어나고 주말이나 쉬는 날에는 7시에 일어나거나 조금 더 늦게 일어 날 때가 있다. 이 시간에는 출근하기전까지 한시간 정도 시간을 보내는대 이 시간에는 주로 책을 읽거나 개인 공부를 하며 시간을 보낸다. 나는 아침에 공부하나 저녁에 공부하나 큰차이가 없다고 생각을 했는데 이상하게 아침이 더 집중이 잘되는 것 같았다 그리고 이미 아침에 책을 읽거나 공부를 하며 뇌를 활성화시킨 후 출근하니 업무 적응을 더 빠르게(?) 할 수 있는 장점 아닌 장점도 있다


일정산출


회사의 사업 확장으로 프로젝트가 점점 더 커지고 더 많고 더 복잡한 기능들을 요구하기 시작했다 구현은 할 수 있지만 가장 큰 문제는 일정을 어떻게 산출해야 하는지가 큰 고민이었다 중, 고등학생이 쓰는 교육 앱 특성상 시험기간 전에 배포를 완료해야 하다 보니 늘 일정이 촉박하여 막바지에 일이 많아져 야근하기 일쑤였다 그래서 어떻게 하면 일정을 효율적으로 관리할 수 있을까? 에 대해 고민을 많이 하는 중 "오늘 또 할 일을 미루고 말았다." 라는 책을 읽게 되었는데

여기서 정해진 시간 안에 결과물을 도출해 내는 개발자가 일을 잘하는 것이라고 말하며 100점이 아닌 80-90점 짜리 프로그램을 기한 내에 완성하는 것을 말한다 그리고 로켓 스타트라는 방법을 소개하는데 이 방법은 총 기간 10일이 주어지면 기간 중 20%인 2일 동안 총 업무량의 80%를 끝내고 남은 기간을 여유롭게 사용하는 전략이다

초반에 여유 있게 가다가 마지막에 일이 몰리는 막판 퍼스트가 아닌 처음부터 일을 많이 하고 후반을 여유롭게 가져가는 방법을 소개했고 이 방법을 실천 중이다 업무시간 안에 최대한 많은 것을 해놓고 퇴근하고 집에 와서도 조금 더 일을 하여 초반에 많은 설계 및 구현을 해놓았다

그리고 기획 단계에서부터 수시로 피드백을 받으며 수정해 나갔고 해당 기능들을 구현하는 데 얼마나 걸릴지 날짜를 계산하여 칸반 보드 시스템에 등록하여 관리하고 세세하게 기능들을 나눠 오늘은 오전, 오후에 무엇을 할지 체크리스트 형식으로 만들고 이슈와 참고사항들도 작성하여 계획을 세웠고 여기에 틈틈이 시간이 날 때마다 어려운 기능들에 대한 자료를 찾아보곤 했다 이렇게 일정 초반에 최대한 많은 것을 해놓고 일정 막바지에는 각종 기능들을 여유롭게 테스트하며 시간을 보낼 수 있게 나만의 일정표를 만들었다.


올해는 무엇을 샀을까?


이북리더기

올해 최고의 물건! 오닉스 북스 노트 에어2 를 샀다 보통 책을 많이 읽는 편이라 언제 어디서든 아이패드를 챙겨간다 아이패드로 책 그리고 필기, 메모까지 하는 편인데 회사에서 하루 8시간 이상 모니터를 보며 일하고 집에 와서도 공부를 위해 노트북이나 아이패드를 보니 눈이 너무 따가웠다 처음에는 수면 부족인 줄 알고 며칠을 푹 자보기도 했지만 금방 눈이 따가 워 져 고민일 찰나 이북리더기를 알게 되어 큰돈 주고 구매하게 되었는데 정말 잘 산거 같다 아이패드보다 확실히 눈 이 안 아프고 기기 자체도 나름 빠르다 os가 안드로이드 기반이기도 하고 램도 4기가이기 때문에 당연히 아이패드보다는 느리지만 눈 건강을 생각한다면 완전 만족이다


에어팟 맥스

중고로 하나 구매했다! 음질은 그저 그렇지만 노캔기능만큼은 확실해서 좋았다 음질도 70만 원대 소리는 아니지만 중고로 구매한 가격대 만큼은 잘 나오는 것 같다 문제는 무개가 너무 무거워 장시간 이용을 못한다는 거다.. 그 점이 너무 아쉽다.


키보드(리얼포스)

리얼포스에서 블루투스 모델로 처음 출시를 하는 거라 잽싸게 구매하였다 작년에는 해피 해킹을 구매해 잘 쓰고 있지만 리얼포스는 해피 해킹과는 또 다른 매력이라길래 늘 궁금하였지만 리얼포스는 유선 제품밖에 없어 아쉬워하며 크게 필요성을 못 느꼈지만 이번에 블루투스 모델을 출시를 하여 바로 구매를 했다 너무 큰 기대를 했던 탓인가 사자마자 바로 타건 했을 때 뭔가 밋밋한 감이 없지 않아 살짝 실망했는데 이게 며칠 쓰다가 다른 키보드로 가거나 다시 해피 해킹으로 가게 되면 체감이 확실히 되었다. 해피 해킹이 또각또각 초콜릿 부러트리는 소리가 나면 리얼포스는 부드럽게 초콜릿이 부러트리는 소리가 나서 만족하며 사용 중이다