아무리 재미있는 일을 하더라도 누구나 지금 상황에 만족할 수 없는 시기가 오기 마련이다. 개발자도 예외가 아니다. 빠르게 변화하는 IT 업계 때문에 개발자에겐 끊임없이 공부할 거리가 주어진다. 시간이 지날수록 프로그래밍 실력이나 소스코드에 대한 고민은 기본이고 고객 관리, 영업, 채용, 개발 문화 등 다양한 문제가 추가된다.

이러한 상황은 한국만의 이야기는 아니다. 산드로 만쿠소라는 브라질 출신 개발자도 20년 넘게 비슷한 생각을 했다. '어떻게 하면 더 나은 프로그래머가 될 수 있을까?' 고민 끝에 그는 해결책의 실마리를 얻었다. 바로 '소프트웨어 장인정신'을 키우는 것이었다. 그는 같은 고민을 가진 개발자를 돕고자 '소프트웨어 장인'이라는 책을 직접 쓰고 커뮤니티 활동을 활발히 하고 있다. 그가 쓴 책은 한국어로 번역됐고, 한국에선 종이책과 전자책을 포함해서 2천부 넘게 팔렸다. IT 관련 책으로는 꽤 많이 관심을 받은 셈이다. 과연 소프트웨어 장인정신은 개발자에게 어떤 영향을 줄 수 있을까?

프로그래밍은 나의 삶

산드로 만쿠소 개발자는 전형적인 프로그래밍 ‘덕후’이다. 브라질에서 태어난 그는 11살 때 처음으로 프로그래밍을 배우고, 17살이 되던 해에 컴퓨터과학 학과에 진학하기로 마음먹었다. 기업에서 전문 프로그래머로 일한 지는 20년이 지났다. 처음 배운 코딩은 아버지가 알려줬다. 그의 아버지는 변호사이자 심리학자였는데, 컴퓨터를 매우 좋아하고 프로그래밍에 대한 기초 지식을 알고 있었다. 산드로 만쿠소는 아버지보다 훨씬 프로그래밍을 좋아하게 됐고, 현재 그의 취미생활조차 프로그래밍이 됐다. 물론 취미로 작성하는 코드는 회사와 관련없고 오픈소스 프로젝트가 대부분이다. 2004년 그는 영국 런던으로 이사해 지금까지 개발자로 살아가고 있다. 브라질을 떠난 이유는 순전히 개인적인 호기심 때문이라고 했다. 그는 “브라질은 경제가 계속 성장하고 있기 때문에 소프트웨어 개발자를 위한 일자리가 많다”라며 “개인적으로 조금 다른 삶을 살아보고 싶었고, 2004년부터 런던에서 지내고 있다”라고 말했다.

산드로 만쿠소는 한 회사에 오래 머무르기보다 회사를 여러군데 옮기면서 일하는 것을 선호했다. 그가 다닌 기업은 글로벌 기업, 은행, 스타트업, 컨설팅 업체 등 다양하다. 회사를 옮길 때는 정확히 원하는 바를 미리 정해두었다. 이를테면 좋은 제품 개발 집중할 수 있는 회사, 글로벌 서비스를 내놓을 수 있는 회사 등으로 나누고, 어떤 회사에서 어떤 역량을 키울 수 있는지 고민하고 이력서를 냈다. 그는 “나는 이전 직장과 대부분 좋은 관계를 유지하고 있다”라며 “기업과 내가 서로 필요한 바가 달라질 때는 굳이 남아서 함께 일하지 않고 떠나는게 맞다고 생각한다”라고 밝혔다.

“'원하는 직업을 못 구하면 어떡하지?'같은 고민은 한 적 없어요. 아시다시피 상파울루나 런던은 매우 큰 도시이고, 경제활동이 활발해서 소프트웨어 개발자를 많이 찾고 있거든요. 단지 저는 새로운 직업을 구하기 가장 좋은 시점은 내가 이미 좋은 회사에서 다니고 있을 때라고 생각했어요. 그래야 서두르지 않고 직업을 찾아볼 수 있으니까요. 포기할 필요도 없죠.”

▲  산드로 만쿠소 개발자
▲ 산드로 만쿠소 개발자

여러 직업을 선택하던 그가 마지막에는 정착한 곳은 컨설팅 업체였다. 그는 컨설팅 업체에 일하면서 다양한 회사를 접하고 동시에 새로운 문화와 팀원을 만나는 게 좋았다고 했다. 다른 회사를 위해 일하면서 그 회사의 장점을 많이 배울 수도 있었다. 그렇게 원없이 다양한 서비스를 만든 후 산드로 만쿠소 개발자는 자신만의 컨설팅 회사를 설립했다. ‘코더런스’라는 곳이다. 코더런스가 설립된 지는 2년 반이 조금 지났다.

