태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

문서는 얼마나 적어야 할지?

2011/10/27 17:26 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed



소프트웨어 개발 프로젝트에서 문서는 적게 적어야 한다.

다시 말하면 "보통의 회사에서는 문서는 필요한만큼만 가장 적게 적어야 한다."

물론 문서를 많이 적으면 여러 각도에서 상세히 적기 때문에 중복은 많이 발생하지만 잘못된 가능성을 충분히 줄여준다.

예를 들어서 스펙문서를 제대로 하나를 효과적으로 적으면 95%를 커버하는데 이를 99.9%까지 커버하도록 적으려면 10배의 비용을 더들여서 수십개의 문서를 만들어야 한다.

절대 문제가 생기면 안되는 원자력 발전소, 우주선, 생명유지장치는 이렇게 할 수도 있다. 실제로는 이런 경우도 다 그렇게 하는 것은 아니다.

문서를 아무리 많이 적어도 완벽을 기해야 하는 경우는 여러 문서를 적어야 하지만 보통의 SW 개발 프로젝트에서 이러한 경우는 거의 없다. 대부분의 SW 개발 프로젝트는 가장 적은 비용으로 가장 빨리 끝내야 한다. 그러기 위해서는 문서를 가장 적게 또한 효과적으로 적어야 한다.

아래에 문서를 만드는 4가지 경우가 있다.
  1. 문서 거의 없이 개발하는 경우 (쓸모 없는 문서, 개발중에 안보는 문서, 나중에 문서를 만드는 경우도 여기 해당) 
  2. 스펙문서를 포함해서 한두개의 문서를 효과적으로 적는 경우 
  3. 각 단계에서 수십개의 문서를 철저히 만드는 경우 (거대 방법론)
  4. 거대 방법론을 흉내 내지만 문서는 거의 안보는 경우. 문서따로 개발따로 (우리 주변에서 흔히 보는 경우)
  5. 최종 결과물만 거대 방법론 흉내내는 경우. 나중에 제출용으로 문서를 만든다. (이것도 친근하다)
이중에서 당연히 권하는 것은 1번이고 다음은 2번이다.
3,4,5번 보다는 차라리 2번이 낫다.

문서를 많이 적는 것은 중복이 많아지고 결국에 서로 Conflict가 나고 업데이트도 안되며 정작 개발시 거의 쓸모없어진다. 하지만 문서를 가장 효과적으로 적게 적는 것은 수십개의 문서를 적는 것보다 훨씬 더 어렵다.

일단 많이 적어보고 줄여나가는 것보다는 문서를 거의 적지 않는 경우라면 꼭 필요한 것부터 조금씩 늘려가는 것이 좋을 것이다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by 
EvelynGiggles

 
저작자 표시 비영리 변경 금지

전규현 개발프로세스

Trackback Address: http://allofsoftware.net/trackback/239 관련글 쓰기
  1. 넘침은 부족함만 하지 못하다고 했는데
    사람의 욕심과 보여주기 그리고 비교로 인해서
    이런 작업을 하지 않으면 일을 하지 않는것 같아 보인다는 생각을 고쳐야 할텐데 그게 가장 어려운것 같아요

  2. 안녕하세요. 구차니님

    열심히 코딩하고 있으면 일한다고 생각하고, 아키텍처 고민하고 있으면 논다고 생각하는 경향도 있더군요.

    소프트웨어엔지니어가 경력이 늘어 갈수록 코딩 등의 일은 줄어들고 생각하는 시간이 늘어야 하는데 말이죠.

획일화된 프로세스의 함정

2011/04/03 11:11 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed



SW를 개발하는데 있어서 체계화된 프로세스가 필요하다는 것은 당연하다.

대부분의 SW회사가 최소한의 프로세스도 없이 주먹구구식으로 SW를 개발한다. 작은 회사들은 문제가 안되는 것처럼 보이지만 회사가 조금만 커져도 여기저기서 문제가 발생하다.

이런 문제에 시달리다보면 프로세스와 문서화가 이 문제를 해결해 줄것이라고 너무 믿게 된다.
그래서 엄격한 프로세스를 만들고 각 프로세스마다 문서를 꼭 만들게 하고 검사를 하기도 한다. 물론 프로젝트의 종류에 따라서 만드는 필수문서를 다르게 하기도 하지만, 이러한 규정은 개발자들이 요리조리 프로세스를 피해가는데 활용이 되곤 한다.

프로젝트에서 꼭 필요한 문서를 획일적으로 정하는 것은 매우 어렵다. 프로젝트 팀에서 결정하고 이를 존중하는 것이 좋다. 하지만 아직 개발팀의 역량이 부족하고 문화가 부족하다면 개발팀의 결정을 따르기도 어렵다.

가장 좋은 방법은 회사가 작을 때부터 체계적으로 개발하는 방법을 익히고 스펙과 설계를 적절하게 작성해가면서 개발문화를 키워나가고 개발자들의 역량이 같이 커져가는 것이다. 그렇게 되면 회사가 커져도 좀더 복잡한 프로세를 자율적으로 운영할 수 있게 된다.

하지만 대부분이 회사는 이러한 기회를 놓치게 된다.

그래서 택하는 것이 획일화된 프로세스이다. 이 고통스러운 프로세스를 거쳐서 이겨내면 점점 자율적인 프로세스로 바뀌게 되지만 이를 극복하지 못하면 점점 더 복잡하고 엄격한 프로세스를 만들게 된다.

가장 좋은 방법은 회사가 성장함에 따라서 문제가 생기기 이전에 미리 체계를 갖추고 개발자들의 역량을 키우는 것이고, 이미 문제가 발생했다면 최소한의 프로세스만을 만들고 지금이라고 개발자들이 분석, 설계 역량을 키울 수 있도록 회사에서 지원하는 것이다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
 
저작자 표시 비영리 변경 금지

전규현 개발프로세스 프로세스

