2008년 11월 7일 금요일

소스코드관리시스템을 몇개 사용하고 있나요?

소프트웨어 개발 컨설팅을 하다보면 여러가지 경우를 보지만 그중의 한 예를 소개할까 합니다.

국내의 굴지의 금융회사 중의 한 사례입니다.
회사 내에서 각 팀별로 소스코드관리시스템을 여러 개를 사용하고 있더군요.
A팀 Windows 플랫폼의 Application를 개발하니까 Microsoft Visual SourceSafe를 사용하고
B팀 Web 서비스를 개발하고 있었는데, CVS를 사용하더군요.
그리고 C팀은 Unix에서 개발을 하는데, 아무런 소스코드관리시스템을 사용하고 있지 않았고,
D팀은 별로 잘 알려져 있지 않은 외국의 상용 제품의 한글화된 버전을 사용하고 있었습니다.

한 회사에 총 4가지 유 형의 소스코드 관리가 존재하는 겁니다.



이런 상황에서는 다음과 같은 부작용이 생깁니다.
  • 개발자들이 다른 부서로 이동할 때 쓸데 없는 학습 비용이 들어 갑니다.
  • 중복된 시스템 및 관리 비용이 들어갑니다. 소스코드관리시스템은 비용이 많이 들어가는 시스템입니다. 
  • 각 부서간의 정보의 공유가 어렵게 됩니다.

이런 일들이 발생하는 이유는 다음과 같습니다.
  • 회사에서 기술적인 결정을 컨트롤하는 상위 조직이 없어 개발자들의 입맛에 따라 각각 다른 시스템을 쓰게 된 경우
  • 회사를 인수하면서 기존의 시스템을 그대로 사용하고 통합을 시도하지 않은 경우

소스코드관리시스템은 한 회사에 딱 하나만 설치하는 것이 좋습니다. 세계 각지에 떨어져서 개발을 하더라도 하나의 소스코드관리시스템을 사용해야 합니다.

만약 이미 여러가지 소스코드관리시스템을 사용하고 있다면 비용을 지불하고라도 통일을 하는 것이 좋습니다.
이러한 통일 작업은 기계적으로 할 수도 없는 어려운 작업이 됩니다. 
하지만 늦어질 수록 더 많은 비용을 치르게 됩니다.

2008년 11월 5일 수요일

기반시스템(Infrastructure System)을 사용하고 계신가요?

기반시스템(Infrastructure System) 용어를 들어보신 적이 있나요?

기반시스템(Infrastructure system) 소프트웨어를 개발하는데 꼭 필요한 기초 환경입니다.
여러분들도 쓰고 계시는 것이 있을 겁니다소스코드를 CVS 저장하고 버그를 관리하기 위해서Bugzilla Mantis 사용하고 있다면 바로 그러한것들이 기반시스템(Infrastructure System)입니다.
이러한 것들은 매우 다양한 분야에서 소프트웨어 개발을 돕고 있습니다.

기반시스템 없이는 생산적으로 소프트웨어 개발할 없습니다기반시스템은 소스코드를 안전하게 보관해주고프로젝트 구성원 간의 의사소통을 원활하게 해주는 등 프로젝트의 모든 활동이 잘 진행되도록 돕습니다개발자들을 편하게 해주고불필요하게 노력을 낭비하지 않게 해주며개발에 집중할 있게 해줍니다성공적인 프로젝트는 거의  적절한 기반시스템 하에서 개발 된 것이라고 보면 됩니다.

기반시스템에는 좋은 오픈 소스(Open Source) 솔루션이 아주 많습니다세계적인 소프트웨어 회사들도 기반시스템으로 오픈 소스 솔루션을 애용하고 있습니다특별한 이유가 있는 경우가 아니라면 비싼유료 제품을 사서  필요가 없습니다.

그러면 수많은 기반시스템 중에서 무엇은  필요하고 어떤 것은 당장 필요하지 않을까요?
이는 회사에 따라서 상황이 달라질  있습니다.

