old/토이프로젝트

토이 프로젝트를 시작한 이유

뒷골목프로그래머 2021. 11. 8. 18:45
반응형

 안녕하세요. 글쓰는 개발자 입니다.

 제목에서 보다시피 저는 토이프로젝트를 진행 하려고 합니다. 업무를 하면서 프론트엔드 개발이 재밌고 더 적성에 맞아 요즘 회사의 프론트엔드 코드를 많이 살펴보고 버그픽스도 하나 씩 하고 있는데요. 현재는 업무에서 python django 백엔드 개발도 하고 있고 React로 개발된 기존 제품의 프론트엔드 유지보수도 맡아서 하고있습니다. 요즘 제가 크게 관심 갖고 있는 부분이 TDD인데요. 백엔드는 pytest를 활용해서 TDD를 실천 중인데 프론트엔드 제품은 테스트 케이스가 전혀 작성되어 있지 않은 상태입니다.(백엔드의 테스트코드도 형식만 갖춰졌을 뿐 손봐야 할 게 많습니다.) 프론트 개발자분들에게 "왜 테스트 케이스가 없나요?" 라고 바로 물어보기가 좀 그랬지만 용기내서 정중하게 질문 했습니다. 프론트엔드 개발자 분들 말씀으로는 '프론트를 어떻게 테스트하냐. 프론트는 TDD가 안된다.' 였습니다.

 처음에는 많이 무안하고 부끄러웠습니다. 원래 저는 백엔드 개발자로 입사한 것도 있고 주니어 개발자의 무지함이 드러난 것 같아 얼굴이 화끈거렸습니다. 그렇지만 한 편으로 '그래도 테스트가 얼마나 중요한데 정말 프론트는 안한다는게 맞나?' 라는 의심이 들었고 조금 찾아 본 결과 역시 프론트엔드도 TDD 가 중요했습니다. testing tropy(Kent. C. Dodds) 방식의 테스트 기법(백엔드와는 조금 다릅니다.) 도 있었고 프론트 엔드 역시 TDD가 중요하다는 Article을 많이 접하게 되었습니다.

 그렇다면, 토이 프로젝트와 위 이야기가 무슨 상관이 있는 걸까요? 바로 개발자들을 설득하기 위해서 입니다. 저희 회사에는 약 20명 정도이 개발 인력이 있고 꾸준히 채용을 진행하고 있습니다. 개발자가 빨리 늘어나고 있지만 개발 프로세스나 개발 문화가 정립된 것이 없어 코드 컨벤션이 일정하지 못하고 코드 리뷰 시스템 또한 제대로 정착되지 못했습니다. 현재는 저와 뜻을 공유하는 몇몇 개발자 분들이 코드리뷰에 참여하고 계신데요. 이건 올바르지 못하다는 게 제 생각입니다. 제가 좋다고 생각하고 꼭 필요하다고 느끼는 것들을 회사 전체에 확산 시키고 공감대를 형성해서 개발 프로세스의 하나로 정착시키고자합니다.

 그래서 이 프로젝트를 통해서 단순히 'TDD하자'가 아니라 정착을 위한 근거와 설득을 위한 자료로 사용하고자 합니다. 저를 돌아봤을 때 근거가 명확하고 충분한 자료가 준비 된 상대의 제안은 열린 마음으로 듣고 고려하며 설득이 되었지만, 무턱대고 자기 주장만 이야기하는 경우에는 그렇지 못한 경우가 많았습니다. 그래서 저 또한 상대를 설득하기 위해, 대부분이 저 보다 경력이 많거나 시니어 개발자의 위치에 계신 분들 까지 설득하려면 저 또한 근거가 명확해야 합니다. 프로젝트를 진행하면서 실제로 제가 여러 Article에서 봤던 장점들 특히, Side Effect 발생의 예방, 명확한 요구사항 정의로 개발시간 단축, 리팩토링 용이성 등을 확인하고 Test Case 작성 요령을 문서화 하여 공유하고자 합니다.

 그리고 프론트엔드 개발이 재밌어진 지금, TypeScript, React, Node.js 등을 실 서비스에 접목할 수 있다는 점에서 이번 토이 프로젝트는 저에게 중요합니다.

 

1. 서비스 기획

    1) 개요   

        운동일지를 작성하고 저장 할 수 있으며, 운동 결과를 대시보드에서 통계정보로 확인 할 수 있는 어플리케이션        

    2) 요구 기능

        (1) 운동일지 작성 : 체중, 운동 부위, 운동종목(무게, 세트수)

        (2) 작성된 운동일지 기반 출석률, 부위별 운동 비율, 볼륨 증가량 대시보드 확인 가능

        (3) 관리자 페이지에서 사용자 status 조정, 작성글 관리, 운동종목 추가/삭제 가능

 

2. 기술 스택

    업무에 TS, React, Postgre를 필요로 하게되어 아래와 같이 기술 스택을 구성하고자 함 

구    분 기    술
개발 언어 TypeScript
FrontEnd React
BackEnd nestJS
DB MariaDB
Infra Docker

 

반응형