Trackback Address: http://allofsoftware.net/trackback/220 관련글 쓰기
  1. 문서 없이도 대부분의 프로젝트들이 별 문제없이 잘 진행되고 있는 상황이기 때문에 개발자들이 필요성을 못느끼고 있는것 같습니다.
    개발자들이 무엇인가를 하게 하려면.. 그것이 필요한 이유에 대한 공감대를 먼저 공유하는것이 중요하다고 봅니다.
    문서화의 필요성을 느끼게 해 줄 수 있는 방법이 있다면.. 문서 작성을 거부감 없이 회사에 전체에 적용 할 수 있겠지요.

    회사가 조금만 커져도 문제가 된다고 하셨는데.. 개발자가 몇 명 정도 되었을때 이런 문서와 프로세스의 부재로 인한 문제가 생긴다고 보시는지요?
    사실 회사를 경영하는 사람 입장에서는 문제가 생기기 직전의 규모까지는 문서와 프로세스를 진행하지 않다가 문제가 생길 만한 규모가 될 정도부터 관심을 가지는것이 가장 합리적인 선택이라고 봅니다.

  2. 이성열

    문화적으로 정착되기 전에는 스스로 필요성을 느끼기 힘듭니다. 문화적으로 정착이 되면 왜 필요한지 생각하지 않고 그냥 당연히 하게 됩니다. 그래서 문화죠.

    그래서 대부분 문제가 크게 터진 다음에 필요성을 느끼게 됩니다. 작은 규모의 회사에서 가장 먼저 터지는 경우는 "개발자의 퇴사"입니다. 그리고 "회사의 성장"입니다.
    둘다 "공유의 문화", "협업의 문화"가 부족해서 문제가 됩니다. 그 방법이 "문서"와 "프로세스"입니다.

    물론 혼자 개발을 해도 이를 지키는 것이 더 빨리 개발할 수 있는 방법이지만 스스로 느끼기는 어렵습니다.

    보통 첫번째 "공유"의 문제는 개발자 10명 쯤에 생깁니다.
    그리고 "관리"의 문제라고 생각하는 이슈들이 25~30명 쯤에서 생깁니다. 하지만 이 또한 "공유", "협업" 부재의 문제에서 생겨납니다. 대부분의 개발 조직은 관리보다는 "투명한 개발"에서 저절로 관리가 되도록 되어 있기 때문입니다.

    관리의 이슈가 되는 것은 100명, 400명 쯤 겪는 이슈입니다. 작은 조직일 때부터 "문화"를 잘 갖춰나간다면 이정도로 커져도 큰 문제가 없습니다. 하지만 "문화"는 엉망인데 "관리"로 해결하려고 하면 문제가 더 커집니다.

    이성열님 회사도 문제가 터진 다음에는 어렵습니다. 개발자들을 설득하는 방법은 개발자들에게 "소프트웨어 공학"을 이해시키고 왜 개발자들이 체계적으로 개발을 해야만 성장을 하고 "고급개발자"가 되는지 납득시키는 겁니다. 주먹구구식으로 개발을 하면 10년을 또는 20년을 개발해도 3년차 개발자와 다를 것이 없습니다. 코딩 속도 조금 빨라진 정도입니다. 저는 그런 개발자에게는 절대 연봉을 5,000만원 이상을 주지 않을 겁니다.

    연봉 1억, 2억 이상 가치의 개발자가 되려면 스펙, 설계를 잘 쓸줄 알아야 합니다. 자기가 코딩까지 다 해야만 개발을 할 수 있으면 평생 초급 개발자입니다. 개발자들에게 나아가야 할 방향을 자꾸 주지시켜서 세뇌를 시켜야 합니다. 이것이 개발자도 회사도 좋은 길입니다.

  3. 저는 문서화를 제가 기억못하기 때문에 합니다.

    기억하고 있다면 대화가 가장 커뮤니케이션이 효율이 좋고..
    기억하지 못한다면 그때 얼른 적습니다.
    그리고 기억하지도 못하고, 문서화도 없다... 그건 무조건 폐기하는 대상입니다.
    너무 단순하죠?

  4. 안녕하세요. whitekid님

    문서화의 첫번째 이유가 자신을 위해서죠. ^^

  5. 돈과 시간이 그 실행의 기준이 될것 같습니다.
    문서화에는 비용이 드니까요.

    저의 생각으로는
    만들어지는 모든 함수를 사전처럼 만들어서 사람들이 공유할 수 있게 된다면
    문서화'도 되고 재사용도 되고' 개발비용과 불필요한 노력도 줄어 들 수 있을것 같습니다.

    더. 나아가. 이 문서화된 데이터가 함수이면서도 UI 에 쓰여질 수 있다면. 엄청난 도구가 될듯합니다.

  6. 안녕하세요. shint님

    저는 문서화는 비용으로 생각하지 않습니다.
    문서화를 비용으로 생각하는

    1. 필요 없는 문서를 경우는 문서를 너무 많이 적거나
    2. 문서를 작성하는 경험과 실력이 부족하거나
    3. 프로젝트가 끝나고 적는 경우입니다.

    문서는 필요한 만큼만 필요한 시기에 적어야 합니다.
    프로젝트에서 가장 중요한 문서는 스펙(SRS)입니다.

이번 프로젝트 내일 끝나?

2011/01/31 13:28 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed


SW개발 프로젝트가 언제 끝날지 정확하게 모르는 경우가 허다하다.

프로젝트를 진행하고 있는 개발자나 PM도 이 프로젝트가 언제 끝날지 전혀 감이 안잡히는 경우가 많다. 
하지만 분명한 것은 이 프로젝트가 예정된 종료일까지는 끝나지 않을 것이라는 것은 아주 잘 알고 있다.
이것을 알고 있다면 일정을 연기해야 하는데 언제로 연기를 해야 하는지 알 수 없으니 일정 연기를 요청하기도 어렵다. 일정을 연기 했으면 그 일정은 지켜야 하는데 연기된 일정도 전혀 근거가 없이 그냥 감으로 생각한 일정이기 때문이다. 이런 일정은 또 연기되기 마련이다.

그래서 Due date이 되어서어 끝나지 않음을 알고 일정 연기를 요청하고 한다. 이렇게 촉박하게 일정이 자주 연기가 되면 영업이나 마케팅 부서에서는 도저히 개발팀의 일정을 믿을 수 없어서 자신있게 비즈니스를 하기 어려워진다.

그럼에도 일정이 늦어지고 있는 것을 늦게 알려주는 이유는 미리 얘기를 해봤자 일찍 혼나기 밖에 더하겠냐는 생각때문이기도 하다. 일정이 촉박해지면서 매일 야근을 하면서 열심히 하는 모습을 보여주면 일정을 연기해도 큰게 혼나지 않을 것이라고 생각하곤한다. 

하지만, 경영자 입장에서는 밤새면서 일정 못지키는 프로젝트보다는 6시에 퇴근하고 약속한 일정을 지키는 프로젝트가 훨씬 낫다. 그렇다고 주먹구구로 개발하면서도 일정을 터무니없게 길게 잡으면 곤란할 것이다.

제대로된 조직, 프로세스, 시스템을 갖추고 있는 회사에서 SRS를 적절하게 썼다면 1년짜리 프로젝트에서 1주일 지연이 되는 것을 6개월전에도 알 수 있다. PM은 이런 일정 지연이 생기면 이를 복구하기 위한 다양한 기법들을 사용하게 된다. 따라서 일정에 맞춰서 프로젝트를 마칠 수 있는 가능성은 대단히 높아지게 된다.

더 이상 개발팀에게 "내일은 끝나나?"라고 물어볼 필요가 없다. 개발팀도 신뢰를 회복할 수 있을 것이다.
또한, 더 중요한 것은 6시에 퇴근을 하면서도 프로젝트를 더 일찍 끝낼 수 있다는 것이다.

심정적으로 경험적으로 이것이 믿어지지 않는 분들도 많겠지만, 필요한 만큼 적절히 체계화 된 개발을 하고 SRS와 설계를 적절하게 하면 프로젝트 일정도 지키고 개발자도 행복해진다.

여기서 중요한 것은 적절하게 하는 것이다. 적절하다는 것이 가장 어려운 것 중 하나다.

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
저작자 표시 비영리 변경 금지

전규현 개발프로세스 일정, 프로젝트