아래 그림은 각 기반시스템의 난이도와 효과를 설명한 것이다오른쪽으로 갈수록 도입이 쉽고도입 쉽게 적응할  있는 시스템이다또 위로 갈수록 도입 시 효과가 크고 프로젝트에 많은 영향을 미치는 것들이다아직 아무런 시스템을 도입하고 있지 않는 회사라면 오른 쪽 윗부분의 영역에 있는 시스템부터 차례대로 도입하는 것이 좋을 것이다.

아직 소스코드관리시스템과 버그관리시스템을 사용하고 있지 않다면 가능하면 빨리 도입해야 합니다  기반시스템은 어떤 소프트웨어 회사이건 필수적으로 필요하기 때문입니다


2008년 11월 3일 월요일

개발자 폭행사건을 바라보는 심경

아래 소개된 개발자 폭행사건을 보고 나름대로 생각을 해봅니다.

우리나라 소프트웨어 업계에 만연해 있는 갑과 을의 왜곡된 구도에 대해서 생각해 보지 않을 수 없습니다.
특히 소프트웨어에 있어서는 갑이 을에게 뭐든지 시킬 수 있고, 뭐든지 바꿔달라고 할 수 있고, 어제라도 마음대로 부릴 수 있다는 인식이 깔려 있는 것 같습니다.
이러한 인식을 깨기 위해서는 법적인 보완, 소프트웨어 개발에 대한 인식 변화, 성숙한 소프트웨어 개발 문화 등이 필요할 것입니다.
우리의 소프트웨어 계약을 보면 정말로 모호하고 일방적인 경우가 정말 많습니다.
외국의 예를 보면 소프트웨어 개발 프로젝트는 분석과 설계/구현이 분리가 되어서 개발 계약시는 분석이 완료된 정확한 스펙을 가지고 개발 계약을 하게 되고, 장애해결이나 유지보수는 별도의 유지보수 계약에 의해서 하게 되어 있습니다.
그런데 우리는 귀에 걸면 귀걸이 코에 걸면 코걸이 식의 계약을 가지고 검수 때까지 발주자가 원하는대로 해줄 수 밖에 없는 구조입니다. 
소프트웨어는 절대로 소프트하지 않다는 것에 대한 인식도 같이 해야 합니다. 소프트웨어는 개발자가 간단히 뚝딱뚝딱 몇줄 코드를 바꾸면 다 해결 되는 것으로 착각하기 쉽습니다.  예, 정말로 착각입니다. 개발자가 한 줄을 바꾸면 그로 인해서 벌어져야 하는 일들은 정말로 엄청납니다. 이 모든 것을 발주자들이 알 수는 없지만, 소프트웨어 업계에 종사하는 우리들이 결국 조금씩 바꿔나가는 수밖에 없을 것 같습니다.
물론 문제를 폭력으로 해결하려고 한 개인의 문제가 가장 큰 원인이지만, 소프트웨어 개발 문화가 성숙되는 사회가 되어야 그러한 일들이 사라질 것이라고 생각합니다.


목은 "서울특별시의회 전자회의시스템 프로젝트 프로그램 개발자 폭행사건"입니다.

이 글을 올리게 된것이 너무 힘들다...대한민국의 개발자들에게 알리고 싶댜.
원본글: http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=69&MAEULNo=28&no=11212
사건일시: 2008년 10월 23일 12시10분경
사건내용

