2010년 6월 1일 화요일

히딩크와 소프트웨어

월드컵도 다가오는데 소프트웨어와 축구를 한번 비교해보는 것도 좋을 것 같습니다.

제 블로그의 글들은 이런 방법 저런 방법으로 끊임없이 우리나라의 소프트웨어 현실이 무엇이 문제인지를 설명하고 있습니다. 그 중의 하나의 글이라도 여러분들의 변화의 계기가 되기를 희망하면서 글을 쓰고 있습니다. 일단 깨닫고 나면 방법을 찾는 것은 두번째 이슈입니다.

2002년 이전만 해도 우리나라 축구 수준은 세계 수준과 워낙 차이가 나서 2002년의 기적이 일어나리라고는 생각도 못했습니다.
히딩크가 우리나라 축구 대표팀을 처음 맡아서 대표팀의 문제점으로 가장 크게 지정한 것이 "기초체력부족"입니다. 하지만 대부분의 축구관계자와 국민들은 이를 믿지 않았습니다. 우리나라 선수들은 체력은 좋은데 기술과 경험이 부족할 뿐이라고 주장했습니다. 그리고 히딩크의 기초체력 향상 위주의 훈련을 맹비난했습니다. 하지만 4강까지 밟아본 뒤에는 체력이 조금더 좋았고 더 두터운 선수층만 있었어도 그런 천운이 뒷받쳐 줄 때 결승까지 갈 수도 있었다는 것을 알게 되었습니다.

소프트웨어 현장에서도 비슷한 일이 계속되고 있습니다. 강연이나 세미나를 통해서 기회가 있을 때마다 우리나라 소프트웨어 개발자들과 회사들의 "기초체력부족"을 강조하지만 이를 믿지 않는 사람들도 매우 많습니다. 물론 모든 사람들 다 설득하고 싶은 생각도 없고 그럴 필요도 없습니다. 

우리나라 개발자들 실력은 대단히 뛰어납니다. 우리나라 축구선수들이 드리블도 잘하고 발재간도 좋고 세트플레이도 잘하듯이 코딩도 잘하고 다양한 지식으로 무장되어 있습니다. 하지만 이러한 개발자들을 여럿 모아 놓으면 영 실력 발휘를 못합니다. 축구의 현실과 비슷합니다. 하시만 이러한 개발자들도 자신들의 "기초체력부족"은 인정하려고 하지 않습니다. 

바로 이 "기초체력"이 세계적인 경쟁력을 갖춘 소프트웨어 회사와 평범한 소프트웨어 회사를 판가름하는 결정적인 요소라는 것을 알아야 합니다. 세계적인 소프트웨어 회사는 물론 뛰어난 개발자들로 넘쳐나지만 그들의 가장 큰 경쟁력은 "개발문화"를 비롯한 지극히 기초적인 것들입니다. 

그럼 그 "기초체력"의 차이는 무엇을까요?

소프트웨어를 개발하는데 필요한 가장 기초적인 3가지는 다음과 같습니다.
  • 인프라스트럭처시스템
  • 개발 프로세스
  • 개발 조직
이 세가지 부분에서 엄청난 차이를 보여줍니다. 그리고 이들이 융합되고 조직에 스며들어서 발현되는 "개발문화"에서도 큰 차이가 나타납니다. 이 차이 때문에 글로벌 기업과의 Gap을 좁히지 못합니다.

이를 간단하게 측정할 수 있는 지표를 만들어 놓은 것이 있습니다.
한번씩들 스스로를 평가해보시죠.

제가 쓴 책(소프트웨어 개발의 모든 것)에 소개가 되어 있는 내용이기도 합니다. 책에는 자세한 설명이 포함되어 있습니다.
제가 컨설팅을 하면서 조사를 해보는 대분의 회사는 20점 만점에 1~5점 정도 밖에 되지 않습니다.
하지만 본인 스스로 측정을 하면 훨씬 너그러운 높은 점수가 나올 겁니다.
우리나라 유수의 S사 L사도 팀마다 다르기는 하지만 5점을 넘기 어려운 것이 현실입니다.
우리나라 소프트웨어 회사들의 평균점수가 5점이 넘지 않는다고 생각하면 맞을 겁니다.
이 점수는 지금까지 소프트웨어를 개발하고 있었던 것이 기적에 가까울 정도의 점수입니다.