Trackback Address: http://allofsoftware.net/trackback/210 관련글 쓰기
  1. 적절하게 하는것 이라는 말 적극 공감합니다.
    저희도 제품 마무리 짓고 있는데 아직도 SRS 설계를 하긴 했는데 적절히 안해서 일정이 연기되는 상황을 몇번 겪고나니 참 가슴이 쓰라립니다 ^^

  2. 안녕하세요. 드럼캡님
    SRS를 쓰셨다고 하셨는데, 부족한 것인지 과한 것인지 궁금하군요. 대기업에서는 부족하면서도 과하게 적곤 합니다.
    즉, 필요한 것은 빠지고, 기능은 설명을 너무 과하게 적습니다.
    SRS를 적절히 적는 것은 설계를 하고 구현할 개발자들이 설계를 구현을 무리없이 할 정도입니다. 전혀 물어보지 않고 개발할 수 있는 것은 과도하게 적은 것이고, 너무 많이 물어봐야 하면 부족하게 적은 것입니다. 또한 기능 위주로 적은 것은 빠진 부분이 너무 많아서 나중에 큰 문제가 됩니다.

  3. 항상 그렇지만 적절한것이 가장 중요하면서도 어려운것 같아요.
    그리고 디버깅을 하다보면 다른것들까지 계속 손을 보게 되다보니 일정은 계속 늘어나게 되더라구요.
    그럴때에는 확실하게 이것 까지만 이번 릴리즈에 버그를 잡고
    알려진 버그로 남기는 것도 방법이긴 하지만 크리티컬이라면 이것까지만 잡고.. 이것까지만... 라는
    개발자의 욕심으로 인해서 일정이 무제한으로 늘어나게 되죠 ^^;

    이런걸 보면 저도 개발자이지만 적당하게 선을 긋는 법을 조금더 터득해야 할텐데 매번 아쉬움을 느끼게 됩니다.

  4. 구차니님 안녕하세요.
    개발 일정에 테스트 기간까지 모두 포함해야 합니다. 프로젝트에 따라서 테스트 기간이 구현기간보다 더 긴 경우도 있습니다.

    그런데 흔히 테스트 기간은 너무 짧게 잡아 놓고 마치 구현기간에 거의 출시 가능한 제품을 만들어 낼 수 있을 것 같은 생각을 하곤 합니다.

    구현과 테스트 기간의 비율은 하나의 정답이 있는 것이 아니고 프로젝트의 성격과 난이도에 따라서 달라집니다. 이것을 판단하는데 경험도 필요합니다.

    또한 출시를 할지 말지 결정하는 회의를 Go-live회의라고 합니다. 이 회의를 통해서 버그를 몇개 안고 출시를 할지 고쳐서 출시를 할지 결정하게 됩니다.

  5. Blog Icon
    탁..

    (문제제기에 대해 늘 공감하며 보고 있습니다. 감사합니다) 어떻게 하면 적절히 할 수 있을까요? 프로젝트 예측이라는 게 제겐 참 어려운 일인데. 어떻게 하면 요구사항으로 실제 완성이 되기 까지의 기간을 예측을 할 수 있나요?

  6. 안녕하세요. 탁..님

    프로젝트 일정 예측에 가장 필요한 자료는 SRS입니다. SRS를 제대로 작성하게 되면 각 Task는 1~2일 단위로 쪼갤 수 있습니다. 이를 WBS라고 합니다. 일정이 이렇게 작게 쪼개지지 않고 몇주 또는 몇달 단위로 관리를 한다면 일정을 관리할 수도 없고 늦어지고 있는지 판단할 수 없습니다.

    이러려면 SRS를 잘 적어야 하는데 이는 하루이틀에 가능한 일이 아닙니다. 제대로 방법을 배워야 하고 경험해야 하고 실제 프로젝트에서 수십번 해봐야 합니다. 제대로 적으려면 수년이 걸리고 10년을 적어봐도 계속 더 잘적을 것들이 남아 있는 분야입니다.

    일단 개발해야 할 것을 꼼꼼히 적는 것에 서 출발해보세요. 물론 이것만으로는 스펙(SRS)의 20~30%만 커버한다고 생각하면 됩니다. 그래도 시작은 되죠.

  7. Blog Icon
    bluemonk

    예측이란 틀릴 수 있기 때문에 예측 아닐까요? 주식도 보면 주식 전문가라고 하는 사람들도 시장 예측을 하죠. 대부분 확인 과정이 없어서 그럴 수도 있지만 많은 경우 맡지 않는 것 같습니다. 그들의 예측이 맞지 않을때 왜 맞지 않는데 예측에 대한 책임을 지지 않는 거야 라고 생각한 것도 있습니다. 그러면 왜 그들에게 책임을 지라고 사람들은 묻지 않을까요? 사람들 다 틀릴 수 있다고 생각하기 때문인 것 같습니다. 프로젝트 기간 또한 비슷하지 않을까요? 다들 틀리 수 있다는 가정을 하지 않는데 어려움이 있는 것 같습니다. 무조건 기간을 맞춰야 한다는 문제가 상황을 힘들게 하는 것 같습니다. 선을 그어놓고 당사자들이 맞춰서 뛰어라 하는 상황이 많은 건 아닐까 생각해 봅니다.

  8. Blog Icon
    bluemonk

    또한 프로젝트에 대한 예측과 그에 따른 결과가 어떻게 됐는지. 어떤 부분이 예측을 힘들게 하는지. 어떤 이유 때문에 연기 되었는지에 대한 검증이 없고 또한 그 검증에 대한 소프트웨어 업체간의 정보 공유가 없는 것이 문제이지 않을까요? 그 부분에 대한 노하우가 쌓이지 않고 공유되지 않는 것이죠. 다들 닥친 프로젝트 마치고 유지보수 하는데 여력을 쏟지 그 과정에 대한 검증과 과정에 대한 리부가 없는 시간의 환경 또한 문제인 것 같습니다.

  9. 안녕하세요. bluemonk님

    예측은 틀릴 수 밖에 없죠. 정확한 예측은 프로젝트가 끝날 때 하는 것이라고들 합니다. 하지만 프로젝트 일정과 비용을 전혀 예측할 수 없다면 비즈니스를 할 수가 없죠.

    프로젝트를 시작할 때 하는 예측은 흔히 2배정도 차이가 난다고 합니다. 심지어 5배 이상 차이나는 경우도 있습니다. 하지만 SRS를 쓰고 설계를 하는 과정에서 상당히 정확한 일정을 예측할 수 있게 됩니다. 프로젝트는 우리의 통제하에 있는 것이라도 예측 가능하게 됩니다. 통제권을 잃어버리면 예측이 안되죠. 이렇게 프로젝트가 언제 끝날지 모르는 프로젝트도 허다합니다.

    프로젝트 예측은 개발자들이 하는 것으로 위에서 일정이 고정되어서 내려오면 그냥 열심히 해는 것가지고는 안되고 스펙 기반하에 일정을 단축할 수 있는 다양한 방법을 동원해야 합니다. 이또한 일정이 상당히 정확하게 예측이 되어야 단축할 수 있는 방법도 동원할 수 있습니다.

  10. Blog Icon
    bluemonk

    스펙 기반하에 해야 하는 것이 맞는 것 같습니다. 그 스펙이 바뀐다면 어쩔 수 없는 거 같습니다. 그 스펙이라는게 SRS 를 쓰면서 다시 한번 범위가 검증되는 것도 맞는 것 같습니다.
    사람들은 자연에서 법칙을 찾고 싶어합니다. 그리고 그것을 숫자화(수치화, 수식화) 합니다. 그래야 예측 가능하고 통제 가능하다고 생각하기 때문입니다.
    그래서 앞에 이야기 한데로 숫자화 하는 노력이 필요한 것 같습니다. 법칙이나 조건 같은거라고 할 수도 있겠죠. 다만 이러한 상황 속이라도 예측이 빗나갈 수 있다는 전제는 반드시 존재해야 한다고 생각합니다. 인간도 자연의 일부이니까요. 그 예측이 틀린 것에 대한 책임이 너무 큰 것 같다는 생각이 듭니다. 그 책임이 주로 개발자에게 돌아오는 것 같아서 더욱 그렇습니다. 왜 그런 환경에 대한 부분에 대한 인프라에 대해서는 신경을 쓰지 않으면서 개발자에게만 그주로 그 책임을 묻는 것 같습니다. 프로젝트 예측이 가능하게끔 정보를 쌓고 이를 공유하는 것이 필요하다고 생각합니다.

소프트웨어 관료화

2009/08/31 22:25 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

"공무원 수는 해야 할 일의 경중이나 업무 유무에 관계없이 일정한 비율로 증가한다", "공무원은 서로를 위하여 서로 일을 만들어 낸다", "유능하지 못한 사람은 공무원이 된다."
이는 그 유명한 파킨슨의 법칙입니다.

소프트웨어를 개발할 때도 이와 같은 함정이 도사리고 있습니다.
주먹구구식으로 소프트웨어를 개발하다가 체계적으로 개발하고 싶은 요구가 생길 때 프로세스팀을 구축하고 개발 프로세스를 정립하다 보면 파킨슨의 법칙에 빠지기 쉽습니다. 

프로세스팀의 구성원들은 진짜 소프트웨어 전문가로 구성되는 경우가 드믑니다. 여기서 말하는 소프트웨어 전문가란 코딩만 잘하는 개발자가 아니고, 구축, 설계, 테스트, 형상관리, 버그 추적, 빌드, 릴리즈, 방법론 등 소프트웨어 관련 여러 분야의 지식과 경험을 두루 갖추고 있는 사람입니다.