2008년 서울시의회 176회 2차 본회의가 있는 날이다. 이 글의 개발자는 폭행 당한 개발자 당사자이다.
개발자는 평소대로 개발실에서 대기하고 있었다. 12시경 전화가 울렸다. 김* 주임이 의사과장이 의장용 프로그램의 버튼 인식 방식을 변경하라고 했다는 것이다. 즉 버튼을 눌렸을 경우 바로 다음 시나리오로 진행하는 것과 시간을 조금 빨리 변경해 달라는 것이다. 프로그램을 수정하기엔 본회의가 열리기 2시간 전이라 위험하고 테스트 시간이 부족하였다. PM에게 전달하니. PM이 김* 주임에게 시간이 부족하고 위험하니 혹시 발생할 위험성에 대한 책임으로 문서로 처리하여 주면 프로그램을 수정하여 주겠다고 전했다. 이에 의사팀장이 PM을 잠깐 만나자는 연락이 왔었지만 PM이 자리에 없었다. PM이 자리에 와서 의사팀장이 만나자는 내용을 전달 했다. 이때 본회의장 시나리오 담당자에게 연락이 왔다. 잠깐 내려오라는 것이다. 개발자는 혹시 다른 지원할 것이 있는 것으로 인식하고 내려갔다. 본회의장에 내려가니 의사과장은 의장 프로그램을 보고 있고 의사과 직원들15명 이상이 의원석에 앉아 있었다. 시나리오 담당자는 예전에 얘기된 의장프로그램 폰트 사이즈 크기가 왜 수정되지 않은 지 의사과장에게 다시 설명 해 달라는 것이다. 순간 의사팀장이 들어 왔다. 
누가 하지 말랬어? 하고 개발자에게 물었다. 개발자는 순간 아무런 얘기는 하지 못했다.
그때부터 폭행은 시작되었다.
구두발로 개발자의 무릎을 두번 차고 다음 복부를 발로 차고 옆구리를 돌려차기 하였다. 아무도 말리는 사람 없었다. 잠시 후 누군가가 와서 의사팀장을 말렸다.
개발자는 너무 황당하여 아무런 대항도 하지 않고 본회의장에서 나왔다.
의사과장은 그냥 지켜보고만 있었다. 개발자가 폭행은 당하고 있는 데로 당연하듯 쳐다보고만 있었다. 그 많은 의사과 직원들(남직원4명이상,여직원 10명이상)이 보고 있는 가운데 폭행을 당했다.
개발자는 바로 개발실로 올라가 PM에게 현재 상황을 전달하였다. PM은 어떻게 이런 경우가 있냐며 개발자를 본회의장으로 데려 갔다. 의사과장은 단상 앞에 있었다. PM이 얘기 했다. 어떻게 개발자를 폭행 할 수 있냐고, 이때 의사팀장이 나왔다. 싸우겠다는 태도처럼 PM앞으로 나오자 다른 직원 두 사람을 말렸다. 의사과장 왈 지시대로 했으면 이런 일은 없을 거냐며 얘기했다. 즉 이 모든 폭행사실을 보고 있었던 것이다.
본회의장을 나왔다. 다른 의사과 직원과 팀장들이 같이 나왔다. 참아달라고 했다. 너무 억울했다. 112에 신고 하였다. 경찰 2명이 왔다. 본회의장에 들어 가려고 하니. 의사과 * 팀장이 말렸다. 경찰이 못 들어 갈 일이 없다고 하였다. 3번 이상 경찰과 실갱이 벌였다. 경찰이 본회의장에 들어갔지만 폭행한 팀장이 없었다. 다른 팀장에게 사무실로 가자고 하였다.
폭행한 팀장은 사무실에 있었다. 다른 직원들은 점심시간이 되어 본회의가 열릴 때 시켜먹는 도시락을 먹고 있었다.
경찰이 팀장을 불러 사무실을 밖으로 나왔다. 이때 남직원들이 같이 나왔다. 경찰이 현행범으로 체포한다고 하자 옆에 팀장들이 오늘 본회의가 있으니 본회의 끝나고 진해하면 않되겠나며 얘기했다. 개발자는 어이없다. 그 많은 사람들 앞에서 맞은 것도 억울 한데.
경찰이 내 의사를 물었다. 일단 개발자는 양보했다. 본회의 끝나면 이 폭행사건을 고소하겠다고 했다. 경찰은 물러갔다.
개발실로 갔다. 너무 황당하고 당황스럽다. 

여기까지 2008년 10월23일 서울시의회 프로그램 개발자 폭행사건의 내용이다.
글을 쓰고 있지만 아직도 다리와 복부쪽이 통증이 심하다.
신체적 아픔은 참을 수 있지만 정신적 충격은

개발경력 8년이상 지금과 같은 경우는 처음이다.
이에 이 비통한 사실을 IT강국이라는 대한민국 현실을 전 세계에 알리고 싶다.

현재 서울시의회에서 의원들이 사용하는 프로그램이 개발자의 땀과 노력이 아닌 폭행으로 흘려진 개발자의 피와 얼룩진 시퍼런 멍으로 만든 프로그램이란 것을 꼭 알리고 싶다

2008년 10월 29일 수요일

소프트웨어 회사의 개발 역량 평가표

