Development/썬카(SunCar) - 개인 프로젝트

[썬카/정기 회고] 스프린트 1 종료

양선규 2025. 3. 21. 11:13
728x90
반응형

로그인 화면

 

 

기능 명세서 단위로 봤을 때, 구현한 기능은 2개 뿐이다. 로그인 그리고 회원가입.

무슨 이거 2개 만드는데 3주나 걸렸냐 싶겠지만, 진짜 오래 걸린 것 맞다.

 

처음 진행하는 개인 프로젝트다 보니 생각보다 기능구현 외에 할 일이 정말 많다는 것을 느꼈다.

회사에서 잠깐 일을 했더라도, 전부 짜여진 코드의 틀 위에서 약간의 기능 추가와 수정, 관리 정도였고.. 아예 환경세팅부터 시작하는 것은 처음이었으니 그럴 만도 하겠다.

 

지난 3주를 돌아보면 나는 단 하루도 쉰 날이 없는데 왜 이렇게 지체되었을까 라는 의문이 든다.

아침에 일어나 운동을 갔다오고, 밥 먹고 하루종일 컴퓨터 앞에만 앉아있는데 말이다. 뭐 예비군도 갔고, 가끔 술도 마셨고 그러긴 했지만 그건 큰 핑계가 되지 못한다. 3주는 너무 길다.

기간이 지체된 이유

1. 비효율적인 시간 사용

생각해본 가장 큰 원인은 시간을 비효율적으로 사용한 점이다.

 

난 시간을 약간 버리는 것 정도(몇 분에서 길면 몇 시간)는 꾸준함으로 충분히 커버가 된다고 생각했었다. 그런데 전혀 아닌 것 같다. 하루 30분만 버려도 이걸 일주일간 모으면 210분, 즉 3시간 30분이다. 이 시간은 절대 무시할 시간이 아니다. 30분만 버린다는 가정에 이 정도지, 아침에 일어나서 30분 뒤척이기 + 밥 늦게 먹으면서 30분 버리기 + 화장실에 오래 앉아있기 10분 + 작업하다 집중 못 하고 자꾸 딴 짓 하기 10분~ 또는 몇 시간… 이런걸 다 합치면 일주일에 수십시간은 버리고 있지 않나 생각이 든다.

 

회사를 다닐 때는 분명히 지금과 시간표는 같았음에도 훨씬 많은 일을 해낼 수 있었다. 요새는 하루가 너무 짧고 딱히 한 일이 없다는 것 같은 느낌만 들어 불안하다. 이것의 가장 큰 원인은 시간을 효율적으로 사용하지 못 함에 있는 것 같다.

 

2. 기능 외 도입할 것들이 많고, 성장을 위해 학습하면서 구현해야 함

아무런 생각도 하지 않고 단순히 로그인, 회원가입만 만들 생각이었다면, 환경세팅 시간 빼고 진짜 2시간이 뭐야 1시간 안에도 만들 수 있었다. 백은 테이블 만들고 로그인 검증 로직은 그냥 문자열 비교 해 버리고 회원가입 create 로직 만들면 끝이고, 프론트는 요청을 보내기만 하면 되니까. 최대한 단순하게 하면 말도 안 되게 빨리 끝난다.

 

하지만 내가 원하는 건 기능 자체의 구현이 아니라 코드 퀄리티와 유지보수성을 높이는 것 이었다.

겉으로 보기엔 로그인, 회원가입 두개 끝이지만.. 가장 먼저 도메인 특성을 고려한 ERD 설계가 필요했다. 일단 여기부터 머리 좀 아팠다. 거의 하루종일 걸렸다. 이후엔 예외 처리를 위한 전역 핸들러와 커스텀 예외 작성 및 사용, QueryDSL 설정과 custom repository 구현. 누군가에겐 별거 아닐 수 있지만 완전히 처음 해 보는 데다가, 이걸 이해하지 못 하고 짜는 것은 아무런 의미가 없다고 생각했기에 한줄한줄 공부하면서 구현하느라 오래 걸렸다.

 