이런 비전문가로 구성된 프로세스 팀은 소프트웨어 개발의 내용을 속속들이 잘 모르고 너무 형식에 치우칠 수 있고, 끊임없이 프로세스팀이 할 일을 만들어 내기 위해서 프로세스를 점점 복잡하게 만들곤 합니다. 이들은 어떤 것이 정확하게 올바른 방법인지 잘 몰라서 그렇게 하기도 하고, 자신들의 밥줄을 견고하게 하기 위해서 여기저기 승인 절차를 많이 추가해서 프로세스팀이 소프트웨어 개발 프로세스의 중요한 역할을 하고자 한다.

프로세스팀은 소프트웨어를 효율적으로 개발하기 위한 방법들을 연구하지만 소프트웨어 개발 프로세스 중간에 직접 끼어들어서 간섭하는 프로세스를 만드는 것은 바람직하지 않다. 소프트웨어를 개발하는데 있어서 여기저기 승인 절차를 잔뜩 집어 넣어 놓는 것도 그리 좋지 않습니다. 승인 절차가 소프트웨어의 무결성을 보장해주진 않습니다. 오히려 관료화된 승인 절차는 아무런 도움이 되지 않는 경우가 많습니다. 소프트웨어는 각 분야의 전문가들이 자율적으로 효과적으로 움직였을 때 가장 효율적으로 개발됩니다. 명시적인 승인 절차가 없더라 승인절차를 거친 것과 같이 모두가 진행상황을 훤히 알 수 있게 됩니다. 이렇게 개발되는 방식이 오히려 소프트웨어 무결성에 더 도움이 됩니다. 승인 절차는 형식적인 승인이 되기 쉽지만, 각 단계의 전문가들이 리뷰를 하고 Unit 테스트를 하고 시스템 테스트를 하고 빌드전문가가 확인을 하고 이러한 전 과정을 통해서 문제가 되는 것들은 발견이 되고 개발도 효율적으로 진행됩니다.

소프트웨어 개발 경험이 부족한 프로세스 팀은 철저한 승인 절차가 아니면 안전한 소프트웨어를 개발하기 어려울 것 같이 생각되지만, 이는 경험 부족에서 오는 착각이거나 관료화의 조짐입니다.

또 소프트웨어 개발에 대한 이해가 부족한 경영자들은 이들이 주장하는 프로세스가 그럴듯해 보이지만 사실은 소프트웨어 개발에 상당부분 걸림돌이 되고 있다는 것을 눈치채기 어렵습니다.

진짜 소프트웨어 전문가로 프로세스팀을 만들 것이 아니면 내부에서 진행하는 여러 개선 시도들이 시간 낭비인 경우 많고, 시행착오 없이 6개월이면 갖출 수 있는 경쟁력을 먼 거리를 돌아서 수년이 걸리거나 영영 경쟁력을 갖추지 못하는 경우도 많습니다. 프로세스팀을 갖추려면 소프트웨어 전문가로 구성을 하거나 내부에 전문가가 없다면 외부에서 도움을 받는 것이 좋습니다.

회사 내에서 소프트웨어 개발을 잘 하는 개발자가 소프트웨어 전문가라고 생각하지는 마세요. 공을 잘 차는 축구 선수일 뿐입니다.  

* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
저작자 표시 비영리 변경 금지

'개발프로세스' 카테고리의 다른 글

획일화된 프로세스의 함정  (6) 2011/04/03
이번 프로젝트 내일 끝나?  (10) 2011/01/31
소프트웨어 관료화  (16) 2009/08/31
프로세스가 창의성을 저해한다고?  (8) 2009/04/08
소프트웨어 개발의 극과 극  (0) 2009/02/18
Waterfall과 Agile  (5) 2009/02/06

전규현 개발프로세스 관료화, 파킨슨의법칙, 프로세스

Trackback Address: http://allofsoftware.net/trackback/143 관련글 쓰기
  1. 우리나라 공무원은 엘리트라서 말이죠 ㅋㅋ
    저런 이유에서 사수가 있는건 참 좋은것 같습니다
    (사수없이 3년 ㅠ.ㅠ)

  2. 구차니님 안녕하세요.
    사수... 이것에 대해서도 할말이 많습니다. ^^;
    기형적인 구조 떄문에 사수가 아니면 별 뾰족한 방법이 없는 것도 현실이고... 나중에 올릴께요.

  3. Blog Icon
    김경록

    프로세스팀의 구성원들은 진짜 소프트웨어 전문가로 구성되는 경우가 드물다는 말...

    상당히 찔리고 공감이 가네요 ^^;;;

  4. 안녕하세요. 김경록님
    솔직하시군요. ^^
    너 자신을 알라!, 아는 것이 힘이다.
    즉, 자신을 아는 것이 힘이다.

  5. Blog Icon
    hermian

    해결책은 없겠죠.
    철통 밥그릇이 그렇듯...
    전문가가 아닌 사람의 머리를 쪼개서 지식을 넣어 줄 수도 없고...
    참으로 난형난재입니다.

  6. hermian님 안녕하세요.
    지식을 넣어 주는 기술은 300년은 지나야 나올 듯합니다.

  7. Blog Icon
    이혜원

    300년 지나면 가능해지나요??
    가능한 일이면 좋겠습니다.
    어쨌든, Ray님의 글들에 동의 합니다..

  8. 안녕하세요. 이혜원님

    그래서 저희같은 사람의 도움이 필요합니다.
    외부 전무가의 힘을 빌어서 변화를 꾀하는 것이 가장 빠르고 무리없이 변화에 성공할 수 있는 방법입니다.

  9. Blog Icon
    장호진

    제가 유일하게 RSS등록해두고 잘 보고있는 블로그인데 처음 글 남깁니다.
    7년 동안 사수없이 고군분투해오다 보니 남는게 별로 없네요....
    그래서, 요즘 전규현님 책과 블로그의 도움을 받아서 흔히 얘기하는 시스템과 프로세스를 구축하고 있습니다.
    앞으로도 좋은 글 부탁드립니다.
    가끔 글도 남길께요^^

  10. 장호진님 안녕하세요.
    열심히신군요. ^^ 책보고 스스로 뭘 해보는 것이 정말 힘들죠. 궁금하신 것이 있으면 언제든지 문의해주세요. Email은 항상 열려있습니다. :)

  11. Blog Icon
    dkinght

    소프트웨어 전문가란 어떤 사람을 말하는지요..제대로 된 정의를 찾기 힘드네요..

  12. 본문에서도 언급했듯이 "소프트웨어 전문가란 코딩만 잘하는 개발자가 아니고, 구축, 설계, 테스트, 형상관리, 버그 추적, 빌드, 릴리즈, 방법론 등 소프트웨어 관련 여러 분야의 지식과 경험을 두루 갖추고 있는 사람입니다."
    제대로 시스템과 프로세스, 개발 문화를 갖추고 있는 회사에서 10년 이상을 개발을 해 온 개발자라면 이런 분야를 두루 섭렵할 수 있지만, 보통의 경우에는 주로 구축(코딩)과 설계만 치중하기 때문에 소프트웨어 전문가가 되기는 어렵습니다.

  13. 소프트웨어 전문가인가요 아니면 소프트웨어 엔지니어링 전문가 인가요?

    본래 둘을 같은 의미로 쓰던가요?

  14. 소프트웨어 공학하면 왠지 이론적인 냄새가 많이 나서 별로 사용하기가 꺼려지지만 지식과 경험을 모두 갖추고 있어야 진짜 소프트웨어 공학이라고 할 수 있죠. 따라서 지식과 경험을 모두 가지고 있다면 소프트웨어 전문가, 소프트웨어 공학 전문가를 따로 구분할 필요는 없어 보입니다. 그래서 가끔 이론적으로만 소프트웨어 공학을 공부하고 연구한 교수를 전문가로 봐야 하는지에 대해서는 섯불리 얘기하기 어려운 측면이 있습니다. 그 분들도 분명히 이론적인 기반을 다지고 새로운 기법들을 연구하는 것에는 의미가 있으나 실제 소프트웨어에 접목할 수 있는 경험이 없고 실제로도 어렵기 때문에 여전히 이슈는 존재합니다.

  15. Blog Icon
    dkinght

    개인적으로는 그것 가지고 소프트웨어란 광범위한 전문가라고 부르기엔 뭔가 찜찜하네요,..

  16. 안녕하세요. dkinght님
    관념적으로 접근을 하는 것은 별 의미 없을 것 같고, 진짜 소프트웨어 필드에서 필요한 전문 지식 몇 경험 분야를 보려면 IEEE에서 정의한 소프트웨어 전문 영역 10가지를 보는 것도 좋을 것 같습니다. 정확한 답은 아니더라도 도움을 될 겁니다.