그는 자신의 회사에서는 기존 컨설팅 업체에서 가장 싫어했던 부분을 없애기로 마음먹었다. 그 첫 번째가 ‘보디쇼핑'(Body Shopping) 문화였다. 해외에서 일반적인 컨설팅 업체와 고객은 큰 그림을 함께 그리고 실제 개발은 아웃소싱해 맡긴다. 특히 인도나 아시아 지역 개발자를 많이 채용한다. 이렇게 채용된 개발자는 대부분 단기 계약으로 프로그램을 개발한다. 이런 환경에서는 컨설팅 업체와 고객은 직접적인 소통을 하지 못한다. 실제 제품에 관해 자세한 부분까지 컨설팅 업체가 관여하지도 못한다. 산드로 만쿠소 개발자는 “고객과 직접적인 관계를 맺지도 않고 프로그램을 내놓는 문화가 싫었다”라며 “모든 기술을 직접 조절하고 관계를 맺을 수 있는 그러한 컨설팅 회사를 설립하고 싶었다”라고 말했다.

산드로 만쿠소 개발자는 컨설팅 문화만 바꾸고 싶은 게 아니었다. 좋은 블로그 글을 공유하고, 코드를 서로 봐주고, 함께 배우고, 긍정적인 자극을 함께 줄 수 있는 개발자와 일하고 싶었다. 다시말해 개발자 '어벤저스'를 만들어 도움을 요청한 고객의 문제를 해결하는 구조를 꿈꿨다. 마침 산드로 만쿠소 개발자는 외부 컨퍼런스 연사, 밋업 등에 활발하게 참여한지라 실력있는 개발자들을 많이 알고 있었다. 실제로 그는 실력있는 개발자들을 코더런스에 많이 영입했다. 현재 코더런스에는 18명 직원 가운데 17명이 개발자다. 나머지 1명은 경영지원을 맡고 있으며, 내부에 따로 상하관계가 존재하지 않는다.

[plus]코더런스 채용 과정 역시 특이하다. 누구에게나 언제나 열려 있다. 코더런스가 원하는 인재상은 홈페이지에 A4 용지 3장 넘는 분량으로 아주 자세히 나와 있다. 일단 테스트 주도 개발(Test-Driven Development), 애자일 과정, 도메인 주도 설계 (Domain-Driven Design)에 익숙해야 하고, 특정 언어나 프레임워크를 선호하기보다 상황에 따라 다양한 도구를 활용할 수 있어야 한다. 자신이 배운 것을 블로그나 깃허브에 올려 공유할 수 있어야 하며, 겸손하고 남을 이해하고 협업을 잘 해야 한다. 내부에서 현재 사용하고 있는 언어는 자바, 스칼라, C#, 닷넷 등이다.

"현재 코더런스는 컨설팅 기업이지만 직접 고객에게 제품을 만들어주고 개발 방법이나 개발 문화에 대해서도 교육합니다. 소프트웨어 장인정신도 함께 알려주고요. 고객은 스타트업부터 은행까지 다양합니다."

최근 영국에는 코더런스와 비슷한 컨설팅 업체들이 조금씩 늘어나고 있다고 한다. 코더런스가 공략하는 시장은 기존 대형 컨설팅 업체와는 조금 다르다. 보통 스스로 구체적인 문제를 인지하고 이를 해결하려는 기업이 코더런스같은 회사를 찾는다. 이러한 컨설팅 회사를 ‘부티크(Boutique) 컨설팅 기업’이라고 부른다. 예를 들어 A 기업은 애자일이 무엇인지 알고, 스크럼, 개발주기 등 정의에 대해서는 충분히 이해하고 있다고 치자. 이때 애자일 개발 방식을 도입했을 때 내부 시스템에 기술적인 문제가 발생된다는 것을 인지했다. A 기업은 단순히 애자일을 교육받는 것이 아닌, 세부적인 문제 사황을 해결하는 방안에 대해 코더런스와 논의할 수 있다.

소프트웨어 장인이란?

코더런스 홈페이지를 방문하면 다음과 같은 글귀를 볼 수 있다.

▲  코더런스 홈페이지
▲ 코더런스 홈페이지

“우리는 잘 빚어진 소프트웨어를 만듭니다.”(We build well-crafted software.)