** 물론 아주 가끔 15점이 넘는 회사들도 작은 회사들 중에는 있습니다. 장래가 아주 총망되는 회사들입니다.

기초 체력을 다지는 방법은 책에서도 소개를 하고 있지만 방법보다도 "기초체력"에 문제가 있다는 것을 먼저 깨닫는 것이 중요합니다. 하지만 대부분의 개발자들과 경영자들은 이를 인정하지 않고 여전히 "히딩크 죽이기"를 하고 있는 경우가 대부분입니다. 일단 깨닫는 순간 상황이 바뀝니다. 

방법론으로 들어가면 책이나 인터넷에 넘쳐나는 정보가 많지만 대부분 시행착오를 겪지 않고는 올바른 방향으로 갈 수가 없습니다. 그래서 경험이 많은 전문가의 도움을 받는 것이 훨씬 효과적입니다. 

여기서 가장 중요한 것은 경영자의 개선에 대한 의지라고 할 수 있습니다. 기초체력을 닦는 일을 시작했어도 중간에 수많은 난관이 발생하고 의구심이 들기 마련입니다. 이때 히딩크를 잘라버리는 것처럼 중간에 포기를 해보면 시도를 하지 않은 것보다 더 나쁠 수 있습니다. 이런 경험이 쌓이면 "옛날에 해봤는데 안되더라"라는 부정적인 시각만 쌓여서 평생 "주먹구구개발"에서 벗어나지 못하게 됩니다.

소프트웨어 개발자들도 맨날 동네 축구하지 말고 세계 4강 한번 들어야 하지 않겠습니까?

