개발자인 당신은 무엇을 만들고 있나요? 왜 그것을 만들고 있나요?
소프트웨어 개발자(Software Developer)라고 하면 소프트웨어를 개발하는 모든 사람을 통칭한다고 보는 게 더 적절하다고 봅니다. 하지만 대부분의 사람은 프로그래밍(혹은 코딩) 하는 사람을 떠올리게 마련이죠. 대중매체를 통해 흔히 묘사되는 것도 모니터에 코드 편집기를 띄워놓고 잔뜩 응시하는 모습인 것처럼 말이죠. 그런 사회적인 통념 속 모습처럼 처음에는 저도 프로그래밍이란 행위 그 자체에 재미를 느꼈고, 그 결과물이 동작하는 모습을 보면 뭔가 대단한 일을 한 것만 같아 흥분되고 뿌듯했었습니다. 솔직히 말해, 이 재밌는 것을 돈을 받으면서 하면 얼마나 좋을까 하는 막연한 생각으로 직업 개발자의 세계에 첫 발을 내디뎠던 것 같아요.
하지만 막상 급여를 받는 직업 개발자가 되어 보니 세상에 쓸모를 제공하는 무언가를 만들어 내지 못하면 직업으로써 지속될 수 없음을 깨닫게 되었지요. 즉, 제가 기여한 제품이 세상에서 가치를 인정받아야만 하는 숙명을 갖고 있다는 것을 알게 되었습니다. 세간에서는 이를 Product-Market-Fit(PMF)이라고도 부르는데요. 스타트업이 죽음의 깊은 골짜기(Death valley)에 떨어지기 일보 직전까지 어떻게든 발버둥 쳐서 찾아보려는 애증과도 같은 존재입니다. (지금 이 순간에도 열정을 불사르고 있는 창업자분들 화이팅입니다!)
누군가는 제품을 만드는 개발자만 개발자냐고 반문할지도 모르겠습니다. 물론 개발자도 다양한 기준으로 다양하게 분류해 볼수 있어요. 하지만 그 본질을 잘 들여다보면 결국 끝에는 제품과 연결되어 있다는 것을 알수 있습니다. 예를 들어 사내 개발자가 사용하는 내부 플랫폼을 개발하는 개발자는 제품과 상관이 없을까요? 결코 아닙니다. 제품 개발자의 생산성을 높이는 데 일조했기 때문에 제품을 만드는 데 기여했다고 볼 수 있습니다. 그래서 주고객이 개발자인 인프라나 플랫폼 엔지니어링도 제품적인 관점으로 운영하는 게 매우 중요합니다. 플랫폼 엔지니어링의 제품적 관점은 기회가 되면 나중에 따로 다뤄보겠습니다.
이렇듯 소프트웨어 개발 그 업(業)의 본질은 세상에 가치를 제공하는 제품을 만들고 계속 발전시키는 일입니다. 한 번 만들면 땡이 아닙니다. 계속 발전시켜야 합니다. 그래서 기능을 보다 효과적으로 구현하고 유지보수하기 위해 개발 역량을 키우고, 그 과정에서 효율성을 높이기 위해 반복되는 작업은 자동화하고 이왕이면 좋은 도구를 사용해 생산성을 높이는 것이죠. 그러므로 개발자 자신은 그저 요구사항을 구현하는 데 그치는 존재가 아님을 명확히 인지해야 합니다. 왜 애자일(Agile) 방법론에서 개발자를 창작자(Maker)라 부르겠습니까. 주도적으로 제품을 구현하고 더 낫게 만드는 창작자가 바로 개발자란 사실을 잊지 마세요. 제품적 사고를 지닌 개발자가 만든 제품이야 말로 세상에서 가치를 발하리라 믿습니다.
개발자인 당신은 무엇을 만들고 있나요? 왜 그것을 만들고 있나요?