프로세스가 창의성을 저해한다고?

2009/04/08 22:08 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

개발 프로세스가 창의성을 저해한다고 싫어하는 개발자, 관리자, 경영자를 종종 만나게 됩니다.
이들이 프로세스를 싫어하는 이유는 과거에 개발 프로세스 도입에 대한 실패의 경험이 있거나 그런 얘기를 종종 전해 듣기 때문입니다.

이렇게 개발 프로세스 도입에 실패하는 이유는 현실성이 없는 이론적인 프로세스를 도입하거나 회사의 역량 수준에 맞지 않는 프로세스를 시도한 경우가 많습니다. 또 인터넷이나 책을 통해서 배우게 된 프로세스를 따라 하다 보면 그 Context를 다 알지 못하고 형태만 비슷하게 흉내 내다가 실패하기도 합니다.

그럼, 그렇다고 프로세스가 없다면 창의성이 샘솟을까요?
개발프로세스가 제대로 갖춰지지 않은 회사는 대부분 각 개발자들의 개인 역량에 따라서 적절히 개발이 이루어지며 개발자들은 역할의 구분 없이 만물박사 식으로 온갖 업무를 처리합니다. 이러다 보면 항상 바쁘고 새로운 기술을 조사한다거나 참신한 생각을 할 틈이 별로 없습니다. 또, 멋진 아이디어가 떠올라도 마땅하게 Follow up할 방법이 없어서 아이디어를 떠올린 개발자가 북치고 장구치고, 경영층도 설득하고, 프로토타입도 만들어보고 시장 조사도 해보고 해야 합니다. 안 그래도 바쁜 마당에서 짬을 내서 또 새로운 아이디어를 Follow up하기는 정말 어렵습니다. 누가 무슨 일을 얼마나 하고 있는지 잘 파악이 안되므로 또 이런 일을 벌여서 괜히 성과도 없이 평가만 안 좋아 질까봐 포기하기 십상입니다. 또 아이디어 낸 사람이 총대를 매야 하기 때문에 그렇다고 기존의 업무가 줄어들지 않기 때문에 공식적으로 이런 활동을 안하려고 합니다.

하지만, 개발 프로세스를 잘 갖추고 있는 회사는 아이디어를 내기만 하면 일단 회사의 System이 이를 Follow up합니다. 일단 아이디어는 수면 위로 떠올라서 여러 사람과의 Review를 통해서 더욱 Refine되고 정식 절차를 통해서 Prototype을 만들고 마케터는 시장 조사를 하고 영업은 고객들의 의견을 수집해 옵니다. 관리자는 해당 개발자가 아이디어를 발전시킬 수 있도록 정식으로 업무를 할당해서 시간을 빼줍니다. 한마디로 개발자는 기술적인 것만 Follow up해도 됩니다. 물론 모든 아이디어가 제품화 되는 것은 아니지만, 이런 아이디어들이 10개 100개 모여서 성공하는 제품이 나옵니다.

결국 프로세스가 창의성을 저해한다는 생각은 무지의 산물이거나 잘못된 경험의 결과입니다.

문제는 회사의 몸에 딱 맞는 개발프로세스를 갖추는 것이 어렵다는 것입니다. 현재 개발을 어떻게 하고 있는지 조사를 해보면 제각각 일겁니다. 이것부터 통일해 나가면서 조금씩 바꿔가는 것이 스스로 해볼 수 있는 최선의 방법입니다.

이미지출처 : Microsoft Office Online
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.  

저작자 표시 비영리 변경 금지

전규현 개발프로세스 Follo up, prototype, Refine, review, System, 마케터, 아이디어, 역량, 제품화, 창의성, 프로세스

Trackback Address: http://allofsoftware.net/trackback/110 관련글 쓰기
  1. 2009/04/09 20:38
    소프트웨어 개발 무엇이 필요한가? Tracked from 김현남의 이야기터
  1. Blog Icon
    ~_~

    제가 일하고 있는 곳은 새로운 아이디어가 있다면 알아서 적용시키고 실현 시킨뒤에나 검토가 됩니다. 따라서 회사의 요구대로 아이디어 따위는 일체 생각도 하지 않고 있습니다. 음... 개인시간을 좀더 늘려서 혼자만의 아이디어 스캐치를 해보는게 좋을듯 싶네요

  2. 대부분의 회사가 그런것 같습니다. 또 개인시간이 마음대로 늘어나지 않는 것이 문제죠. 시스템이 잘 갖춰져 있어야 개발자들이 여유가 좀 생기고 좋은 생각도 하게 됩니다.

  3. 회사에 맞게 딱 맞는 프로세스를 도입한다는 것이 정말 힘든 일인줄 압니다.
    이론적인 프로세스를 도입하고 그것에 맞춰서 따라간다는 것은 마치 적응하지 못한 간난아기보고 걸어달라고 하는 것과 마찬가지인것 같습니다. 이론적인 프로세스를 도입한다 하더라도 조직에 맞게 변형해서 수년간 틀을 마련한다면야..되겠지만.말이죠..

  4. moova님 안녕하세요.
    대부분의 프로세스를 시도한 회사들은 주먹구구식으로 개발하는 것보다도 못한 경우가 많습니다. 시행착오에 대한 경험을 얻는 것이 유일한 성과라고 할 수 있습니다. 스스로 조그씩 발전시켜나가거나 전문가의 도움을 받는 것이 좋으나 주변의 프로세스 전문가들이 대부분 moova님이 말씀하신 것처럼 이론 알고 있어서 실패할 가능성이 많습니다. 이렇게 얘기하고 보니까 답이 없네요. - -; 아무튼 과욕은 금물

  5. 창의성을 저해하는 것은 프로세스를 위한 프로세스를 무작정 도입하기 때문인 것 같습니다. 어디서 누가 좋다고 하니까 필요없는 돈을 발라가면서 열심히 도입을 하고, 일단 도입은 해 놨으니 그게 옳건 그르건 무조건적인 준수를 강요합니다. 뭔가 좀 문제가 있다 싶으면 그걸 해결한답시고 또 다른 프로세스를 도입하기를 반복하죠. (순수 IT 회사보다는 제조로 시작한 회사가 그런 경향이 강한 것 같습니다.) 나중에는 프로세스 따라 다니다가 지쳐버리죠.
    회사의 몸에 딱 맞는 개발프로세스를 갖출 수만 있다면 정말 좋을텐데요...

  6. Shawn님 안녕하세요.
    대기업들은 중소기업과 다르게 무리한 프로세스도 꽤 오래 끌고 가고 직원들은 다들 피해가는 방법을 알고 있고, 그렇게 시간이 흘러서 아주 이상한 형태로 진화를 합니다. 겉보기에는 프로세스가 꽤 그럴듯 한 것 같은데 속은 전혀 아니고 오히려 생산성을 저해하는 경우입니다.
    우리나라의 소프트웨어 개발 역사는 너무 짧기 때문에 아직 그런 저변이 부족합니다. 소프트웨어 선진국을 조금씩 흉내내는 것이 좋은 방법입니다.

  7. "멋진 아이디어가 떠올라도 마땅하게 Follow up할 방법이 없어서" 라는 부분에 격하게 공감합니다. :)

  8. 우울한딱따구리님 안녕하세요.
    우리나라 개발자들이 전세계 어느나라의 개발자보다 아이디가 넘치는 것은 저도 인정하는 바입니다. 사실 개별 개발자들의 지식수준이나 코딩 능력도 최고입니다. 그런데 회사나 사회전반의 저변이 이를 못받쳐주니 나이를 먹을수록 경력에 걸맞게 실력을 끌어올리지 못하고, 좋은 아이디어가 사장되는 경우가 너무나 많습니다. 기발팀이던, 회사던, 국가도 System으로 움직여야 하는데, 우리는 아직도 사람이 움직이고 있습니다.

