태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

Search results for 'review'

SW개발과 Teamwork, 그리고 Review

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

거의 모든 SW개발은 팀으로 진행됩니다. 종종 혼자서 기획하고 개발, 테스트, 영업까지 모두 다하는 경우도 있기는 하지만, 이는 워낙 작은 규모의 회사에서 있는 일이고, 대부분은 팀을 이뤄서 일을 해야 효과적으로 SW를 개발해 낼 수 있습니다. 

그 팀의 규모는 2명에서부터 수천 명에 이르기까지 다양합니다.
하지만, 주변에서 대규모 프로젝트 팀을 보기란 그렇게 쉽지 않습니다. 5~6명 안팎의 소규모 팀은 아주 흔하게 볼 수 있고, Teamwork도 꽤 좋은 편입니다. 하지만, 규모가 몇 십 명만 넘어가도 효과적으로 관리를 해내지 못하는 경우가 흔합니다. 그래서 팀이 규모가 커지면 프로젝트가 오히려 늦어진다는 얘기도 있습니다.

이런 경우라면 소규모의 팀은 제대로 된 Teamwork를 갖춘 것이 아니라 워낙 작아서 서로 인간적으로 잘 통하고 서로 커뮤니케이션을 왕성하게 하면서 프로젝트를 진행하기 때문에 문제가 없는 것이고 수십 명 규모의 팀은 똑같은 방법으로 커뮤니케이션이 잘 되지 않기 때문에 문제가 많을 가능성이 더 높습니다.

팀을 이뤄서 소프트웨어를 개발할 때 가장 중요한 것은 Review입니다.
Review에 익숙하지 않은 개발자들이 모여서 개발을 하는 것은 서로 따로 개발하는 개발자들을 한데 모아 놓은 것과 별반 다르지 않습니다. 이런 팀은 개발을 하면서 서로 다른 목표를 가지고 개발을 하기도 하고, 아키텍처
에 대한 오해를 하고 통합 시 인터페이스가 안 맞고, 일정이 서로 어긋나곤 합니다.

물론 각 개발자들이 서로 개발하는 모든 내용을 다 Review하고 공유할 수는 없습니다. 프로젝트의 규모에 따라서 또, 서로의 역할에 따라서 Review하는 범위와 대상이 달라집니다. 그럼 소프트웨어 개발팀에서 리뷰를 해야
 하는 것들은 어떤 것이 있는지 알아보겠습니다.

1. SRS(스펙) 작성 및 리뷰 (중요도 : 매우 높음)
제가 여러 차례 강조했지만 SRS는 SW개발에 있어서 가장 중요하며 프로젝트 기간을 단축하고 비용을 절약하는데 가장 핵심입니다. SRS작성시는 개발팀 뿐만 아니라 프로젝트의 모든 관련자와 수 차례 리뷰를 합니다. 모든 관련자가 SRS의 모든 항목을 다 리뷰하는 것이 아니고 본인들이 책임지는 부분만 리뷰를 하면 됩니다. 예들 들어 Marketer인 경우는 프로젝트 목표와 비전, 주요 기능 등과 같이 마케팅에 필요한 부분만 리뷰를 하면 됩니다. 이렇게 SRS를 철저히 리뷰를 해야 모든 관련자가 프로젝트에 대하여 동일한 생각을 가지게 되고 프로젝트가 끝
날 때까지 스펙 변경을 최소한으로 유지하게 됩니다. 또한 이런 SRS리뷰가 일상적으로 반복적으로 일어나야 자연스러운 관행으로 자리잡고, 개발자들의 분석 능력을 향상하는데도 도움이 됩니다. 참고로 SRS(스펙, 요구분서)는 SW개발에서 약 40%의 비중을 차지한다고 합니다. 

2. SW아키텍처 리뷰 (중요도 : 높음)
웬만한 규모의 SW의 아키텍처는 한 명의 머리 속에 나올 수가 없습니다. 아키텍처는 정답이 있는 것이 아니라서 생각을 많이 할 수록 좋아 질 수 있습니다. 개발자들은 설계 단계에서 이런 아키텍처 리뷰를 여러 차례 반복하게 됩니다. 그러면서 아키텍처를 점점 구체화 해나가고 개량해나갑니다. 규모가 큰 SW인 경우에는 상,하위 아키텍
처를 구분해서 설계를 하기도 하고 각 컴포넌트간에는 인터페이스만 정하게 되고 그 내부는 또 각 개발자들이 설계를 하고 리뷰를 하게 됩니다. 이 때 UML을 사용하건, Flow chart를 사용하건, DFD를 쓰던 큰 상관은 없으며 각자 익숙한 툴로 현재의 아키텍처를 가장 잘 표현할 수 있는 것으로 작성하면 됩니다. 이러한 과정 또한 선배 개발자들이 후배 개발자들에게 지식과 경험을 전달할 수 있는 좋은 기회가 됩니다.

