Still No Silver Bullet?

이번 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년이 지난 후에도 여전히 통찰력을 발하고 있는 고전에 더 많은 관심을 갖고 열정을 갖고 고민하는 삶을 산다면 스스로 전문가로서 자긍심을 키울 수 있다고 믿는다.

This entry was posted in Software & Developer and tagged , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

6 Comments

  1. Posted November 6, 2007 at 2:04 am | Permalink

    늑대를 잡을 수 있는 은총알은 없더라도, 납총알로 늑대를 저지시킬 수는 있지 않을까요. 납총알도 발사되면 물리적 에너지를 갖기 때문에 늑대를 죽이지는 못하더라도 움직임을 저지할 도구는 충분히 된다고 생각해요. 물론 저지하려면 몇 발로 충분할지 수 백발을 때려넣어야 할지는 직접 쏴보지 않으면 알기 힘들다고 생각하지만…. :-)

    ‘납총알도 총알이다.’

  2. Posted November 6, 2007 at 2:53 am | Permalink

    -ㅁ-; 너무 겸손 해요. 다스~!!
    충분히 능력을 발휘하시고 있고, 가지고 계시다 에 한표 던집니다~~

    그리고, 저도 그 논문을 자세히 읽어 본적은 없지만.
    Frederick 씨의 의견에 대체로 공감해요~~~
    물론. 패널들의 의견처럼 하나하나가 모여 큰 개선의 뿌리를 만들어 가겠지만..
    분명한 건 어느 광고전단지에 있는 ‘50% 이상 절감 됩니다’ 라는 식의 꿈같은 일은 우린 한테
    일어나긴힘들겠죠;;;

  3. Posted November 6, 2007 at 10:42 am | Permalink

    은총알을 찾으려는 의미 없는 구호보다는 실질적인 해결책을 찾아가는게 중요하겠죠. 우리가 하루 하루 하고 있는게 바로 납총알을 더 가다듬고 있는게 아닐까요?

    그리고 성게군 한 번 자세히 읽어 보세요. 그만한 가치가 있다고 생각됩니다. :)

    (그런데 답글 달린 시간이 안습이군요. 포스팅도 참 늦은 시간에 했다고 생각했는데…)

  4. Posted November 6, 2007 at 11:44 pm | Permalink

    이번에도 좋은글 잘 읽었습니다. ^^*

  5. Posted November 7, 2007 at 5:03 pm | Permalink

    스스로 정리할 필요도 있고 해서 블로그에 올리고 있습니다. 다른 분들에게 이런 정보가 도움이 되는지 모르겠네요. 조금이라도 생각할 꺼리가 될 수 있다면 좋겠네요.

  6. Posted November 13, 2007 at 1:11 pm | Permalink

    좋은 정보 감사합니다.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>