개발 조직은 돈 먹는 하마다
이전에 작성한 글 개발 조직을 만들기 어렵다에 의어 새로이 개발조직을 만들고 성과를 내는 것에 대한 글을 작성해 보려 한다.
회사의 사업에 가치로 기여하고 지속적으로 높은 경쟁력을 유지하여 회사의 성장에 기여하는 것
이 좋은 개발 조직이라고 생각한다.
좋은 개발 조직을 만들고 유지하기 위해서는 어떤 것이 필요할까?
소프트웨어 개발의 본질은 중 하나는 소프트해야 한다는 것이라고 생각한다. 하드웨어, 펌웨어와 달리 소프트웨어는 최초 개발 이후에 변경이 용이해야 한다. 그래야 소프트한 것이다. 소프트웨어 비용의 80% 이상이 최초 개발 이후 요구사항 추가/변경으로 인한 변경 비용이라고 한다.
소프트웨어 비용의 80%에 해당하는 변경 비용을 낮추기 위한 역량은 학교에서 졸업해서 바로 갖춰지기 어렵다. 나의 성장을 도와줄 수 있는 선배들과 서비스를 운영(요구사항 변경 및 안정화 등)을 하면서 경험을 통해 배워야 하는 것이 많기 때문이다. 경험을 하고, 관련된 이론적 공부를 하면 제대로 나의 것이 되는 것 같다.
따라서 좋은 개발 조직을 유지하기 위해서는 서로의 배움(지식, 경험 등을 통한)의 공유를 통해 상호 성장하는 것이 중요하다고 생각한다. 내가 잘한 것을 공유하여 다른 개발자들에게 도움을 주고, 나의 실패담을 공유하여 다른 개발자들이 동일한 실패를 하지 않도록 공유하는 것이 필요하다.
깃헙 커밋 로그, PR Description, 이슈트래커, 위키 등에 검색을 하면 개발 조직이 쌓은 자산이 쉽게 찾을 수 있어야 한다(추적가능성).
피쳐 브랜치를 만들고 개발을 하다가 릴리즈 브랜치에서 머지하고 검증하고 배포를 해야 하는 큰 조직도 있을 것이다. 또 우리 회사처럼 매일 커밋한 코드를 배포(Continuous Delivery)하는 조직도 있을 것이다.
코드리뷰의 가치를 경험할 수 있는 기회, 짝프로그래밍, 몹프로그래밍 등의 가치를 경험할 수 있는 기회도 있어야 할 것이다.
이런 프로세스, 관습(practice) 등을 만들 수 있도록 방향성을 제시하고, 리드하고 지원할 수 있는 뭔가가 있어야 한다. 그래야 회사의 좋은 개발 문화가 정립된다.
나는 그것이 회사의 개발조직 전체를 리드하는 개발리더의 역할이라고 본다.
소프트웨어를 둘러싼 환경이 급변하면서 많은 오프라인 기업들이 온라인으로 전환하고 있다. 아이폰이 나오기 전에는 Daum, 네이버처럼 자체 IDC를 가지고 있는 큰 회사들만 온라인 서비스를 출시할 수 있었던 것 같다. 하지만 아이폰이 나오면서 모바일 앱의 시대가 되면서는 서버가 없어도 서비스를 할 수 있게 되었고, AWS를 비롯한 퍼블릭 클라우드도 활성화되면서 보다 많은 회사들이 온라인으로 전환할 수 있게 되었다.
이런 하드웨어 측면은 기하급적으로 증가했지만 인력은 어떠했나? SW 개발자들이 기하급수적으로 증가했을까? 그렇지 않다고 생각한다.
특히 코로나 시절에는 온라인에 대한 투자가 증가하면서 개발자에 대한 수요는 엄청나게 증가했다.
경영진은 어떻게 해야 할까? 그냥 높은 처우로 좋은 개발리더를 채용하고 그분에게 위임하면 될까?
처음 어느 조직을 맡게 되면 구성원들을 파악해야 한다. 어느 구성원은 가치만 설명해 주면 어떻게 해야 할지? 언제, 어떻게 공유할지를 스스로 잘하는 분이어서 위임을 하면 되는 분도 있고, 어떤 구성원은 아직은 위임보다는 주기적으로 관리를 해야 하는 분도 있다.
경영진도 마찬가지다. 위임, 일임할 수 있다는 신뢰가 생기기 전에는 관리해야 한다고 생각한다. 채용한 리더분이 부족해서 관리해야 한다는 것이 아니라 서로 신뢰할 수 있는 상태가 될 때까지 조율하는 과정이라고 생각한다. 히지만 개발을 잘 모른다고 처음부터 맹목적으로 신뢰한다면 실패할 가능성이 높다고 생각하고, 그런 경우를 몇 차례 목격했다.
이를 위해 경영진은 개발 업무, 개발자, 개발리더 등에 대한 이해에 노력을 해야 한다. 내가 만난 어느 대기업의 사장님은 채용 목적으로 개발리더분들을 만나서 식사를 하셨다. 조금 좋은 음식으로, 조금 길게 식사를 하며 여러 가지 질의응답을 하신다. 채용으로 연결되지 않더라도 이 시간을 통해서 배우시는 것 같았다. 이 분처럼 개발 조직이 있는 회사의 경영진은 개발을 이해하려는 노력을 해야 한다고 생각한다. 이러한 노력 없이 "개발 조직은 돈 먹는 하마다"라고 말한다면 직무유기가 아닌가 생각된다.
개발자 채용을 위해 코딩 테스트를 할 때 알고리즘 문제는 채점은 쉽지만 변별력이 높지는 않다고 생각한다.
내가 알고 있는 개발자 채용 방법의 가장 좋은 사례 중 하나는 하루 동안 후보자 3인과 직원 1인이 함께 팀을 이뤄서 회사에 필요한 기능을 개발해 보면서 후보자들이 어떻게 개발하는지를 보고 결정하는 것이었다.
노력이 많이 드는 방법이다. 하지만 매우 변별력이 높은 방법이라고 생각한다.
경영진이 좋은 개발 조직을 만들기 리더를 채용할 때도 마찬가지인 것 같다.
학력, 경력 등 서류 위주로 채용을 한다면 채점은 쉬울지 몰라도 좋은 결과를 얻기 힘들 수도 있을 것 같다.
회사에서 필요한 개발자들을 대표할 수 있는 경력이 있고, 그들을 회사와 목표와 정렬하여 한 방향으로 나아갈 수 있도록 하는 개발리더를 채용하는 것이 개발조직에 도움이 될 것이다.
우리 회사의 개발자들의 대부분은 서비스 개발을 위한 앱, 프런트, 백엔드 개발자인데, CTO는 AI 박사 학위를 받고 저명한 연구소에서 업적을 쌓은 분을 채용한다면 어떨까? 이 분이 팀원, 팀장을 경험해 보고 임원급인 CTO를 한다면 전공이 조금 다르더라도 구성원들에게 공감할 수 있을 것이다. 하지만 업체에서 팀원, 팀장 등의 경험 없이 임원으로 오셨다면 공감하기 어려울 것이고, 그러면 구성원들도 그 분과 방향을 맞춰서 시너지를 내기 어려울 것이다(여기서 공감은 같은 주제에 대해서 같은 것을 생각하는 것을 의미한다. 경험을 통해서 갖게 되는...).
경영진은 회사, 서비스, 조직에 필요한 리더를 알아볼 수 있는 안목이 있어야 한다고 생각한다.
자신이 할 수 있으면 제일 좋고, 아니면 위임할 수 있는 믿을만한 사람이 있어야 한다고 생각한다.
그런 리더를 채용한 후에 경영진은 그 개발리더를 통해 개발에 대한 이해를 지속적으로 높여야 한다.
경영진이 비즈니스에 가치로 기여하는 개발조직을 갖추기 위해서는 개발, 개발자, 개발조직, 개발문화 등에 대한 이해를 높여야 한다고 생각한다.
"개발 조직은 돈 먹는 하마다"라는 글을 보며 평소 가지고 있던 생각을 정리해 봤다. 어쩌면 이 글에 있는 나의 생각이 내 협소한 지식과 경험에 편협된 글일지도 모르겠다. SW가 급격하게 많은 곳에 사용되면서 SW 개발자, 조직도 급격하게 수요가 증가했지만 기하급수적으로 성장이 가능한 하드웨어와 달리 소프트웨어 영역은 투자, 인내, 노력이 필요한 것 같다.