안녕하세요. 인포그랩 프로덕트 팀에서 백엔드 엔지니어로 근무하는 Andy입니다. 조직에서 성과를 내기 위해 목표를 설정하는 방법은 다양합니다. 그중에서도 OKR(목표·핵심 결과 지표) 방법론은 IT 기업에서 많이 활용하는 목표 설정 방법 중 하나인데요. 인포그랩도 도전적인 목표를 세워 유닛 활동을 효과적으로 조율하고, 비즈니스 성과를 향상하며, 멤버들의 역량을 높이고자 OKR 방법론을 사용합니다. 오늘 저는 OKR 방법론의 개념과 요건을 짚고, 소프트웨어 엔지니어의 OKR 방법론 활용 사례와 효과를 소개하려고 합니다.
OKR이란?
이미 많은 기업이 OKR 방법론을 도입해서 이 개념이 익숙한 분도 있겠지만 저처럼 생소한 분도 있을 거로 생각해요. OKR 방법론은 Objective(목표), Key Results(핵심 결과)의 약자로, 측정 가능한 팀 목표를 설정하고 추적하도록 돕는 목표 설정 방법론입니다. 이는 집중과 팀 간 조율, 향상된 업무 문화를 활용해 비즈니스 성과를 끌어내는 걸 지향하죠.
OKR 방법론의 프레임워크는 Objective, Key Results, Initiative로 이뤄지는데요. 마이크로소프트에 따르면, Objective는 팀과 조직에서 공유하는 목표로, 내용이 분명하고 동기를 부여합니다. Key Results는 도전적이지만 달성 가능한 성과로, 팀이 목표와 비교하여 측정할 수 있죠. Initiative는 Key Results에서 정의한 성과를 끌어낼 수 있는 핵심 활동과 조치고요.[1]
OKR 방법론에 따라 Objective와 Key Results를 정할 때, 아래 요건을 각각 충족해야 합니다.
Objective(목표) | Key Results(핵심 결과) |
---|---|
상위 목표와 정렬 | 목표 달성 여부를 확인할 수 있도록 설정 |
동기가 부여되도록 질적으로 표현 | 측정, 검증할 수 있도록 정함 |
반드시 성취하고 싶은 대상 설정 | 핵심 결과 달성=목표 실현 |
현재 비즈니스 단계를 넘어서는 도전적 목표 수립 | 구체적·양적으로 표현 |
목표 기간 설정 |
위 요건에 따라 Objective와 Key Results를 어떻게 설정할 수 있을까요? 저는 아래에 잘못 작성된 Objective, Key Result 예시를 가져왔는데요. 먼저 이 예시의 문제점을 짚은 다음, 올바른 Objective와 Key Result 예시를 살펴보겠습니다.
우리는 앱 로그 기능을 개발할 것이다. 그 결과, 회사 매출이 크게 향상될 것이다.
위 예시를 Objective와 Key Result로 구분하면 다음과 같습니다.
- Objective: 앱 로그 기능을 개발한다.
- Key Result: 회사 매출이 크게 향상된다.
앞서 살펴봤듯 Objective에는 기간과 도전적인 목표가 드러나야 하는데요. 위 Objective에는 도전적인 목표가 아닌 Initiative가 들어갔고, 목표 기간도 명시되지 않았죠. 또 Key Result에는 측정, 검증할 수 없는 내용이 담겼습니 다.
위 예시를 OKR 요건에 맞춰 수정했습니다.
우리는 상반기에 사용자 행동을 추적해서 이용 만족도를 높일 것이다. 그 결과, 앱 결제율을 지금보다 2배 더 높이고, 앱 만족도를 4.8점 이상 달성할 것이다.
위 예시를 Objective와 Key Result로 구분하면 다음과 같습니다.
- Objective: 상반기에 사용자 행동을 추적해서 이용 만족도를 높인다.
- Key Result: 앱 결제율이 지금보다 2배 더 높아지고, 앱 만족도는 4.8점 이상을 달성한다.
이제 Objective가 도전적으로 바뀌었습니다. 기존 예시에는 단순히 ‘해야 할 일(Initiative)’만 작성했다면 수정된 예시에는 성취 대상(“이용 만족도를 높인다”), 목표 기간(”상반기”)도 설정했죠. Key Result는 ‘앱 결제율 상승’과 ‘앱 만족도 증가’라는 결과를 측정, 검증하도록 수치로 변환되었습니다. 이렇게 Objective와 Key Result를 구체적으로 설정한 다음, ’앱 로그 기능 개발’을 Initiative로 설정하면 됩니다.
소프트웨어 엔지니어는 OKR로 어떻게 성장할까?
앞서 언급했듯 인포그랩은 OKR 방법론을 도입, 운영 중인데요. 조직의 목표 달성과 성과 창출을 촉진하기 위해 분기별 OKR을 설정하고, 이를 수행하는 유닛을 여러 개 운영합니다. 저는 ‘프로덕트 유닛’에 참여하고 있는데요. 프로덕트 유닛은 인포그랩의 교육 서비스인 ‘DevOps Expert Labs ’를 개선하기 위해 ‘1분기 내 지속 가능하고 확장 가능한 교육 플랫폼 구축’을 주제로 OKR을 수립했습니다.
저는 프로덕트 유닛 업무를 수행하면서 OKR 방법론을 자연스럽게 체득했는데요. 지금부터 소프트웨어 엔지니어로서 프로덕트 유닛에서 OKR 방법론에 따라 개발 업무를 수행한 과정과 결과를 설명하겠습니다.
프로덕트 유닛의 OKR 적용 방법
[그림 1] GitLab OKR 에픽[그림 2] GItLab Initiative 에픽
프로덕트 유닛은 “1분기 내 지속 가능하고 확장 가능한 교육 플랫폼 구축”을 Objective로 수립했습니다. Key Results는 ▲분기 내 온라인 수강생 100명 이상 확보 ▲플랫폼 사용자 수 50% 증가 ▲콘텐츠 에디터를 사용해 일관된 품질의 콘텐츠로 100% 전환 ▲사용자 피드백을 기반으로 플랫폼 업데이트 4회 수행 ▲실습을 위한 새로운 학습 도구와 기능 5개 이상 추가 ▲평균 서비스/콘텐츠 만족도 9점 이상 달성(10점 만점) ▲플랫폼 기술 인프라 99.9% 가동률 유지로 정했고요.
우리는 [그림 1]과 같이 GitLab의 에픽으로 Objective와 Key Results를 명확하게 작성하고 작업을 시작했습니다. 아울러 “콘텐츠 에디터로 일관적인 품질의 콘텐츠 제공”이라는 Initiative를 세웠고, 이를 GitLab 하위 에픽([그림 2] 참조)으로 선정하였습니다.
[그림 3] GitLab 기능 개발 에픽[그림 4] GitLab OKR Roadmap
이 Initiative를 해결하기 위해 개발하려는 큰 기능의 카테고리를 정리했고요. 각 카테고리를 완성하도록 [그림 3]과 같이 개발 이슈를 나열해 작업을 수행했습니다. 이 내용도 GitLab의 에픽으로 작성했고요. OKR을 명확하게 설정하니 이를 달성하는 데 필요한 기능의 개발 리스트를 정하기가 쉬웠어요. 한편, [그림 1]~[그림 3] 에픽은 [그림 4]와 같이 GitLab의 Roadmap으로 관리했습니다.
GitLab의 에픽, 이슈 기능에 OKR 방법론을 접목하여 사용하다 보니 개발을 위한 API를 나열하기가 수월했습니다. 목표를 달성하기 위해 개발할 API를 빼먹지 않고 꼼꼼하게 챙길 수 있었고요. 유닛이 같은 목표를 공유하며 협업하기에 편리했습니다.
[그림 5] 프로덕트 유닛의 슬랙 대화 내용특히 유닛의 OKR을 효율적으로 달성하려면 멤버들이 서로 업무 상황을 지속적으로 확인하며, 보조를 맞춰야 하는데요. 프로덕트 유닛은 멤버들이 서로 다른 공간에서 업무를 수행할 때가 많아 원격 환경에서도 신속하고 정확한 소통이 중요했습니다. 이에 매주 월요일 유닛 싱크 미팅을 원격으로 진행했는데요. 미팅에서는 서로 업무 상황을 공유하고 용어와 서비스 로직 등을 정의했습니다.
아울러 유닛 멤버들끼리 슬랙 메신저로 활발히 교류했는데요. 이 또한 서로 다른 공간에 있어도 같은 공간에 있는 것처럼 빠르게 소통하고, 업무 상황을 정확히 공유하며, 문의 사항을 신속히 해결하는 데 도움이 되었습니다. 비동기식 소통 방법도 짧은 시간 안에 효과적이고 효율적으로 업무를 수행하려는 노력이었죠. 저는 회사에 입사한 지 얼마 되지 않은 만큼 유닛 멤버들과 더 적극적으로 논의하고 아이디어를 내고자 애썼습니다.
성장 결과
DevOps Expert Labs 개선 작업은 인포그랩에서 제 첫 프로젝트였는데요. 프로덕트 유닛에서 이 업무를 시작할 때, 전 서비스 이해도가 낮은 상태였습니다. 프로덕트 유닛의 1분기 OKR을 달성하려면 저 또한 ‘소프트웨어 엔지니어로서 도전적으로 성장해야겠다’라고 판단했는데요. 저는 사내 ‘데일리 체크인/체크아웃’ 시스템을 활용해 개인 OKR을 매일 수립하고 성취하기 위해 노력했습니다. OKR 방법 론에 따라 업무를 수행하면서 저는 아래와 같은 성과를 달성했는데요.
- DevOps Expert Labs에 테스트 자동화 적용
- 의사소통 능력 향상: 내 생각과 작업을 적극 공유
사내 데일리 체크인/체크아웃 시스템으로 개인 OKR을 매일 관리하면서 ‘어떻게 이러한 성취를 거뒀는지’ 소개하겠습니다.
[그림 6] 데일리 체크인 내용[그림 7] 데일리 체크아웃 내용
[그림 6], [그림 7]은 인포그랩의 데일리 체크인/체크아웃 내용인데요. 데일리 체크인은 출근할 때 오늘 하루의 ‘도전적인 목표(Objective)’를 세우고, 그날 진행할 Initiative를 작성하는 프로세스입니다. Key Results가 빠진 걸로 볼 수도 있겠지만 Key Results를 도전적인 목표로 활용할 수도 있고요. 데일리 체크아웃은 퇴근할 때 오늘의 목표 달성 점수와 잘된 점, 잘 안된 점을 회고하고, 시도하거나 집중해야 할 일을 작성하는 프로세스입니다. 저는 데일리 체크인/체크아웃으로 매일 목표를 도전적으로 세우는 연습을 했어요.
여기서 잠깐! 프로덕트 유닛의 DevOps Expert Labs 개선 작업 이야기를 짚고 가려는데요. 기존 프로젝트에는 테스트 자동화 시스템이 구축되지 않았습니다. 프로덕트 유닛은 ‘지속 가능하고 확장 가능한 교육 플랫폼 구축’을 목표로, 유지보수와 신규 기능을 안정적으로 개발하고자 테스트 자동화를 도입하려고 했는데요. 이를 위해 pg-mem
이라는 새로운 모듈을 도입하는 테스트를 진행했습니다. 결론적으로 pg-mem은 '사용하기에 부적절하다'고 판단돼 실제 적용하지 않았는데요. 그래도 이는 NestJS 프로젝트에 적용 유무를 빠르게 결정하는 데 매우 도움이 되었죠. 데일리 체크인/체크아웃은 이러한 의사결정을 내리는 데 유익했고, 테스트 자동화를 더 올바른 방향으로 도입하는 데 유용했어요.
아울러 저는 데일리 체크인/체크아웃을 활용해 제 하루 목표를 '테스트 자동화로 DevOps Expert Labs를 지속 가능하고 확장 가능한 교육 플랫폼으로 구축'하려는 유닛의 Objective에 맞췄는데요. 데일리 체크인을 할 때, '백엔드 테스트 코드 빠르게 적용하기'라는 도전적인 목표를 세웠고요. 이 목표를 달성하기 위한 Initiative로 ▲NestJS Jest 샘플 코드 확인 ▲pg-mem 사용 방법 확인 ▲pg-mem 부적절 시 다른 방법 찾아보기를 설정했습니다.
저는 하루 목표를 달성하기 위해 제가 계획한 Initiative를 중심으로 시간을 더 효율적으로 쓰려고 애썼는데요. 다른 일로 새지 않고 목표에 집중할 수 있어서 좋았습니다. 목표가 도전적이다 보니 이를 100% 성취하지 못할 때도 있었는데요. 그래도 목표 달성에 필요한 Initiative에 몰입하면서 작업 수행 시 유의 사항을 빠르게 발견할 수 있었고요. 이는 목표 달성을 진척시키는 데 도움이 되었습니다.