말 그대로 한땀 한땀 수를 놓듯 완성도 높은 소프트웨어를 만든다는 의미다. 그렇다면 여기서 말하는 '완성도 높은 소프트웨어'는 정확히 어떻게 정의할 수 있을까? 산드로 만쿠소 개발자는 “잘 빚어진 소프트웨어란 개발자가 해당 소프트웨어를 변경하는 것에 대해 두려워하지 않아도 되는 기술을 말한다"라고 표현했다.

"잘 빚어진 소프트웨어는 다양한 의미를 내포합니다. 먼저 코드와 비즈니스 요구사항이 잘 맞아 떨어지는 소프트웨어입니다. 중간에 변경하고 바로 배포 버튼을 눌러도 전혀 문제가 없습니다. 핵심 개발자가 회사를 나가도 그 코드를 이해하는 데 별 어려움이 없죠. 대대적으로 업데이트할 때 기존 것을 갈아엎지 않아도 재활용할 수 있습니다. 코드의 아름다움을 강조하지 않습니다. 지나치게 오버 엔지니어링하지 않고 매우 단순한 구조를 가지고 있습니다. 이러한 완성도 높은 프로그램은 큰 기업이나 작은 기업 모두에서 만들 수 있습니다. 시스템 복잡도는 회사 규모에 따라 생기는 게 아닙니다. 프로그램의 문제는 각 소프트웨어 일부가 가진 작은 문제점이 서로 연결돼 생기기 때문이죠. 특히 의도치 않게 생긴 시스템 복잡도는 이러한 오버 엔지니어링으로 많이 발생됩니다."

그렇다면 좋은 소프트웨어를 빚어내는 개발자는 어떤 모습일까? 다음은 그가 책에 서술한 '소프트웨어 장인'이 해야 할 일이다.

좋은 프로그래밍 관례나 기술이 서로 다른 종류의 시스템이나 환경에 공통으로 적용될 수 있지만, 코딩은 개발자가 해야 하는 많은 일들 중 하나일 뿐이다. 코딩을 잘 하거나 특정 언어나 프레임워크에 매우 익숙하다고 해서 고참 개발자가 되는 것은 아니다. 이제 개발자들은 다음과 같은 여러가지 일을 할 수 있어야 한다.

  • 고객과 대화하기

  • 테스트/배포 자동화하기

  • 전체 비즈니스에 영향을 미칠 기술 선정하기

  • 지리적으로 분산된 팀들과 협업하기

  • 고객을 도와 필요한 작업을 정의하기

  • 우선순위 선정하기

  • 진척 상황 보고하기

  • 변경사항과 기대일정 관리하기

  • 잠재 고객 및 파트너에게 제품 소개하기

  • 사전 영업 활동 지원하기

  • 개발 일정과 비용 산출하기

  • 채용 면접하기

  • 아키텍처 설계하기

  • 비기능적 요구사항과 계약조건

  • 사업 목표 이해하기

  • 주어진 여건에서 최적의 결정하기

  • 새로운 기술 주시하기

  • 더 나은 업무 방식 찾기

  • 고객에게 가치 있는 상품이 전달되고 있는지 고민하기


- '소프웨어 장인',  p.32-33, '새로운 현실'



'소프트웨어 장인' 책에서는 우리나라 현실을 표현한 듯한 상황도 많이 볼 수 있다.
“생산적 동반자 관계를 받아들일 준비가 되지 않는 기업들이 있다. 이런 기업들은 소프트웨어 개발을 공장 라인의 한 단계로 보고 프로젝트에서 가장 중요성이 낮은 업무로 여긴다. 소프트웨어 개발자를 공장 라인의 육체 노동자와 동일시하여, 그저 ‘더 똑똑한 사람들’이 시키는 대로만 하면 되는 것으로 취급하는 기업들도 있다. 이러한 기업들 중 일부는 그들이 찾을 수 있는 가장 값싼 개발자를 고용하는 데 집중한다. 기술적 배경이 없는 관리자가 이러한 값싼 개발자들을 시시콜콜 아주 세세하게 관리한다.
(중략)
기업들이 좋은 개발자를 바라듯이, 소프트웨어 장인도 일하기 좋은 기업을 원한다. 도움을 원하지 않는 상대에게 에너지와 건강을 쏟는 것은 아무런 의미가 없다. 고객을 위해 투입할 수 있는 노력에도 분명 한계가 있다. 같이 일할 고객 또는 고용주를 선별하는 능력도 소프트웨어 장인에게 꼭 필요하다. 소프트웨어 장인의 가치나 역량에 관심이 없는 고객을 위해 열심히 일해봤자 공허함만 커질 뿐이다.”

