실용주의 프로그래머

7. 중복의 해악

개발자 간의 중복

그 반면 발견하거나 다루기 가장 어려운 유형의 중복은 한 프로젝트에서 일하는 서로 다른 개발자 사이에서 발생한다. 전체 기능 집합이 부주의하게 중복될 수 있고, 그런 중복은 수년 동안 발견되지 않을 수 있으며, 이는 결국 유지 보수 문제로 귀결될 것이다. 우리는 미국 어떤 주의 정부 컴퓨터 시스템이 Y2K 호환성 검사를 받은 이야기를 직접 들었다. 그 검사는 10,000개 이상의 프로그램을 포함했는데, 각각의 프로그램은 저마다만의 사회보장번호 확인 코드가 있었다.

높은 차원의 해법으로, 깨끗한 설계와 강력하고 기술적인 프로젝트 리더, 그리고 그 설계 내에서 책임의 분배가 제대로 이해되도록 하는 것, 이런 것들로 개발자 간의 중복 문제를 다루어라. 그렇지만 모듈 차원이라면 그 문제를 알아채기란 더욱 어렵다. 분명한 책임 영역으로 나뉘어지지 않는 공통 필요 기능이나 데이터는 여러 번 거듭 구현될 가능성이 있다.

우리가 느끼기에 최선책은 개발자간에 적극적이고 빈번한 소통을 장려하는 것이다. 공통의 문제를 다루기 위한 토론장을 만들어라. (과거 프로젝트들에서 우리는 개발자들이 아이디어를 교환하고 질문을 할 수 있는 닫힌 유즈넷 뉴스그룹을 만들었다. 이것은 대화 내용의 모든 역사가 영구히 저장되면서도 외부의 침입 위험이 없는 의사소통의 장을 가능케 한다. 심지어는 여러 사이트에 걸쳐서도 가능하다.) 한 사람의 팀원을 프로젝트 사서가 되도록 임명하라. 그의 일은 지식 교환을 도와주는 것이다. 소스 트리의 한 가운데에 유틸리티 루틴과 스크립트들이 저장될 수 있는 장소를 마련하라. 그리고 의례히 비공식적으로 혹은 코드 리뷰시 다른 사람의 소스코드와 문서를 읽도록 하라. 다른 사람의 것들을 기웃거리는게 아니고, 거기서 배우는 것이다. 그리고 기억하라. 접근은 상호적이다. 다른 사람이 여러분의 코드를 들여다 본다고 해서 기분 나빠하지 말 일이다.

여러분이 조성해야 할 환경이란 뭔가를 직접 만드는 것보다 기존의 것을 찾아내고, 또 재사용하기 쉬운 환경이다. 만약 그게 쉽지 않다면 사람들은 하지 않을 것이다. 그리고 만약 재사용에 실패한다면 지식 중복의 위험을 각오해야 한다.

저자와의 대담 - 실용주의의 확산과 미래

아래 내용은 월간 '마이크로소프트웨어' 2005년 12월호 실용주의 특집에 싣기 위해 앤드류 헌트와 데이비드 토머스를 2005년 11월 중 인터뷰하고, 편집, 번역한 것이다. 인터뷰 과정은 위키위키에서 벌어졌고 세 사람이 공동으로 편집했다. 원래 내용에서 크게 불필요하다 싶은 부분은 덜어 냈으나 본인이 임의로 추가한 부분은 없다. 간혹 질문 길이에 비해 짤막한 답변이 보이기도 하는데 앤디 말로는 간결하게 답변하기 위해 노력했다고 한다.

이하에서 데이브는 데이비드 토머스를 말하고, 앤디는 앤드류 헌트를 지칭한다.

서적 실용주의 프로그래머

김창준: 두 분은 실용주의 프로그래머입니다. 두 분 모두 매년 매달 매일 뭔가 가치 있는 것을 배울 거라고 믿습니다. '실용주의 프로그래머'가 출간된 지 수 년이 지났습니다. 출간 이후 무엇을 배우셨습니까? 만약 그동안 배운 것 중에서 딱 한 가지를 골라 팁이나 섹션으로 옮겨 쓴다면 무엇을 고르시겠습니까?

데이브: 딱 하나만 고르라고요? 그거 어려운데요. 빼내고 싶은 팁은 하나 있습니다. '하나의 에디터를 잘 사용하라'는 부분입니다. 저는 그 부분이 늘 뭔가 불편했습니다. 우리가 그 팁을 써넣던 시절에 저는 비록 99% 이맥스 사용자였지만, 사실은 언제나 일의 종류에 맞게 적절한 에디터를 선택해 사용합니다. 하지만 최근 들어서 저는 훨씬 많은 갈래치기를 했습니다. 예컨대, 레일즈 개발시에는, 두말할 필요 없이 이맥스보다 훨씬 나은 텍스트메이트를 사용합니다. 비록 XML의 경우에는 여전히 이맥스가 낫긴 하지만요.