아래 평가표는 소프트웨어 개발 회사나 개발팀이 얼마나 역량을 갖추고 있는지 평가하는 표입니다.
아래 각 문항에서 "예"(1점)에 해당하면 Checkbox를 체크하시면 됩니다.
 1.전사적으로 소스코드관리시스템을 딱 하나만 사용하고 있다. 
 2.모든 소스코드 및 개발문서는 소스코드관리시스템에 저장되어 있다.  
 3.각 마일스톤마다 Baseline을 설정하고 있다.  
 4.소스코드관리시스템에 체크인 시 메시지를 작성하는 규칙을 가지고 있고, 모든 개발자가 이를 지키고 있다.  
 5.모든 소스코드는 리뷰를 하고 있다. 
 6.자동으로 일일빌드를 하고 있다. 
 7.전사적으로 버그관리시스템을 딱 하나만 사용하고 있다.  
 8.모든 버그를 버그관리시스템에 등록하고 있으며 다른 곳에 별도로 관리하지 않는다. 
 9.모든 직원이 버그관리시스템에 스스로 이슈를 등록한다. 
 10.프로젝트의 스펙문서를 가지고 있다.  
 11.스펙문서를 모든 관련자가 충분히 리뷰한다.  
 12.스펙이 바뀜에 따라 스펙문서가 업데이트되고 있다. 
 13.스펙 변경이 통제 관리되고 있다. 
 14.1,2일 단위의 상세한 일정을 가지고 있다. 
 15.일정은 개발자가 산정한다. 
 16.일정은 지속적으로 업데이트되고 있다. 
 17.별도의 테스트 팀이나 테스터가 있다. 
 18.테스트 케이스를 가지고 있다. 
 19.프로젝트 리스크 관리를 하고 있다.  
 20.리스크에 대한 백업 플랜이 있으며 리스크 관리계획이 주기적으로 갱신된다.
합계:  점

평가 결과 분석
  • 20점 - 소프트웨어 개발의 기초가 아주 잘 되어 있습니다. 소프트웨어 프로젝트를 수행하는데 별 문제가 없습니다. 
  • 15점 이상 - 이 정도면 기초가 매우 양호합니다. 지금까지도 프로젝트를 꽤 잘 수행하고 있었을 것입니다. 몇 가지만 보완하면 될 것 같습니다. 100m를 20초에 뛰던 사람이 17초에 뛰는 것보다 12초에 뛰던 사람이 11초에 뛰기가 더 어려운 법입니다. 수행 능력 향상을 위한 현실적인 방법을 보강할 필요가 있습니다.. 
  • 10점 이상 - 프로젝트 진행을 개선하기 위해 여러 시도를 했겠지만, 여전히 많은 개선 욕구를 느끼고 있을 것입니다. 현실적인 많은 부분을 개선하는데 전문가가 도움이 될 수 있습니다.. 
  • 10점 미만 - 만약 프로젝트에 성공했다면 기적이나 운이라고 여겨야 합니다. 지금 당장 조치를 취해야 합니다. 효율적인 개선을 위해서는 전문가의 도움이 꼭 필요합니다.
분석결과 점수가 나오신 분은 Comment나 방명록에 올려주세요.
그리고 같이 역량을 높일 수 있는 방안에 대해서 의논해 나가길 희망합니다.

책소개 - 소프트웨어개발의모든것(All of Software Project)



이번에 집필한 책입니다.

소프트웨어 개발의 전반에 대한 기초에 대해서 다루고 있습니다.
코딩을 어떻게 하느냐하는 내용이 아니고 소프트웨어 회사라면 당연히 갖춰야 할 기반시스템, 조직, 프로세스 등에 대해서 현실적이고 체계적으로 정리를 했습니다.

책을 쓰면서 가장 어려운 점은 가능하면 많은 소프트웨어 개발자들이 볼 수 있도록 난이도를 조정하는 것이었습니다. 어차피 책이라는 것이 모든 사람의 눈에 맞출 수는 없으니까요.

그리고 너무 자세한 내용을 기술하지 않은 이유는 그러기에는 수천페이지도 모자를 수 있고, Detail한 내용은 또 많은 경로를 통해서 얻을 수도 있고 일부는 스스로 공부를 하거나 훈련을 해야하는 것이라고 생각했습니다.

