OSCON 둘째날 III – Exceptional 소프트웨어 개발

두번째 키노트로 나선 Robert Lefkowitz의 발표는 정말 인상적이었습니다.

우선 그는 마이크로소프트의 개발 프로세스를 꼬집어서 전통적인 개발 방식이 오픈 소스와 얼마나 다른지 비교해 주었습니다. 뿐만 아니라, 켄트벡의 익스트림 프로그래밍의 라이프 사이클도 비교 대상에 올렸는데요.

우리가 일반적인 개발 프로세스라고 하는 것은 과거 5세기 부터 발달한 수사학 단계의 일반적 접근으로 대입해 볼 수 있습니다. 수사학의 분야는 착상(inventio), 배열( dispositio), 표현(elocutio), 암기(memoria), 발표(actio-pronuntiatio)라는 다섯 부분으로 이루어져 있고, 이는 일반적으로 연설이 행해지기까지의 과정으로 알려져 있죠. 수사학과 MS, XP, 오픈 소스를 비교한 도표는 아래와 같습니다.

방법론 개발 과정
Rheotic(수사학) Inventio- Dispositio- Elocutio- Memoria- Pronuntiatio
Microsoft Requirement- Development – Test – Release – Maintainance
XP방법론 Exploration- Planning – Iteration – Release – Productionizing
오픈소스 Bug Report- Tiage – Integration – Commit/Update – Run/Use

일반적인 개발 프로세스는 요구 사항을 수집하고 이를 개발하고 테스트 및 출시 그리고 다시 요구 사항을 수집하는 과정을 반복합니다. 그러다 보니 요구 사항 수집이라는 지루한 과정과 설계라는 복잡한 과정을 거칩니다. 이는 제품의 이용자의 피드백과 관련 없이 제품이 설계되는 가장 기본적인 문제를 내포합니다.

하지만, 오픈 소스의 개발은 실제로 Bug Report가 아니라 Commit으로 부터 출발합니다. 한 명의 개발자가 자기가 원하는 것을 만들어 내는 것으로 시작하죠. 그 과정은 오픈 소스의 불문율은 Release Early, Release Often이라는 명제에 충실합니다. 아주 간단한 걸 내어 놓으면 사람들이 써보고 이것 저것 만들어달라고 합니다.

하지만 시간도 없는 개발자는 한 두개만 더 뚝딱 만들어 다시 배포하고 그러다 보니 정말 필요한 기능 위주로만 만들고 사용자의 요구에 아주 충실하게 됩니다.

즉, Commit / Update (memoria) – Run / Use (Pronuntiatio) – Bug Reporting (Inventio) – Triage (Dispositio) – Integration (Elocutio)의 순서를 따르고 이 점이 요구사항 분석과 설계를 중요시 하는 전통 소프트웨어 개발과 확연히 다른 것이죠. 여기서 Exceptional Software Methodology가 나옵니다.

Exception이라는 건 두 가지의 뜻을 담고 있죠. 개발자에게는 예외처리, 일반인에게는 뭔가 뛰어난 방법론이라는 의미를 가지게 됩니다. 먼저 우리가 만드는 소스 코드의 70%는 예외 처리 코드입니다. try – catch를 보면 catch쪽의 코드가 꽤 많죠.

즉, 일단 만들고 나서 문제점을 파악하자는 예외 처리 처리 방식을 힌트로 오픈 소스 개발 방법론을 정의한 겁니다. 이것은 유지 보수만 있고 개발이 없기 때문에 당연히 프로젝트 단계에서 가장 먼저하는 (우리가 늘 고민하는) ‘요구 사항’을 만들지 않습니다. (여기서 모두들 박수를!)

실제로 많은 오픈 소스 프로젝트에서 요구 사항이란게 존재하지 않죠. 사람들은 일단 가져와 그냥 쓰거나 원하면 직접 고치죠. 진짜 필요하면 원하는 기능을 담은 버그를 제출할 뿐입니다. 이게 들어가는지 좋을지 여부를 사용자와 개발자가 판단할 뿐 입니다.