만약 팁 하나를 꼭 추가해야 한다면, 그건 애자일해진다는 것이 어떤 의미인가에 대한 것일 겁니다. 앤디와 저는 실용주의 프로그래머를 출간한 이후에 애자일 선언문을 다른 분들과 함께 작성했습니다. 책은 애자일 원칙을 포함하고는 있었지만 함축하여 표현하였습니다. 저는 애자일이 무엇인지 명시적으로 드러내고 싶습니다. 특히나, 애자일이라는 것은 그것이 추구하는 가치를 말하는 것이지, 이름표 달린 한 가지 방법론 속에 가두어 둔 것이 아니라고 설명하고 싶습니다. 사람들은 종종 제게 "애자일해지고 싶은데 우리 회사에서는 XP를 하도록 허락하지 않아요."라고 할합니다. 이 사람들은 애자일해진다는 것이 무엇인지 이해하지 못하는 것이죠. 저는 설명을 해주고 싶습니다.

앤디: 특별히 추가하고 싶은 팁이 있는지는 잘 모르겠습니다만, 책에 이미 실려 있는 많은 팁을 확장할 수 있을 것 같습니다. 우리의 근간 서적들을 편집하면서, 저는 실용주의 프로그래머에 있는 아이디어들을 계속 다시 만납니다. 비록 간단하게라도 말이죠. 그 아이디어들은 확장되고 또 오늘날의 시점과 관련성도 높아지고 있지만, 저는 그 안에 정말 많은 것이 들어 있었구나 하는 상각에 여전히 놀랍니다.

김창준: 좋습니다, 앤디. 만약 제가 질문을 이렇게 바꾸면 어떨까요? 책 내용과는 꼭 관련이 없더라도, 출간 이후 당신 의견이 극적으로 변한 부분이 있다면요? 예를 들어, 'Thinking in Java'라는 책으로 유명한 브루스 에켈 같은 경우, 정적 타입 추종자였다가 최근 파이썬 전도사로 바뀌었습니다.

앤디: 저는 개인적으로 그런 정도의 현저한 변화를 겪었다고 생각하지는 않는데, 저는 새 기술에 점점 더 회의를 품게 됩니다. 혹은 최소한, 과대 선전에 대해 회의를 느낀다고 할까요. 우리는 아직까지 보지 못한, 좀 더 혁신적이고 근본적인 전환이 필요하며, 그런 전환이 다가오고 있습니다.

책이 나온 이후로 저는 '명백하고' '모두 다 아는' 듯 보이는 것 중 많은 것이 사실 그렇지 않다는 것을 배웠다고 생각합니다. 업계의 의사소통에는 엄청난 문제가 있는데, 우리 중 일부가 상식이라고 생각하는 것들이 많은 경우 상식이 아니라는(미처 상식화되지 못했다는 - 역자) 것입니다. 베스트 프랙티스는 전파되지 않고, 혹은 전파되더라도 잘못 도입되어서 더 고약한 문제를 만들어냅니다! 업계 전체로 볼 때 우리는 이런 일에 대해 나아지고는 있지만 단순히 모든 사람이 닿지 못하기 때문에 생기는 문제가 여전히 넘칩니다.

김창준: 우리 모두 프로젝트의 실패가 기술 문제보다는 사람 문제에서 온다는 것을 잘 압니다. 두 분은 이 책에서 사람 문제를 상대적으로 가볍게 다루었습니다. 왜 그러셨나요? ('Behind Closed Doors' 등 최근에 출판하신 책들은 이런 내용을 좀 더 심도 깊게 다루었다는 것을 알고 있습니다.) 프로젝트에서 생기는 사람 문제에 대해서는 어떤 생각을 갖고 계세요?

데이브: 만약 우리가 사람에 대한 문제를 적게 다루었다면, 그 이유는 사람 사이의 동역학이라는 문제에서 모든 경우에 들어맞는 해답이라는 것이 별로 없어서가 아닐까 생각합니다. 사람이라는 문제에 대해 어떠어떠해야 한다고 규범적이 되어 버리면 결국 실망스러운 꼴이 됩니다. 우리가 했던 것과 반대 노선을 걸어서, 책 전체를 통해 그 주제를 심도 깊게 다루는 것도 가능했을 것이라 생각합니다만, 이런 종류의 주제들을 4페이지짜리 덩어리로 잘라 넣는 것은 매우 위험한 일이지 않을까 합니다. 사람들은 우리 글을 잘못 해석하게 될 것입니다.

