2011년 8월 21일 일요일

왜 소프트웨어에서 실패를 할까?

많은 회사들인 하드웨어보다는 소프트웨어에서 더 실패를 많이 한다. 사실 우리나라의 여러 산업분야에서 하드웨어는 이미 세계최고 수준에 이르렀다. 그런 회사들 조차 낙후된 소프트웨어 역량 때문에 경쟁력을 잃곤 한다.

그 이유는 무엇일까?

첫째, 하드웨어는 제대로 설계를 하면서도 소프트웨어 설계는 아예 없거나 엉성하기 그지 없다. 

소프트웨어는 인류가 만들어낸 모든 지식 산업 중에서 가장 복잡하다고 한다. 그럼에도 불구하고 우리나라에서는 소프트웨어 만큼 엉성하게 만드는 것도 없다. 
작은 집을 만들던, 빌딩을 만들던간에 설계 없이 만드는 것은 없다. 하다못해 작은 장난감도 잘 만들어진 설계가 필요하다. 그럼에도 소프트웨어는 설계없이 만드는 경우가 허다하다.

사실 하드웨어는 제대로 설계를 하지 않으면 아예 동작하지 않는다. 하지만 소프트웨어는 대단히 소프트하다는 착각에 대충 만들어서 통합이 안되거나 동작을 잘 안하면 조금씩 고쳐서 해결 할 수 있을 것으로 생각한다. 하지만 이는 대단한 착각이다. 하드웨어는 만들어 놓고 쓰다가 망가지면 버리면 되지만 소프트웨어는 한번 만들어 놓은 아키텍처가 생각보다 오래가고 나중에 발목을 잡게 된다.

또한, 하드웨어는 고객이 원하는대로 마음대로 변경해주지 않는다. 하지만 소프트웨어는 쉽게 바꿀 수 있다는 착각하에 고객마다 다른 제품을 만들어서 제공하는데, 이런 회사들은 대부분 미래에 유지보수를 감당하지 못하게 된다. 

공공 입찰의 경우 제대로된 스펙과 설계서를 요구하긴 하지만 대부분 페이지 수만 채운 형식적인 것이고 실제 개발에 제대로 쓰이지 않는다. 결국 개발자들이 머리 속으로 설계를 해서 개발하는 것이 일반적이다.

이렇게 해서는 당장 제대로 만드는 것을 떠나서 미래에 벌어지는 수많은 문제들을 점점 키우게 된다.

둘째, 소프트웨어는 완전히 다른 기업 문화를 요구한다.

하드웨어는 몇몇 천재가 기가막힌 물건을 만들어 낼 수 있다. 물론 하드웨어 분야도 수많은 사람들의 협업으로 돌아가지만 소프트웨어와는 사뭇 다르다.

소프트웨어 개발은 거의 모든 단계에서 대단한 협업이 필요하다. 또한 수평적인 조직 문화가 필요하다.

윗사람이 지시하고 이를 따르고 보고하고 통제하는 문화로는 절대로 소프트웨어를 제대로 개발할 수 없다.
자율적으로 판단하고 공유하고 리뷰하고 능동적으로 대처하는 문화가 필요하다. 관리자가 철저히 통제하고 관리하는 문화는 이를 저해하게 된다.

세째, 소프트웨어를 잘아는 경영자가 필요하다.

많은 사람들이 소프트웨어는 하드웨어를 동작하는데 도움을 주는 부수적인 부품으로 생각한다. 이런 하드웨어적인 마인드로는 소프트웨어를 절대로 잘 개발할 수 없다. 소프트웨어를 담당하고 있는 경영자라면 소프트웨어를 매우 잘 알고 제대로 된 소프트웨어 경험이 많아야 한다. 그래야 소프트웨어 전략을 수립할 수 있다. 

축구를 해본적도 없는 관중 수준의 사람에게 축구 감독을 맡길 수는 없다. 

안타까운 것은 우리나라는 소프트웨어 분야에 있어서는 너무나 갈길이 멀다는 것이다.
다행인 것은 많은 사람들이 소프트웨어에 관심을 가지기 시작했다는 것이다. 냄비처럼 확 끓었다가 식는 것이 반복하지만 않았으면 좋겠다.