- '소프웨어 장인',  p.74



일부 독자는 '소프트웨어 장인' 책을 일고 '너무 이상적인 이야기'라거나 '개발자에게 너무 많은 업무를 주는 것'이라고 표현할 수 있다. 산드로 만쿠소 개발자는 이러한 의견에 "모두가 따라갈 필요는 없고, 각 개발자가 선택해야 할 부분"이라고 답했다.

"많은 개발자가 새로운 시대에 필요한 새로운 ‘기술’에 대해서 논하기 좋아합니다. 하지만 새로운 ‘태도’에 대해서는 별로 이야기하지 않습니다. 저는 이 책을 통해 개발자의 태도에 대해 한 번 생각해보는 시간을 가지기를 바랐습니다. 물론 개인의 태도와 별개로 기업 문화가 성숙한 회사와 일하는 것도 중요합니다. 10년 전만 해도 영국의 큰 기업들은 IT 벤더 기업들과 어떻게 일해야 하는지 체계도 문화도 없었습니다. 지금은 성숙한 기업들이 많아지고 있습니다. 경험이 점점 쌓이면서 서로 다른 기업이 팀으로 일할 수 있는 방법을 배울 수 있다고 봅니다. "

소프트웨어 장인정신이 전세계에 퍼지는 그날까지

소프트웨어 장인정신 운동은 미국 시카고에서 먼저 유행했다. 산드로 만쿠소 개발자는 소프트웨어 장인정신 운동을 영국으로 처음 가져온 인물 중 한 사람이다. 그러면서 그는 2010년 런던 소프트웨어장인협회(LSCC)를 만들었다. LSCC에는 현재 2천명이 넘는 회원이 있다. 영국을 시작으로 현재 유럽에서 소프트웨어 장인정신 운동이 퍼지고 있다.

[rel]산드로 만쿠소는 "애자일과 비슷한 수준으로 소프트웨어 장인정신도 점점 유명해지고 있다"라며 "기존 애자일 방벙의 단점을 극복하는 데 소프트웨어 장인정신이 활용되기도 한다"라고 그 인기도를 설명했다.

소프트웨어 장인정신에서 중요시하는 것은 지식 공유다. 마치 고대 장인들이 후임자를 정해서 비법을 전수하듯, 소프트웨어 장인들도 자신이 가진 정보를 젊은 세대에게 알려준다. 차이는 과거 장인들이 매우 소수의 인물에게 정보를 공유했다면 소프트웨어 장인정신 운동에서는 커뮤니티를 만들고, 원하는 사람 누구든 배우고 가르칠 수 있도록 한다. 이제 막 대학에 들어온 개발자나 비전공자 누구든 가리지 않는다.

“저는 대학이 지금 시대에 알맞는 프로그래머를 양성할 수는 없다고 봅니다. 대학은 업계에서 사용하는 모든 도구와 기술을 가르치기 불가능하기 때문이죠. 이러한 가운데 소프트웨어는 점점 복잡해지고 있습니다. 소프트웨어는 더 많이 활용되고, 더 많은 전문 개발자가 필요합니다. 지금 전문성을 가진 개발자를 육성하는 방법은 하나입니다. 선배 개발자가 후배 개발자를 도와주는 것입니다. 굳이 교실에 안 가도 됩니다. 블로그를 쓰는 것, 커뮤니티에 참석하고 토론하는 것도 신입 개발자를 도와주는 것입니다. 노드JS를 어떻게 시작했는지에 대한 아주 작은 이야기라도 신입 개발자들에게는 좋은 단서가 될 수 있습니다. 현재 런던 소프트웨어장인협회엔 글로벌 기업부터 스타트업 출신 개발자가 다양하게 참여해 그들의 정보를 공유하고 있습니다."

소프트웨어 장인에 대한 설명을 듣고 있자면 자기 관리가 철저하고, 개발 실력이 뛰어난 특별한 사람들의 이야기로 느껴진다. 이제 대학을 졸업하거나 갓 개발자로 입문한 사람에게 소프트웨어 장인은 머나먼 일이라고 생각할 수 있다. 산드로 만쿠소는 이에 대해 "소프트웨어 장인정신은 무슨 자격증이나 경력으로 따지는 게 아니다"라며 "스스로 과거와는 다른 전문가가 되겠다고 다짐하는 것부터 시작하면 누구나 소프트웨어 장인정신을 키울 수 있다"라고 조언했다.

저작권자 © 블로터 무단전재 및 재배포 금지