그래서 소프트웨어 개발 및 프로젝트를 전체적으로 볼 수 있는 책으로 구성을 했고, 추후 쓰게될 책이나 블로그를 통해서 점점 디테일에 접근을 해나가려고 합니다.

책을 읽으신 독자분이나 그렇지 않은 분이나 블로그를 통해서 소프트웨어 개발에 관한 어떤 얘기도 의견을 주고 받고 싶습니다.

책 소개를 한번 보시죠. 





 책소개
대한민국 소프트웨어 분야 권위자인 김익환 대표와 전규현 수석이 제시하는 소프트웨어 개발 필드매뉴얼! 
실리콘밸리의 GE, SUN Microsystems와 안철수연구소의 CTO 등을 거치며 소프트웨어 개발 분야의 야전사령관으로 활동해 온 김익환 대표와, ‘한글과컴퓨터’ ‘안철수연구소’ 등을 거치며 현장을 리드해 온 전규현 수석이 제시하는 ‘소프트웨어 개발 실행 지침서’이다. 

많은 소프트웨어 개발자들이 프로젝트 진행에 대해 제대로 배울 기회를 갖지 못한 채, 과거부터 해오던 방법을 그대로 답습하고 있다. 그런 상태로 매일 프로젝트에 투입되다 보니, 야근에 야근을 거듭해도 프로젝트가 언제 끝날지 모르는 상황에 빠져들곤 한다. 이 책은 그간의 이 같은 문제를 해결하고 소프트웨어를 성공적으로 개발하기 위해 반드시 알아야 할 ‘조직’ ‘프로세스’ ‘문화’ ‘기반시스템’ ‘방법론’에 대한 현장 실무 위주의 전략을 제시한다.
      
 
 
 저자 및 역자 소개
저자 : 김익환
소프트웨어 컨설팅 회사인 ABC Tech의 대표이자 카이스트 소프트웨어 전문가 과정 겸직교수. 서울대학교 공과대학을 졸업하였고 미국 산호세 캘리포니아 주립대학에서 전산학 학사, 스탠포드 대학에서 전산학 석사를 취득하였다. 미국 실리콘밸리의 GE, Sun Microsystems등에서 약 16년간 소프트웨어 실무경력을 쌓고 세계 150여 개 기업에 인터넷 통합 메시지 솔루션을 제공하는 ‘스탠포드 소프트웨어’를 설립하여 제품을 개발하고 회사를 운영하였다. 2000년 귀국 후에는 소프트웨어 분야 컨설턴트로 활동하며 ‘안철수연구소’의 부사장 및 최고기술경영자(CTO)로 근무하였다. 저서로 『대한민국에는 소프트웨어가 없다』, 역서로 『세상을 바꾼 32개의 통찰』이 있다.

저자 : 전규현 (Ray)
ABC Tech의 수석 컨설턴트이자 프로젝트관리전문가(PMP, Project Management Professional)이다. 연세대학교 공과대학을 졸업하고 ‘한글과컴퓨터’를 시작으로 ‘안철수연구소’에 이르기까지 약 15년간 수많은 소프트웨어를 개발하였고 Programming Engineer, Project Leader, Project Manager, CTO 등 소프트웨어 개발 분야의 다양한 역할을 두루 경험했다. 현재는 소프트웨어 개발 컨설턴트로서 소프트웨어 회사의 개발에 관한 문제들을 해결하는 일을 하고 있다.

 
 
 목차/책속으로
• 목차보기
 
Part1 소프트웨어 개발의 기초 
1. 기반시스템 
기반시스템이 잘 구축된 사례┃기반시스템이 잘 구축되지 않은 사례┃소스코드관리시스템┃빌드시스템┃버그관리시스템┃테스트관리시스템과 테스트 자동화툴┃프로젝트관리시스템┃요구사항관리시스템 
2. 조직 
프로젝트 구성원의 역할 ┃조직체계 
3. 개발방법론과 프로세스 
소프트웨어 개발방법론┃소프트웨어 개발 프로세스 
4. 사람 
인재 확보┃문서 작성 기술 
5. 문화 
동료 리뷰┃연구┃공유┃품질 우선┃규칙 준수┃장기적인 관점으로 보기 