소프트웨어 개발의 극과 극

2009/02/18 01:31 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

꽤 오래 전에 TV에서 "비교체험 극과 극"이라는 프로그램을 방영한 적이 있습니다. 어떤 아이템을 정해서 가장 비싼 것과 가장 싼 것을 비교하는 프로그램이었는데 꽤 재미있게 본 기억이 납니다.

 

소프트웨어를 개발하는 현장에서도 극과 극 현상은 드물지 않게 발생합니다.

 

여러 회사를 분석해보면 완전 주먹구구이거나 또는 너무 무거운 방법론을 도입해서 오히려 부담이 되는 경우가 많습니다. 적당히 중간인 회사를 찾기가 더 어렵습니다.

 

완전 주먹구구식 가내수공업 형태의 개발방식도 문제가 있지만, 몸집과 역량에 걸맞지 않은 거대한 방법론을 무조건 따라하는 것은 더 문제가 큽니다. 그럴 바에는 차라리 주먹구구가 낫습니다.

 

그런 주먹구구회사가 문제를 깨닫고 거대 방법론들을 스스로 연구해서 도입을 하면 그 핵심은 모르고 형식만 따라하는 경우가 많습니다. 그러다보면 프로세스가 너무 복잡하고, 문서도 너무 많이 만들어야 되는 경우가 허다합니다. 이런 시도는 거의 실패한다고 보면 됩니다. 애초에 따라 할 수도 없고, 억지로 따라한다면 비용과 시간은 몇 배로 더 들고 회사는 망하기 길 밖에 남지 않습니다. 국내의 대부분의 소프트웨어 회사들은 그러한 거대 방법론은 필요하지도 않습니다. 또 그렇게 많은 문서는 만들 필요도 없습니다. 개발에 필요한 핵심문서 몇 개만 자신들이 만들고 업데이트하고 감당할 수준 정도만 만들어내야 합니다.

 

극과 극의 양쪽이 아닌 회사에 딱 필요한 수준의 중간점을 찾아서 적용해야 합니다.

 

 

저작자 표시 비영리 변경 금지

전규현 개발프로세스 문서, 프로세스

Trackback Address: http://allofsoftware.net/trackback/87 관련글 쓰기

Waterfall과 Agile

2009/02/06 12:35 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

주변에서 Waterfall이 좋다 Agile이 좋다 등의 논쟁을 가끔 보게 됩니다.

하지만 Waterfall을 비교 대상으로 삼기에는 적당하지 못한 것 같습니다.

즉, 너무 극과 극의 비교입니다.

 

이미 Waterfall 방식은 너무 느리고 비용이 많이 들어서 대부분의 소프트웨어 프로제트에서는 사용하지 않습니다. 하지만 Waterfall 방식은 소프트웨어 개발의 기본 원리를 이해하는데 가장 중요한 모델이고 다른 모든 개발 모델들은 Waterfall에서 파생해 나온 것들이기 때문에 Waterfall 방식을 이해하는 것은 소프트웨어 개발 기본 원리를 이해하는 것처럼 중요합니다.

 



순수한 Waterfall 모델은 다음 단계로 진행하기 위해 전 단계가 완벽하게 끝나야 하고 모든 결과가 문서로 작성되어야 합니다. 폭포를 거슬러 올라가는 것이 원칙적으로 불가능하므로 Waterfall 모델에서는 이전 단계로 거슬러 가는 것이 불가능하거나 비용이 아주 많이 들게 됩니다.

 

현실에서는 이를 제대로 적용하기가 어려운 이유는 대부분의 소프트웨어 프로젝트는 요구사항을 초기에 완벽하게 파악하여 고정하는 것이 불가능하기 때문입니다. 더 많은 시간을 들여서 요구사항을 완벽하게 해도 시간이 흐르면서 주위 환경이 바뀌고 경쟁자들이 새로운 제품을 내놓는 등의 이슈로 인해서 이미 만들어 놓은 요구사항은 쓸모 없어 집니다. 그리고 너무 많은 문서를 요구하기 때문에 문서 작성과 관리에 너무 많은 시간을 쏟아 부어야 합니다. 그리고 프로젝트가 끝날 때까지 진행과정을 거의 볼 수가 없어서 사용자의 요구사항이 만족스러운지를 프로젝트가 끝날 때까지는 알 수가 없습니다. 이 또한 큰 리스크입니다.

 

만약에 Waterfall 모델을 따라서 개발하고 있다고 말할 수 있는 회사가 있다면 제대로 적용하고 있지 않거나 화성탐사선을 만드는 회사일 것입니다.

 

모든 종류의 프로젝트에 딱 적합한 방법이 있는 것은 아니니까 어느 한 라이프사이클 모델을 엄격하게 따를 필요는 없습니다. 원리만 알고 있고 경험이 있다면 응용이 가능하니까요. 

저작자 표시 비영리 변경 금지

전규현 개발프로세스

