개인 프로젝트를 위한 프로젝트 매니지 먼트와 오픈소스
아직은 프로젝트를 리딩하거나 프로젝트를 매니지 먼트하기에는 턱없이 부족한데다가,
게다가... 팀으로 무언가 만들어 가기 보다는 개인적인 연구 결과를 완성해 나가는 것이 중심이다 보니... 혐업을 익히기에는 다소 힘든점이 있는 환경이라고 할까?
그래도, 개인별 연구 결과의 알고리즘을 라이브러리로 잘 만들어 놓는다면,
누구든 쉽고 잘 가져다 쓰거나 통합되기 쉽게 되겠지만, 개인 프로젝트는 성격상... 쉽게 매니지 먼트 되지 않는다.
개인적인 경험과 주변에서 주워 들은것들을 기반으로 개인 프로젝트 매니지 먼트에 대한 생각과 내용을 정리해 본다.
먼저 조엘 테스트 12가지 중에서 기업이 아닌 개인 입장에서 지켜야 할 6가지만 뽑는다면,
1. 소스코드 관리 시스템을 사용하여라.2. 코드를 새로 작성하기 전에 버그를 수정해라.
3. 버그 관리 시스템을 사용하여라.
4. 명령어 한 번에 빌드를 실행할 수 있게 하여라. (통합빌드)5. 일정을 업데이트 하여라.6. 조용한 업무 환경에서 일하여라.
- 조엘 테스트 중 일부
조엘 테스트중에서 개인 프로젝트에서 필요한 것들만 추려 개인적으로 중요한 순서로 나열해 놓았다.
소스코드 관리나 버그 관리 시스템은 프로젝트에 필수고 쓰는 버릇이 들어버리면 이 두가지 없는 상황에서 코딩이란 불가능 하기 때문에 모두가 사용중일 것이라 생각하고, 버그 픽스는 무슨 일보다 우선되고, 일정 업데이트는 수시로 해야하며, 조용한 업무에서 일해야 한다.
그와 동시에 통합빌드 시스템이 갖춰져 있어야 한다. 통합빌드 시스템을 거창하고 어려운것으로 생각하지 말고, 빌드시에 모든 코드를 컴파일하고, 컴파일의 종료와 동시에 모든 테스트를 수행할 수 있으면 된다. 한번에 모든것이 다 실행이 된다면 귀찮아서 테스트를 건너뛰는 일은 없기 때문에, 중요한 부분이라고 할 수 있다.
위와 같은 상황을 셋팅해 놓는건 환경 설정일것이고,
실제로 개인 프로젝트의 매니지 먼트를 위해서는 다음과 같은 세가지 단계로 진행하여라.
Phase 1.
러프하게 아이디어를 빠르게 프로그램으로 구현.
Phase 2.
테스트 드리븐으로 정밀하게 라이브러리로 구현.
Phase 3.
샘플 코드 작성 및 배포.
- windage
다음 단계들에 대해서 설명해 보자면...
일단 아이디어를 빠르게 정리하고 간단한 프로그램으로 가능성을 검토해 보는 측면으로 구현해 본다.
이렇게 제작된 프로그램은 폐기될 것이기 때문에 (반드시 폐기 시켜야 한다.) 네이밍이나, 디자인적인 면을 크게 고려하지 않고, 빠르게 만들어 본다.
이렇게 제작된 프로그램은 알고리즘의 추측단계로 제한적으로나마 돌아갈 수 있는 것을 보여준다.
프로토 타입을 제작한다고 생각하면 쉬울듯 싶다.
다음 단계로 앞서 검토된 프로그램을 기반으로 알고리즘 부분만 라이브러리 형식으로 제작한다.
앞서 러프하게 작성된 프로그램을 기반으로 테스트 코드 및 디자인을 적인 측면을 고려하여 테스트 드리븐으로 알고리즘을 개발한다.
이때 절대 앞선 코드를 복사해서는 안된다. 앞선 코드를 참조는 하되 복사하는것은 절대로 해서는 안된다.
이렇게 제작된 라이브러리는 테스트 드리븐으로 개발하여 알고리즘을 사실화 하는 단계로 모든 테스트 케이스에서 안정적으로 동작하는 것을 보장해 주어야 한다.
이렇게 두 단계로 나누어 개발하는 이유는 개인 프로젝트이기 때문에 페어 프로그래밍이 불가능한 점을 투스탭으로 나눠 작업함으로 자신의 코드를 다시 분석하고 비판을 통해 좀더 깔끔하고, 좋은 디자인이 나올 수 있기 때문에다. 물론 코드 복사를 하면 이러한 장점이 사라지기 때문에 절대 복사해서는 안되고, 이는 리펙토링과는 또 다른 효과를 볼 수 있다.
마지막 단계는 해당 라이브러를 사용하는 샘플 코드를 포함한 배포판을 제작하는 것이다.
개발된 알고리즘은 라이브러리로 배포되어야 한다.
안정적으로 잘 개발된 라이브러리는 추후의 프로젝트에서 외부 라이브러로서 참조해서 사용함으로써 동일한 작업이나 컴파일 시간을 줄일 수있다.
다음으로는 프로젝트 매니지먼트와는 크게 상관은 없지만....
모든 프로젝트는 오픈 소스화 하는 것이 어떨까 하는 하나의 제안이다.
오픈 소스화 하여라!
- windage
일단 프로젝트를 매니지먼트 하는 입장에서는 누군가 볼것, 누군가 쓰게 될것이라고 생각하면 아무래도 좀더 신경쓰고, 좀더 잘 만들게 될것이다.
그리고 이미 많은 오픈소스에 도움을 받았을 것이고, 내가 소스 오픈을 하더라도 내 활동에 신경을 쓰는 사람은 크게 많지 않다는 사실이다. 오픈 소스를 한다고 하더라도 크게 손해보는 일이 없다는 것이다.
게다가 오픈 소스 프로젝트를 하게 된다면 앞선 조엘 테스트를 위한 소스 코드나 버그 관리를 위한 시스템을 무료로 쉽게 사용할 수 있다.
아래 사이트들은 오픈소스를 지원 하는 사이트들이다 사용법은 간단함으로 한번씩 방문해서 둘러보자.
1. Google Project Hosting : http://code.google.com/hosting/
2. Microsoft Code Plex : http://www.codeplex.com/
3. Source Forge : http://sourceforge.net/
출처: http://blog.windage.co.kr/84
'개발이야기' 카테고리의 다른 글
프레임워크란? (0) | 2016.07.26 |
---|---|
프로그래밍에서 SIDE EFFECT 란? (0) | 2015.10.14 |
boost 라이브러리 집중 분석 (0) | 2015.10.13 |
윈도우 서버 환경에서, 최대 생성 가능한 소켓(socket) 연결 수는 얼마일까? (0) | 2013.04.16 |