댓글 16개:

  1. 기초체력이라고해서 컴퓨터구조나 원리를 생각하고있었는데, 더 중요한걸 깜빡하고있었네요 ㅎㅎ
    조언해주신 이후로 버전관리시스템도 사용하고, 기술공유, 짝프로그래밍같이
    제 위치에서 할수있는것들을 하고있습니다.
    팀에 큰 변화는 일어나지 않았지만, 언젠가는 변화될것을 생각하며 일을 하고있습니다.
    좋은글 감사합니다. 항상 건강하세요~

    답글삭제
  2. 그런 작지만 좋은 회사들을 좀 알려주시면 어떨까요?
    그런 회사들이 널리 알려져야 좋은 개발자들도 더 많이 모여서 커질 수 있을것 같습니다.
    그리고 문제점이 있는 회사들이 점점 고쳐나가는 것도 좋지만
    좋은 회사들이 점점 커나가는 것도 의미 있을것 같습니다.

    답글삭제
  3. 안녕하세요. 오산돌구님
    컴퓨터 구조나 원리도 개인에게 있어서느 기초체력 중하나에 해당할 수 있겠습니다. 애초에 이런 것을 모르고는 기본에 되어 있지 않은 개발자이기 때문에 다른 것은 말할 필요도 없겠네요.
    Pair Programming을 하시고 계시나요?
    사실 이부분에 있어서는 논쟁의 여지가 많습니다. 모든 회사가 Pair Programming이 필요하고 효율적인 것은 아닙니다.
    어떤 식으로 진행하고 계신지는 모르겠지만 자칫 시행착오가 될 가능성도 있습니다.

    변화는 대단히 어려운 것입니다. 조금만 관심을 가지지 않으면 어느새 옛날로 돌아가 있습니다. 그래서 질질 끌지말고 짧은 기간에 강력한 힘으로 밀어붙이는 것이 효과적일때가 많습니다.

    밑으로부터 서서히 천천히 일어나는 변화는 대부분 실패할 가능성이 높습니다.

    그렇다고 섯부른 Push는 조직원들의 반발을 사기 쉽습니다. 그래서 변화가 어려운 것이지요.

    하지만 변화하지 않으면 죽는 것이기 때문에 선택의 여지가 있는 것은 아닙니다. 필수죠.

    답글삭제
  4. 안녕하세요. 윤민식님
    회사이름을 밝히기는 어렵습니다.
    기초가 잘 되어 있다는 것은 이제 출발점입니다.
    필요조건을 갖췄다는 의미이고 필요충분조건은 아닙니다.

    답글삭제
  5. 확실히 ... 점수가 5점도 안나오네요 ㅋ
    아무튼 개발자가 나서서 더욱 편안한 개발환경을 위해 쌈박질을 해야 하지 않을까 생각이 간혹 듭니다.

    그런데, 그렇게 한번 나서서 편하게 해놓으면
    자기의 일로 추가가 되기 때문에 개발자들이 나서지 않게 되기 때문이 아닐까 싶어요

    답글삭제
  6. 안녕하세요. 구차니님

    시스템을 도입하고 프로세스를 정비하면 당연히 담당자가 필요하게 됩니다.
    큰회사는 하나의 팀에서 여러명이 이일을 담당하고 작은 회사는 혼자 또는 1/2명이 이일을 담당합니다. 1/2명은 다른 개발일도 하면서 짬짬히 이일을 하는 거죠.

    이렇게 정식으로 dedicate시켜주지 않으면 제대로 돌아가지를 않습니다. 이것도 잘 알려줘야죠.

    시스템, 프로세스 관련된 일이 자기일이 되는 것은 나쁜 현상이 아닙니다. 회사에서 충분히 이해하고 시간을 할애해준다면요. 일반 개발자들이 알지 못하는 중요한 경험을 익히게 됩니다.

    답글삭제
  7. 13~14점 정도 나오는군요. 특히 QA전담팀이 있다는 부분과 테스트 케이스 관련 부분들은 왠만큼 큰 국내개발회사나 외국계 회사가 아니면 점수를 획득하기가 어려운 부분이 아닌가 싶습니다.
    외국계 회사에서는 별도의 QA팀이 있고 그 팀에 의해서 QA가 진행되는 것이 너무나도 *당연* 한데 말입니다.

    답글삭제
  8. 히딩크와 소프트웨어 -All of Software-

    답글삭제
  9. 안녕하세요. 우울한 딱따구리님

    Wow! 대단하신데요. 스스로에게 너그럽게 점수를 매기지 않았기를 바랍니다. ^^

    QA전담팀은 개발자가 10명 내외의 작은 개발팀에서도 필요합니다. 테스트케이스도 마찬가지입니다. 작은 개발팀도 이렇게 개발하는 것이 더 적은 비용으로 빨리 개발할 수 있는 방법이지만, QA전담 인원을 채용하는 것은 왠지 아까운 생각이 들곤합니다. 개발자를 뽑으면 코딩도 하고 테스트도 다 할 수 있는데 말입니다. 이것이 바로 착각이죠. 개발자는 개발자만이 할 수 있는 본연의 작업에 충실하게 해 주는 것이 돈버는 길이죠. ^^

    이외에도 소수의 개발팀이라도 갖춰야 할 것이 수두룩하죠. 그렇게 해 놔야 훨씬 빨리 개발할 수 있죠.

    우울한딱따구리님은 이미 거의 잘 하고 계시는 것 같군요. 다음단계로 스펙과 아키텍쳐에 대해서 고민을 하셔야 할 것 같네요.

    답글삭제
  10. 예 저도 이번에 전직을 하면서 QA팀이 있는 회사는 처음 다녀보는데, 수년간 숙달된 전문 QA들의 버그 잡아내는 솜씨란 개발자에 비할 바가 아니더군요. 게다가 웹의 경우 IE6/7/8, FF까지 cross platform 체크에 regression test까지, 개발과 QA는 비슷해 보이지만 엄연히 다른 분야라는 걸 실감했습니다. 그리고 개발자 못지 않게 유능한 QA 전문가를 채용하는 것 또한 중요하다는 것을요.

    답글삭제
  11. 유수의 S사 직원2010년 6월 2일 오전 8:50

    안녕하세요~
    전 유수의S사 직원인데 저희 팀에서는 소프트웨어 역량평가가 대략 17점 가량 나오는군요..
    근데 이런 거 있잖아요
    공식적으로는 해라고 하는데 일부 개발자들이 일정이나 귀찮음, 몰라서를 핑계로 안 하고 있는거요.
    이런 건 하고 있다고 해야하나요? 아니라고 해야하나요? ^^;;
    워낙 많은 사람이 일하고 있다보니 공식적인 룰을 지키지 않는 사람들도 많네요.
    요새 욕 많이 듣고 있지만 언젠간 좋은 평가 들을 때가 있으리라고 희망을 가져봅니다.

    답글삭제
  12. 자려고 침대에 누워서 스마트폰으로 글을 읽다가 문득 이게 아닌데 싶어서 답글 달려고 거실로 나왔습니다. 국내 S모 대기업에 있다가 전직했는데 지금 생각해보면 S모사의 소프트웨어 역량이 형편없다고 여겨지는 회사에 다니고 있습니다. 점수를 매겨보니 10점 전후겠네요. 하지만 역량평가표는 마치 교과서에 나올법한 기준으로 생각됩니다. 생각보다 분야에 따라서 역량평가의 기준이 많이 달라져야 합니다. Reusability를 전혀 고려하지 않고 있고, End product에 앞서 infra software에 얼마나 많은 가치를 부여하고 있는지 등등 추가되어야 할 기준이 훨씬 많고 그만큼 중요합니다.

    답글삭제
  13. 그럼 제가 할수있는건 우선 저부터 변화하는 방법밖에 없는건가요?

    일정에 쫒기는 개발이 아니라, 서로서로 정보공유하고
    참여하는 모든 이들에게 이득이 되는 그런 개발을 하고싶습니다.
    오늘 책을 다시 봐야겠습니다

    답글삭제
  14. 안녕하세요.
    S그룹 회사마다 팀마다 천차만별이더군요. 상당히 잘되어 있는 팀에서 일하시는 군요.
    사실 큰회사에 다니는 개발자들은 다양한 교육의 기회도 많고 회사에서 이것 저것 많이 시도들을 하기 때문에 왠만한 용어는 다 알고 경험들도 있습니다.
    하지만 제가 컨설팅했던 큰 회사들을 보면 회사에서 추진하는 개선작업들이 잘못된 방향으로 여러차례 Push 하면서 잘된 것들도 있지만 잘못된 시도들 때문에 부정적인 이미지가 많이 퍼진 것들도 봐왔습니다.
    그래서 이론적으로는 어떻게 하는 것이 옳다는 것을 알아도 그렇게 하지 않는 것들을 많이 봤습니다.
    운전하면서 양보하는 것이 좋다는 것이 시험에 나오면 정확하게 맞혀도 실제 운전하면서는 양보하지 않는 것과 비슷하죠.
    그중에는 정말 열심히 하는 사람들도 있는데 그렇지 않는 사람들도 많더군요.
    그래서 이런 큰회사들은 바뀌는 것이 정말로 어렵습니다. 시간도 오래걸리고 경영층의 의지기 특히 중요하죠.

    요새 욕 많이 듣는 다고 생각하는 것에 대한 제 생각은 여태 S사가 세계적으로 1등이고 뭐든지 잘하는 줄 알았는데 SW분야에서 그렇지 않고 많이 뒤쳐졌다는 뉴스들이 나오고 몇몇 제품과 비교가 되니까 나오는 실망감이고 넉두리라고 생각합니다. 대부분은 사용자로서 내 밷는 토로이고 저는 좀 생각이 다릅니다. 어떻게 해야 하는지에 대해서 주로 생각하고 말하려고 합니다.

    유능한 개발자들이 가장 많이 몰려있는 곳이기도 하기 때문에 경영층이 조금만 더 똑바로 생각한다면 언제든지 SW에서도 1등이 될 수 있다고 생각합니다.

    답글삭제
  15. 안녕하세요.

    몇가지의 질문으로 역량을 다 평가할 수는 없겠지만 간단한 지표는 될 수 있습니다. 그렇다고 수십, 수백개의 질문을 만들면 너무 복잡하죠. 그래서 복잡한 질문은 제 Blog상단에 별도의 서비스로 만들어 놨고, 별도로 의견을 적을 수도 있게 되어 있습니다. 그러면 제가 읽어보고 제 의견을 Email로 별로도 보내드립니다.

    역량평가표의 항목들은 소프트웨어 회사라면 갖춰야할 최소의 것들로 이루어져 있기 때문에 이부분들을 무시하고는 소프트웨어를 잘 개발한다고 말하기 어려운 것들입니다. 물론 개인적으로 뛰어난 개발자일 수는 있으나 회사차원에 그렇다는 의미입니다.

    국내 대부분의 SW회사가 정말 척박한 환경이고 서로 대동소이하기 때문에 본 설문으로 대부분의 회사의 기본적인 상태는 간단히 평가할 수 있을 것으로 생각합니다.

    답글삭제
  16. 사장님, 연구소장님, 팀장님의 생각을 먼저 바꾸는 것이 중요합니다.
    본인만 열심히 하면서 이렇게 해야 한다고 주장하고 다니면 자칫 괴짜로 보여질 수도 있습니다.
    윗분들의 생각을 바꾸는 것은 저희같은 전문가가 하는 일 중에 하나죠. ^^

    답글삭제