2012년 4월 16일 월요일

요즘 실리콘밸리에서는...

얼마전 실리콘밸리의 한 Startup company에서 CTO로 일하고 있는 오랜 친구가 한국에 놀러와서 같이 여행을 갔다.
Informix에서 소프트웨어 엔지니어로 시작해서 한 20년 정도 일한 중국인 친구다. 같이 일을 한 적도 있지만 최근 동향에 대해서 여러가지 정보를 들을 수 있었다.

시간이 많이 흐르고 새로운 테크놀로지는 많이 나왔지만 소프트웨어를 개발하는 방식은 바뀌 것이 거의 없었다.
그 핵심을 요약해보면 다음과 같다.


  • 소프트웨어를 개발할 때 가장 중요한 것은 스펙이다.
  • 스펙을 작성하는데 가장 노력을 많이 들이고 고급엔지니어가 투입된다.
  • 전체 개발 기간 중에서 스펙을 작성하는 분석 기간이 가장 길다.
  • 스펙을 작성할 때 마케팅이 아주 중요하게 참여를 하고 모든 관련자와 스펙을 여러차례 철처하게 리뷰한다.
  • 스펙이 완성되면 스펙에 모든 관련자가 사인을 한다.
  • 스펙이 바뀌는 경우는 매우 드물다. 
  • 예외적인 케이스에서만 스펙이 변경되고 스펙 변경시에는 프로세스를 따른다.
  • 스펙을 바꾸면 개발자들이 어려워하고 프로젝트 기간이 늘어나기 때문에 다들 스펙을 바꾸면 안된다는 것을 잘 안다.
  • Agile을 적용할 때도 스펙을 잘 작성한다. 대신 주기를 줄이고 빠르게 개발한다.
  • 여러 사람이 개발을 나눠서 하기 위해서는 스펙을 잘 작성하고 컴포넌트를 잘 나눈다.


물론 한 개인의 의견이 실리콘밸린 전체 상황을 대변하는 것은 아니지만 다른 회사들도 크게 다르지 않을 것이다. 이러한 근본 원리는 10년전이나 크게 다르지 않다. Agile등의 새로운 기법들이 나와도 회사에 알맞게 적용을 할 뿐이고 근본은 바뀐 것이 하나도 없다.

한국 기업과도 일을 한 적이 있는데 대단한 불만을 토로하면서 다시는 한국 기업과는 일을 하지 않겠다고 한다.
한국 기업과 일을 할 때는 이러한 일들이 일어 났다고 한다.


  • 요구사항을 문서로 달라고 하는데 주지 않고 몇마디로 설명만 해준다.
  • 스펙을 작성해서 검토해 달라고 하는데 검토를 안해준다.
  • 스펙을 완성해서 사인을 하라고 하는데 사인을 안한다.
  • 스펙대로 다 만들었는데 UI를 보고 바꿔달라고 한다.
  • 계약을 제대로 하지도 않는다.


대부분의 우리나라 소프트웨어 업체들의 부족한 부분도 10년 전이나 지금이나 크게 바뀌지 않았다. 분석 능력 등을 비롯한 기초역량이 부족한 것이다. 물론 기반과 경험이 부족한 상태에서 기초역량을 갖추는 것이 쉬운 일은 아니라는 것은 잘 알고 있다. 하지만 그 상태로 계속 발전해서 Global 경쟁에서 살아 남을 수 없다는 것도 알아야 한다.

우리를 현혹하는 신기한 기법보다 근본에 충실할 때다.

