절대 잊지 못할 2021년 회고록

아마 2021년은 가장 바쁘고 가장 많은 결정하였으며 가장 많은 경함을 한 해였다. 약 8년간의 다니던 회사를 그만두고 프론트엔드 개발자라는 커리어로 제2의 인생을 시작한 것과 지방에서 서울로 이사오는 등 수많은 일들이 있어서 인생에서 절대 잊을 수 없는 한 해가 될 것이다


퇴사하기 좋은 날이구나...

나도 이제 개발자다!


드디어 개발자로써 취업을 했다! 작년 회고록 때 쓴 거처럼 제일 첫 번째 목표인 취업을 하였다 올 8월부터 “큐비" 라는 교육 앱을 만드는 회사에 React-Native 개발자로 입사하였다 입사했을 때 한창 리뉴얼 작업 중이라 정신없이 돌아갔던 기억이 났고 나는 실무에 처음으로 일을 하게 되어 긴장 반 설렘 반으로 하루하루를 보냈다 모든 것을 다 할 수 있을 거 같던 의욕은 머리와 손이 뒤따라 와 주지 않아 아쉬웠지만 정말 하루하루가 재밌었다( 지금도 엄청 엄청 재밌다! 정말이다!) 내가 입사할 때는 1차 리뉴얼 작업 준비로 이미 기획과 디자인이 완료되고 기능 또한 거의 완료가 되어 막바지 작업중이어서 크게 내가 할 것이 없었다 배포 일정에 맞추기 위해 서포트 역활을 주로 하였고 앱의 코드 흐름을 살펴보고 적응하는 데 시간을 썼다



리뉴얼 작업


1차 리뉴얼 작업 때는 내가 한 게 많이 없었지만 2차 리뉴얼 때부터 본격적으로 작업을 하기 시작했다 이전에는 상태 관리 라이브러리를 사용하지 않고 ContextAPIHook 위주로 상태를 관리를 하였는데 앱이 점점 커지고 많은 기능이 추가되다 보니 성능에 대한 생각도 하지 않을 수가 없었다 ContextAPI 는 간편하고 Redux 보다 러닝 커브가 낮고 가볍지만 큰 단점으로는 Provider 를 구독하고 있는 모든 컴포넌트들이 리렌더링이 된다. 이러한 문제와 조금 더 편한 불변성 관리 등으로 2차 리뉴얼 때는 Redux 를 도입하여 상태 관리를 하였고 RESTful 에 맞게 API를 손을 보았다 React 의 장점인 재사용성을 높이기 위해 컴포넌트화를 만드는 것에 신경을 많이썼고 폴더 구조와 파일 이름 또한 신경을 많이 썼는데 리뉴얼 작업 전 개발자들과 다 모여 변수명에 규칙을 만들었다.

변수명을 Bool 값을 확인하는 변수명은 이름 앞에 is를 붙이고 어떤 데이터를 요청하는 변수명은 request를 어떤 데이터를 받아올때는 get 이라는 단어를 앞쪽에 사용하였다. 사수분은 모듈화 및 컴포넌트화를 하여 여러 곳에서 사용하는 것에 신경을 많이 쓰는 편이라 반복된 게 있다면 어떻게 줄일 것인가 아니면 어떻게 컴포넌트화를 할 것이 가에 대한 생각을 많이 하며 개발을 하였다 Redux 를 도입 후 사용 과정에서 생각보다 많은 코드량이 필요해 Toolkit 까지 같이 도입을 하여 createSlice 를 중점적으로 사용하였으며 코드량은 확연히 줄어들고 상태 값들을 분리하여 관리할 수 있는 부분에서 아주 만족스러웠다


리뉴얼 버전을 준비하면서 코드 리팩토링을 같이 병행을 하였는데 조금 더 좋은 코드를 짤 수 있도록 리팩토링 2판을 읽으며 사용할 수 있는 부분이 있으면 적용하려고 노력했다 하지만 책을 읽는 과정에 자바스크립트에 대한 기본 지식들이 많이 부족함을 느껴 모던 자바스크립트 Deep Dive 책을 구매하여 기본기를 다지며 읽은 내용들을 블로그에 작성하여 정리하였다 아무래도 모바일이다 보니 코드가 조금만 이상하거나 하드코딩을 하게 되면 앱에서 느려지거나 버벅 거림이 바로 느껴져 성능 부분도 생각을 안 할 수가 없어 성능에 관해 신경을 쓰기 시작했는데 단순히 useCallback, useMemo 만 사용하는 것이 아니라 불필요한 코드를 줄이고 반복된 코드들은 컴포넌트화하였다 어떻게 하면 조금 더 개선할 수 있을까? 어떻게 하면 조금 더 효율적으로 반복되지 않게 사용할 수 있을까? 에 대한 고민을 많이 하였던 거 같다


RN에서 개발을 하다 보면 안드로이드와 ios 에서 같은 스타일 작업을 해도 다르게 나오는 경우가 종종 있다 그중 하나가 안드로이드 환경에서는 텍스트에 기본적으로 들어가는 패딩 값이 있는데 이 부분 없애기 위해서는 스타일 값에 includeFontPadding = false 를 추가하여야 한다 하지만 styled-components 에서는 이게 적용되지 않아 결국 인라인 스타일에 적용을 시켜주었고 생각보다 shadow 기능을 제대로 쓰지 못해 불편한 점이 많았다 아마 다음 리뉴얼 프로젝트에는 쓰지 않고 stylesheet를 사용하고 props 가 필요할 경우 스타일을 함수로 전달해 주는 식으로 사용할 계획이다