Part2 소프트웨어 개발을 성공으로 이끄는 법 
6. 생애주기 모델을 제대로 선택하라 
폭포수 모델┃반복 모델┃XP 모델┃사시미 모델┃발전적 프로토타이핑 모델 
7. 개발 단계별 계획을 수립하라 
개발의 각 단계┃단계별 인원 투입┃단계별 일정 분배 
8. 프로젝트 활동을 확실하게 관리하라 
프로젝트 성공 기준 마련┃개발 계획┃일정관리┃요구사항 분석┃설계┃구현┃품질관리┃리스크관리┃인력관리┃의사소통관리┃원가관리
• 책속으로
 
이 책에 담긴 내용은 소프트웨어 개발 프로젝트에 직접적으로 참여하는 사람들뿐만 아니라 소프트웨어 회사의 경영자, 프로젝트관리자, 개발자, 상위관리자 등 모든 사람들이 알아야 할 내용 모두를 포함한다. 여기서 말하는 소프트웨어 회사는 소프트웨어 제품만을 개발하는 회사를 지칭하지 않는다. 팩키지 소프트웨어를 만드는 회사나 SI회사는 물론, 장비에 탑재되는 임베디드 소프트웨어를 만드는 휴대전화 개발사나 복사기 제조사, 방대한 전산 시스템을 가지고 있는 은행이나 증권사 등 소프트웨어를 개발하고 유지보수하는 모든 회사가 여기에 해당한다. 
--- p.10 

소프트웨어 프로젝트는 그저 열심히 수행한다고 해서 성공할 수 있는 것이 아니다. 회사와 직원들 모두에게 기초가 갖춰져 있지 않은 상태로 진행하는 프로젝트는 모래성 위에 쌓아 올린 탑과 같다. 아무리 훌륭한 프로젝트관리자라 하더라도 소스코드관리시스템이나 버그관리시스템도 없고, 테스터도 없고, 개발자들이 서로 리뷰를 해본 적도 없다면, 이들을 이끌고 프로젝트를 성공시키기란 기적이나 다름없다. 반면 기초를 잘 갖추고 진행하는 프로젝트는 튼튼한 탑과 같이 견고하다. 
--- p.24 

시중에는 수많은 소프트웨어 개발방법론이 넘쳐난다. 지금까지 알려진 방법론만 100가지가 넘는다. 인터넷에서 이에 대한 설명만 보고 Template을 복사해 와서 회사에 적용한다는 것은 기적에 가깝다. Template과 Sample만 보면 방법론을 적용하여 선진 개발 방식을 따라 할 수 있을 것 같지만, 착각이다. 제대로 된 방법론을 잘못 오해하여 적용하거나 특정 부분에 집착하여 전체를 놓치는 경우가 많다. 
한 가족이 살기 위한 집을 짓는데 고층 빌딩을 만드는 방법을 적용하면 안 되고, 그렇다고 개집을 만들 때처럼 대충 지어서도 안 된다. 개집을 만들 때는 대충 만들어도 되고, 안되면 다시 만들면 된다. 그러나 빌딩을 만들 때는 한 치의 오차도 없이 정확하고 정교한 방법을 사용해야 한다. 
--- p.118 

SRS는 이 책 전체에서 소개하는 많은 문서 중에서 가장 중요하다. 프로젝트를 성공으로 이끄는데 가장 중요한 핵심이기 때문이다. 만약 소프트웨어 프로젝트에서 문서를 딱 하나밖에 만들 시간이 없다고 하면 SRS를 만드는 것이 좋다. 
--- p.220 