3. 소스코드 리뷰 (중요도 : 중간)
소스코드 리뷰가 중요하기는 하지만 SRS와 아키텍처리뷰보다 중요하지는 않습니다. SRS와 아키텍처가 잘못되면 엄청나게 많은 재 작업을 해야 하지만, 소스코드가 잘못된 것은 버그로 발견되고 또, 상대적으로 쉽게 고칠 수 있습니다. 그렇긴 하지만 소스코드 리뷰는 좋은 관행이며 꾸준히 노력해서 정착해야 합니다. 소스코드 리뷰 방법은 매우 다양하지만, 저는 가장 간단한 방법은 Peer desk check을 권합니다. 소스코드 관리시스템에 Commit하기 전에 동료와 같이 리뷰를 하는 겁니다. 간단히 Diff툴을 실행해서 바뀐 소스코드를 볼 수도 있습니다. 그리고 소스코드를 등록할 때 누가 리뷰를 했는지도 꼭 기록하게 하는 정책도 소스코드리뷰를 확산하는 좋은 방법 중 하나입니다.

소프트웨어 개발에 있어서 Teamwork은 서로 사이가 좋은 팀을 말하는 것은 아닙니다. Teamwork에 있어서 서로 간의 신뢰는 중요한 요소이지만 필요충분조건은 아닙니다. 각자 전문가로서의 자신의 일들을 제대로 수행하면서 리뷰 등의 커뮤니케이션이 적절히 원활하여 동일한 목표와 비전을 가지고 SW를 개발해야 합니다.

우리는 흔히 혼자서는 일을 정말 잘하는데 뭉쳐 놓으면 삐걱대는 개발자들을 많이 보아 왔습니다. 이는 그 개발자만의 탓도 아닙니다. 서로들 Teamwork이 부족한 것이지요. 즉, 팀을 이뤄서 일하는 방법에 서툰 것입니다. 가장 좋은 방법은 제대로 되어 있는 회사에서 몇 년 일해보는 것입니다. 그런 환경이 안 된다면 SRS(스펙)리뷰부터 조금씩 활성화 해나가는 것이 좋습니다. 제대로 된 SRS(스펙)을 써보지 않는 개발자들에게는 SRS(스펙)을 쓰는 것도 큰 도전이지만, 어차피 SW를 제대로 개발하기 위해서는 피해 갈 수 있는 것이 아니기 때문에 시도를 해봐야 합니다. 

좋은 Teamwork를 갖추지 못한 개발팀에서는 아무리 뛰어난 개발자라고 하더라도 제대로 실력을 발휘할 수 없습니다.

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

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

'개발문화' 카테고리의 다른 글

개발자를 잘못 채용하는 방법  (20) 2010/04/19
Google을 이끄는 힘  (7) 2009/10/30
SW개발과 Teamwork, 그리고 Review  (2) 2009/10/19
우리는 다르다.  (6) 2009/10/09
Peer review의 혜택  (2) 2009/05/13
개발자 여러분~ 문서 만들기 싫죠?  (12) 2009/05/06

전규현 개발문화 review, SRS, Teamwork

Trackback Address: http://allofsoftware.net/trackback/150 관련글 쓰기
  1. Blog Icon
    김경록

    좋은 글 잘 읽었습니다. Agile에서 pair programming이 생각나네요..
    저희 회사에서도 Source Review가 점점 중요해져서 전문 Reviewer까지 새로 뽑고 했는데 잘 되면 좋겠네요ㅎㅎ

  2. 김경록님 안녕하세요.
    전문 Reviewer가 있습니까? 음~~ 회사 규모가 엄청나게 크나보죠? 제가 전에도 지적했지만, 차근차근 접근하여 개발자들 몸에 자연스럽게 베어들게 해야 하는 일들을 너무 형식적으로 접근해서 프로세스에 얽메이게 되면 벽에 부딪혀서 실패할 수도 있습니다.
    전문Reviewer는 Review전문가이고 채용이 된 이상 가시적인 성과를 내어야 하기 때문에 무리한 시도를 할 수도 있고 관료화 될 수도 있습니다. 또한 소스코드리뷰보다 스펙/설계 리뷰가 더 중요한데, 이런 것이 시도 또는 정착되지 않은 상태에서 소스코드리뷰만 너무 강조하면 개발에 도움이 되기보다는 번거롭기만 하다는 인식이 생길 수도 있습니다. 따라서 좋은 시도가 성공하려면 현재 역량과 상황에 맞게 조심스럽게 차근차근 접근하는 것이 필요합니다.
    기우일수도 있으나 잘못 접근하면 아니한만 못한 경우가 워낙 많아서 조심스럽게 말씀드립니다.

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

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으로 움직여야 하는데, 우리는 아직도 사람이 움직이고 있습니다.

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

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

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

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

설계가 필요할까?

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

Software Architect를 양성하는 나라

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

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

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

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

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

프로토타입이란?

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

같이 일하려면 적어라.

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

우리 식대로
우리 식대로 2011/10/30

"우리 식대로" 마치 북한에서 하는 얘기 같지만, "우리 식대로"를 주장하는 소프트웨어 회사는 의외로 많다. 체계가 하나도 없이 완전 주먹구구 방식의 소프트웨어 회사가 있는가 하면 "우리 식대로"를 주장하여 정말 많은 일을..

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

소프트웨어 개발 프로젝트에서 문서는 적게 적어야 한다. 다시 말하면 "보통의 회사에서는 문서는 필요한만큼만 가장 적게 적어야 한다." 물론 문서를 많이 적으면 여러 각도에서 상세히 적기 때문에 중복은 많이 발생하지만 잘못된..