댓글 9개:

  1. 10년전이나 똑같다면 미래가 없는 것이나 마찬가지 처럼 느껴집니다.
    거기다 같이 일하지 않겠다고 하면... 이게 왕따가 아니고 뭔가요. 스스로 외로워지는 왕따.

    답글삭제
  2. 안녕하세요. JYP님

    소프트웨어 개발원리는 10년전이나 별 차이가 없지만, 우리나라 회사들은 기가 막힌 좋은 방법을 찾아다니는 것도 별 차이가 없습니다. 지금 유행하고 있는 방법들도 몇 년 후에는 별로 효과를 못보고 잊혀져 갈 겁니다.
    분석 잘하고 설계 잘하는 것이 근본 원리인데 이 역량이 부족하니 다른 방법으로 해결하려고 하는 것은 해결책이 아니죠.
    미래는 우리들이 바꿔나가는 것이기 때문에 희망을 가져보는 것이 어떨까요?

    답글삭제
  3. 한국 기업쪽 내용이 너무 너무 공감되네요.

    요즘은 그 요구사항서/스팩 작성하는 시간도 아깝다며
    바로 코딩에 들어가는 분위기라 더 암울해진것 같습니다.
    에효...

    답글삭제
  4. 아이시클님 안녕하세요.

    스펙을 제대로 작성하는 이유는 여러가지가 있지만 가장 중요한 이유는 개발을 빠르게 하기 위해서입니다. 그런데 바쁘다고 코딩부터 시작하는 것은 개발을 느리게 하는 방법이지요.

    물론 스펙을 제대로 작성할 수 있는 분석능력이 있어야 하는데 그렇지 않으면 방법이 없이니 코딩부터 시작하곤 합니다. 하지만 그렇게 해서는 평생 느리게 개발하는 방법밖에 익히지 못합니다. 혼자 또는 2,3명이 개발할 때는 그럭저럭 큰 문제 없이 개발을 해 낸 것 같지만 제품이 복잡해지거나 조금만 커져도 문제가 기하급수로 커집니다.

    그래서 대규모 업그레이드에 많이들 실패합니다.

    분석역량은 갑자기 생기는 것이 아니고 꾸준히 스펙을 써봐야 조금씩 늘어갑니다. 스펙은 소프트웨어 개발에서 가장 중요한 요소이기 때문에 절대로 소홀히 하거나 타협을 할 수 있는 요소가 아니죠. ^^

    답글삭제
  5. 스펙이라면 요구사항이나 설계서 문서를 의미하나요?

    답글삭제
  6. 안녕하세요. 백문기님

    우리나라에서는 스펙의 의미를 정확하게 사용하는 경우가 대부분입니다. 스펙이라고 하면 다들 서로 딴 생각들을 합니다.

    스펙은 SRS라는 문서에 적히고 SRS와 같은 의미로 쓰입니다.

    스펙은 요구사항과는 다릅니다. 요구사항을 분석하세 자세하게 적은 것입니다.

    설계서와는 또 다릅니다. 설계의 상위 Design이 포함되기는 하지만 설계를 그렇게 자세히 적지는 않습니다.

    스펙은 프로젝트에서 중심이 되는 문서로 모든 관련자들이 리뷰를 하며 서명을 합니다.

    스펙에 적히는 내용은 다음과 같은 것이 있습니다.
    마케팅 전략, 회사의 Goal, 프로젝트 범위, External Interface, UI, 기능 요구사항, 비기능 요구사항, 등등 입니다.

    스펙이 무엇인지 책을 보고 대충 이해는 할 수 있어도 스펙을 잘 적는 것은 대단히 어렵습니다. 10년, 20년을 적어도 어려운 것이 스펙입니다.

    스펙을 제대로 적는 것은 소프트웨어 개발에서 가장 중요한 것이며, 프로젝트를 빨리 끝내기 위해서가 꼭 필요한 문서입니다.

    좀더 자세한 내용은 제가 쓴 "소프트웨어 개발의 모든 것"을 참고하시고 읽어보면 도움이 될 것입니다.

    누군가가 어떻게 하면 소프트웨어 프로젝트를 빨리 끝내고 소프트웨어를 잘 개발 할 수 있냐고 물어보면 "스펙"을 잘 적고 진행하면 됩니다.라고 자신있게 말할 수 있어야 할 겁니다.

    PS) 여기서 잘 적는 다는 것은 많이 적는 것과는 완전히 다른 의미 입니다. ^^

    답글삭제
  7. 안녕하세요 전규현님의 블로그를 애독하고있는 학부생입니다.
    글들의 대부분 개발보다 요구사항 분석, 설계 에 따른 문서작성의 중요성에 대해 언급하시는데
    저 역시 그렇게 생각합니다.

    하지만 제가 이런 생각을 갖는다고 해도 실제로 현업에 나가면 이런 생각들이 제대로 실천되기 어려운
    기업들이 많다고 생각하고 제가 잠시 일을 했던 회사도 그랬습니다.

    그렇다면 제가 이러한 원칙을 지키면서 제대로 된 개발자가 되기위해서는 어떠한 기업을 가야할지 고민입니다.

    그냥 제 자신의 학점 토익을 쌓아서 무조건 대기업에 들어가면 되는건 아닌것 같고..

    그렇다고 제가 일일히 기업이 어떤 개발을 하는지 대학생 입장에서 조사할수 없는 노릇이구요

    제가 어떠한 준비를 하면 될까요

    답글삭제
  8. 안녕하세요. Nyquist님

    분석, 설계와 개발이 다른 것이 아니고 분석, 설계는 개발의 일부분입니다. 보통은 코딩을 개발이라고 하는 경향이 많습니다.

    빌딩을 만들때 빌딩을 디자인하는 것을 모두 포함하지 벽돌 쌓는 것만 빌딩을 만든다고 하지는 않죠.

    빌딩을 만들때 벽돌을 쌓아야 빌딩이 올라가지만 디자인이 훨씬 중요하고 Value도 높죠.

    학교에서 익힐 수 있는 것은 SW나 Computer 기초 이론들이고 분석, 설계 등은 실전에서 익히는 것입니다. 학교에서 기초를 튼튼히 하는 것이 가장 좋습니다. 그리고 SW공학에도 관심을 가지시면 좋겠네요.

    회사는 대기업이냐 중소기업이냐에 따라서 큰 차이는 없고 좀더 엉터리인 회사들이 있을 뿐입니다. 그중에서 좋은 회사를 선택하시고 일하실때 초심을 잃지 말고 케리어 패스를 잘 만들어가시 바랍니다.

    잘 되어 있는 회사라면 상관이 없지만 본인이 회사에 들어가서 회사를 바꾸고 싶다면 작은 회사가 더 좋겠죠. ^^

    스스로 바꾸는데는 한계가 있으니 좋은 선배들이나 전문가의 도움을 받는 것이 좋습니다.

    감사합니다.

    답글삭제
  9. 블로그 주제도 좋지만 댓글에 남겨주시는 내용은 정말 속이 시원합니다.

    님의 블로깅 내용으로 요즘 위로가 많이 됩니다.
    블로그를 읽어서 얻는 위로는, 사내 조직에서 SW직군은 업무적으로 섬이라는 생각에서 많이 탈피를 하고, 이와 같은 특성을 주변 동료들(SW아닌 직군에 속한 사람들)에게 이해시키기 위한 노력이 절대적이라는 생각이 절실합니다. 지금 당장은 어렵겠지만, 이해시키기 위한 노력이 있어야 하겠다는 생각이 듭니다.

    감사합니다.

    답글삭제