Trackback Address: http://allofsoftware.net/trackback/71 관련글 쓰기
  1. 2009/02/08 13:08
    멤피스의 생각 Tracked from cychong's me2DAY
  1. 엇... 그런데 한국에서 수행되는 대부분의 프로젝트들은
    폭포수모델에 따라 진행되고 있는 것 같습니다.
    SI 업종 뿐만 아니라, 다른 곳에서 개발하는 사람들, 업무를 접하다 보면
    다들 자연스럽게 폭포수 모델을 따르는 걸 보게 되죠.

    기초기획 -> 상세기획 -> 디자인 -> 한참 지나서 개발팀에 넘어오고,
    개발팀은 충분히 설계할 시간도 없고, 인프라웨어를 설치할 시간도 없고,
    iteration을 경험할 틈도 없이... 스펙대로 기능들을 하나씩 만들어가고...

    개발팀 스스로도 iteration의 필요성을 느끼고 실천해야 하지만,
    개발팀이 곧 전체 팀은 아니기 때문에 다양한 역할을 가진 사람들이
    우선 서로의 입장을 이해하고 논의하는 과정이 선행되어야 한다고 생각합니다.

    사실 남의 핑계대자면 끝도 없는 것이지만,
    에자일이라는 용어 혹은 개념을 좀 더 쉽게 풀어서 개발업무에서 벗어난 사람들에게
    알리는 행동들도 필요하지 않을까 생각합니다.

    제가 처음 IT에 발을 들여놓을 때와 달리
    지금은 개발자들이 바로 프로젝트를 시작하는게 아니라
    전문 기획자, 컨설팅팀, 디자이너 등 다양한 사람들이 프로젝트 계획 수립에
    참여하고 있으니까요~ 개발팀에서 에자일 어쩌고 하면, 무슨 얘기야? 하죠. ^^;

  2. 써니님 안녕하세요.
    저는 Agile을 주장하는 것은 아니고, 프로젝트는 종류가 천차만별이거든요. 원자력발전소를 만든다면 Waterfall모델을 따를 수 있겠죠. 규모가 크고 작고, 기술이 어렵고, 쉽고, 일정 크리티컬하고, 비용이 중요하고 요구사항을 잘 모르겠고, 이러한 조건에 다 맞는 방법을 하나만 대라고 하면 할말이 없는 거죠. Agile은 프로젝트의 규모가 커지면 맞지 않죠. 스펙이 뻔한 유지보수 프로젝트에는 Waterfall로 진행하는 것이 더 빠를 수 있습니다. 그래도 Waterfall의 원리를 아는 것은 매우 중요한 것 같습니다.

  3. "폭포수 vs 애자일"에 대한 논쟁은 적합하지 않지만, "계획기반 vs 경험기반"에 대한 논쟁은 충분히 가능하겠네요.

    애자일 방법론은 경험기반의 불확실성을 내포하고 있기 때문에 관리자는 통제와 조절이 가능할지에 대한 의문을 가지게 되는데요. 가장 풀어내기 어려운 숙제인것 같습니다.

    사실, 계획기반 방법론자에게 폭포수모델을 사용한다고 단정지으면 그들은 애자일 방법론자에게 Code&Fix를 한다고 맞받아 칩니다. 상호간에 이해와 포용이 필요합니다.

  4. YUZI님 안녕하세요.
    세상이 잘못된 방법론이란 없습니다. 자신의 상황에 맞게 적절히 적용해야 하는 것이고 그것이 어려운 것입니다. 얄팍한 지식을 가지고 자신이 하는 방식이 최고라고 하는 것은 경계해야할 자세입니다.

  5. 사실 본질적으로 "폭포수 vs 애자일"에 대한 논쟁이나 "계획기반 vs 경험기반" 논쟁이 과연 다를까요?
    이분법은 무언가 원리를 설명할 때 추상화와 대비를 위해 효과적일 뿐이죠.
    계획 기반으로 한다고 경험에 기반하지 않나요? ^^
    애자일을 적용한다고 워터폴을 피할 수는 없죠. 이는 Ray님 포스트에서도 설명하고 있습니다.
    실제 현장에서 일하는 방식을 가지고 이분법 논의는 순진한 발상이 아닌 다음에야 말하는 이가 중요하게 생각하는 어떤 아이디어를 설명하고자 '대비와 추상화'를 활용했다고 이해할 수 있을 듯 합니다.

소프트웨어 개발 단계에서 가장 중요하다고 생각하는 것은?

2009/02/04 16:48 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
그동안 약 2달에 걸쳐서 제 블로그에서 Poll을 실시하여 이와 같은 결과가 나왔습니다. 

이런데 이상하게 제가 현장에서 만나는 여러사람들의 의견과 다른 결과가 나왔습니다.
그래서 그 이유를 2가지 정도로 추측해보고 있습니다.

첫째, 블로그 방문자들(주로 블로거)은 비 방문자보다 소프트웨어 공학에 더 많은 지식과 경험을 을 가지고 있다.
둘째, 실제 자신의 경험에 의한 생각보다는 정답이라고 생각하는 것에 투표를 하였다.

물론 첫째 이유겠죠 ^^

아래 목록을 보면 각 항목의 득표 비율이 나오는데, 제 생각과 크게 다르지 않습니다. 
하지만, 유난히 유지보수에 대해서 작게 나온 것은 대부분의 방문자들이 유지보수가 그렇게 중요하지 않은 프로젝트들을 수행하고 있는 것이 아닌가 추측해 봅니다. 


다음 투표로는 SCM 사용도에 대해서 진행을 하려고 합니다. 많은 성원부탁합니다.
저작자 표시 비영리 변경 금지

전규현 개발프로세스 STAGE, 개발단계

Trackback Address: http://allofsoftware.net/trackback/72 관련글 쓰기
  1. 유지보수 부분이 적게 나온건 의외이긴 합니다.
    하지만, 가장 중요한 한가지를 투표하는것으로 기억되는데 그렇다고 한다면 제 생각과 얼추 비슷한 답변 분포인데요?

  2. 돌이아빠님 안녕하세요.
    생각해보니 그렇겠군요.

  3. 유지보수가 정말 중요하지만, 대부분의 중견 개발자 분들은 유지보수를 맡지 않기 때문이 아닐까 생각해 봅니다. 다수의 프로젝트에서 유지보수는 경력이 짧거나, 초기 프로젝트를 수행하지 않은 멤버들에게 할당되는 경우가 많거든요. 물론 제 경험에 한정된 이야기입니다만, 우선 유지보수에 투입되는 예산이 적은 경우가 많고 따라서 경력자들에게 유지보수를 맡기기에 단가가 맞지 않으며, 게다가 유지보수 경험은 장기적인 경력 관리에 좋지 않다는 선입관도 작용하는 것 같구요.

    물론, 유지보수의 중요성은 길게 얘기할 필요는 없겠지요. 예산이 적게 배정된다고 해서 중요도가 낮다는 얘기는 아니거든요.

  4. 써니님 안녕하세요.
    유지보수에 초기 개발비용의 1.5배에서 5배까지 소요가 된다는 보고도 있듯이 제가 봐온 수많은 회사들이 유지보수 이슈로 어려워지고 문을 닫는 것을 봐았습니다. 그럼에도 불구하고 유지보수가 어떻게 왜 문제가 되었는지 모르고 지나가는 경우가 허다합니다. 제품은 1.5, 2.0으로 업그레이드가 되는데 유지보수 할 일은 점점 기하급수로 늘어서 더이상 감당이 안되곤 하는데, 개발 초기부터 이를 철저히 고려하지 않으면 안됩니다.

  5. 개발자 개인 관점에서 유지보수 경험에 따라서도 이야기 할 수 있지만, 대체로 프로젝트를 SM 주체와 다른 외주 업체가 수행하는 탓도 있는 듯 합니다.
    사업수행 PM은 결국 예산, 기간 내에서 프로젝트를 완료해야 하는 탓에 품질이 우선순위가 밀리는 경우가 많습니다.
    또한, 시스템의 기반 기술이 바뀌는 소위 말하는 "차세대" 성격의 경우 고객이나 유지보수 담당자가 모르는 기술로 구현하기 때문에 일종의 모럴 해저드가 발생할 우려가 있는 부분도 있습니다.

  6. 개발자의 모럴해저드에서 대해서도 많은 해야할 얘기가 많이 있습니다. 스펙에 아무리 유지보수 용이성등에 대해서 자세히 적는다고 해도 완전히 검증이 어렵고 많은 부분 결국 개발자의 양심과 윤리에 맡기는 측면도 있습니다. 개발자들이 다른 사람을 속이는 것은 어려운 일이 아니거든요.
    또한 양심없이 만든 코드의 문제와 그 책임소재가 쉽게 드러나지 않는등 개발자들에게는 특히 윤리성이 많이 필요합니다. 그러나 현실은 그렇지 않고 대부분 환경만 탓하지요. 서로 까먹는 거죠.

인류멸망 그 후(Life after People)

2009/01/22 14:17 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed
얼마 전 TV에서 "인류멸망 그 후(Life after People)"를 방영했죠.
인간이 지구에서 당장 사라진다면 어떤 일이 일어날지 살펴보는 프로그램이었습니다.

여기서 인간이 만들어 놓은 건축물이 유지보수를 하지 않는 순간 얼마나 빨리 망가지는지를 확인할 수 있습니다.

소프트웨어 개발도 비슷하다고 생각합니다. 소프트웨어 기본 원리야 항상 변함이 없지만, 회사의 규모와 환경에 따라서 개발 프로세스는 그에 알맞게 절절해야 하고, 회사의 성장과 전략의 변화에 따라서 지속적으로 그에 맞춰줘야 합니다. 

그런데, 어떤 이유에서건 갑자기 회사의 개발 프로세스를 관리하지 않기 시작하면, 서서히 망가져가는 것을 볼 수 있습니다. 개발자들에게 서서히 외면을 받고 피해가기도 하고, 개발을 방해하는 거추장스러운 것이 될 수도 있습니다.