업계의 변화

김창준: 전 세계 IT 업계에는 조류의 변화가 있으며, 한국에서도 마찬가지입니다. 그 변화의 핵심에는 실용주의가 있습니다. 과거의 대규모 프로젝트들은 대부분의 경우 JSP, EJB 및 그 외 세 글자 약어들로 도배된 전통적인 방법을 고수했습니다. 저는 이 방식을 큰 벤더가 제공하는 단일 종합선물세트를 구입하는 것으로 묘사하고 싶습니다. 하지만 이제 변하고 있습니다. 사람들이 더 가벼우면서 더 나은, 실용적인 방법을 찾습니다. 한국 업계에서 루비 온 레일즈가 사용되기 시작했다고 말하는 것이 시기상조일지 모르지만 그런 획기적 변화에 성큼 다가서 있습니다. 이런 현상은 어떻게 생각하시나요?

데이브: 우선, 밖에서 보기에 한국의 변화는 흥미롭습니다. 바로 작년에 우리는 한국에서 우리 책들에 관심이 많다는 것을 알았습니다. 그리고 우리가 출간한 잭이 다수 현재 변역중입니다. 이는 강력하고 의미심장합니다. 저는 한국을 방문해서 IT 산업이 어떻게 변하는지 제 눈으로 직접 보고 싶습니다.

한국이 경험하고 있는 것은 전 세계적 변화의 일부분입니다. 여기 미국에서 저는 매년 자바 개발자 수천 명을 대상으로 강연을 하곤 합니다. 2년 전만 해도, 자바의 대안에 대해 이야기하면 여러 가지 곤혹스러운 문제를 겪었습니다. 작년에는 사람들이 예절을 지키더군요. 지난 2개월간 루비 온 레일즈를 제가 강연할 때에는 말 그대로 발 디딜 틈이 없었습니다. 그것은 자바 개발자들이 한 가지 도구만 사용하는 것이 충분히 유연하지 못하다는 것을 깨닫게 되었기 때문입니다.

소프트웨어 개발자들은 굴곡점이 와 있습니다. 가장 작은 문제부터 가장 큰 문제까지 모든 문제에 대한 답을 내놓는 단일 플랫폼을 만들 수 있다는 생각에 우리는 상당한 에러지를 퍼부었습니다. 그 에너지가 이제 훝어지려고 합니다. 자바 개발자들이 드디어 그들을 위해 제대로 작동하는 뭔가를 발견해 내면서, 레일즈 프레임워크가 흡수되는 놀라운 가속도가 그 중에서도 가장 주요하다고 봅니다.

저는 No Fluff, Just Stuff 소프트웨어 심포지엄 시리즈에서 강연을 합니다. 다른 강연자들의 이름은 대개 자바 세계에서 너무 익숙해서 일상용어 수준이죠. 그 사람들은 자바 책을 집필했고, 자바 관련 위원회에 속해 있으며, 국제적으로 자바에 대해 이야기합니다. 그런데 그들 중 최소 50%는 이제 레일즈로 생계를 유지합니다.

김창준: 네, 2005년 루비 콘퍼런스에서 데이비드는 청중에게 루비 온 레일즈로 돈을 버는 사람은 손을 들어보라고 했고 제 기억으로는 절반이 넘게 손을 들었습니다. 데이비드 말로는 이것은 거의 기하급수적인 성장이라고 합니다. 작년에는 손 드는 사람이 손가락에 꼽을 정도였다고 합니다만 이제는 루비/루비 온 레일즈 구인사이트가 생겼을 정도로 크게 성장했습니다. 자바 진영에서 루비 온 레일즈로 갈아탄 유명인사들의 목록도 인상적입니다. 그들을 바라보며 자바 신앙을 지키던 사람들에게는 쿼바디스인 셈이지요.

앤디: 업계에서 일어나는 대부분의 일과 마찬가지로 그것 역시 돈 문제입니다. 대개 개발자들은 새로운 기술을 흡수하는 데에 꽤 민첩하지요. 그리고 데이브가 앞서 언급했듯이, 엄계와 사상적 지도자들은 분명 이 방향으로 움직이고 있습니다.


CategoryBook

PragmaticProgramming (last edited 2025-06-13 14:08:22 by 정수)