2011년 12월 2일 금요일

우리에게 지금 필요한 것은? 바로 이것

우리나라 대부분의 소프트웨어 회사들에게 가장 시급하게 필요한 것은 "기초 체력"이다.

히딩크가 우리나라 국가대표 축구팀을 처음 맞았을 때 강조한 것이 기초 체력이었다.
그전까지 우리는 국가대표 축구팀이 체력은 세계 어디를 내놔도 뒤지지 않을만큼 뛰어나지만 골결정력 등 섬세한 고급 기술들이 부족하다고 생각했었다.

하지만 히딩크는 이를 전면 부정하고 고등학교 축구팀처럼 기초 체력 훈련에 집중했다. 주변의 반대가 심했지만 강행했다.
그리고 월드컵에서 그 결과를 보았다. 경기 후반 다른 나라 선수들이 지쳤을 때 우리 선수들은 한발 더 뛸 수 있었고 승리로 이어졌다.

우리나라 개발자들은 개인기들은 뛰어나다. 즉, 코딩을 잘하는 개발자도 많고 온갖 지식도 많이 안다.
솔직히 이 정도로 많이 아는 개발자들은 전세계적으로 찾아보기 어렵다. 그럼에도 세계적인 소프트웨어 회사가 우리나라에 없고, 세계적인 제품을 찾아보기 어려운 것은 기초 체력이 부족하기 때문이다.

개발자들이 많이 아는 지식은 혼자서 배우고 익힐 수 있는 것들이다. 이것은 노력하는 개발자라면 누구나 다 잘 한다.
하지만 기초 체력은 혼자서는 절~대로 배울 수 없는 것들이다. 대부분 잘 갖춰진 개발문화를 가진 SW회사에서 몇년씩 일하면서 자연스럽게 배울 수 있는 것들이다. 그렇게 쌓은 기초 체력을 갖춘 개발자들이 버글버글 해야 그들이 뭉쳐서 좋은 소프트웨어도 만들고 그중에서 세계적인 소프트웨어도 나올 수 있다.

그런 좋은 환경에서 배울 수 있는 기초 체력은 코딩도 아니고 Domain 지식도 아니다.
아래와 같은 것들이다.
  • 소프트웨어 개발에 있어서의 개방의 문화
  • 리뷰 문화
  • 공유 문화
  • 협업 문화
  • 신뢰의 문화
  • 효율적인 개발 프로세스
  • 소스코드 관리 기법
  • 이슈 관리 기법
  • 빌드/릴리즈 기법
  • 테스트
이런 것들이 몸에 베어 있어야 한다. 몸에 베이지 않고 지식으로만 알고 있는 것은 막상 시행하려고 할 때 제대로 실행하기 어렵다. 엉뚱한 방향으로 흘러가서 이상하게 되어 버린다.

또 기초 체력에 해당하는 것들은 비싼 툴을 쓰고 정교한 세계 최고의 방법론, 프로세스를 도입한다고 해서 나아지지 않는다. 오히려 방해가 되는 경우가 많다.  그런 비싼 툴과 정교한 프로세스를 그것을 필요로 하는 곳이 따로 있는데 맞지도 않는 것을 쓰게 되면 반감만 커지게 된다.

툴은 꼭 필요하지만 환경에 맞게 필요한 툴과 적절한 프로세스가 필요한 것이다. 그 기반하에서 문화가 꾸준히 쌓이게 된다. 

이런 기초 체력이 뒷받침 되어야 다음과 같은 고급 역량이 생기기 마련이다.
  • 분석 역량
  • 설계 역량
  • 기술 전략 수립
단어만 놓고 보면 우리도 다 하는데라고 생각할지 모른다.
이는 태권도 10급이 태권도 9단에게 나도 태권도 할 줄 안다고 하는 것과 비슷하다.
Global 하게 경쟁 좀 하려면 4,5단은 되어야 하는데 우리나라에서 유단자 찾기 어려운 이유가 기초 체력을 먼저 갖추기 어려운 환경에서 일하기 때문에 이런 고급 기술은 닦을 시간도 없고 방법도 모르기 때문이다.

그래서 내가 중요하게 생각하는 것이 개발 환경을 먼저 바꿔 놓는 것이다.
기본적으로 이슈관리시스템, 소스코드관리시스템만 제대로 사용해도 반쯤은 바뀐 것이다.

이런 시스템들을 쓰면 우리가 눈치 채지 못하지만 여러가지 원칙, 프로세스를 저절로 배우게 된다. 수십년간 수많은 SW회사들의 성공하는 방법이 녹아 있는 것이 그런 시스템, 툴 들이다.

따라서 이들을 원칙 그대로 사용만 해도 많은 것을 얻게 된다. 기존의 방법과 다르다고 툴을 무시하고 또는 이상하게 변형하면 99.9% 잘못된 방향으로 가고 있는 것이다.

그리고 빌드, 테스트, 리뷰 등등을 하나씩 갖춰나가면 어느덧 꽤 효율적인 조직의 모습을 갖출 것이다.

이때 나타나는 조직의 모습은 다음과 같다.
  • 회사의 모든 개발 이슈가 투명하게 Open 된다.
  • 모든 업무의 커뮤니케이션이 원활하며 이런 것에 시간 낭비 하지 않는다.
  • 모든 소스코드는 공개가 되어 있고, 협업이 원할하다.
  • 숨어서 개발하는 개발자는 더이상 존재하지 않는다.
  • 경영자와 관리자는 개발 진행 상황을 한눈에 파악하고, 각 개발자들의 업무 진행 상황을 쉽게 파악한다.
