신입개발자의 첫번째 프로젝트 후기

4 minute read

취업을 하게되고 처음으로 맡게된 프로젝트가 마무리 되었다.

처음으로 진행해본 NodeJS 프로젝트지만 큰 문제 없이 잘 마무리 한것 같아서 다행이다.

Java 개발자가 되겠다는 원대한 꿈을가지고 머나먼 이국만리 서울로 올라와

비트캠프에서 6개월간 Java를 공부하고,

프로젝트 기간에도 나는 Java 개발자가 목표니까

NodeJS가 우리 프로젝트에 들어올 자리는 없다며, 쳐다도 보지 않겠다고 다짐을 했었는데…

NodeJS는 설치도 해보지 않았고, 알고 싶지도 않았다.

또 JavaScript는 아래처럼 생각해왔었다.

JavaScript는 화면 기술이니까 JQuery로 최소한으로만 할줄 알면되는거 아닌가?
난 백엔드니까….?

이렇게 생각해왔던 지난날의 내가 벌이라도 받는것 같았다.

그랬던 내가 지금은 NodeJS 개발자가 되어서

프로젝트를 마무리한 후기를 작성하고 있다.

역시 사람 일이라는건 모르는거다.

격렬한 분노지만 후회하지는 않는다


거기에 동적타입 언어라니…

나름 6개월간 Java에 익숙해졌다고 이것조차도 불편하기만 했다.

물론 프로젝트에 TypeScript를 도입해서 유사 Java(?)와 같이 로 할 수 있어서 정말 좋았다.

오히려 상황에 따라서 any를 이용해 return이나 parameter Type을 유연하게 처리할 수 있어서 굉장히 편리하다고 느꼈다.

물론 any 타입을 최대한 줄여야 하겠지만, 때로는 필요할때도 있더라…

인프런을 통해 속성으로 NodeJS 공부를 진행했다.

서둘러서 프로젝트에 투입되어서 걱정도 되었지만,

새로운 도전을 한다는 것에 기대도 많이 됐다.

제일 빨리 실력 느는건 직접해보는거야

대표님과 사수님의 의견에 적극 동의하는 바.

긍정적인 마음가짐으로 프로젝트를 시작할 수 있었던 것 같다.


난관

1. 자동화

프로젝트를 진행하면서 의외로 어려움을 겪었던건 사수님이 미리 여러가지 미들웨어를 만들어 놓고,

심지어 프로젝트의 템플릿 생성 조차도 자동화를 해놨다는 것이었다.

물론 생산성 측면에서는 자동화 가능한 부분은 자동화 해놓는게 백번 천번 맞지만,

자동화툴을 보는 순간 코더, 타이피스트는 되지 말아야겠다고 다짐하던 내 모습들이 부정 당하는것 같았다.

그래도 신입인지라 삽질도 많이 해보고싶고(?),

여러가지 경험을 해보고싶다는 마음이 강해서 자동화툴들은 나중에 사용하겠다고 사수님께 이야기 드렸다.

물론 이 내 마음을 사수님께서는 이해하지 못했을 수도 있겠다고 생각이 든다.


업무는 정해져 있고 그 상황에 맞춰서 최적의 Flow를 구축해 놓으셨지만,

이제 막 들어온 신입 나부랭이가 사용하지 않겠다고 말씀을 드리니 죄송한 마음이 컷다.

그래도 내 생각에 일에는 단계가 있는법.

지금은 최소한으로만 자동화툴을 사용하고 시간이 지나고 필요에 의해서

사용을 할때 진짜 빛이 날 수 있는 기능들이라 생각했고,

지금의 나에게는 전혀 도움이 되지 않는다고 생각이 들었다.

그래도 툴의 원리만 이해하면 얼마든지 활용 가능하다는 생각에 그안에 작성된 코드 자체에 집중하니,

지금은 자동생성된 코드의 많은 부분을 이해할 수 있게 된것 같다.

이렇게 발전하는거 아니겠는가?



2. Json Format

학원 프로젝트에서 화면은 JSP를 이용한 SSR을 통해 데이터 바인딩도 내가 전부 전담했었지만,

회사에서는 화면을 담당해주시는 분들이 따로 있기에 협업경험의 부재가 많이 아쉬웠던것 같다.

그냥 JSON으로 화면에 맞는 데이터만 뽑아주면 되는거 아닌가?

물론 필요한 data를 적당히 던져주면(?)되지만,

이런 생각이 프로젝트 막바지에 가서야 굉장히 센스없는 행동임을 알게되었다.

{
  "list": [
    {
      "id": 146,
      "price": 1000,
      "createdAt": "2020.05.17 19:39",
      "estimateId": 79,
      "isReviewMine": "false",
      "estimateStore": {
        "id": 95,
        "store": {
          "id": 346,
          "name": "테스트 매장",
          "thumbnail": {
            "name": "/store/image/14cf8229-9835-4984-be27-6d6c5fcfc630.png"
          }
        }
      }
    }
  ]
}

