드디어, 내부 프로젝트의 첫삽을 떴습니다.
지난번 모임에서 몇가지를 확인하였습니다.
- 내부 프로젝트의 가이드 라인
- Mac OS X 용 응용 프로그램일 것.
- Mac OS X 용 응용 프로그램 이상의 개발이 필요하지 않을 것.
- 우리 스스로가 가장 많이 사용할 것.
- 개발할 아이템
- redmine 관련 도구!
이번 모임에서는 5시간에 걸쳐서, 기획/개발를 동시에 진행해 보았습니다. 그리고, redmine 도구, 과연 어떤게 필요할까 하는 의견부터 모아보았습니다.
- Gantt 차트 도구 : 현재 redmine 에서는 Gantt 차트로 이슈를 보여주는 기능이 있는데, 이 그래프가 단지 시각적으로 보이기만 하고, 실제 마우스로 이동한다던지, 시작일과 종료일을 바로 바꾼다던지 하는 다이나믹한 사용은 불가하다. 이것을 Native App 을 통해서 해결하고 싶다.
- 일단, Gantt 차트에 추가 기능을 제공하기 이전에, 기본적인 Gantt 차트 그리기 기능부터 만들어야 하나, 이에 대한 노력이 많은 큼. 추가적인 기능 제공을 하기 위해서, 웹에서 이미 제공하는 기능을 다시 만들어야 한다는 부담도 경제성을 생각해 봐야 할듯 함.
- Time Tracking 기능 : 현재 이슈에 대한 소요 시간을 웹 페이지에서 스스로 기록하도록 되어 있으나, 이를 Mac OS X 응용 프로그램 차원에서 쉽게 해 줄 수 있을까?
- 일단 기본적인 기능을 먼저 구현한다면, 그 다음에 쉽게 추가할 수 있을 듯하다.
- Redmine 이슈 목록 보기 : 자동 로그인 하여, 프로젝트 목록과 이슈 목록을 볼 수 있게 하자.
- 오늘의 주제로 선정
일단, 위와 같이 하여, 이슈 목록을 메뉴바 애플리케이션으로 저장하여, 현재 이슈의 목록과 프로젝트의 목록을 보여주도록 하는 아주 간단한 기본적인 기능을 만들어 보기로 하였습니다. 일단은 시작하는 차원에서 redmine 과의 연동을 테스트 해 보는 차원도 있기 때문에, 많은 욕심을 내지 않았습니다.
화이트 보드에서 전체적인 그림을 그려 보았습니다.
- 최초 시작시, API 키 값과, redmine URL 입력창 보여주기. Login 버튼을 누르면, 해당 값이 유효한지 확인하고, 확인이 되면, 넘어가고, 확인이 안되면 실패를 알려준다.
- 로그인 후에는 화면 상단의 메뉴바의 메뉴를 클릭하면, 현재 이슈의 목록을 메뉴 항목으로 보여준다. 그리고, 해당 메뉴를 선택하면, 웹 페이지를 통해서 해당 이슈 페이지로 이동한다.
- 이슈 목록 하단에는 Projects 라는 메뉴를 두고, 그 서브메뉴에는 프로젝트 목록을 표시해 준다. 그리고, 그 목록에서 하나의 프로젝트를 선택해 주면, 다시 본 메뉴의 이슈 목록은 해당 프로젝트내의 이슈 목록으로 그 리스트를 제한한다.
썩 좋은 UI 구성도, work flow 도 아니지만, 일단 가장 간단하게 만들어 볼 수 있다는 차원에서 이 정도로 안을 만들었습니다.. 그리고, 만들어야 할 구성 요소와 각자의 역할을 찾아 보았습니다.
- 프로토콜 분석 : JSON 프로토콜이 제공하는 범위 파악. 각 기능 구현을 위해서 어떤 프로토콜을 사용해야 하는지 파악. 이 역할을 한 사람이 담당하니 매우 시간이 절약 되었습니다.
- 서버 통신 및 JSON Parse 기능 구현 : HTTP 통신 및 JSON 분석은 워낙 많이 사용되는 기법이라 시간이 많이 걸리지 않았습니다. 재사용 하여 한두시간 내에 구현이 되었습니다.
- Menu 항목에 대한 다이나믹한 구성 : 서버에서 받아온 이슈 목록과 프로젝트 목록을 메뉴 아이템으로 만드는 모듈. 생각치 못한 버그로 인해서 의외의 모듈에서 시간이 꽤 걸렸습니다.
- Login 창 및 로직 : 로그인 데이타를 받고, 처리하고, 넘어가는 부분. 어렵지 않게 진행 가능했습니다.
소감
- 아직은 너무 간단한 기능을 제공하기 때문에, 유용함을 갖췄다고 하기엔 부족함이 많다는 것을 잘 알고 있습니다.
- 하지만, 5시간을 투자하여, 우리가 생각했던 것을 실제로 동작하는 소프트웨어로 만들어 냈다는 점은 아주 큰 기쁨을 주었습니다.
애자일 개발 방법론에 대해서
- 우리는 나름 애자일 개발방법으로 해 보았다고 했으나, 이것이 애자일인지 아닌지는 모르겠습니다. 하지만, 우리가 지금껏 해 오던 방식과는 분명 달랐습니다.
- 기획안을 먼저 골똘히 준비하고, 그에 맞춘 개발을 진행하는 것이 아니라, 개발자끼리(혹 기획자가 있다면 함께 해도 좋지만, 기획자가 없는 관계로)모여서 우리 스스로가 옳다는 기획안을 만들어서, 금방 구현을 해서, 그 유용함을 확인해 보았는 것은 의미있는 과정이었습니다.
- 또한 개발자 5명과 테스터 1명이 서로 같은 자리에서 얼굴을 맞대고 작업하는 것은 또다른 새로움이었습니다. 지속적으로 대화를 하면서 개발을 진행하였고, 그래서 어쩌면 지속적인 긴잠감을 주는 것 같기도 하였습니다. 대부분의 의견이 5시간동안 집중을 하게끔 한다고 하였습니다. 육체적 피로감은 높았지만, 그 집중력에 대한 성취감도 높았습니다.
- 생산성은 아주 높았습니다. 모두가 따로 떨어져 했을 때보다, 두세배 더 빠르게 작업하지 않았나 하는 생각입니다.
- 짧은 시간에 모두가 각자의 역할을 찾는 것이 생각보다는 어렵지 않았습니다. 그래서 혼란스럽지 않게 잘 진행이 되었습니다.