본문 바로가기

Project

2. Project Management & Development Plan

1) 개요
프로젝트 관리와 개발을 어떤 방식으로 진행할지 알아보다가, 개발은 TDD기반으로, 프로젝트 관리는 Kanban Board를 활용하여 관리하는것으로 계획하였음

2)TDD의 도입
개인프로젝트에서는 대개 요구사항이 명확하게 시작하는 경우보다는 두루뭉실하게 이런 프로그램을 만들고 싶다는 정도로만 끝나는 경우가 많다. 일반적인 Water Fall 모델을 적용할 경우 개발 한 사이클의 주기가 길어지고, 실제로 결과물을 확인하는 성취를 확인하기가 힘들어 동기부여가 하락하게된다. 또한, 문서화로인한 Overhead는 개인흥미 수준으로 프로젝트를 수행하는 개인이 프로젝트를 지루하게 느낄 수 있는 요인이 된다. 궁극적으로 프로젝트를 책임감있게 끝내지 못할 가능성이 높아진다. TDD를 통해 개발의 사이클을 줄이고 명시적인 결과물을 보이게 하여 성취감을 높일 수 있다. 또한, 개발과정에서 개인이 새로운 흥미로운 요구사항이 생길 경우, 지속적 변화를 쉽게 반영할 수 있다.
XP(Extreme Programming)의 Practices 중 하나인 TDD는 실제로 개인 개발을 하는 해외의 많은 개발자들이 활용하고있는 것을 커뮤니티에서 확인 할 수 있었다. 또다른 Agile스러운 개발방법론으로 Scrum을 검토한 바 있지만, 보다 타이트한 기한 압박과 기업환경에서 적합한 이유로 개인 프로젝트를 수행하는데 있어서는 TDD가 적합하다고 판단하였다.물론  TDD는 높은 품질을 얻는대신 생산성저하를 발생시킨다. 하지만 개인 프로젝트에서는 납기일이란 개념이없다.
개인 개발의 방식은 Agile 방식의 개발에서 발생하는 몇가지 중대한 단점을 없앨 수 있다. 1) 문서화를 통한 법적 증명과 조직레벨의 추적성이 필요하지 않음, 2)스스로가 고객이므로 가장 잘 요구사항을 반영 가능, 3)개발자와 유지보수자가 동일하므로 일관성 확보  
구현은 Intellij Ultimate버전이 있으므로, 이것을 이용해 UnitTest를 진행하고 이후 Refactoring을 진행하는 방식으로 할 예정이다.
현 프로젝트가 데이터 분석 위주이므로 Python을 사용할 것이고, 성능상 이슈가 발생할 경우 C언어를 사용할 예정
3)Kanban Board의 도입
칸반보드는 기존의 업무를 변화시키지 않고 그 위에 적용이 가능하며 활용도가 보다 일반적이다. 또한, 직관적으로 이해가기 편하고 시각화를 통해 손쉽게 Work Flow를 관리할 수 있다는 점에서 매력적이다. 이러한 점에서 개발프로세스에 대한 이해도가 높지 않은 개인도 충분히 쉽게 배우고 적용하기에는 Kanban이 적합하다고 판단하였다. 백로그(Back log)를 통해 구현하고자하는 요구사항을 관리하고 Work Flow에 병목을 확인하고 일정을 당겨감으로서 Active한 개인 개발을 유도할 수 있을 것으로 생각된다.
도구는 트렐로(Trello)를 이용할 것이다. 노션(Notion), 지라(Jira), 플로우(Flow) 등 많은 툴들이 있지만, 개인 수준에서 가볍게 칸반보드를 활용할 수 있는 툴은 Trello라고 생각하였다. 무료버전을 사용할 예정이다.
4)방법론과 도구 활용의 수정
대부분의 방법론과 도구는 기업수준 또는 최소한의 팀수준을 타겟으로 두고 개발된다. 개인수준에서 개인에게 최적화시키기 위해서는 수정이 필요하며, 이미 Light한 것들을 더 Light하게 만들 필요가 있고, 끊임 없는 동기부여가 필수적이다. 이를 위한 몇가지 고려사항을 생각해보았다.
- 의무감에서 흥미로의 이동
- 지속적 동기부여
- 협업에서 서칭으로의 이동
- 커뮤니티를 통한 피드백
- 서비스화를 통한 사업적 수준으로의 확장성