무엇을 했나?
노드로 된 백앤드와 리액트-리덕스-사가로 된 프론트 개발, 유지 보수작업을 했다. 성능 개선이나 버그 수정, 신규 기능 개발 같은 개발의 전반적인 작업들을 했다.
처음 1개월은 성능 노드로 백앤드 로직을 수정하면서 성능 최적화를 했는데 주로 쿼리 개선과 집계 테이블 만들고 인덱스 수정하는 DB 작업을 했다.
그 다음 3개월은 노드와 리액트에 코드를 직접 추가 수정해서 신규 기능 개발을 했다.
이미 개발되어 있는 프로덕트에 기능을 추가하는 거라 리액트-리덕스-사가 세팅 같은 고통스러운 작업은 피할수 있었고 배우는 것도 쉬웠다.
어려운 점
노드
일단 노드를 처음 쓰면서 놀란 점은 노드 패키지들이 무식하게 크다는 것 이다. java를 쓸 때는 jar 같은 형식의 파일인데 노드는 npm install
하면 그냥 통짜로 가져와서 프로젝트 파일이 무거웠다.
노드 개발이 좋긴 좋았는데 개발 생산성에 있어서는 글쌔 잘… 자바스크립트의 생산성과 프론트 백앤드를 같은 언어로 한다는 장점에서 오는 코드의 네이밍이나 더 좋은 코드를 짜는데 도움을 주긴 했는지만 자바스크립트의 특이함을 이해 못하고 잘못된 코드를 짜서 짜증난 적도 있었다.
그런 점 때문에 막상 개발 자체는 잘한거 같은데 버그 수정하다 일정까지 개발을 못하기도 했다.
리액트-리덕스
그 전까진 간단한 수정만하다 신규 기능 개발을 시작하고 리액트를 만지작 거리는데 props, state 는 뭐하는거지? 리듀서는 뭐하는 걸까? 그래서 리덕스가 뭐라고? 일단 이해는 안되지만 ant를 따라하면 되는구나, 혹은 이게 왜 잘 돌아가지? 싶은게 많았다.
이걸 처음부터 구축했다면 정말 고생했을거다. 정말 다행히도 그 복잡한게 이미 구현되어 있어서 당장 개발하는데는 무리가 없었다.
대신에 이게 왜 돌아가는지 이해 못하고 될 때까지 예제를 수정하면서 놀다가 그 코드로 PR을 날리는 경우가 많았는데 그 똥같은 코드를 동료가 수정해주거나 리뷰를 달아줘야했다.
그 만큼 자바스크립트와 리액트-리덕스 개념에 대해선 쉽게 배웠다.
그 동안 리액트니 리덕스니 너무 좋은 기술인 줄 알았는데 컨셉 자체는 얼추 이해해도 코드로 만들기는 어려운 기술이란 생각이 들었다.
배운 점 + 좋은 점
4개월간 자바스크립트가 세련된 기술이라고 느꼈다. 스칼라에서 쓰던 함수형 문법들이나 복잡한 신개념들이 자바스크립트에는 실제 개발에 쓸수 있게 되어 있었다.
코드의 생산성 자체도 내가 해왔던 어떤 언어보다 뛰어났다. 연산자를 이용해 if문을 대체하거나 자바스크립트 객체의 편리함은 말로 이루지 못 할 정도로 좋았고 모든게 일급 객체로 인자로 넘겨줄수 있고 map 함수와 async, awiat 같은 진보적이면서도 유용한 문법을 쓸 수 있는 것도 큰 장점이였다.
4개월간 가장 큰 소득으로는 자바스크립트를 많이 알게된 것이다.