개발자 그룹의 성과를 정량적으로 측정하는 것은 쉽지 않지만 고객과의 약속인 '제품 품질'과 '납기 기한'을 지키는 것은 무엇보다 중요합니다. 적절한 KPI를 활용하면 프로젝트의 진행 사항을 파악하고 개선하는데 도움이 됩니다.
소프트웨어 개발은 개발 대상의 특성과 인원수 등의 현장 상황에 따라서 매우 다른 형태를 띨 수 있고 적절한 KPI도 상황에 따라 달라집니다.
여기서는 소프트웨어 개발에서 자주 사용되고 있는 KPI(핵심 성과 지표)의 예시를 제시하고 있습니다. 이 KPI를 그대로 사용할 수도 있겠지만 가능하면 사용 목적을 이해하고 적절히 응용하는 것을 추천합니다.
목차
소프트웨어 개발에서 KPI를 사용할 때의 이점은?
프로그래머・개발자 관련 KPI는?
소프트웨어 개발에서 KPI를 사용할 때의 주의점은?
소프트웨어 개발에서 KPI를 사용할 때의 이점은?
일정에 쫓겨서 기능의 품질이 떨어지는 것을 예방할 수 있다
소프트웨어 개발 프로젝트에서 가장 중요한 것은 고객과 약속한 일정을 지키는 것입니다. 하지만 일정에 좇기게 되면 기한을 맞추기 위해서 제품의 기능이나 품질을 희생하게 되는 경우가 적지 않게 발생합니다.
KPI에는 개발 속도를 확인할 수 있는 지표나 문제 발생과 관련된 지표가 포함되기 때문에 일정과 기능의 품질을 일정 수준 이상으로 관리할 수 있습니다.
효과 측정이 가능해진다
개발한 시스템이나 공개한 기능이 정말로 효과가 있는지를 판단하는 것은 굉장히 중요한 부분입니다. 따라서 시스템을 개발한 후 효과를 측정할 수 있는 적절한 KPI를 설정하는 것이 좋습니다.
소프트웨어 개발의 목적이나 수단을 적절히 고려하고 초기 설계 단계부터 계측 가능한 KPI를 설정하는 것이 좋습니다.
한 번에 목적하던 효과를 달성하는 것은 현실적으로 어려운 일입니다. 따라서 실행과 수정 과정을 충분히 염두에 두고 계획을 세우는 것이 좋습니다.
KPI 설정을 통해서 해결 과제를 분명히 할 수 있다
KPI의 수는 가능한 적어야 하며 달성하려는 목표와 분명하게 이어져 있어야 합니다. KPI를 선정한다는 것은 해결해야 할 문제를 분명히 정의하는 과정이기도 합니다.
KPI가 설정되면 프로젝트의 방향이 명확해져서 생산효율을 높일 수 있습니다. 또한 프로젝트 성공을 위해서 꼭 필요한 품질, 비용, 일정을 균형 있게 고려할 수 있는 것도 큰 장점입니다.
프로그래머・개발자・IT 관련 KPI는?
시스템 개발에서 자주 활용되는 KPI에는 아래와 같은 것들이 있습니다.
개발자 생산성
개발자나 개발 팀의 효율성과 관련이 있는 KPI 범주입니다. 개발자가 소프트웨어 개발에 사용하는 시간과 작업의 효율을 측정해볼 수 있습니다.
- 작성 코드 줄 수
- 커밋 건수
- 배포 건수
- 배포 당 결함수 : 결함 건수 ÷ 배포 건수
- 가치 창출 수(Pull Request 병합 수) = 실제 개발 시간(= 총 업무 시간 -운영 시간 - 회의 시간 -사내 행사 시간) /작업 당 개발 시간 x 작업 당 Pull Request 수
- 오류 수
- 테스트 종료 건수
- 운영 테스트 수행률 : (운영 테스트 수행 건수 ÷ 운영 테스트 요청 건수) x 100
- 운영 테스트 성공률: (운영 테스트 성공 건수÷운영 테스트 요청 건수) x 100
- 변경 성공율: (서비스 별 당월 변경 건수 ÷ 서비스별 당월 변경 수행 건수) x 100
- 리드 타임: 아이디어에서 구현까지 걸리는 평균 시간 측정
- 견적 리드 타임: {(견적 완료일 - 접수일) ÷ 견적 완료 건수} x 100
- 처리량: 특정 기간 동안 완료된 기능, 작업, 버그 기타 활동 수를 측정
- 납기 일정 준수율: (배포일 준수 건수 ÷ 배포 건수) x 100
- 개발 일정 준수율 : (개발 완료일 준수 건수 ÷ 개발 완료 건수) x 100
문제 발견 및 해결
소프트웨어 개발은 매우 전략적이고 창의적인 작업입니다. 가능한 에러를 줄이기 위해서 노력을 하지만 문제는 언제나 발생하기 마련입니다. 따라서 문제를 얼마나 잘 해결하느냐 하는 것이 매우 중요합니다.
보통 문제 해결에만 초점을 맞추기 쉽지만 문제를 발견하지 못한다면 제품이 릴리즈 된 후 발견될 위험이 있기 때문에 문제의 발견 역시 매우 중요한 부분입니다.
- 문제 발견 수(오픈/미해결)
- 문제 해결 수(클로즈/해결)
- 문제 해결 비율 = (문제 발견 수 ÷ 문제 해결 수) * 100
- 코드 결함 감지 비율(DDP) = [(소프트웨어가 릴리즈 되기 전에 발견한 결함) ÷ (내부 테스트에서 발견한 결함 + 릴리즈 후 고객에 의해서 발견된 결함)] x 100
- 고객 문제 제기(Customer tickets): 소프트에어에 대한 고객 문제 제기 수가 줄어다는 것은 프로젝트의 질이 높아지는 것을 의미하며 매출 증가로 이어질 수 있습니다.
- 평균 회복 시간(MTTR) : 소프트웨어에 문제가 발생했을 때 해결까지 걸리는 평균 시간을 측정
- 평균 장애 인지 시간(MTTD): 시스템 상의 오작동을 찾는데 걸리는 평균 시간을 측정
- 실제 보안 사고 횟수: 시스템에서 무단 접근, 공개, 사용 수정 또는 정보 파괴가 일어난 횟수. 소프트웨어의 보안 범위를 설정하고 잠재적인 완화 조치를 제공하는데 도움이 되는 지표입니다.
- 애플리케이션 실행 실패율: (실패 건수 ÷ 요청 건수) x 100
- 취약성: 권한이 없는 사용자가 경계를 넘어 승인되지 않은 작업을 수행하기 위해 악용할 수 있는 시스템 상의 약점
- 코드 취약점 수: 소스 버전 별로 취약점의 수를 측정. 개수나 비율로 관리
- 유효성: 필요할 때 소프트웨어가 동작할 확률. (작동하는 시간 ÷ 작동해야 하는 시간) x 100. 유효성이 높은 제품은 소프트웨어 장애가 발생하더라도 오작동 부분을 분리하고 감소된 용량으로 필요한 작업을 마칠 수 있습니다. 반면 성능이 낮은 시스템은 충돌이 발생하면 전혀 동작하지 않게 됩니다.
- 장애 발생 점수 : 개별 장애 x 해당 장애의 등급 가중치
- 애플리케이션 리드타임 준수율: (기준 시간 내 처리 완료 건수 ÷ 요청 건수) x 100
- 기능 설계 품질율: {1 - ( 기능 및 설계 이슈 건수 ÷ 모든 이수 건수) } x 100
- 오류 수정 할당 비율 : (오류 수정 투입 시간 ÷ 전체 작업 시간) x 100
소프트웨어의 품질 관련 KPI
- 응답 시간: 요청이 서버로 전송된 시점과 서버에서 마지막 바이트가 수신되는 데 걸리는 시간 측정
- 사용 편의성 및 사용자 경험 측정항목: 소프트웨어가 고객의 기대를 충족하는지 판단하기 위한 지표들
- NPS(순수추천지수): 제품이나 서비스를 다른 사람에게 추천하려는 고객의 수를 파악
- 고객만족도 점수(CSAT): 제품을 경험한 고객에게 설문조사를 통해서 조사
- 고객 노력 점수(CES): 고객이 서비스나 제품을 이용할 때 얼마나 쉽거나 어려웠는지를 조사
- IT문의사항 처리율: (IT 문의 해결 건수 ÷ IT 문의 요청 건수) x 100
- 기능과 설계 품질율: [1 - (∑기능 및 설계 이슈) / (∑모든이슈)] *100
IT 제품 가용성 관련 KPI
- 사용자 계정 사용률 : [ 사용 중인 계정 ÷ 소유 계정 수량] * 100
- 서비스 가동률 : (서비스 시간 - 장애시간) / 기간 (Hr)
- 월별 액티브 사용자(Monthly Active Users, MAU) : 이전 달 활동한 유저수
- 일별 액티브 사용자(Daily Active Users, DAU) : 이전 날 활동한 유저수
- 고착도 : 일별 액티브 유저 ÷ 월별 액티브 유저
- 이탈률: (시작 시점의 사용 간격 - 끝나는 시점의 사용 간격) ÷ 시작 시점의 사용 간격
- 사용자당 시스템 사용 비용: (IT월 비용 ÷ Σ월사용자수) * 100
IT 인력 관련 KPI
- 인력별 IT실무 년수: 담당업무 경력 년수 합/ IT인원수
프로그래머・개발자 관련 KPI 설정 시 주의할 점
품질, 기능, 일정이라는 핵심 가치에 부합한다
좋은 KPI는 소프트웨어 개발 프로젝트에서 목표로 하고 있는 일정과 기능, 품질을 지키는데 도움이 되는 지표들입니다. 따라서 개별 KPI가 목표에 부합하는지 확인이 필요합니다.
효과나 성과로 이어져야 한다
KPI는 프로젝트가 목표로 하고 있는 일정, 기능, 품질의 상태를 실질적으로 보여주는 지표여야 합니다. 만약 KPI를 개선했는데도 효과나 성과로 이어지지 않는다면 그 KPI는 실질적인 의미가 없습니다.
밸런스를 갖추어야 한다
KPI의 관점이 한쪽으로 기울어질 경우 프로젝트가 잘못된 방향으로 진행될 위험이 있습니다. 따라서 다양한 관점이 반영되어야 하고 필요한 요소를 빠짐없이 포함하고 있는 것이 중요합니다.
책임 소재가 분명해야 한다
KPI를 관리할 책임이 누구에게 있는지 분명하지 않은 경우 실패할 가능성이 매우 높습니다. 책임 소재를 분명히 해서 실질적인 운용을 목표로 하는 것이 중요합니다.
SMART를 의식해서 KPI 작성한다
KPI를 설정할 때 아래의 SMART를 의식하면 도움이 됩니다.
명확하고 측청 가능하고 관련성이 높고 기한이 있는 지표가 좋습니다. 또한 KPI의 목표가 달성 가능할 때 직원들의 의욕을 높일 수 있습니다.
Specific(명확성)
Measurable(측정 가능)
Achievable(달성 가능)
Related(관련성)
Time-bounded(기한 설정)
KPI의 수를 가능한 줄인다
측정해야 할 KPI가 너무 넒으면 그것만으로 업무량이 늘어나게 됩니다. KPI의 측정과 관리에는 최소한의 노력만 투자할 수 있도록 가장 핵심적인 지표들로 한정해야 합니다.
측정 결과가 실질적인 개선으로 이어져야 한다
측정 결과를 통해서 어떤 점이 부족한지를 파악할 수 있어야 하고 실질적으로 개선을 하기 위한 액션으로 이어질 수 있어야 합니다.
만약 KPI를 측정했지만 그것이 행동으로 옮겨지기 어려운 KPI라면 조정이 필요하다는 의미입니다. 소프트웨어 프로젝트의 핵심 목표인 일정, 품질, 기능을 향상할 수 있는 행동으로 이어질 수 있는 KPI를 선정하는 것이 중요합니다.
이상으로 소프트웨어 개발 프로젝트에서 활용할 수 있는 KPI와 주요 포인트에 대해서 살펴보았습니다. 큰 팀이 목표로 하고 있는 소프트웨어의 기능과 품질 그리고 일정을 지키기 위해서는 KPI를 설정하는 것이 중요합니다.
하지만 KPI가 현장을 제대로 반영하지 못할 경우는 측정을 위한 측정으로 전략해서 개발자들의 업무 부담만 높일 수 있습니다.
또한 소프트웨어 개발 작업은 창의적인 작업입니다. 뛰어난 프로그래머일수록 자신들을 충분히 신뢰하고 권한을 맡겨줄 때 더 큰 능력을 발휘하는 경우가 많습니다. 따라서 KPI를 설정할 때는 개발자들과 충분히 의견을 교환해서 KPI에 대한 이해를 공유하는 것이 중요합니다.
함께 보면 좋은 글