추정하기



추정(Estimate)에 관해 잠깐 얘기해 볼까 합니다.



<소프트웨어 공학의 사실과 오해>을 보면 55가지의 사실 중에 21번째에는 이런 내용이 담겨 있습니다.


문제의 복잡성이 25% 증가하면 소프트웨어 솔루션의 복잡성은 100% 증가한다.



25%와 100%라는 숫자가 정확하게 맞는지는 모르겠지만(실험을 통하여 얻어낸 숫자라고 하니 어느정도 타당하다고 믿어 볼까요.) 문제의 복잡성이 커지는 것에 비해 솔루션의 복잡성이 커지는 비율이 아주 높은 것은 사실이죠. 하지만 대게 초보개발자들이(또는 천성이 낙관적인 개발자들이) 일정을 잡을 때에는 문제의 복잡성을 기준으로하여 추정하게 되곤 합니다. 물론 여전히 초보개발자인 Paromix군도 마찬가지고 말입니다.^^


경영진과 프로그래머 사이에는 단절이 있다. 한 연구 조사에 따르면, 추정에 맞추지 못해 경영진은 실패라고 생각하는 프로젝트에  대해, 거기 참여했던 기술자들은 그들이 작업한 것 중 가장 성공적인 프로젝트라 평가했다고 한다.



Paromix군도 다른 많은 개발자와 비슷하게도 낙관적인 추정을 하곤 하죠. 실제 끝나는 시점이 Paromix군이 예상한 것보다 늦춰지는 경우가 많이 있습니다. 하하. (대신에 다른 사람에게 일정을 얘기할 때는 스스로 생각한 일정보다 조금 길게 잡고 얘기하긴 하죠.^^) Paromix군이 추정에 실패하는 이유를 곰곰히 생각해봤더니 설계와 코딩에 들어가는 시간만 계산하고 있고, 테스트와 디버깅(그리고 기타 집중하지 못하는 시간들)에 들어가는 시간은 계산하지 않는 버릇이 있었다는 걸 깨달았습니다. 게다가 실제 개발하는 시간도 생각한 것보다 오래 걸리는 경우가 많고 말이죠.


끝에서 끝까지(End-To-End)는 생각하는 것보다 더 멀다.



아마 이런 점을 간과하고 있기 때문에 추정이 어려운 것일까요.

스스로 추정에 실패하고 있다는 사실을 깨달은 다음부터는(사실 깨닫는데에도 시간이 오래 걸렸다죠) 테스트와 디버깅이 설계와 코딩에 들어가는 시간과 비슷하다고 보고 감으로 떠오르는 시간에 두배를 곱해서 추정을 하기 시작했습니다. 정확하지는 않았지만 예전에 비해서는 정확도가 꽤 올라갔죠. (그 전까지 Paromix군이 얼마나 엉터리로 추정을 했었는지 알 수 있겠죠?? 하하)
그래도 아직 그리 정확하진 않았습니다. (세상엔 재밌는 일은 많지만 쉬운 일이 없다니까요^^)


Jeffery와 Lawrence는 "추정을 전혀 하지 않은 프로젝트가 생산성 측면에서 가장 성공적이었다."는 사실을 발견했다. 바로 다음은 기술자들이 추정을 수행한 프로젝트가 차지했고, 관리자가 추정을 수행한 프로젝트는 최악이었다.



추정을 하지 않은 프로젝트가 가장 생산성이 높았다고는 하지만, Paromix군이 그리 선호하는 방식은 아니군요. 그래서 조금 더 정확하게 개발시간을 알아내고 싶었습니다. 문득 <조엘 온 소프트웨어>에 나오는 내용이 떠오르더군요. (책 읽는 보람이 있긴 있나봅니다.^^) 할일들을 능력껏 세부적으로 나누고 각각 예상되는 시간을 적어두었습니다. 그리고 실제 일을 하면서 투자한 시간을 적어 두는거죠. 여러 번 반복해서 해보고 나니 실제로 개발하는데 걸리는 시간에 대해 어느정도 감이 새로 오기 시작합니다. 오늘도 한건 했군요. 보람찬 하루죠? 하하.^^



다른 분들은 어떻게 스스로의 일정 시간을 추정하시나요.? :D



"Paromix"

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by Paromix | 2007/07/07 00:42 | □■ 프 로 그 램 ■□ | 트랙백 | 덧글(10)

