|
소프트웨어를 만드는 세상에서 소프트웨어 엔지니어링(이하 SE)는 지난 30년간 거의 유일의 방법론인양 행세해 왔습니다.
컴퓨터 공학이나 사이언스쪽 대학 학부에서도 마치 SE만이 유일한 방법론 인것처럼 가르쳐 왔던 것도 사실입니다.
하지만, 근래에 들어서 SE의 방법론에 회의를 품고 새로운 방법론 들이 많이 나오고 있습니다. 대표적인 예로 Extreme Programming을 들수 있을 것입니다.
이 책은 그런 대세에 편승했다고 보여지긴 합니다만, 저자 자신의 경험과 학문적 성취를 통해서 나름대로 만들어낸 '소프트웨어 장인 정신'이라는 방법론을 이야기 하고 있습니다.
비록 그가 자신의 방법론의 당위성을 이야기 하기 위해서 드는 SE의 단점이라는 것이 다른 새로운 방법론들에서 공통적으로 주장하는
'SE는 연인원 100명이상의 큰 프로젝트에 적합한 방법론이다. 하지만 현실에서 이정도의 인원이 소프트웨어를 개발하는 경우는 거의 없다.' 라는 말을 반복하고 있긴
하지만, 현실적으로 현실적으로 저 말이 너무나 맞는 말이라 특별히 주장이 약하다고 이야기 하기는 어렵습니다.
SE에 대한 비판후에 그가 내놓는 해결책은 SE의 '평균적인 개발자를 많이 투입하는 방식' 이 아니라 '뛰어난 능력이 가진 개발자가 주축이 된 장인 시스템'입니다.
이 장인시스템에 관해서 170여 페이지에 걸쳐서 많은 말을 하고 있지만, 궁극적으로 그가 하고자 하는 말은
1. 장인 시스템을 소프트웨어 개발 과정에 접목시키자.
2. 개인의 명성 유지를 기반으로 하는 장인 시스템은 소프트웨어 모든 개발부분(요구사항, 개발, 유지보수등등.)에서 최고의 성과를 낸다.
라는 두말로 요약가능 하겠습니다.
이런 이야기는 특정 이론을 만드는 사람들에게 그다지 좋게받아들여지지 않겠지만(객관성의 요소가 너무 부족한 관계로) 현업에서 일하는 대부분의 사람들이 SE를 반대하면서 쓴 책의 내용과 상당히 일치 한다는 점에서 그다지 틀린 이야기는 아니라고 생각합니다.
다만 이 책의 모든 내용이 다 옳다고 생각 할 수는 없는 것이, 일반적으로 SE를 대항해서 나오는 새로운 방법론들의 공통점 중의 하나인 요구사항 분석과 설계 단계의 모든 어려운 점(요구사항을 완전히 하는 것과, 추후 요구사항이 변경되었을때 어떻게 하는가? - 엎고 다시 해야 하는지 기존 설계를 확장할 수 있는지에 관한 문제)을 그저 뛰어난 장인에게 전부 맡겨 버린다는 점입니다.(사실 XP도 거의 비슷하죠.)
그래도 이책을 읽어 볼만한 점은 기존의 XP관련 서적같은 경우 이미 실천가능하게 만들어진 한 방법론으로써 XP를 소개 하다 보니 놓치게 되는 SE와의 차이, 소수 개발자들의 소프트웨어 개발시의 문제점등에 관해서 좀더 상위의 개념으로써 설명하고 있다는 점입니다.(실제로 이책은 자기 주장의 구체적 한 방법으로 XP를 소개하고 있기도 합니다.)
p.s 그래도 Code Complete같은 너무나 아름다운(좀 많이 두껍지만...-_-;) SE책을 볼때면 SE가 너무나 정답 처럼 보이는 건 어쩔수 없군요... 이상론 이겠죠...
[인상깊은구절] '소프트웨어 개발은 흥미진진한 것이다. 그렇지 않다면 그 프로세스는 잘못된 것이다. 소프트웨어 개발은 예술, 과학 그리고 공학을 정교하게 섞는 기술, 즉 장인정신이다. 그것은 단지 일이 아니다. 그것은 일에대한 열정이다.' '소프트 웨어 개발은 재미있는 것이다. 그렇지 않다면, 그 프로세스는 잘못된 것이다.' |
| 경험 많은 개발자인 팀장님의 회사에 사 두신 책이다. 얇기도 해서 출퇴근하며 부담없이 읽었다. 회사가 아직 생긴지 얼마되지 않아 조직의 체계적인 면에서 부족한 면이 많다. 정답은 없겠지만 어떤 조직이 어떤 일을 어떻게 하는것이 좋은지 생각해 보는데 도움이 되는 책인것 같다. 좋은 소프트웨어가 만들어지려면 물론 훌륭한 개발자가 있어야 한다. 언뜻 좋은 개발자가 프로그램을 잘 짜는 사람이라 생각하기 쉽지만 그 이상의 무엇이 필요하며 그 무엇이 무엇인가 알려주는것 같다. 그리고 좋은 개발자와 함께 필요한 좋은 관리자와 타부서등의 역할에 대해서도 생각해 볼 수 있었다. 번역서라서 그런지 조금 매끄럽지 않게 와 닿는 부분이 있는것도 같지만 어디까지나 외국어로 쓰인것이니 당연한것이라 생각한다. 어찌보면 속으로 생각만 하고 있던 생각들을 표현해줘서 좋은것 같기도 하다. 내가 장인이 되기 위해 해야할 일들이 무엇인지, 왜 장인이 되야 하는지, 장인이 되면 어떤것이 좋은지.. 소프트웨어 팀에서 새로 일하기 시작하는 사람부터 관리자까지 읽어보면 좋을 책인것 같다. |
| 이 책이 제시하는 내용은 기존에 우리가 생각했던 방식이 아닌 새로운 측면을 제시해준다. 소프트웨어 공학과 개발 프로세스에 대해 절대적인 신뢰를 가지고 있었다면, 이 책은 그에 대해 반기를 든다. 모든 내용을 받아들이기는 어렵지만, SW 공학이 기존의 산업시대의 공학적이고 기계적인 측면을 SW 개발에 적용하는 것의 오류에 대해서 제시하는 것은 타당하게 생각된다. 저자는 SW 개발은 기계적으로 수행되지 않으며, 인간이 중심이 되는 정신적인 과정(mental process)라고 주장한다. 그리고 실제로 많은 SW 프로젝트를 성공으로 이끄는 가장 중요한 요소는 개발 프로세스가 아니라 바로 사람들의 능력이라는 점을 주장한다. 책의 분량이 많은 것이 아니라, 설명이 충분하지 못한 면이 있지만, 다양한 참고자료를 주석으로 제시하고 있어 더 많은 관심을 가진 사람들에게 도움이 될것같다. 나는 이 책이 SW 공학을 보완하는 의미를 가르쳐준다고 생각한다. 그리고, 이 책에서 제시하는 개념은 XP(Extreme Programming)과 유사하다. 번역은 직역을 한듯 매끈하지 못하기 때문에 가능하다면 원서를 보는 것이 더 좋을 것 같다는 생각이 든다. |
| 소프트웨어 공학을 대학원에서 전공했다. 학문적으로 배워온 내용들과 실제 업무에서 느껴지는 것들, 그리고 결과들과의 이야기하기 힘든 괴리감이 늘 고민거리였다. 이 책을 읽고 소프트웨어공학에서 벗어났다는 느낌을 받았고, 비로서 소프트웨어공학이 무엇인지를 이해하기 시작했다는 생각을 하게 된다. 그리고, Brooks가 Mythical ManMonth에서 보여준 선견지명에 다시 한 번 감탄하게 된다. 음.. 옥의 티를 찾으라면 몇몇 용어들의 번역이 국내의 소프트웨어공학 관련서적에서 주로 사용하는 단어들과 차이가 있다는 점 정도인 것 같다. 어쨌던 별5개가 모자랄 정도로 훌륭한 책이라 생각한다. |
| 세상은 정반합의 이치로 발전을 추구해왔습니다. 이 책은 소프트웨어 개발의 정 (과학적인 접근-소프트웨어 엔지니어링)에 대한 반론적인 성격의 글로서 (경험적인 접근-소프트웨어 장인정신) 실패와 한계에 이른 소프트웨어 개발의 새로운 접근을 제시하고 있습니다. 산업혁명 이전의 산업은 장인 중심의 경험적인 생산활동이었습니다. 생산성은 낮았지만, 장인의 명성에 걸맞는 소량의 품질 좋은 물건이 출시되었습니다. 이러한 접근 그러나, 많은 소비자의 수요를 감당하지 못했고, 비효율적이라는 오명을 들어야만 했습니다. 산업혁명 이후 생산과정이 자동화되면서, 장인*도제의 관계를 점점 사라지고, 과학적인 계측에 따른 생산활동으로 대량의 표준화된 물건을 생산하게 되었습니다. 이러한 접근을 소프트웨어 개발에 적용하려는 것이 "소프트웨어 엔지니어링"접근입니다. 프로세스 (공장에서의 생산라인)을 정립하고, 계측가능한 것을 표준화시키며, 일률화, 하나의 틀을 만드는 것이 소프트웨어 엔지니어링 접근이라고 할 수 있겠습니다. 하지만, 소프트웨어 엔지니어링 접근의 태생 자체는 Critical 하고, 대규모 인력이 투입되는 소프트웨어 개발에 맞는 접근이었기 때문에, 좀더 규모가 작은 소프트웨어 개발에 맞지 않는 문제점이 있었습니다. 그리고, 엔지니어링 접근은 소프트웨어 개발이 단순한 생산활동이 아닌 고도의 정신활동이라는 것을 간과했고, 그 한계에 도달하게 되었습니다. 반면, 필자가 주장하는 소프트웨어 장인정신은 작은 팀의 경험적인 소프트웨어 개발을 강조하고 있습니다. Communication load가 적은 작은 팀에서 마스터 장인을 중심으로 중간 장인, 도제들로 이루어진 팀은 성공적으로 소프트웨어를 딜리버리할 수 있다고 주장하고 있습니다. 컴퓨터 공학의 역사는 다른 공학에 비해 역사가 상당히 짧은 편입니다. 아직까지도 성장하고 있으며, 변화도 심한 분야입니다. 이러한 과정의 일부로 이 책이 나오게 되었다고 생각합니다. 저는 대체로 이 책의 저자의 생각에 동의합니다. 그렇지만, 경험적인 접근은 또한 과학적인 접근을 기반으로 했을 때 그효과를 크게 얻을 수 있다고 생각합니다. "합"에 걸맞는 또다른 책이 나오길 바라며...계속적인 소프트웨어 개발 분야의 이와 같은 좋은 책이 나오길 바랍니다. |