그리고 Spring Security를 사용한 JWT 액세스 토큰 발급 로직은 정말 어려웠다. 이제 이해하고 나니 조금 쉽게 느껴지지만 처음엔 이게 대체 뭔 소린가.. 하나도 이해가 안됐었다. 구현하는 것 자체도 어려웠고, 구현해 놓고 나서 코드를 완벽히 이해하는 것도 시간이 꽤 걸렸다.

 

또한, 구현해놓고 넘어가기만 하면 훗날 남는 게 없을 것이란 생각에 블로그에 구현한 것들을 정리해서 올렸다. 근데 아는 사람은 알겠지만 정리하면서 나의 헛점을 발견하게 된다. 그럼 그거 또 찾아서 공부하고, 정리하고 하다보면.. 몇 시간, 아니 하루종일 걸리기도 한다. 나도 그랬다. 구현에 든 시간과 정리하는 데 든 시간이 별 차이가 없었다.

 

그냥 허점 없이 완벽하게 짜고 싶었다. 코드 한줄 한줄, 하나의 서비스 전체 흐름을 완벽하게 이해하고 싶었다. 그게 내가 개인 프로젝트를 진행한 이유이기도 하니까.

 

3. 생각보다 오래 걸린 프론트엔드

진입장벽을 낮추기 위해 React 대신 Vue를 선택했지만, 생각보다 괜찮아 보이는 강의가 별로 없었고 그렇다고 책을 사기에는 시간이 너무 지체될 것 같았다. 처음엔 인프런에 있던 제로초님 강의를 보다가, 구버전인 Vue2 기준의 강의라는 걸 알고 유튜브에 있던 2시간 짜리 압축 강의로 전향해서 들었다. 근데 그게 나에게 훨씬 더 잘 맞았다.

 

제로초님 강의는 빠르게 실무에 들어갈 수 있게 한다기보단, 초심자를 위해 코드 한줄한줄, 예외 하나하나 짚어가면서 진행하는 느낌이 있었다. 그래서 약간 지체되는 느낌도 들었다. 내가 개발경험이 아예 없었다면 제로초님 강의가 더 맞았겠지만, 그게 아닌 나에겐 빨리빨리 진행하는 실무형 강의가 더 맞았던 것 같다.

 

강의를 바꾸고 나서 학습 진도가 꽤 빨라졌으나, 결과적으로는 프론트 학습 및 개발환경 셋팅까지 거의 7일 가까이 걸렸다.

그리고 프론트엔드 코드를 직접 쳐보니, 이거 간단하게 하려고 하더라도 백만큼이나 오래 걸리겠다 싶었다. 그래서 완벽한 이해와 섬세함은 프론트에서만큼은 조금 접어 두기로 했다. 난 백엔드 개발자고, 지금 프론트까지 완벽하게 할 시간은 없으니까. 그래도 당연히 내가 무슨 코드를 짜고 있는지 정도는 이해해야 한다. 남에게 설명할 수 있을 정도의 이해는 필요하다.

 

=============

 

스프린트 1은 로그인, 회원가입이었다. 그러나 부수적으로 해야 할 것들이 굉장히 많았다. 또한 내가 서비스를 만들어서 어디 납품하려는 게 아니고 포트폴리오와 나의 성장을 위해 하는 것이기 때문에 “학습”하는데 시간이 많이 걸렸다.

 

그러나 이제 정신없는 초반 단계는 어느 정도 지나갔다고 생각한다. 기능구현에만 집중할 수 있을 때가 온 것 같고, 스프린트2 부터는 지난 스프린트처럼 시간낭비 없이 효율적으로 작업해 보도록 하겠다.

 

 

썬카 노션

https://lava-move-d1e.notion.site/SunCar-1a754e6b788180f598cdea3bfaff3139?pvs=4

 

 

깃허브

프론트 : https://github.com/SunCar-Project/suncar-frontend

백엔드 : https://github.com/SunCar-Project/suncar-backend

728x90
반응형