Posts Tagged ‘No Silver Bullet’

Still No Silver Bullet?

Tuesday, November 6th, 2007

이번 OOPSLA의 큰 주제 중 하나는 “Silver Bullet”이였다. 컴퓨터 공학의 고전인 “No Silver Bullet” 논문의 저자인 Frederick P. Brooks의 Keynote로 “Collaboration and Telecollaboration in Design” 발표가 있었고, 이 유명한 논문 발표 후 20년이 지난 현재 Silver Bullet이 어떤 의미를 지니고 있는지, 앞으로 10년간 Silver Bullet은 없을 것이라는 Frederick의 예언이 여전히 유요한지, 과연 현재 Silver Bullet으로 부를만한게 있는지에 대한 Workshop과 Panel 토의가 있었다.

사실 패널 토의에서 이 논문을 읽어보지 않은 사람은 당장 이 방에서 나가라는 한 패널의 얘기에 좀 당혹스러웠다. 비전공자인 나로서는 컴퓨터 공학의 고전들을 많이 접하지 못했고, 현재 새롭게 소개되는 기술이나 지식을 습득하기에도 벅찬 것이 사실이다. (이런 비전공자라는 굴레는 스스로 지운 것 같다. 영문학과 경영학 등의 지식이 지금 내가 있게 한 토대 중 일부이고, 6년간의 경력 동안 새로운 것을 배우고 익히려는 노력을 계속해 왔다고 생각한다. 하지만 어쩔 수 없이 컴퓨터 공학에 대한 지식의 깊이나 폭이 좁다고 느껴질 때는 나 스스로 아쉽다는 생각을 많이 하게 된다.)

그래서 우선 이 논문을 직접 읽어 보았다. 한 문장으로 내용을 줄여보면 ‘하드웨어의 생산성 향상과 같은 소프트웨어 개발의 생산성을 10배로 향상시킬 수 있는 마법과 같은 해결책은 없다’라고 할 수 있다. 그러면서 몇 가지 가능한 후보를 들었는데, 고차원 언어, 객체 지향 언어, AI, 요구사항 정의와 빠른 프로토타이핑 그리고 훌륭한 디자이너가 그 대상이다. 이들 중 일부는 Agile, UML, OOP, IDE, Open Source 등으로 현실화 되었지만 문제의 본질적인 복잡함(essencial complexity)을 지속적으로 줄여주는 마법이 되지는 못했다. (사실 약 10장 정도의 논문을 읽는데 3 시간 정도의 집중된 시간이 필요했다. 원서로 정보를 얻어야할 때 추가로 요구되는 시간과 집중력이 비영어권 개발자에게 큰 장벽임은 분명하다. 이 장벽을 허물어줄 수 있다면 그 자체가 Silver Bullet이 될 수 있지 않을까?)

워크샵에서 논의된 결과는 워크샵 홈페이지에서 확인해 볼 수 있다. 워크샵을 통해 논의된 새로운 잠재적인 Silver Bullet을 나열해 보면 다음과 같다.

  1. High-level languages : 부분적으로 성공적이지만 여전히 증식하고 있다.
  2. Grand unified distributed object infrastructure (CORBA) : 사람과 문제가 다양하고 변화 적응성이 떨어져서 실패했다.
  3. Model Driven Architecture (MDA) : 완전히 실패하지는 않았지만 추상화와 정확함의 대립이 있다.
  4. Tools and programming environments : accidental complexity를 많이 제거해준다. 하지만 도구 자체가 프로세스를 악화시킬 수도 있다.
  5. Objects - general : 적용이 어렵고 추상화 개념을 익히기 힘들다.
  6. Objects - frameworks and components : 도메인에 한정시킬 때 프레임워크 효용성이 떨어지고 유연성을 떨어뜨리며 학습 비용을 높일 수 있다.
  7. Objects - patterns : good designer로 발전하기 힘들고, 잘못 사용하기 쉽다.
  8. XML : Semantic Web에 대한 환상
  9. Agile : 대규모 프로젝트에 도입이 어렵고, Agile의 본질이 왜곡되는 경우가 많다.
  10. Aspects : 잘못된 추상화
  11. Open Source : 지적 재산권 문제, 신뢰성 문제
  12. Globalization : 개발자 시장 포화와 시차 문제

그리고 마지막으로 패널 토의가 있었는데, 다음 동영상에서 볼 수 있듯이 아주 쇼킹한 패널 토의였다. 마틴 파울러의 늑대 변신으로 늑대인간과 늑대인간(친숙한 존재에서 예기치 않게 두려운 공포의 대상으로 변하는 소프트웨어 프로젝트)를 제거하려는 인간 사이의 열띤 토론이 있었다. 패널들의 입장과 질문에 대한 답변들은 스크립트로 정리가 되어 있으니 한번 읽어보기를 바란다.

많은 이야기 중 가장 나에게 영향을 준 것은 Silver Bullet을 찾으려는 노력보다는 Lead Bullet을 찾아서 활용하려는 노력이 더 필요하다는 David Parnas의 얘기와, 결국 변화를 가져오려고 노력하는 우리가 바로 Silver Bullet이라는 Ricardo Lopez의 의견, 그리고 왜 Silver Bullet이 실패하는지에 대한 늑대의 통한의 반박이었다. (그리고 늑대는 여전히 multi-core concurrency system과 같은 강력한 무기를 가지고 있다. ㅋㅋ) 특히 납총알에 대한 주장은 깊이 생각할 필요가 있다. 은총알이 마법과 같은 효과를 지니고 있다면 납 총알은 지속적인 노력과 연습을 필요로 한다. 하지만 이 납총알이 개별적으로 30% 생산성 향상(개발, 유지 보수 비용의 감소)를 가져온다면 9개의 납총알이 모여 10배의 생산성 향상을 만들 수 있다. (사실 생산성을 정의 내릴 수는 있는 것일까? 동일한 문제를 한 사람이 이틀 동안 200줄의 코드로 해결한 경우와 삼일 동안 50줄의 코드로 해결한 경우 어떤 것이 생산성이 높다고 할 수 있을까?)

개인적으로는 발표와 토론을 통해 많은 것을 배울 수 있었지만, 이런 만남 자체가 가장 큰 의미로 남는 것 같다. 영문학과 달리 컴퓨터 사이언스는 역사가 짧기 때문에 전설적 인물들이 아직까지 많이 생존해 있다. 이들이 여전히 열정적으로 활동하고 고민하는 모습을 보면서 컴퓨터 공학이 최고의 지적 노력의 산물이라는 자긍심을 느낄 수 있었다. 20년이 지난 후에도 여전히 통찰력을 발하고 있는 고전에 더 많은 관심을 갖고 열정을 갖고 고민하는 삶을 산다면 스스로 전문가로서 자긍심을 키울 수 있다고 믿는다.