프로젝트 산출물을 프로젝트 종료 후에 만들고 있나요?
프로젝트가 끝난 후에 산출물을 만드는 일은 SI회사나 용역으로 일을 하고 있는 회사에서 종종 보게 됩니다. 또, 자사 Solution이나 Product를 만드는 회사에서도 이런 일들이 벌어지곤 하죠.
이런 회사에서 그렇게밖에 할 수 없는 이유에 대해서 다음과 같이 말을 하곤 합니다.
- 우린 프로젝트 일정이 너무 짧아서 프로젝트 기간에는 산출물을 만들 시간이 없어요.
- 어차피 산출물은 프로젝트에 별 도움이 안돼요.
- 우리도 시간만 충분히 있으면 산출물을 잘 만들 수 있어요.
- 고객이 나중에 요구사항을 바꾸기 때문에 산출물을 잘 만들어 놓아도 또 바꿔야 해요. 코드만 바꾸기도 벅찬데 언제 산출물을 바꿔요.
- 산출물이란 프로젝트가 끝나고 더 이상 바뀔게 없을 때 한꺼번에 만드는 것이 제일 효율적이예요.
- 문서를 너무 많이 만들어야 해요.
여러분도 위 이유에 고개가 끄덕여지시나요?
그렇다면 여러분도 그 동안의 소프트웨어 개발 관행에 익숙해져 있는 것이고, 제대로 된 소프트웨어 개발방법을 익힐 기회를 접한 적이 없었을 겁니다.
위에서 언급한 각 이유(핑계)에 대해서 설명을 해보죠.
- 우린 프로젝트 일정이 너무 짧아서 프로젝트 기간에는 산출물을 만들 시간이 없어요.
- 거의 모든 프로젝트는 일정이 넉넉하게 주어지지 않습니다. 따라서 프로젝트 일정이 짧다는 것은 이유가 되지 않습니다.
- 일정이 짧다는 것은 상대적인 것으로 기존에 개발하던 방식으로 개발을 할 생각을 하니 기간이 짧다고 할 수도 있습니다.
- 소프트웨어 공학이라는 것은 짧은 시간에 적은 비용으로 소프트웨어를 개발하기 위한 것이 목적입니다.
- 소프트웨어 공학은 기계적으로 적용해서는 안되고, 일정이 절대적으로 짧다면 그에 따라서 효율적으로 적용하여 일정을 단축할 수 있도록 해야 합니다.
- 어차피 산출물은 프로젝트에 별 도움이 안돼요.
- 가장 안좋은 이유입니다.
- 프로젝트 팀원간 또는 관련자들과의 커뮤니케이션은 문서(산출물)로 하는 것입니다. 문서는 종이로 되어 있을 수 있고, DB에 저장되어 있어서 Web을 통해서 볼 수도 있을 겁니다. 그런데 문서가 아닌 구두로 대부분의 커뮤니케이션을 하고 있다면 휘발성인 말들이 사라져 버려서 대단히 비효율적으로 프로젝트를 진행하고 있는 겁니다.
- 우리도 시간만 충분히 있으면 산출물을 잘 만들 수 있어요.
- 이는 대단한 착각입니다.
- 산출물을 제대로 만들었다면 그 산출물을 보고 멀리 떨어져 있는 사람이라도 설계도 하고 구현도 할 수 있어야 합니다. 하지만 대부분 그 정도 수준의 산출물을 만들어 낼 수 없죠. 이는 시간이 없어서 산출물을 못 만든다는 핑계로 자신을 방어하는 것입니다.
- 문서를 제대로 만들어본 적도 없이 어느날 갑자기 잘만들어 낼 수는 없습니다. 이는 제대로 된 교육과 훈련이 필요합니다.
- 고객이 나중에 요구사항을 바꾸기 때문에 산출물을 잘 만들어 놓아도 또 바꿔야 해요. 코드만 바꾸기도 벅찬데 언제 산출물을 바꿔요.
- 이 세상의 모든 고객은 요구사항을 자꾸 바꾸려고 합니다. 고객은 소프트웨어 프로젝트에서 요구사항을 바꾸는 것이 얼마나 큰 일인지를 잘 모릅니다.
- 초기의 요구사항 분석이 충실하지 않을 경우 고객은 뒤늦게 요구사항을 바꾸려고 합니다.
- 고객이 요구사항을 바꾼다는 이유 뒤에 숨지 말고 고객이 요구사항 변경 요청을 최소화 하기 위해서 요구사항 분석에 최선을 다해야 합니다. 요구사항 분석에 대해서는 나중에 다시 언급하기로 하죠. 요구사항 분석이 끝나면 가능하면 산출물에 고객의 서명을 받는 것이 좋습니다. 설령 서명을 하지 않더라도 서명의 압박을 가하는 것이 좋고 산출물을 고객이 충분히 이해하도록 해야 합니다. 고객이 이해하기 어렵다면 UI 프로토타입을 만들어서 고객이 이해할 수 있도록 해야 합니다.
- 요구사항 변경에 따른 파급효과를 고객에게 충분히 설명해야 합니다. 그럼에도 불구하고 막무가내로 요구하는 고객도 있지만 별로 중요하지 않은 기능의 변경으로 프로젝트에 타격이 클 경우 고객이 요구사항 변경을 포기하는 경우도 많습니다.
- 산출물이란 프로젝트가 끝나고 더 이상 바뀔게 없을 때 한꺼번에 만드는 것이 제일 효율적이예요.
- 산출물을 너무 많이 만들기 때문에 이런 일이 발생합니다.
- 산출물이란 주로 프로젝트를 진행하기 위해서 필요한 것인데, 끝나고 만들면 기껏 유지보수를 위한 정보밖에 되지 않습니다.
- 위에서 언급한 것과 같이 변경을 최소화하기 위해서 노력을 해야 하고, 중복된 산출물은 가급적 없어야 합니다.
- 그리고 변경에 따른 산출물의 변경도 최소화를 해야 합니다.
- 문서를 너무 많이 만들어야 해요.
- 고객이 많은 산출물을 요구하는 경우라면 어쩔 수가 없습니다. 가능하면 불필요한 산출물을 없애도록 고객을 설득하는 것이 좋습니다. 그래도 만들어야 하는 불필요한 산출물에는 큰 노력을 들여서는 안됩니다. 이런 산출물들이야 말고 프로젝트 끝나고 기계적으로 만들어도 됩니다.
- 자체 프로젝트를 진행하는 경우라면 프로젝트 성격에 따라 다르겠지만, 산출물의 개수는 최소화 해야 합니다. 그래야 중복이 없어지고, 최신 버전으로 업데이트가 가능해지고, 커뮤니케이션 도구가 됩니다.
- 문서를 잔뜩 만들어 놓으면 정보가 어디에 있는지 알 수가 없어서 백과사전처럼 되고 맙니다. 어딘가에는 정보가 있지만 찾기가 어려워서 찾기를 포기할 수도 있습니다.
- 꼭 필요한 몇 개의 문서만 만들어야 합니다.
물론 위에서 언급한 상황이 아닌 다른 진짜 이유도 있을 수 있습니다. 그 모든 상황에 대해서 위와 같이 주장하는 것은 아니고 일반적인 경우를 설명하는 것입니다.
우리 주변에는 수많은 소프트웨어 개발 방법론이 있고 이를 기계적으로 따르다 보니 효율적으로 적용을 하지 못하고 너무 많은 문서을 만들고 프로세스를 따르는 것을 종종 보게 됩니다. 이는 방법론에 대한 오해에서 비롯된 것입니다. 프로젝트의 규모에 알맞게 방법론을 선택해야하고 꼭 필요한 문서만 만들고 절차도 간소화 할 수 있습니다. 어떤 것은 꼭 해야 하고 어느 것은 생략할 수 있는지가 어려운 문제이기는 합니다. 이를 알려면 좀더 많은 경험이 필요하겠지요.
image by Microsoft Office Online
'소프트웨어이야기' 카테고리의 다른 글
| 객체지향... 필요한가? (14) | 2008/11/26 |
|---|---|
| 개발자 폭행사건을 바라보는 심경 (8) | 2008/11/03 |
| 프로젝트 산출물을 프로젝트 종료 후에 만들고 있나요? (8) | 2008/11/03 |
| 소프트웨어 회사의 개발 역량 평가표 (12) | 2008/10/29 |
| 책소개 - 소프트웨어개발의모든것(All of Software Project) (14) | 2008/10/29 |
| 소프트웨어 개발 컨설팅 (2) | 2008/10/07 |
-
2008/11/06 00:03프로젝트 산출물을 프로젝트 종료후에 만들고 있나요? Tracked from 멀고 가까움이 다르기 때문
-
2008/11/06 14:11산출물을 영리하게 만들지 못할 뿐, 애꿎은 산출물 탓은 하지 말자 Tracked from Younghoe.Info