신규프로젝트


새로운 앱 기획이 완료되어 설명을 듣고 이번에도 당연히 RN을 사용하여 개발을 진행하려 했으나 필기 기능이 너무 나 필요한 상황이어서 결국 RN이 아닌 swift를 채택하여 현재는 swift 언어로 개발을 진행하고 있다 새 언어로 개발한다는 거에 약간의 두려움은 있었지만 막상 하다 보니 언어에 대한 기본 개념 틀은 거의 비슷한 것들이 많아 배우는데 많은 어려움은 없었고 오히려 UI 부분 쪽은 더 편한 점도 많았다 이부분에 대해서는 swift 로 배포를 한 후 따로 작성을 할 예정이라 간단하게 얘기를 하자면 swift는 React-Native처럼 라이브러리에 의존적이지 않고 자체적으로 지원해주는 것이 많아 편하고 좋다 다만 RN으로 개발할 때는 타입스크립트를 적용하지 않았는데 swift 는 기본적으로 타입을 지정해줘야 하는 부분에서 많이 햇갈리고 어려웠다.

모든 부분이 깐깐하여 RN에서 사용했던거 처럼 컴포넌트화 작업하기가 쉽지 않았다 하지만 타입을 한번 적용함으로써 왜 타입스크립트가 인기가 있는지 왜 나왔는지 알 거 같았다 RN에서 TypeScript 를 적용하기 전에 보통 API 를 호출하여 어떻게 출력되는지 데이터 값을 보고 싶을 경우 console.log 를 통해 일일이 확인을 했다면 swift에서는 데이터를 받을 model을 따로 만들어 두어 어떤 데이터를 받는지 또 어떤 타입들인지 바로 알 수 있어 훨씬 편했고 타입을 적용함으로써 자동완성 기능이 굉장히 편해 조만간 회사에서 RN으로 개발한 앱도 타입스크립트 적용을 긍정적으로 검토하여 적용할 것 같다


개인 앱 리뉴얼 준비


RN을 처음 접할 때 앱을 하나를 만들어서 끝까지 배포해 보자! 라는 생각으로 앱 하나를 개발해서 배포를 하였다 쉽게 접근할 수 있는 TODO 앱이긴 하지만 개발할떄 부터 실제로 운영을 할 생각으로 개발했는데 나름 필요한 기능을 고민하고 생각하여 간단한 기능들만 있는 게 아니라 주간 캘린더, 알림, 메모, 중요도 설정 등을 개발하였다 이 앱을 조금 더 고도화하려고 한다 당시에는 앱 출시가 가장 우선이라 코드는 깨끗하지 못해서 올해는 리팩토링 작업과 타입스크립트 도입. 필요없는 라이브러리를 삭제 및 위젯 개발 등 새로운 기능을 추가하고 개편을 할려고 한다

💡 AppStore 에서 앱 구경하기

💡 PlayStore 에서 앱 구경하기


지름 보고서!



키보드계의 끝판왕인 해피해킹을 중고로 들였다! 무접접과는 완전 다른 토프레 키보드! 소리와 키감이 확실히 다르다 정말 초콜릿 부수는 소리 처럼 또각또각 느낌이 너무 좋다 한동안 하루에 한번 한컴타자 긴글연습을 하면서 키감을 느꼈지만 단점으로는 생각보다 키압이 무거워서 조금 피로감이 있다는 것과 키배열이 정말 죽음이라는것.. 처음 사용할때 오타가 정말 많이 났지만 정말 잘 산거 같다! 하지만 이제 또 리얼포스가 눈에 아른거린다..



현존 최강 노트북 M1 MAX 16인치 CTO 모델을 중고 미개봉으로 샀다! 현재까지 매번 인텔 칩만 사용하다가 입사하고 지급해준 m1 노트북을 처음 사용했는데 정말 이건 혁신이고 신세계였다! 인텔칩에서는 발열이 당연하다고 생각했고 나름 16인치를 사용중이어서 이 정도면 완전 발열이 없다고 생각했는데 m1 프로 에서는 왠만한걸로는 발열이 잘 나지 않아 충격이었다 다만 개발자로써 환경셋팅을 할때 정말 애를 먹었지만 그래도 정말 추천을 해주고 찬양하고 싶다 이때의 기억을 못있어 m1 max는 얼마나 좋을까 라는 고민은 하는 순간 이미 당근마켓을 보고 있더라..그래서 매물이 나오자 마자 바로 사버렸다 후기는 그냥 좋다! 정말 좋다! 말이 필요 없다!


마무리


개발자가 된 후로부터는 하루하루가 정말 빨리 간다 공부해야 할 것과 하고 싶은 것들은 점점 더 쌓여가고 시간은 너무 짧게만 느껴져 한정된 시간을 잘 써야 할 거 같다는 다짐이 들어 지금보다 시간 배분을 좀 더 효육적으로 쓸려고 노력하는 중이며 언제나 성장에 목말라있는 한편 지금 내가 하고 있는 길이 맞는지 제대로 가고 있는지 걱정도 된다 올해는 작년보다 더 압도적으로 성장한 개발자가 되고 싶다