소프트웨어 회사가 처음에 작은 규모에서 시작할 때는 제품도 빨리 만들어 내고, 품질도 좋으며 생산성이 높습니다. 눈빛만 봐도 서로 무슨 생각을 하고 있는지 알고 생산성이 대단히 높습니다.
이런 과정을 거쳐서 회사가 점점 커져나갈 때 그 규모에 알맞은 준비를 하지 않으면 심각한 문제를 겪게 됩니다. 그럼 소프트웨어 회사가 기본적으로 갖춰야 할 것은 무엇일까요?
바로 조직, 프로세스, 기반시스템 그리고 사람과 개발문화입니다.
회사가 작을 때는 달랑 사람만 가지고 시작을 하곤 합니다.
이 때는 사람이 모든 Risk를 다 감당해야 하지만 작은 조직에서는 큰 문제가 되지 않습니다.
커뮤니케이션이 원활하고 모든 이슈들이 핸들링하기에 충분히 작기 때문입니다.
하지만 회사가 커지기 시작하면 상황은 달라집니다.
커뮤니케이션이 어려워지고, 이슈는 점점 늘어나며 조직이 점점 생산성이 떨어지게 됩니다.
그래서 회사는 조직, 프로세스, 기반시스템을 적절하게 갖춰나가야 하며 개발문화를 정착시키기 위한 노력을 해야 합니다. 그래서 개별 사람에 대한 의존도를 낮춰야 회사는 Risk가 줄어 들며 각 개발자나 직원들은 좀더 전문적이고 자신의 일에 집중하여 Performance를 더 낼 수 있게 됩니다.
수십, 수백명의 개발자를 보유한 조직에서 특정 개발자에 의존도가 너무 높다면 큰 문제가 아닐 수 없습니다.
사실 이러한 것들은 아주 소수일 때부터 준비가 되는 것이 더 바람직합니다. 그리고 회사의 규모에 알맞게 적절한 시점에 변모를 해야 합니다.
모자라는 것도 문제지만 과도한 것도 문제가 됩니다. 무리하게 복잡한 프로세스를 강요한다던지, 필요없는 조직으로 세분화가 된다던지 하면 차라리 없는 것만 못할 경우도 있습니다.
균형을 맞춰가면서 적절히 회사의 성장과 같이 회사의 내부 모습을 바꿔가는 것이 좋습니다.
모든 것은 때가 있듯이 그 시기를 놓치면 어려워집니다. 항상 준비를 해뒀다가 적절한 시점을 놓치지 않는 것도 매우 중요합니다. 실기는 실패보다 못한 경우가 많습니다.
구체적인 내용들은 계속 포트팅을 해나가도록 하겠습니다.
참 어려운 문제입니다. 사람으로 시작해서 사람이 계속해 갈수 밖에 없는 상황으로 계속해서 나가다가 어느순간 돌아보면 이게 아니다 싶은 경우가 발견되죠.
답글삭제시스템, 프로세스, 커뮤니케이션 참 중요한 부분인데 잘 안되는 부분이기도 하죠.
영원한 숙제...
돌이아빠님 안녕하세요.
답글삭제그래서 경험자나 전문가의 도움을 받는 것이 좋죠. 하지만 이것도 그러한 필요를 느껴야지만 시도를 하죠. 많은 회사는 그러한 것들을 인식하지 못한채 그냥 지나가는 경우가 많습니다.