짧은 모바일 프로젝트를 마치며…

나는 현재 부트캠프를 통해, 생애 처음으로 프로그래밍을 배우고 있다. 
정확히는, 웹-앱 분야에 널리쓰이는 자바스크립트를 공부하고 있다.

6월부터 시작한 부트캠프는 현재 1/3의 코스만 앞두고 있다. 
기초를 쌓을 수 있는 한달 반의 스프린트를 마치고, 최근에는 2주의 짧은 프로젝트를 마쳤다. 본격적인 프로젝트에 앞서 우리만의 아이디어를 직접 구현해보는 몸풀기 프로젝트였다.

우리 팀은 집에 있는 약들을 한 눈에 파악할 수 있는 약 기록 어플을 기획했고, 기획만큼은 아니지만 그래도 bare minimum의 기능들은 구현해낼 수 있었다.

나는 이 프로젝트에서 백엔드를 맡았다. 서버 세팅과, 로그인 구현, 그리고 시퀄라이저를 활용한 API 처리를맡았었는데. 간단한 로직이어서 그랬는지, 스키마를 쉽게(한번에 다 때려넣어서) 구성해서 그랬는지, 백엔드는 일이 빨리 끝났다. 반면 리엑트 네이티브를 난생 처음 접하는 프론트 팀들은, 언어 배우랴 익숙하지 않은 Expo 쓰랴, 일이 쉽게 풀리지 않았고. 상대적으로 여유가 있었던 백엔드에서 리액트 네이티브를 공부해 프론트엔드를 도와주는 방향으로 프로젝트 후반부가 흘러갔다. (나는 코드만 겨우 읽을 줄 아는 정도에서 그쳤지만..)
데드라인 하루 전날, 팀은 철야를 했고 일을 마무리할 수 있었다. 일러스트레이터를 다룰줄 아는 팀원덕분에 안드로이드 앱 제출도 큰 난관없이 해냈다.

만들었다는 쾌감도 있었지만. 개인적으로는 아쉬운 점이 많았던 프로젝트였다. (사실 이게 내가 기록을 남기는 이유이고) 이런 아쉬운 점들과 이러한 것들로부터 내가 느끼고 고치려는 점들은 아래와 같다.

깃 repo에 제출하거나 받을 때에도, 충돌을 우려해 항상 복사본을 놔두고 일을 진행했다. merge는 무조건 깃헙 사이트에 직접 들어가 처리했고. ㅎ
그럼에도 불구하고, 충돌이 일어나면 stash로 날려버리고 다시 받았다. 커밋을 통한 정교한 일처리 보다는, 보험을 들고 한번에 싹다 밀고 받는 그런 무지막지한 일처리로 깃을 다뤘던 것 같다.
-이걸 통해 느낀 것은, 충돌이 최대한 안나게끔 깔끔한 git pull & push를 위해서는 기능별로 최대한 모듈화를 해놓아야한다는 것이었다. 우리는 API핸들러를 한 페이지에서 다뤘었는데 각 API를 구분해서 만들었음에도 자잘자잘한 충돌들이 많았다. 업무 분담을 한 파일의 모듈로 나눴으면, 겪지 않았을 일들이었을 것이었는데..
-그리고 소스트리와같은 (클라이언트P?)의 중요성을 느낀 것이었다. 어떻게 해결해야할지는 아직 잘 모르지만, 소스트리를 통해서 어떤 곳에서 가지가 합쳐지지 않고 문제가 되고 있는지는 파악할 수 있었다. 이번에는, 그러한 부분들을 강제로 붙이는 작업을 했었는데, 나중에 git을 더 알게되면 좀 더 정교하고 부드럽게 일을 처리해볼 것이다.

사실 백엔드쪽에서 일이 빨리 끝나자, 나는 허탈함과 조바심을 느꼈었다. 나는 배운 것에서 조금 업데이트했다는 느낌뿐이었는데. 옆자리 프론트엔드는 하루하루 늘어가면서 신기한 뷰를 구현해내는게 보이고, 나도 배워야하는데.. 라는 채찍질에서 나왔던 감정들이었다. 
이런 느낌과 함께 내 첫 백엔드 경험에서 느낀 것은,
1, 백엔드는 세팅과 스키마를 통한 로직 구성이 아주 중요하겠다는 것.
2, 스키마는 우리가 생각지 못했던 문제들로 엄청 늘어난다는 것.
3, join테이블은 기록해놓는 페이지에 불과하다는 것(너무 겁먹지 말자)
4, 케바케이겠지만, 보통 백엔드에서 어느정도 일처리가 끝나고, 프론트엔드를 지원하는 형식으로 프로젝트가 흘러갈 것이란 느낌적인 느낌.
5, 윈도우로 expo나 안드로이드스튜디오 쓰는 작업은 정말 짜증난다..는 것.
이정도 였다.

ㅅㄱ