대부분은 이쯤에서 만족할 수 있을지도 모르겠다.
하지만 여기까지는 진짜 "기초 체력"이다.

국내 대회에서는 꽤 상위권에 오를 수 있다. 하지만 월드컵에 나가면 한 골 넣기도 어렵다.
이제 "고급 역량"이 필요할 때다.

분석/설계/기술전략 등의 "고급 역량"은 단기간에 배울 수도 없다. 그렇다고 혼자 방법과 길을 알아서 익힐 수도 없다. 그렇게는 너무나 오래 걸려서 은퇴할 때가 될 것이다.
"고급 역량"은 이미 "고급 역량"을 갖춘 선배, 동료들과 진짜 프로젝트를 수행하면서 몸으로 익히는 것이다.
어느정도 방법과 길을 아는데는 몇개월 안걸리지만 진짜 역량이 높아지는데는 5년, 10년이 걸리고 20년이 지나면 또 역량이 올라간다.

우리나라 많은 개발자들이 관리 쪽을 기웃거리다가 또 유지보수에 시달리다가 20년 쯤 지나면 이도 저도 아닌 상태와는 많이 다르다.

기초 체력을 익히는 첫걸음은 기초 체력이 부족하다는 것을 
인정하는 것이다. 스스로를 인정하지 않으면 바뀔 수 없다. 이렇게 환경부터 하나씩 고쳐나가야 한다. 

댓글 7개:

  1. 말씀하신 저런 회사를 정말 찾고 있고, 들어가고 싶은데 안 보이네요.
    또 저렇게 환경을 만들려고 노력하는 회사 찾기도 쉽지 않고요.
    저런 노력하는 사람이나 회사 정말 알고 싶습니다.

    답글삭제
  2. 저희회사요.ㅎㅎ
    소스코드나 이슈관리는 하고 있는데
    리뷰에 대해서는 사람들이 아직 잘 못받아들이네요.
    "나를 못믿냐?" 뭐 그런 생각들이 있는듯...

    답글삭제
  3. 전 좀 답답한게, 어휘력 때문에 고생합니다. 엣말에 콩떡처럼 얘기해도 찰떡처럼 알아 듣는다고... 그게 소통이 잘되고, 죽이 잘 맞고, 팀웍이 좋은 것처럼 착각하는게 일을 더 어렵게 만듭니다.
    말이나 글을 좀 더 정확하게, 의사전달을 명확하게 하는 노력을 계속 해 나가야 하는데...
    "개발자는 코드로 말한다" 라는 명제 때문인지, 의사전달의 정확성에 대한 노력은 별로 하지 않는 것 같아, 아쉽습니다.

    답글삭제
  4. 안녕하세요. 디밥님

    정확한 의사전달은 가장 어려운 것 중 하나입니다. 그 어려운 정도는 상상을 초월합니다.

    그래서 스펙을 쓰는 것이 가장 어려운 일입니다.

    답글삭제
  5. 기초 체력이 중요하다는 점에는 절대적으로 공감합니다.
    하지만 우리나라 소프트웨어 생태계가 심하게 오염된 탓에,
    개발자들이 그런 기초 체력을 쌓을 기회가 없다는 게 문제라고 생각합니다.

    경영 환경이 열악한 중소/벤처 기업들은 경력이 없는 개발자를 채용하여 문화를 만들고 기초 체력을 키워 줄 "회사의 체력"이 없습니다. 그리고 대기업들은 중소기업 빨아먹기에 여념이 없어서 개발자를 키울 생각조차 하지 않구요.

    결국, 지금 살아남은 소프트웨어 회사들이 그런 일을 해줘야 하는데,
    그런 회사들도 정말 쓸만한 고급 개발자가 별로 없어서, 결국 역량이 없는 경우가 대부분입니다.

    참 답답하지만, 여기서 할 수 있는 말은 하나밖에 없겠네요. (김형태 님이 하신 말씀입니다.)
    "남 탓, 시대 탓, 환경 탓하는 것만큼 구제불능의 바_보는 없습니다."

    결국 내가 그런 사람이 되어야 하는데, 그게 참 쉽지 않네요. :-)

    답글삭제
  6. 안녕하세요. 조인중님 (내 후배 조인중인가?)

    그 책임의 대부분은 회사에 있죠. 개발자들은 피해자죠. 심한경우 성장의 기회는 없이 피나 빨리는 거죠. ^^

    답글삭제
  7. 사람이아니므니다2012년 9월 19일 오후 8:20

    기초 체력이 이런 것이었군요.

    안녕하세요. 사회복무요원(공익근무요원) 스물한살입니다.
    소프트웨어 회사는 아니지만 지방자치단체에서 사회 생활을 하고 있습니다.
    여기에 답글을 작성한다는 건 무척 인상적인 글이었고 무엇을 배워야 할지 알았습니다.
    헌데 혼자서는 '기초 체력'을 배우기는 어렵겠군요.
    프로그래밍 튜토리얼을 봐도 프로그래밍을 하지 못해 저만의 프로젝트 수행 방법같은 것을 만들고는 있습니다.
    이 글을 보니 생각이 바뀌었습니다.

    프로젝트 관리 같은 거는 직장 생활에서 배우고 적응하면 되는 거고, 지금은 프로그래밍 같은 기술을 배워야 하는데.. 배우질 못하니 저만의 프로젝트 같은 걸 만들고 있고...하아..

    감사합니다.

    답글삭제