스프링으로 팀 프로젝트를 진행하는 시간을 갖게 되었고, 성공적으로 마무리를 지을 수 있었다. 이러한 경험을 토대로 KPT 회고를 작성하려 한다.
KPT
회고란 Keep, Problem, Try의 약자로 회고 방법 중 하나라고 한다.
Keep
은 좋았거나 계속 이어갔으면 하는 부분
Problem
은 부족했거나 개선이 필요한 부분
Try
는 어떻게 개선할 것인지에 대한 부분
이번에는 Trello
의 칸반 서비스를 따라 해보는 Trollo
프로젝트를 진행하게 되었다.
주어진 시간은 주말과 연휴를 포함해서 대략 10일이었다. 필수 요구사항만 먼저 구현하고 나머지 요구사항을 추가하는 방식으로 진행하며 MVP 형식으로 기능을 구현하고 AWS를 통해 클라우드상에서 배포했다.
이미 존재하는 서비스를 따라 만드는 프로젝트 즉, 클론 코딩을 직접 하게 되었는데, 여기서 중요한 점은 원래 서비스를 직접 사용함으로써 직접 로직을 파악해보는 시간을 갖는 것이다.
해당 서비스가 오픈 소스라면, 직접 소스 코드를 뜯어보면서 해석해보는 것도 좋은 방법일 것이다. 하지만, 이번 프로젝트에서는 직접 사용만 해보고 어떻게 동작하는지, 어떤식의 원리를 갖는지를 생각해보며 설계를 진행하게 되었다.
사실, 칸반 보드 서비스의 기능들은 대부분 게시판 프로젝트만 비슷한 기능들이 많았다. 그러나, 카드의 위치를 옮기는 기능
이 이렇게 까다로울 줄은 몰랐다. 그 이유는, 복잡성과 효율성을 갖춰야 되기 때문이다.
카드의 수가 많으면 많을수록, 순서에 대한 정보를 업데이트하게 해주면 시간이 오래 걸릴 것이다. 그래서 단순히 순서
라는 속성을 테이블에 추가시키기 보단, 이중 연결 리스트
를 사용함으로써 생성/수정/삭제
에 대해 복잡도를 O(1)
을 가지는 효율을 챙겨보려고 노력했다. 칸반 보드의 특성상, 수정이 잦을 거라고 예상하였기 때문이다. 대신, 조회
하는 속도는 O(n)
만큼의 복잡도를 가지게 된다.
이 부분을 직접 구현해보니, 자료 구조를 프로젝트에 직접 적용시키는 것이 생각보다 힘든 작업임을 느끼게 되었다. 그래도 그만큼 얻어가는 것이 있기에 좋은 학습이 되었다.
새로운 팀원들과 같이 ERD도 작성하고, 기능에 대한 시나리오를 작성해보면서 서로의 생각을 공유하는 시간을 가져보니 오해하거나 잘못 생각하는 일이 확실히 줄어드는 효과가 있었다.
여태까지 글을 통해 서로의 생각을 공유했다면, 다음 부터는 UML
을 통해 다양한 다이어그램으로 서로의 생각을 공유하면 어떨까라는 생각이 들었다. 괜히 소프트웨어공학에서 UML을 배운게 아니라는 느낌이 들었다. 자신의 생각을 팀원들에게 효과적으로 전달시키는 방법을 배우는 것이 UML
이 아닐까라는 생각이 든다. 글 보다는 그림이 더 직관적이 때문에, 다양한 다이어그램의 종류가 나왔다고 생각해본다.
이번 프로젝트에선 배포까지는 구현했지만, 기능과 배포에만 몰두하다보니 테스트 코드를 작성하는데 시간을 투자하지 못했다. 테스트 코드가 없으니 매번 수작업으로 테스트를 하게 되는데, 확실히 이 부분에서 시간을 잡아먹게 되는 것 같다. 테스트 코드를 먼저 작성하는 습관을 들이도록 해야겠다.
또한, CI/CD 파이프라인을 구축하지 못하여서, 테스트와 배포 자동화를 도입하지 못하게 되었다. 사실, 테스트 코드가 없어서 CI는 크게 의미가 없다고 보고, CD도 기능을 다 만들고 난 뒤에 배포를 하게 돼서 없어도 큰 문제가 없었다. 다만, 테스트 코드가 많고, 배포가 잦다면 확실히 CI/CD를 구축하는 것이 훨씬 편하고 생산성을 높여줄 것 같다.
다음으로, 팀원들과의 KPT 내용을 적어본다.
연휴가 겹쳐있었고, 어려운 요구사항들이 많아서 프로젝트 완성을 못할 줄 알았지만, 든든한 팀원들과 같이 나아가니 못할 게 없었다. 만약, 하루만 더 주어진다면 더욱 완성도가 높은 멋진 프로젝트가 완성되지 않았을까 싶다.
팀장으로서 프로젝트에 대해 너무 세세한 규칙과 요구사항을 정했지만, 이로 인해 팀원들에게 큰 부담을 준 것이 아닌가라는 생각이 들었다. 프로젝트에 너무 집중하기 보단, 팀원들을 격려하고 의견을 좀 더 수용하면서 같이 나아갈 수 있도록 힘을 실어준다면 어땠을까 싶다.
소통의 중요성 대해 한번 더 깨달음을 얻게 된 프로젝트였던 것 같다.