프론트엔드 개발자로서 일한 지 약 두 달이 지났다.
그동안 나는 무엇을 배웠을까?
사실 모든 프로젝트가 그렇겠지만 기한에 맞춰서 프로젝트를 구현한다는 것이 쉽지가 않다. 그래도 사이트 프로젝트의 경우에는 일정을 비교적 유동적으로 변경할 수 있는 반면에, 회사에서는 그렇지가 않다. 그러다 보니 일단 시간에 쫓겨서 작동하는 코드를 짜는 것을 일 순위로 생각하게 된다. 성능이 어떻든 일단 작동하는 페이지를 만들고, 리팩토링은 나중에 하자고 생각하게 되는 것이다.
처음부터 성능에 신경을 쓰며 더 많은 시간을 투자해 개발하느냐, 아니면 일단 작동하는 페이지를 만들고 나중에 리팩토링하느냐는 맞고 틀리는 게 아니라 선택의 영역인 거 같다. 그래도 다행히 부지런히 구현하다 보니 시간적 여유가 생겨서 input 입력에 debounce를 적용한다든지, 중복되는 코드로 custom hooks를 생성한다든지, memoization을 적용하는 등의 방법으로 틈틈이 리팩토링을 하고 있다.
프론트엔드 개발자는 프로덕트 매니저, 백엔드 개발자 등 많은 사람들과 소통한다. 약 두 달의 기간 동안 내 의견을 상대방이 잘못 전달받는다거나, 아니면 아예 소통하지 않아 문제가 발생했던 적이 있기 때문에 이런 점을 고쳐야겠다는 생각이 들었다.
예를 들면 이런 것이다. A안 B안 중에서 선택을 해야 하는데 나는 A안을 선택하는 것으로 상대방에게 의사 전달을 했다고 생각했는데, 상대방은 내가 B안을 선택한 것으로 오해를 했던 적이 있었다. 이런 상황을 방지하기 위해서 내 의사를 더욱 명료하게 전달하고, 대화한 내용을 최종적으로 확인하는 등의 방법으로 노력해야겠다고 생각했다.
또는 이런 일도 있었다. 내가 생성한 공통 컴포넌트를 다른 팀원도 사용하고 있었는데, props의 네이밍이 명확하지 않은 거 같아서 props 이름을 변경했다. 해당 컴포넌트를 검색해서 컴포넌트에 전달하는 props의 이름을 전부 변경해놓긴 했지만 merge 과정에서 문제가 생겼는지 이로 인해 에러가 발생한 적이 있었다. 공통 컴포넌트를 변경했던 것인 만큼 이 내용을 팀원들에게 미리 공유했다면 에러가 발생해도 당황하지 않고 빠르게 문제의 원인을 찾을 수 있었을 거 같다.
본격적으로 API 통신을 하고, 많은 에러를 겪으며 깨달은 점은 예외 처리와 에러 핸들링이 너무나도 중요하다는 점이었다. 에러가 발생했다고 페이지 전체를 날려버리고 흰 화면이 뜨게 해서는 안된다. 그래서 API 통신에 실패했을 경우에 대비해 예외 처리 코드를 추가한다든가, 버튼에 연결된 이벤트 핸들러를 실행했을 때 async 함수의 catch 에 alert modal을 띄우는 로직을 추가하는 등의 방법으로 노력하고 있다.
TextField에 아무런 값도 입력하지 않고 검색 버튼을 클릭했을 때 API 호출을 한다면 이것은 불필요한 호출일 것이다. 또한 검색 버튼에 debounce를 적용해서 검색 버튼을 연속으로 몇십 번을 클릭하더라도 딱 한 번만 API를 호출하는 것도 불필요한 호출을 막는 것이라고 할 수 있다. 이미 데이터를 불러온 경우에는 동일한 API를 다시 호출하지 않게 조건문을 추가할 수도 있다.
신입으로서의 열정이 넘쳐나는 시기인지 급한 업무가 없더라도 회사에 남아서 야근을 하고 가는 날이 종종 있다. 내게 주어진 업무를 최대한 빨리 끝내놓고 싶기도 하고, 어차피 집에 가면 누워있을 게 뻔하니 회사에 남아서 공부를 좀 더 하고 가기 위해서 이기도 하다.
그런데 가끔은 내 파트를 너무 빨리 끝내 버려서 팀원들과 속도가 맞지 않아 약간 한가해지는 경우가 발생한다. 그럴 때는 투두리스트에 적어놓았던 수정하고 싶었던 부분들을 리팩토링 하거나 도메인 관련 공부하는 시간을 가지는데, 팀원들과 속도를 맞춰야 하는 건가 생각이 들기도 한다. 그래도 현재로서는 이 열정이 바스러지기 전에 최대한 많이 배우고 공부해 두는 것이 좋지 않을까 싶다.
회사에 들어오기 전에는 매일 알고리즘 문제를 풀면서 github에 잔디 까는 것을 좋아했다. 그런데 출퇴근을 하면서 매일 알고리즘 문제를 푸는 것이 체력적으로 쉽지가 않아서 잠시 잔디를 방치해놓은 시기가 있었다. 그래서 내가 매일 꾸준히 하는 것을 기록할 만한 것이 없을까 고민하다가 기술 아티클을 읽은 내용을 기록해야겠다고 생각했다.
나는 매일 4시간이 걸리는 출퇴근길이 너무 아까워서 그 시간에 항상 개발 관련 기술 아티클을 읽는다. 처음에는 광기(?)로 시작했지만 지금은 이것저것 알게 되는 게 좋아서 꽤나 재미있게 읽고 있다.
이렇게 매일 읽은 기술 아티클들을 카테고리별로 정리한 후 아티클 링크와 요약한 내용을 github에 매일 push 하고 있다. 나중에 필요한 정보가 있을 때 찾아보기도 좋을 거 같고, 내용을 요약하면서 읽은 내용을 복습할 수 있기 때문에 요즘 열심히 레파지토리를 업데이트하고 있다. 이 레파지토리가 9월의 가장 큰 이벤트라고 할 수 있다.
- 알고리즘 꾸준히 풀기 & 기술 아티클 꾸준히 읽기
- 업무일지 내용으로 블로그에 밀린 글 작성하기
- <그림으로 배우는 Http & Network Basic> 완독하고 기록하기
- 일상 속에서 소소한 즐거움 찾기 (너무 현실에 찌들어서만 살지 말자...)
- 인간관계 속에서 좀 더 여유 가지기, 다정한 사람이 되자
- 무엇보다도 9월 말이 데드라인인 프로젝트 기한 안에 만족할 만큼 구현하기!
Weekly Work Log 기록하기
노션 근무일지에 보드 추가해서 월별로 나눠봤다. 보기에 깔끔해진 거 같아서 뿌듯.
10월 한 달 동안 아파트 엘리베이터를 교체하는 이유로 엘리베이터를 사용할 수 없다. 매일 계단을 오르내리며 더욱 건강한 사람이 될 수 있는 기회로 삼아야겠다.🫠