좋은 글 이군요.
영회님 안녕하세요.
이 글을 진지하게 읽으셨다면 소프트웨어 개발에 대한 경험이 매우 많으시고 내공이 높으신가 보네요. 앞으로 좋은 정보와 의견 많이 나누기를 기대합니다.
감사합니다.
실제로 경험을 하셔서 위와 같은 글을 쓰시게 된 것인가요.
만약, 그렇다면 정말로 대단하십니다.
너무도 좋은 내용입니다.
하나만, 제 생각을 적고 싶습니다.
고객이 이해하기 어렵다면 UI 프로토타입을 만들어서 고객이 이해할 수 있도록 해야 합니다. --> 이것 인데요. UI 프로토타입이 아니라 실제로 사용할 UI을 만들어야 할 것 같습니다.
왜냐하면 프로토타입을 보고 사용자가 결정하기 어렵기 때문이며,
이는 요구사항을 변경하는 근원이 됩니다.
따라서, 시간이 걸리더라도 완전한 UI(줄 하나까지 신경쓴)를 만들어서 사용자에게 확정을 받아야 할 것으로 생각됩니다.
이렇게 함으로써 프로젝트 일정을 관리할 수 있으며, 개발자가 고생을 하지 않습니다.
개발자의 고생이란, 한번은 어쩔 수 해야 하므로 고생의 범주가 아니며 두 번, 세 번 고치는 것이 고생이라고 할 수 있습니다.
좋은 글에 뎃글을 단 것같아 죄송하다는 생각이 듭니다만,
그래도 글이 너무 좋아 뎃글을 달아 보았습니다.
event님 반갑습니다.
의견 감사합니다. 죄송하다는 생각이 든다고 하시면 제가 민망하네요. 의견과 토론은 언제든지 환영합니다.
제 글들은 경험을 통해서 작서된 것이라고 말씀드릴 수 있습니다. 제가 하는 일이 소프트웨어 개발 컨설팅이고 문서 작성은 그 중에서 중요한 한 부분입니다.
프로젝트의 종류는 셀 수가 없어서 고작 한페이지 밖에 안되는 설명으로 모든 프로젝트를 아우를 수는 없을 것입니다.
좋은 지적을 해 주셨듯이, UI 프로토타입을 실제 사용할 UI로 만드는 경우도 많이 있죠. 특히 Web환경인 경우는 큰 비용을 들이지 않고도 고객이 사용하게 될 최종 화면을 다 보여주지만 실제로 내부 동작만 하지 않을 뿐 고객은 실제 환경과 비슷하게 체험을 해볼 수 있도록 할 수 있죠. 이런 경우라면 UI프로토타입이 실제 UI와 정말 비슷한 경우라고 생각합니다.
또 다른 형태의 Software는 쉽게 UI를 보여주기 어려운 경우는 Mock-up을 만들어서 보여주기도 합니다.
이런 것을 의논하다 보면 고객의 전문성, 고질적인 갑/을 관계 등등에 대해서 얘기를 하지 않을 수가 없는데, 그러한 내용들은 나중에 얘기를 해보죠.
의견을 달아주셔서 다시 한번 감사드립니다.
좋은 내용 감사합니다.
기존의 프로세스 담당자들은 필요한 산출물이 누구를 위한 것이라는 것을 작성자(개발자, PL)들에게 이해를 시키기노력이 부족했다고 생각합니다.(저희 회사에서는요..^^)
저는 Agile과 CMMI같은UP를 접목하는 것에 대해서 정리 중입니다. "사람을 위한 자동화"와 같은 "사람을 위한 Prcess"를 목표?하고 있다고 할까요? 정리가 조금씩 되면 트랙백을 통해서 의견드리겠습니다. 좋은 글 감사합니다.
정의의소님 안녕하세요.
현재 일반적인 상황을 보면 개발자들이 제대로된 산출물을 만들어낼 능력이 부족한 경우가 많습니다.
그래서 기본이 부족하니 Agile이나 CMMI는 머나먼 얘기가 되지요. 기초가 없는 상태에서 Agile이나 CMMI는 자칫 형식으로 흐르거나 알맹이가 부족하게 되는 것 같습니다.
제 블로그에서 앞으로 자동화, 프로세스, 문화 등 여러가지 것들을 다룰려고 하니 많은 정보 교류 기대합니다.
감사합니다.
개발에 따른 제대로 된 산출물들이 나와야한다는 말에는 아주 많이 공감을 합니다..
생각해보니 Ray님이 말씀하신 모든 이유를 나열하며 산출물에 대한 문서 작업은 거의 하지 않고 있더군요.. -_-;;
개발에 필요한 시간이 빠듯하다는 이유로 마구잡이로 개발을 해왔던 사실이 조금 부끄럽습니다..ㅠㅠ
회사내에서 항상 체계적인 룰을 만드려고 시도할때마다 항상 이런 이유로 중단이 되었었거든요..
블로그의 글을 둘러보니, 좋은 내용이 많아서 좋으네요~
앞으로도 좋은 글 기대하겠습니다.. ^^
kkommy님 반가와요.
그러면서도 항상 과도한 프로세스와 산출물은 주의를 해야 합니다. 과유불급이라고 하죠. 중요한 것부터 하나씩 해나가는 것이 좋겠습니다.