깊어지는 Deth에 늘어가는 프론트 개발자님들의 한숨을 생각하니 세삼 그렇게 미안할 수가 없었다.

그래도 나중에라도 알았으니 얼마나 다행인가! 다음 프로젝트때는 안그러면 된다.

사랑합니다...♡



3. ORM

Raw Query를 이용해서 개발을 해왔던 나는 ORM이라는 환경이 많이 생소 했던것 같다.

처음에는 Raw Query를 이용해 개발을 하고 싶다고도 생각을 했었지만,

수시로 요구사항이 변경되고 신규 기능이 추가되는 업무의 특성상 ORM의 유지보수 편의성을 도저히 따라갈 수가 없더라.

특히나 난감했던 상황은 Table을 수정할때였는데

단순 Column의 수정이나 추가는 전혀 문제가 되지 않았지만,

새로운 Foreign Key가 필요하다던가 필요하지 않다던가의 상황에서 Alter 명령이 제대로 수행되지 않아 Table을 전체 다 날리고 새로 Create상황도 빈번했다.

그때마다 Mokup Data를 매번 만들어야 했으니, 정말 번거로운 작업이었다.

Dump라는 기능을 사용하면 Mokup Data 생성에 관한 어려움은 많이 해소될 것 같다.


개선

1. Coding Style

Java에서 NodeJS로 넘어오게 되면서 가장 큰 변화는 아무래도 코딩스타일이지 않을까 싶다.

기존 tap => 공백 4번에서 공백 2번으로 바뀌고,

각 제어문의 구분은 Enter로 꼭꼭 구분을 해줬었는데 이제는 Enter없이 이어서 작성을 하는등…

사수님의 코드스타일에 최대한 맞춰서 변경을 많이 했다.

100% 같은 코딩 스타일은 갖추지 못했기 때문에 또 하나의 끔찍한 혼종이 탄생하는 결과를 낳았다.

하루하루 스스로의 코딩스타일이 변하는걸 느낄 정도였는데,

한달전에 짠 코드를 보면서 내가 도대체 왜 이렇게 코드를 짯을까 의구심이 들기도 했었다.


코딩스타일이라는건 시간이 지나면서 서서히 자리잡는 습관이라고 생각하기 때문에

그저 코딩을 많이 많이해서 좋게 습관들인 나만의 스타일을 찾아가는게 관건일 것 같다.


2. API

현재 URL 설계는 RESTful하지 못한 API 구조를 가지고 있다. 행위자체를 URL에 담고 있으니 말이다.

그래서 다음 프로젝트때는 view나 info와 같은 행위를 나타내는 키워드를 URL에서 제거하고 싶다.

물론 REST의 제약조건 중에서 특히 Self-descriptive와 HATEOAS는 지킬 여건이 되지 않아서,

REST API보다는 HTTP API 스럽게 설계를 진행해보고 싶다.

알아도 무섭긴 하다


물론 설계가 끝이 아니라 API 문서의 양식도 수정을 해야겠고, 사수님의 의견도 여쭈어 봐야하지만 말이다.

혼자하는 일이 아니니 이런 부분에 있어서 의견을 묻는것도 많이 조심스러워 지는것 같다.

내 본의와 다르게 듣는사람이 다르게 이해할 수도 있고,

내가 하고 싶은 말이 제대로 전달되지 않으면 이상한 상황이 연출 될 수 있기 때문이다.

그렇기 때문에 물론 말하는것도 Skill이지만, 상대방의 의견을 잘들어주는것도 굉장한 Skill이 아닐까 생각이 든다.



결론

100% 만족은 어렵지만 그래도 재미도 있었고 무엇보다 아쉬움이 많이 남은 프로젝트였다.


그래도 다음 프로젝트때는 더 발전한 내 모습을 볼 수 있을거라 생각하니 기대가 많이 된다.

스스로 해결하려는 습관을 들이고 싶어서 최대한 사수님께 물어보지않으려고 노력했는데 그건 잘 안된것 같다 ㅋㅋ;;

또 서버만 개발하다 보니 간단한 관리자 페이지 정도는 내가 만들 수 있어야 하지 않을까 생각도 들어서,

Vue를 공부해보고 싶다는 생각이 들었다.

내 기술스택이 100%라면 Back-end 95%에 Front-end 5% 정도 차지할정도로?

잘은 모르지만 Vue가 가볍게 시도해보기에는 참 좋을거 같다는 생각이 들었기 때문이다.

마침 집에 책도 있으니 필요성을 더 많이 느끼게 되면 바로 공부에 들어가게 될것 같다.

다음 프로젝트는 그룹채팅 기능을 가지고 있는 커뮤니티 앱을 개발하게 될것 같다.

벌써부터 기대가 많이 된다.

Leave a comment