The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition by Frederick P. Brooks
소프트웨어 엔지니어링 과목을 수강한 적이 있다면, 소프트웨어 엔지니어링에 어느 정도 관심이 있다면, 한번쯤은 이 책 제목 정도는 들어보았을 것이다. M-MM은 소프트웨어 엔지니어링의 고전이다.
Brooks는 IBM에서 OS/360 개발 프로젝트의 관리자였다. 나중에 Brooks는 이 경험을 분석하고, 그것에 관하여 여러 동료들과 논의했다. 그래서 그 결과로 나온 책이 바로 M-MM이다. 이 책은 각각 하나의 주제를 가지고 있는 에세이 모음의 형식으로 되어있다.
그 중에서도 가장 유명한 내용은 아무래도 Brooks’ Law가 나오는 책과 동명의 에세이인 ‘The Mythical Man-Month’일 것이다. Brooks’ Law는 간단히 말하면,
늦어진 소프트웨어 프로젝트에, 인력을 더 투입하면, 그 프로젝트는 더욱 늦어진다.
는 것이다. Brooks의 논지를 따라가다보면 당연한 얘기다. 하지만, M-MM이 쓰여진 지, 30여년이 지난 지금도, 소프트웨어의 생산을 부품 생산 공장에 빗대어 생각하려는 경향 – 미신은 여전히 존재하는 것을 보면, Brooks’ Law는 아직도 강력한 의미를 지니고 있는 것 같다.
이 책이 워낙 오래 전에 쓰여진 책이라, 현재의 기술에는 약간 맞지 않는 얘기도 나오지만, 대부분은 여전히 유효한 얘기들이다. 뿐만 아니라, 요즘에 나오는 소프트웨어 개발에 관한 수많은 철학의 근간은 M-MM에 빚지고 있는 것으로 보인다.
내가 산 책은 1995년에 나온 Anniversary Edition으로, 그 시점에서 원래의 M-MM에 대한 스스로의 평가를 내리고 있다. 특히, 인상적이었던 것은 , 원래 Parnas가 주창한 Information Hiding을 격하게 비판하던 Brooks가, “Parnas Was Right, and I Was Wrong about Information Hiding”이라고 적으면서, 자신이 틀렸음을 솔직하게 인정하고 있다는 것이었다.
Anniversary Edition에는 역시 엄청나게 유명한 에세이인 “No Silver Bullet”을 함께 싣고 있는데, 이 에세이는 소프트웨어 개발자라면 반드시 읽어봐야할 에세이라고 생각한다. (인터넷에서도 쉽게 구할 수 있고, 번역도 되어있는 걸로 알고 있다.) 이 에세이는 소프트웨어 개발에 있어서의 어려움은 본질적인(essential) 어려움과 비본질적인(accidental) 어려움으로 나눌 수 있다고 얘기한다. 비본질적인 어려움은 기술의 발전과 함께 개선되고 점차 사라져왔지만, 본질적인 어려움에 있어서의 기술 발전은 10년 내의 범위에서 크게 이루어지지 않을 것이다라는 그의 예측은, 이 책이 쓰여진 1975년에도, Anniversary Edition이 쓰여진 1995년에도 맞았고, 지금도 맞지않을까 하는 생각이다. 그가 생각하는 본질적인 어려움의 궁극적인 해결책은 소프트웨어 컴포넌트의 시장화를 통한 재사용이다. 현대에는 어느 정도 컴포넌트의 시장화가 진행되었지만, 본질적인 어려움을 해결할만큼의 재사용에 있어서는 벽에 부딪히고 있는 것이 실정이다. 하지만, “Software Factory”같은 개념을 발전시켜 나가고 있고 그와 같은 개념은 바로 Brooks의 이상을 정확하게 표현한 것이 아닐까 싶다.
흔히, 고전을 “오래된 것”, 그래서 낙후된 것으로 생각하는 사람들이 많다. 하지만, 고전의 참뜻은 “전범”이다. 그리스/로마 신화를 이해하지 못하고서, 서양의 미술을 이해하기 힘든 것처럼, 소프트웨어에 관해 이해하기 위해서 반드시 읽어야할 책들 중의 하나가 바로 M-MM이다.
a
에고. 위의 comment를 잘못 달았네요.
XP Group에서 ‘Silver bullet’ 운운하길래 어디서 유래된 단어(최초는 늑대인간 이야기겠지만…)인지 궁금했는데, 이제야 궁금증이 풀렸습니다. ^^
Still No Silver Bullet?
이번 OOPSLA의 큰 주제 중 하나는 “Silver Bullet”이였다. 컴퓨터 공학의 고전인 “No Silver Bullet” 논문의 저자인 Frederick P. Brooks의 Keynote로 “Collaboration and Telecollaboration in Design̶…