트랙백 주소 : http://paromix.egloos.com/tb/3574940
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 백승우 at 2007/07/07 01:11
프로젝트 할때 일정짜는게 너무 이상합니다.
프로그램이라는게 어떨때는 코드 한줄로 몇시간 보낼 수도 있는데
분량이 이정도니 1주일이면 충분하지? 아니면 얼마나 걸리겠어? <-- 아직 경험이 부족해서 인지
처음 서울에서 일할때 참 당황했습니다. 메뉴를 몇개로 쪼개더니 메뉴별로 거의 동일하게 일정을 잡길래.. 경악했습니다.
Commented by pukak at 2007/07/07 10:03
전 예전에 거의 기한을 통보받고 그 시간에 맞추는데 급급했기 때문에 저만의 추정 시간은 정말 마음속의 이야기였던 것 같습니다^^; 자신만의 추정시간을 잡고 안되는건 안된다고 해야했는데 그게 또 능력부족으로 이어지는 이상한 시스템때문이였나 봅니다. 무슨 공장도 아니고 참.
Commented by Paromix at 2007/07/07 11:18
백승우 님 // 저는 그래도 팀장님과 계속 상의해가며 일정을 조절하고 있으니 운이 좋긴한가봐요.^^ 그나저나 메뉴별로 동일하게 일정은 잡는건 좀 이상할만 한걸요. 일정을 잡을 때는 조각조각의 일에서 시작해서 전체 일정을 잡아봐야하는데 말이에요.

푸칵 님 // 그런 시스템에서 일하셨다면 참 힘드셨을 것 같아요.^^ 즐거운 주말이네요. 멋지게 보내세요.^^
Commented by 지인 at 2007/07/07 11:46
저도 Paromix님이 개발하는데 추정하시는거랑 비슷해요. 해야할 일들을 목록화 하고 그 옆에 예상시간(희망시간;;?)을 젂어놓고 실제로 걸린시간을 적어놓는 식이지요. "시간을 정복한 남자, 루비셰프"라는 책이 정말 많은 도움이 되었었지요 :)
Commented by 배트맨 at 2007/07/08 02:09
간단한 태그 명령어도 진땀을 흘리면서 사용하는 저로서는 딴나라에 와있는듯한 글이세요. ^^*

경영진뿐만이 아니라 일반 부서의 사람들과, 프로그래머들 사이에는 생각과 시간의 괴리가 존재하는 것 같아요.
어쩌면 영원히 좁힐 수 없는 그러한 시간의 공간 같은 것 말이죠.

솔직히 저도 몇년전 회사에서 프로그래머 팀장이 미팅때마다 이것 저것 이유를 대면서 - 이러한 표현을 사용해서 미안합니다 - 못한다, 시간이.. , 엄청난 노가다.. 라고 말을 하면 화가 나기도 했었으니까요.
서로 그 괴리를 좁히려고 하는 노력을 과연 얼마만큼 한 조직이였던가를 생각해보면..
노력 자체를 서로 전혀 안한 것이 아닌가 하는 생각이 듭니다.

참 수영 다니신다고요. ^^*
부럽습니다..
Commented by Paromix at 2007/07/09 23:30
지인 님 // 항상 꼼꼼히 계획하고 실행하실 것 같아요.^^ 추정도 연습하면 늘어난다죠??^^

배트맨 님 // 그런 의견 충돌은 서로서로 맞춰가야겠지요.^^ 우리회사 같은 경우는 제가 한달이라고 얘기하면 위에서 한달반 부장님은 두달쯤 회사에서는 두달반쯤 걸리겠구나.. 이렇게 생각해주신다는.. 하하.^^
Commented by 배트맨 at 2007/07/11 00:20
덧글보고 웃었어요. ^_^
좋은 회사 다니시는데요..
Commented by Paromix at 2007/07/15 14:08
배트맨 님 // 운이 좋은거죠머. 하하^^ 그래도 매일 일정관리 못한다고 혼나는 Paromix군이랍니다;;;;;
Commented by 안불렀슈 at 2007/10/02 14:13
소프트웨어 만드는 일이 가내수공업 수준에서 대량생산 기업형으로 발전하기 위해서는 추정과 소프트공학 도입이 필수적인 것 같아요...
저는 요새 요구사항당 구현 가능 일수를 측정중에 있답니다.
Commented by Paromix at 2007/10/03 00:35
안불렀슈 님 // 반갑습니다.^^ 제 생각에 소프트웨어는 대량생산하고 있지 않나요?? 웹에 올리거나 복제만 하면 바로 생산이 가능한 것 같은데 말이에요.^^ 추정과 소프트웨어 공학이 무조건 적인 것은 아니지만 (프레드 브룩스의 "은총알은 없다"라는 논문이 생각나네요) 생산성을 높이는데 꽤 많은 도움이 되고 있답니다.^^

측정하고난 결과가 궁금해요. 요새 추정에 관심이 많거든요.^^

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