이렇게 망가지는 가장 큰 원인은 아마도 Mind가 다른 경영자로의 교체일 것입니다. 이런 경우 소신있는 개발자라고 하더라도 별 힘을 써보지 못하게 되는 경우가 많은데 이런 경험이 있는 분들도 있을 것으로 생각합니다. 이런 경우에 합리적인 대처 방법은 고민을 해봐야 할 주제입니다.

각설하고, 회사가 꾸준히 성장을 하고 있다면 한번 정해놓은 개발 프로세스가 영원히 가는 것이 아니고 꾸준히 유지보수가 되어야 지속적인 생산성 향상이 가능합니다.

과거의 개발 프로세스가 현재의 상황과 맞지 않는 점이 발견되고 있다면 소프트웨어와 마찬가지로 개발 프로세스도 유지보수를 할 때가 된 것입니다.





저작자 표시 비영리 변경 금지

전규현 개발프로세스 개발프로세스

Trackback Address: http://allofsoftware.net/trackback/57 관련글 쓰기
  1. 사람이 살지 않는 집은 빠른 속도로 생기를 잃어 버립니다. 사람이 사는 집은 사람의 숨결을 집이 기억하고 더불어 숨을 쉬기에 그렇지요. 사람이나 다른 생명이 숨을 거두면 급격하게 부패하고, 썩어 문드러지는 것과 같은 이치지요. 숨을 쉬는 것은 의식하든 않든 끊임없이 유지 보수를 하고 있단 말과 같겠지요.

  2. maejoji님안녕하세요.
    틀려주셔서 감사합니다.

Agile에 대한 단상

2008/12/24 18:05 by 전규현
 All of Software 블로그를 RSS Feed에 등록을 해 놓으시면 편리하게 받아보실 수 있습니다. rss RSS Feed

올 여름 휴가 차 미국에 방문 했을 때 나의 오랜 친구이며 소프트웨어 개발 동지인 Eddy를 만났습니다. 
그 친구는 UC버클리에서 컴퓨터 사이언스를 전공하고 실리콘밸리에서 오랫동안 잔뼈가 굵은 친구인데, 같이 소프트웨어 공학에 대해서 토론을 하게 되었습니다. 그때 대뜸 "Agile을 아냐"고 물어보더군요. 그리고는 현재 미국에서 Agile이 얼마나 인기가 있는지 장황하게 설명을 해주더군요. 이때 저는 한국의 열악한 소프트웨어 개발 실정을 적나라하게 설명해 줬습니다. 이 친구 역시 한국 업체와 몇 번 일을 해본 경험이 있어서 이해를 하더군요.

지금 한국에서도 Agile에 대한 관심이 참 높은 것 같습니다. 저는 Agile을 헐뜯을 의도는 전혀 없습니다. 하지만 소프트웨어 개발에 꼭 필요한 기초조차 갖추지 못한 회사라면 Agile방법론을 시도한다고 해서 문제가 해결될 수는 없을 것입니다. 과거에 나왔던 수많은 방법론처럼 또 이를 맹신하고 따른다면 과거와 똑같은 실패의 경험을 또 하게 될 것입니다. 또하나의 Silver bullet이 될 수도 있습니다.

소프트웨어 역량평가표를 올린 적이 있습니다. 여기서 10점 이하의 하위 점수를 받는 회사라면 먼저 기초를 갖추고 개발자들의 역량을 끌어올리는 일이 우선이라고 생각합니다. 그리고 나서 Agile이 되었든, 무슨 방법이라도 효과를 발휘할 수 있을 것입니다.

이미지출처 : Microsoft Office Online

저작자 표시 비영리 변경 금지

전규현 개발프로세스 Agile

Trackback Address: http://allofsoftware.net/trackback/44 관련글 쓰기
  1. 2008/12/25 02:56
    디자인 빚 (Design Debt) Tracked from The Art of Software Development
  2. 2009/01/06 13:27
    Agile 방법론이란? Tracked from 필넷의 IT이야기
  1. Agile방법론은 실전 개발경험이 많은... 공학적 측면에서 SW개발과정을 겪어본 사람이 리딩을 할때 효과가 클 것 같아요.

    트랙백 남겨봅니다. ^^;

  2. 필넷님 안녕하세요.
    Agile이 분명 장점을 많이 가지고 있는 방법론 중의 하나임은 사실이죠. 잘 사용하기 위해서는 기초 체력도 필수인 것 같습니다.

관리자가 이런 일까지?

우리나라 SW 조직에서 관리자란 위치는 참 애매한 위치다. 물론 전문 관리자라면 얘기가 다르지만 왕년에 SW를 조금 개발해 본 경우가 애매하다. 개발팀에서 가장 경험이 많은 SW 개발자들이 주로 팀장이 되곤 한다. 이 경우와..

과거의 성공이 발목을 잡을 때

수많은 소프트웨어 회사들이 첫번째 성공을 거두고 나서 두번째 도약에 실패하고 사라져간다. 물론 첫번째 성공도 어렵지만 이미 성공의 경험이 있고 방법을 알고 있는 회사들이 두번째 또는 세번째에는 많이 실패하는 이유가 무엇일까?..

스펙을 제대로 작성하는 것은 구식이다?

'소프트웨어 개발 방법이 얼마나 발전했는데 아직도 스펙을 제대로 작성하고 개발을 하는가?' 라고 하면서 스펙 작성에 반대하는 주장을 하는 사람들이 있다. 스펙, 설계를 작성하고 구현을 하고 테스트를 하는 방식으로 개발하는 것..

내가 개발에 집중할 수 없는 이유

우리나라에서는 개발자들이 개발에 집중할 수 없는 환경인 곳이 참 많다. 정도의 차이가 있지만 거의 대부분이라고 봐도 무방하다. 그 결정적인 이유는 개발자 혼자서 북치고 장구치고 다해야 하는 상황이기 때문이다. 원래는 이렇게..

설계가 필요할까?

최근에 Software Architect의 정체에 대해서 혼란을 겪고 있는 것 만큼 Software 설계에 대해서도 혼동스러운 것은 마찬가지인 것 같다. 그래서 설계에 대해서도 깔끔하게 정의를 해보자. 흔히 설계에 관한 다음..

Software Architect를 양성하는 나라

우리나라에서는 종종 SW Architect를 양성한다고 한다. 정부에서 막대한 예산이 지원도 되며 SW Architect를 양성하는 학원도 생기고 야단법석이다. 그럼 도대체 SW Architect는 무엇인가? SW Archi..

우리에게 지금 필요한 것은? 바로 이것

우리나라 대부분의 소프트웨어 회사들에게 가장 시급하게 필요한 것은 "기초 체력"이다. 히딩크가 우리나라 국가대표 축구팀을 처음 맞았을 때 강조한 것이 기초 체력이었다. 그전까지 우리는 국가대표 축구팀이 체력은 세계 어디를 내..

프로토타입을 재활용하면 될까? 안될까?

며칠 전 프로토타입에 관해 올린 글에 대해서 프로토타입 재사용에 대해서 여러 의견이 있어서 이 내용에 대해서 조금더 설명해보려고 한다. 2011/11/03 - [프로젝트/요구사항분석] - 프로토타입이란? 소프트웨어공학의 목적..

프로토타입이란?

프로토타입 (경제/경영) 양산(量産)에 앞서 제작해보는 원형(原型)을 '프로토타입'이라 하는데, 프로토타이핑이란 개발자들과 사용자들의 의사소통상의 효과를 증진시키기 위하여 취하는 시스템개발상의 기법이다. 일반적인 분석방법을..

같이 일하려면 적어라.

"협업은 말로 하는 것이 아니라 문서로 하는 것이다." 동서고금을 막론하고 개발자들은 적는 것을 싫어하고 또 잘 적지 못한다. 우리나라 개발자들은 그 정도가 훨씬 심하다. 우리나라에서는 회사가 크던 작던 상관없이 대부분 5년..