배경
어제(5월 12일)는 회사에 김학규씨(前라그나로크 개발자, 現 IMC 프로듀서)가 오셔서 Remarkable에 관해서와 효율적인 개발팀 운영(용어가 제대로 기억나지 않는다. 메모의 필요성이 -_-)에 대해서 PT를 하고 우리측 개발자와 언쟁도 했었다.그것 외에도 블로그를 돌아다니면서 좋은 글들을 읽고 느끼는 점이 있어서 까먹기 전에 정리하고자 한다. 사실 분류상으로는 일기가 더 맞을 것 같기도 하다.
Remarkable
정리하자면 쇼킹한 것. 타의가 아닌 자의에 의해서 남에게 얘기해주고 싶은 그런 걸 지칭한다고 한다. 대표적인 예로 회사에 출근―또는 하교후 집에 와서라던가―했을 때 MSN에 들어가자마자 뚜둥 하면서 뜨는 것들이 있다. 구체적인 예로 다마고찌나 세이클럽, 메이플스토리 등을 들었는데 이러한 것들은 반드시 퀄리티에 비례하지 않는다로 투명 드래곤을 들었다.이러한 것들이 Remarkable 한 것들인데, 이런 것들은 공통점으로 '혁신'이라는 키워드만을 가진다. 다마고찌의 경우 프로그램 된 것을 생명체로 여기고 키우고, 죽으면 슬퍼한다는 점에서 혁신적이고 그 전까지 생각하지 못한 발상이 되겠다.
또 다른 공통점으로는 Remarkable한 아이디어는 위험해 보인다는 점. 하지만, Safe Is Risky 라는 말이 있듯이 오히려 안전한 아이디어는 성공하지 못하고 그로 인해 더 큰 위험을 초래하게 된다.
효율적인 개발팀 운영
크게 Automation, Testing, Schedule 등으로 구성된다.- Automation
- 컴파일, 텍스트 데이터를 바이너리 데이터로 변환하기, 테스트 등의 모든 수작업들이 자동화 될 수 있다.
- 배치파일이나 cygwin + bash를 이용, NT Scheduler를 이용
- Testing
- TDD
- daily build와 stable version
- Schedule
- 잘못된 스케쥴의 예 : 경제 시스템 - 3달
- 스케쥴은 feature / task 단위로 나눠서 짠다. 각각의 task는 2~16시간 (2일을 넘지 않도록, 2일이 넘는다면 그 task는 분리될 여지가 있는 feature이다.)
- 그 외
- Design by Contract
- http://www.joelonsoftware.com
- code review :
http://www.macadamian.com/codereview.htm
http://www.macadamian.com/column/completeBreakfast.html - The Pragmatic Programmer: From Journeyman to Master (Addison Wesley)
- 소프트웨어 개발의 지혜 : 원칙, 디자인패턴, 실천방법 (야스미디어)
정리가 잘 안되네요. 올려놓고 보면서 정리해야겠습니다.
제루 Season 2, @Tokyo
PT 자료 같은거 있으면 넘겨줄 의향 없수? +_+/
자동화, 테스트, 스케쥴링, 자원관리 등은 역시 필수
정환형 // 혁신적 요소에 대해서는 신규 사업모델이나 기획쪽의 얘기에 가까웠어요. 파트1, 2였는데 1이 그런 얘기였고, 2가 효율적인 개발팀의 운영에 대해서였죠.
생각나는데로 계속 써봐야하는데 약간의 메모에 의존하려니 힘드네요 -ㅅ-)a