실패하는 소프트웨어 프로젝트의 대부분은 사용자가 원하지 않는 잡다한 기능을 넣으면서 부터이고 기획이라는 요구 사항이 이런 문제를 만들어 냅니다. 오픈 소스 개발에서는 이런게 민주적인 절차에 의해 소멸됩니다. 정말 사용자에게 중요한 게 살아남죠. (스타트업이 이런 문화를 닮아야 합니다.)

궁극에는 모든 개발 프로젝트의 원흉인 ‘요구 사항’이 없어지는 순간입니다. 행복한 개발 프로세스의 시작인가요? 흠…

p.s. 세번째 키노트는 Larry Wall과 함께 Perl 커뮤니티를 이끌고 있는 Damian Conway 였는데 이렇게 유쾌하면서 지적인 기조 연설을 처음 입니다.

그의 발표는 뭐랄까 ‘유머와 지적 유희’가 겸비되어 있어서 뭐라고 설명하기가 어렵군요. 우선 앞서 발표한 Mark, Robert와 자신의 친구 Larry Wall을 가지고 노는 희화를 통해 사람들에게 유머를 줍니다. 물론 오픈 소스의 미신이라는 것을 섞어서 풍자해서 말이죠.

한바탕 웃고 나서 자신이 구현한 양자 역학과 일반 상대성 이론을 결합할 수 있는 Perl 모듈을 소개했습니다. 제목이 “Temporally Quaquaversal Virtual Nanomachine Programming in Multiple Topologically Connected Quantum-Relativistic Parallel Timespaces — Made Easy” 인데요. 대략 ‘다중 위상으로 연결된 양자-상대적 평행 시공간에서 일시적 양자우주 가상 나노 머신 프로그래밍- 아주 쉬워요!’ 입니다. 솔직히 진짜 쉽게 풀어냈습니다.

그의 이론은 양자역학의 결론은 반물질(Dark Energy)에서 힌트를 얻어 시간이 반대로 흐를 때 사용할 수 있는 positronic variables 라는 변수를 얻어 내는 module을 만듭니다. (이를 이용하면 정의 없이도 값을 얻어 낼 수 있답니다. 흡…)

그의 발표가 끝나자 사람들이 그의 Geek적이고 학자적인 창의적 아이디어에 우뢰와 같은 기립 박수를 보내더군요. 재미있는 광경이었습니다.

- ;

Disclaimer- 본 글은 개인적인 의견일 뿐 제가 재직했거나 하고 있는 기업의 공식 입장을 대변하거나 그 의견을 반영하는 것이 아닙니다. 사실 확인 및 개인 투자의 판단에 대해서는 독자 개인의 책임에 있으며, 상업적 활용 및 뉴스 매체의 인용 역시 금지함을 양해해 주시기 바랍니다. 본 채널은 광고를 비롯 어떠한 수익도 창출하지 않습니다. (The opinions expressed here are my own and do not necessarily represent those of current or past employers. Please note that you are solely responsible for your judgment on checking facts for your investments and prohibit your citations as commercial content or news sources. This channel does not monetize via any advertising.)

여러분의 생각 (4개)

  1. aero 댓글:

    Damian Conway씨는 정말 한번 직접 보고 싶은 사람인데 부럽군요(Larry Wall할아버지 하고는 동경에서 열린 YAPC::Asia 2008에서 만나서 같이 사진도 찍고 싸인도 받았음 – -V ) 근데 Damian Conway씨가 기조연설을 했나보군요. 이번 OSCON 2008에는 스크립트 언어중에 Perl관련 세션이 가장 많던데 시간이 되면 들어보시고 감상을 올려주시면 감사하겠습니다.

  2. iron의 느낌

    모든 개발 프로젝트의 원흉인 ‘요구 사항’이 없어지는 순간

  3. Channy 댓글:

    @aero, 네 사실 OSCON은 Perl이 원조죠. 오라일리도 그렇고… Perl 관련 어워드도 따로 시상하구요.

    저도 Perl로 웹 프로그래밍을 입문했으니까 관심이 많고 정말 좋은 언어라고 생각 합니다. 좋은 Perl 세션 있으면 들어가 볼께요.

  4. […] 제가 오픈 소스 프로젝트는 ‘요구 사항이 없는’ Exceptional Software Methodology을 따른다는 Robert Lefkowitz의 가설(?)을 소개해 드린 적이 있는데, github는 딱 […]