개발자들은 가장 먼저 
● SRS를 작성해야 한다고 생각하고, 
● SRS를 작성하면서 모든 관련자와 철저히 리뷰를 하고, 
● 프로젝트관리자는 개발자들과 함께 1, 2일 단위의 상세 일정을 작성하고, 
● 테스트팀은 SRS를 보고 테스트 Suite를 만들기 시작하고, 
● 개발 리더들은 화이트보드나 종이를 펼쳐놓고 아키텍처에 대해 토론을 하며, 
● 구현 시 모든 소스코드는 당연히 리뷰를 하고, 
● 개발자는 매일 스스로 일정을 업데이트 하고, 
● 소스코드 작성은 일일빌드가 깨지지 않으면서 이루어지며, 
● 소스코드관리시스템과 버그관리시스템을 효과적으로 사용하며, 
● 알파, 베타 단계 별로 모든 프로젝트 관련자들이 유기적으로 움직이며, 
● 일정에 맞춰 완성도 있는 품질의 제품을 출시한다. 
위와 같은 활동들이 당연하다고 생각되고 몸에 배어야 한다. 이러한 것들을 규칙만으로 통제를 해서는 달성하기 어렵고 한꺼번에 모두 다 습득하기도 어렵다. 하나씩 익혀서 몸에 배었을 때 소프트웨어 프로젝트를 성공하는 원리가 보이기 시작하고 좋은 제품을 만들 수 있을 것이다. 
--- p.318
 
• 출판사 리뷰
 
경영자에서 개발자까지, 
소프트웨어 회사에서 반드시 알아야 할 핵심 노하우 

이 책 『소프트웨어 개발의 모든 것』은 소프트웨어를 성공적으로 개발하기 위해 반드시 필요한 기초에 대해 설명하고, 그러한 기초를 확실하게 활용하고 실행하기 위한 저자들의 노하우를 제시한다. 여기서 제시하는 내용은 회사가 크냐 작으냐에 따라 달라지지 않으며, 어떠한 형태의 제품을 만드느냐에 따라서도 달라지지 않는다. 
1부 ‘소프트웨어 개발의 기초’에서는 소프트웨어 회사에서 기본적으로 갖춰야 할 5가지, 즉 기반시스템, 조직, 프로세스, 기술, 문화에 대해 설명한다. 이 5가지는 우리나라 현실에 맞지 않는 딴 나라 얘기가 아니며, 실제 경험을 통해 가능하고 유용한 것들만 모아 놓은 것이다. 당장 이 5가지를 한꺼번에 갖출 수는 없겠지만 회사의 실정에 맞게 차근차근 모두 다 도입해야 하는 것도 분명하다. 
2부 ‘소프트웨어 개발을 성공으로 이끄는 법’에서는 개발방법론의 선택과 도입방법 및 절차를 설명하고, 소프트웨어 프로젝트의 기둥이라 할 수 있는 SRS(Software Requirements Specification) 작성의 중요성을 설명한다. 더불어 소프트웨어 개발의 각 단계별 계획 수립 방법과, 프로젝트 전반을 확실하게 관리하기 위한 저자들의 노하우를 제시한다. 
추천평
이 책은 단순한 소프트웨어 공학 책이 아니다. 저자의 25년 소프트웨어 개발 경험과 이론이 응축된 결과물이다. 이 책에는 미국의 실리콘밸리, 한국의 대표적 소프트웨어 회사 안철수연구소의 개발 프로세스와 개발 인프라를 만들고 발전시킨 경험이 담겨 있다. 소프트웨어 개발자나 프로젝트 관리자는 물론 개발 부서장, 기획자 등 소프트웨어 개발에 관련된 모든 사람들이 반드시 읽어봐야 할 책이다. - 강은성 (SK커뮤니케이션즈 커뮤니티개발실장)

소프트웨어를 구현하고 개발을 관리하면서, ‘어떻게 하면 여러 명이 이 일을 함께 잘 할 수 있을까?’ 하고 늘 고민해왔다. 결론은 ‘기본에 충실’이다. 이 책은 실용적인 도구, 프로세스, 문화에 대한 설명을 통해 어떻게 소프트웨어 개발의 기본에 충실할 수 있는 지를 알려준다. - 조재희 (휴맥스 혁신실 부장)

소프트웨어 개발을 직업으로 준비 중인 모든 신입 개발자들에게 가장 추천할 만한 입문서다. 이 책을 읽으면서 떠오른 한 가지 생각은, ‘우리나라 소프트웨어 개발자 중 과연 몇 명이나 이 책에 수록된 지식들을 숙지하고 있을까?’ 하는 의문이다. 국내 모든 소프트웨어 개발 종사자들이 꼭 한번 확인해보아야 할 책이라고 생각한다. - 민상윤 (KAIST 겸임교수, 솔루션링크 대표)


독자서평: