소프트웨어 공학은 가르칠 수 없다고 합니다.
단지, 시행착오를 통해서 배우던지, 경험자에게 배우는 방법 밖에 없다고 합니다.
그래서 소프트웨어를 잘 개발하는 방법을 배우는 가장 좋은 방법은 잘 되어 있는 소프트웨어 회사에 들어가서 배우는 것입니다. 잘 되어 있는 회사에서 소프트웨어를 개발하다 보면 자연스럽게 몸에 익히게 되는 겁니다.
소프트웨어 개발이 전체적으로 어떻게 돌아가는지 자연스럽게 몸에 익히게 되며, 각 기능 조직은 어떻게 구분이 되며, 개발에 꼭 필요한 기반 시스템은 어떤 것들이 있으며 어떻게 사용하는지 배우게 됩니다. 따로 공부한다는 생각으로 배우는 것이 아니며 자연스럽게 몸에 익게 됩니다.
그런데 우리의 문제는 여기에 있습니다. 잘 되어 있는 소프트웨어 회사가 별로 없다는 겁니다.
제 컨설팅 경험에 의하면 확실합니다. 제 책에 제안하고 있는 소프트웨어 개발 역량 평가표로 평가를 해보면 20점 만점에서 10점이 안되는 소프트웨어 회사가 95%도 넘는 다는 것입니다.
즉, 학교 시험 기준으로 50점도 안되는 낙제점수를 받은 학생이 95%이상이라는 겁니다.
이러니, 잘 되어 있는 회사에 들어가서 제대로 배우기는 로또 당첨과 비슷하죠.
잘 갖춰져 있는 소프트웨어 회사도 처음부터 잘 되어 있었던 것은 아닙니다. 뭐든지 처음은 있었겠지요.
뭐가 먼저 일까요? 회사가 먼저 바뀌었을까요? 개발자가 먼저 바뀌었을까요?
이는 닭이 먼저냐? 달걀이 먼저냐? 이슈와 비슷합니다. 이 논쟁은 답이 나와 있기는 합니다. 전문가들은 달걀이 먼저라고 합니다. 왜냐하면 달걀이 더 단순하기 때문이라고 합니다. 진화의 돌연변이가 달걀에서 일어 났고, 그 달걀에서 닭의 모습을 한 조류가 나오게 된 것이지요.
소프트웨어 회사도 수십년 동안 수많은 개발자와 소프트웨어 공학 전문가들이 소프트웨어 회사들을 조금씩 효율적으로 바꿔 나간 겁니다. 그래서 지금의 모습에 이르게 된 것입니다.
그럼, 우리 회사도 효율적인 소프트웨어로 변하고 싶을 때 달걀 전략을 사용해야 할까요? 즉 의식있는 개발자가 회사를 아주 조금씩 서서히 바꿔나가야 할까요?
생물의 진화에는 아주 오랜 시간이 걸렸고, 그 와중에 수많은 종이 멸종을 했듯이 달걀 전략은 많은 시간이 필요하며 그 사이에 회사가 망할지도 모릅니다. 멸종된 수많은 종들과 같이요.
이 때는 닭의 전략이 좀더 효과적입니다. 회사 자체를 먼저 바꿔야 합니다. 그리고 개발자들이 이를 따라오게 해야 합니다. 조직과 프로세스와 시스템을 회사에 알맞게 바꿔 놓고 개발자들을 교육시키고 훈련시켜야 합니다.
밑바닥에서부터의 조용한 개혁을 꿈꾸고 있는 개발자가 계시다면 그 한계를 깨닫고 경영층을 먼저 설득하시기 바랍니다. 그래야 멀지 않은 미래에 효과적인 조직으로 탈바꿈한 개발조직에서 일을 하실 수 있을 겁니다.