댓글 11개:

  1. 세째, 소프트웨를 잘아는 경영자가 필요하다.

    소프트웨 -> 소프트웨어

    답글삭제
  2. 안녕하세요. 지금은 좀 오래 되었지만 몇 년전에 국내 소프트웨어 업계에 매우 기념비적인 날이 될 뻔 한 적이 있었습니다. 바로 티맥스소프트에서 OS를 발표한 날 이었는데요. 국내에서 제우스라던지 티맥스 등 좋은 제품을 출시하는 기업이었기 때문에 블로거들 사이에서 매우 큰 기대를 했었지요. 하지만 막상 뚜껑을 열어보니 제품의 이름부터 윈도우라는 MS 제품과 동일한 이름에, 코어까지 이건 완전 모방작이라는 이야기를 듣고 블로거들에게 많은 실망을 제공해주..

    답글삭제
  3. 하드웨어도 버그가 있습니다.
    물론 소프트웨어 보다 벤더 및 종류가 적고 생산량이 큰 사업이기 때문에 그 영향이 작지만요.
    그러한 버그를 제품 드라이버와 OS가 감안하고 동작하고요.
    인텔 칩셋 드라이버 등에 그러한 내용들이 다수 포함되어 업데이트 됩니다.

    사람이 만든 건 100% 완벽할 수 없기에 갈고 닦는 건 SW건 HW건 필수인가 봅니다. ㅎㅎㅎ

    글 요지에 영향이 없는 부분이지만 댓글 달아봅니다. 언제나 좋은 포스팅 감사합니다.

    답글삭제
  4. 안녕하세요. 김충환님

    맞습니다. 하드웨어를 하는 사람들은 더 설계를 잘하는 것이 하드웨어에 버그가 생겨서 교체를 해야 하는 경우는 비용이 엄청나게 들기 때문인 것 같습니다.

    그런데 소프트웨어는 버그가 있으면 나중에 쉽게 고쳐주면 된다고 생각합니다.

    또한 하드웨어 디자인 체계는 이미 오랜 시간 정립이 되어서 규약, 프로세스, 툴, 마인드 등 이미 상당 수준입니다.

    소프트웨어는 특히 우리나라는 하드웨어에 비하면 낙후되어 있습니다.

    소프트웨어를 하는 사람들도 하드웨어의 마인드를 좀 배워야할 것 같습니다.

    답글삭제
  5. 돈이라고 생각합니다
    우수한 인력이 왜 소프트웨어 개발을 하겠습니까 다 의전원 로스쿨 가죠..
    일이 힘들다 해도 그만큼 돈을 많이 주면 해결될 문제죠
    문제는 위에서 그럴 생각이 전혀 없다는거..

    결국 싸구려 인력으로 외국 유명한 프로그램을 흉내낸 싸구려 프로그램만 만들거고
    경쟁에서 뒤쳐져서 언젠가 훅 가겠죠
    모바일 OS만 봐도 개발 인력이 없다고 난리치는데, 누가 미쳤다고 돈 도 안되는 OS를 하고 있겠습니까
    이런 건 정부에서 미리미리 투자해서 키워야 하는데..

    최근 과제를 하는데 소프트웨어 우습게 보는데 참 짜증나더군요
    그거 얼마면 만들겠다 하는데 참..
    돈은 90%를 다 가져가면서 뭘 그리 기대하는지 -_-;;
    한 번 크게 당해봐야 정신 차릴겁니다.
    그때 가서 울면서 난리치겠죠

    답글삭제
  6. 미국에서는 거의 매년 소프트웨어 개발자가 의사, 변호사를 제치고 소득 상위를 차지합니다.

    그만큼 경쟁력이 있고 돈이 돌기 때문에 연봉도 높습니다. 우리나라도 소프트웨어 경쟁력이 있고 돈이 되면 돈을 많이 주고라도 소프트웨어 개발자를 모셔올 겁니다.

    갈길이 멀죠.

    답글삭제
  7. 다년간 미국생활을 통해 깨달은 점은 소프트웨어에 대한 시민의식 수준입니다.

    게임하나도 구매를 통해 플레이하는 문화랑 일단 다운로드받고 시작하는 문화, 미국에서 불법다운로드했다는 말은 하는 건 나 마리화나 핀다는 말보다 더 꺼내기 어렵죠.

    하나의 소프트웨어를 만들때 들어간 그 인력의 노력과 자본을 소중히 여길줄아는 문화가 먼저 형성이 된다면

    기업문화역시 항상그래왔듯이 금새 따라갈겁니다.

    그래서 교육이 중요한거죠.

    답글삭제
  8. 상무님.
    오타 있어요-!
    "하드웨어는 만들어 놓고 쓰다가 망가지'만' 버리면 되지만 " 이라고 써졌어요.
    ^^

    답글삭제
  9. 위에서 하신 말씀에 전적으로 동감합니다. ^^

    조금 더 의견을 덧붙이자면...

    분석/설계 과정에서 정확하게 요구사항을 도출하지 못하거나 잘못된 해결책을 선택하는 경우도 많아서
    개발이 한참 진행된 후에 문제가 붉어지는 것도 소프트웨어가 실패하는 원인 중에 하나인 것 같습니다.

    그리고 필요 이상으로 개발 기간을 당겨서 잡는 것도 한 몫하구요. ^^;;;
    (무리하게 일정을 당기면 품질에 문제가 있는 것을 매번 경험하면서도 반복하는 건...
    문제가 있다고 생각합니다)

    좋은 글 잘 읽고 갑니다. ^^

    답글삭제