[e장인] 산드로 만쿠소, “소프트웨어 장인정신이란…”
BY 이지현
아무리 재미있는 일을 하더라도 누구나 지금 상황에 만족할 수 없는 시기가 오기 마련이다. 개발자도 예외가 아니다. 빠르게 변화하는 IT 업계 때문에 개발자에겐 끊임없이 공부할 거리가 주어진다. 시간이 지날수록 프로그래밍 실력이나 소스코드에 대한 고민은 기본이고 고객 관리, 영업, 채용, 개발 문화 등 다양한 문제가 추가된다.
이러한 상황은 한국만의 이야기는 아니다. 산드로 만쿠소라는 브라질 출신 개발자도 20년 넘게 비슷한 생각을 했다. ‘어떻게 하면 더 나은 프로그래머가 될 수 있을까?’ 고민 끝에 그는 해결책의 실마리를 얻었다. 바로 ‘소프트웨어 장인정신’을 키우는 것이었다. 그는 같은 고민을 가진 개발자를 돕고자 ‘소프트웨어 장인’이라는 책을 직접 쓰고 커뮤니티 활동을 활발히 하고 있다. 그가 쓴 책은 한국어로 번역됐고, 한국에선 종이책과 전자책을 포함해서 2천부 넘게 팔렸다. IT 관련 책으로는 꽤 많이 관심을 받은 셈이다. 과연 소프트웨어 장인정신은 개발자에게 어떤 영향을 줄 수 있을까?
프로그래밍은 나의 삶
산드로 만쿠소 개발자는 전형적인 프로그래밍 ‘덕후’이다. 브라질에서 태어난 그는 11살 때 처음으로 프로그래밍을 배우고, 17살이 되던 해에 컴퓨터과학 학과에 진학하기로 마음먹었다. 기업에서 전문 프로그래머로 일한 지는 20년이 지났다. 처음 배운 코딩은 아버지가 알려줬다. 그의 아버지는 변호사이자 심리학자였는데, 컴퓨터를 매우 좋아하고 프로그래밍에 대한 기초 지식을 알고 있었다. 산드로 만쿠소는 아버지보다 훨씬 프로그래밍을 좋아하게 됐고, 현재 그의 취미생활조차 프로그래밍이 됐다. 물론 취미로 작성하는 코드는 회사와 관련없고 오픈소스 프로젝트가 대부분이다. 2004년 그는 영국 런던으로 이사해 지금까지 개발자로 살아가고 있다. 브라질을 떠난 이유는 순전히 개인적인 호기심 때문이라고 했다. 그는 “브라질은 경제가 계속 성장하고 있기 때문에 소프트웨어 개발자를 위한 일자리가 많다”라며 “개인적으로 조금 다른 삶을 살아보고 싶었고, 2004년부터 런던에서 지내고 있다”라고 말했다.
(...)
그는 자신의 회사에서는 기존 컨설팅 업체에서 가장 싫어했던 부분을 없애기로 마음먹었다. 그 첫 번째가 ‘보디쇼핑'(Body Shopping) 문화였다. 해외에서 일반적인 컨설팅 업체와 고객은 큰 그림을 함께 그리고 실제 개발은 아웃소싱해 맡긴다. 특히 인도나 아시아 지역 개발자를 많이 채용한다. 이렇게 채용된 개발자는 대부분 단기 계약으로 프로그램을 개발한다. 이런 환경에서는 컨설팅 업체와 고객은 직접적인 소통을 하지 못한다. 실제 제품에 관해 자세한 부분까지 컨설팅 업체가 관여하지도 못한다. 산드로 만쿠소 개발자는 “고객과 직접적인 관계를 맺지도 않고 프로그램을 내놓는 문화가 싫었다”라며 “모든 기술을 직접 조절하고 관계를 맺을 수 있는 그러한 컨설팅 회사를 설립하고 싶었다”라고 말했다.
산드로 만쿠소 개발자는 컨설팅 문화만 바꾸고 싶은 게 아니었다. 좋은 블로그 글을 공유하고, 코드를 서로 봐주고, 함께 배우고, 긍정적인 자극을 함께 줄 수 있는 개발자와 일하고 싶었다. 다시말해 개발자 ‘어벤저스’를 만들어 도움을 요청한 고객의 문제를 해결하는 구조를 꿈꿨다. 마침 산드로 만쿠소 개발자는 외부 컨퍼런스 연사, 밋업 등에 활발하게 참여한지라 실력있는 개발자들을 많이 알고 있었다. 실제로 그는 실력있는 개발자들을 코더런스에 많이 영입했다. 현재 코더런스에는 18명 직원 가운데 17명이 개발자다. 나머지 1명은 경영지원을 맡고 있으며, 내부에 따로 상하관계가 존재하지 않는다.
코더런스 채용 과정 역시 특이하다. 누구에게나 언제나 열려 있다. 코더런스가 원하는 인재상은 홈페이지에 A4 용지 3장 넘는 분량으로 아주 자세히 나와 있다. 일단 테스트 주도 개발(Test-Driven Development), 애자일 과정, 도메인 주도 설계 (Domain-Driven Design)에 익숙해야 하고, 특정 언어나 프레임워크를 선호하기보다 상황에 따라 다양한 도구를 활용할 수 있어야 한다. 자신이 배운 것을 블로그나 깃허브에 올려 공유할 수 있어야 하며, 겸손하고 남을 이해하고 협업을 잘 해야 한다. 내부에서 현재 사용하고 있는 언어는 자바, 스칼라, C#, 닷넷 등이다.
(...)
소프트웨어 장인이란?
그렇다면 좋은 소프트웨어를 빚어내는 개발자는 어떤 모습일까? 다음은 그가 책에 서술한 ‘소프트웨어 장인’이 해야 할 일이다.
좋은 프로그래밍 관례나 기술이 서로 다른 종류의 시스템이나 환경에 공통으로 적용될 수 있지만, 코딩은 개발자가 해야 하는 많은 일들 중 하나일 뿐이다. 코딩을 잘 하거나 특정 언어나 프레임워크에 매우 익숙하다고 해서 고참 개발자가 되는 것은 아니다. 이제 개발자들은 다음과 같은 여러가지 일을 할 수 있어야 한다.
- 고객과 대화하기
- 테스트/배포 자동화하기
- 전체 비즈니스에 영향을 미칠 기술 선정하기
- 지리적으로 분산된 팀들과 협업하기
- 고객을 도와 필요한 작업을 정의하기
- 우선순위 선정하기
- 진척 상황 보고하기
- 변경사항과 기대일정 관리하기
- 잠재 고객 및 파트너에게 제품 소개하기
- 사전 영업 활동 지원하기
- 개발 일정과 비용 산출하기
- 채용 면접하기
- 아키텍처 설계하기
- 비기능적 요구사항과 계약조건
- 사업 목표 이해하기
- 주어진 여건에서 최적의 결정하기
- 새로운 기술 주시하기
- 더 나은 업무 방식 찾기
- 고객에게 가치 있는 상품이 전달되고 있는지 고민하기
- ‘소프웨어 장인’, p.32-33, ‘새로운 현실’
(...)
소프트웨어 장인정신이 전세계에 퍼지는 그날까지
소프트웨어 장인정신에서 중요시하는 것은 지식 공유다. 마치 고대 장인들이 후임자를 정해서 비법을 전수하듯, 소프트웨어 장인들도 자신이 가진 정보를 젊은 세대에게 알려준다. 차이는 과거 장인들이 매우 소수의 인물에게 정보를 공유했다면 소프트웨어 장인정신 운동에서는 커뮤니티를 만들고, 원하는 사람 누구든 배우고 가르칠 수 있도록 한다. 이제 막 대학에 들어온 개발자나 비전공자 누구든 가리지 않는다.
“저는 대학이 지금 시대에 알맞는 프로그래머를 양성할 수는 없다고 봅니다. 대학은 업계에서 사용하는 모든 도구와 기술을 가르치기 불가능하기 때문이죠. 이러한 가운데 소프트웨어는 점점 복잡해지고 있습니다. 소프트웨어는 더 많이 활용되고, 더 많은 전문 개발자가 필요합니다. 지금 전문성을 가진 개발자를 육성하는 방법은 하나입니다. 선배 개발자가 후배 개발자를 도와주는 것입니다. 굳이 교실에 안 가도 됩니다. 블로그를 쓰는 것, 커뮤니티에 참석하고 토론하는 것도 신입 개발자를 도와주는 것입니다. 노드JS를 어떻게 시작했는지에 대한 아주 작은 이야기라도 신입 개발자들에게는 좋은 단서가 될 수 있습니다. 현재 런던 소프트웨어장인협회엔 글로벌 기업부터 스타트업 출신 개발자가 다양하게 참여해 그들의 정보를 공유하고 있습니다.”
(...)
기계가 사람을 이기고, 사람을 대체한다고 말하는 이 시대에,
우리에게 필요한 것은 장인 정신이 아닐까 싶네요.