Best Reviewer
Best Reviewer#
우리 회사(삼성전자)에는 S/W직군들을 위한 3가지 인증 제도가 있다. 하나는 개인의 알고리즘 역량을 평가하는 S/W Certificate, 다른 하나는 개인의 설계 능력을 평가하는 Architect, 마지막으로 S/W 개발 문화를 전파하는 Code Review Agent이다.
S/W Certificate는 흔히 써티라고 부르는데, S/W직군으로 입사하게 되면 Advanced(Adv) 등급으로 인정받고, 그 이후는 시험을 통해 Professional(Pro), Expert(Ex)등급을 딸 수 있다. 원래 Intermidate(Im) 등급도 있었는데, 입사 시험 성적이 저조한 경우 Adv등급보다 낮은 Im등급을 부여받았다. 그런데 요즘은 Im등급이 없어졌다. 애초에 Adv.등급 수준이 안되면, 뽑지 않는 것으로 알고 있다. 이 시험은 4시간동안 하나의 문제를 푼다.
Adv시험은 DFS, BFS만 알면 풀 수 있는 수준이다. 다만, 당연히 DFS, BFS 알고리즘을 구현하라는 식으로 나오지 않고, 모든 경우의 수를 다 해봐야 하는 문제가 나온다. PS(Problem Solving)를 한번도 접해보지 않은 전공자라면, 최소 한 달 정도는 연습해야 할 수준이긴 하다. 하지만 이건 내가 입사했을 때 당시의 얘기고, 요즘은 이 정도도 못하는 전산 전공자를 찾기는 쉽지 않을 것 같다.
Pro시험은 Codeforces Div.2의 C번 문제 수준 정도로 생각된다. 다만, 난이도가 들쭉날쭉한 편이고, 구현량은 Div.2 C보다 좀 더 되는 편이다. 내가 시험 보던 17년도에는 STL을 쓸 수 없어서 stdio.h만 include 가능했는데, 요즘은 STL도 다 허용해주고 있고, 인사에서 실적 채우기를 시작했는지 난이도도 꽤 낮아졌다.(인증자가 폭팔적으로 늘어남) 사실 요즘 Pro등급 보유자들을 보면, 알고리즘을 아는 수준이라고 얘기하기엔 좀 민망한 실력의 사람들이 많다. 요즘은 전산 전공자에 S직군인데 Pro등급 없는 사람 찾기가 더 힘들다. (내 주변엔 한 명도 없다.)
Expert시험은 일반적은 PS 문제들과 결이 좀 다르다. Pro까지는 P문제만 등장하는데, Expert는 NP문제만 나온다. 즉, 최적해를 다항시간 안에 구할 수 없으므로 최적해에 누가 누가 더 근사한 해를 주어진 시간안에 구하느냐가 관건이다. 시험이 두 달에 한번 있어서 1년에 6번만 시험을 볼 수 있는데, DS부문 기준으로 매 시험마다 0-2명 정도를 뽑으니.. 거의 뽑히는 사람이 없다. 올해만 해도 합격자가 없었던 시험이 2-3번 있었던 것으로 알고 있고, 회사에서 시험 본 사람들 중 가장 잘 풀어야 하니 답이 없긴하다.
그럼에도 불구하고, 나는 17년도에 입사해서 Pro취득 이후 계속해서 Expert에 도전했다. 하지만 공부는 하지 않고 거의 시험만 보고 있어서 계속 낙방중이다. 언젠가는 취득하겠지란 생각으로 계속 시험을 보다가 최근들어 제대로 해보려고 육아 퇴근 이후 책상 앞에 앉아 문제를 풀고 있다. (지금도 새벽 4시가 다되어 가고 있다..)
Expert를 따려면 일반적인 PS문제들보다 Expert 기출을 풀어야 하는데, Expert 기출은 구하기도 어렵고, 보통, 문제 풀게 되면 이를 해결하기까지 상당히 오랜 시간이 걸려서 그냥 풀고 싶은 PS 문제들을 풀고 있다. 지금은 꾸준히 하는 것을 목표로 해서 종만북(알고리즘 문제해결 전략)을 처음부터 다시 보고 있다. 1권을 거의 다 본 상태인데, 9년 전에 이 책을 처음 접할 때보다 훨씬 많은 것들을 깨닫는 중인 것 같다. 그 때는 몰랐는데, 지금 다시 보니 새롭게 알게 되는 것들이 참 많다.
아무튼 이렇게 Expert만 준비하고 있던 중, 미루고 미루던 Best Reviewer 인증을 시도하게 되었다. 이 인증 제도는 Code Review Agent 코스웍(CRA 교육)을 수료하고 여러가지 현업 과제를 완성하면 Best Reviewer라고 인증을 해주는데, Expert Programmer와 같이 메신저 옆에 “Best Reviewer”라는 칭호를 붙여준다. 목적은 부서내 S/W개발 문화, 코드리뷰 문화를 전파하는데 있다. CRA 교육은 써티의 Pro자격이 있어야 지원 가능하다.
이 인증 제도가 처음 나왔을 땐, 부서에서 부서장이 지정해준 사람들만 교육을 받고 인증을 받을 수 있었는데, 21년도인가 22년도부터 인증을 원하는 누구나 직접 지원할 수 있는 형태로 바뀌었다. 난 그 이후에 따야지 따야지 생각만 하다가 업무에 치여 시작할 엄두를 못 내고 있었는데, 이러다 계속 미루기만 할 것 같아서 25년도 초에 이 인증 제도에 도전하겠다고 파트장님께 미리 말씀드렸다.
내가 이 인증 과정에 직접 참여하기 전까진 이 CRA 교육을 다녀온 사람들은 전부 Best Reviewer인증을 받았어서 나는 그냥 가면 다 달아주는 칭호인 줄 알았다. 하지만 막상 교육을 다녀오고 현업 과제를 수행해보니 너무 너무 힘들고 어려웠다. 특히 현업과 병행하면서 과제를 하는 것이 쉽지 않았고, 7월 중순부터 교육을 시작으로 마지막 면접까지 오는데 다섯 달이나 걸렸다.
상세 과정은 다음과 같다.
3주 CRA 교육기간 동안 3번의 필기시험(Clean Code, Refactoring, TDD)과 한 번의 팀 프로젝트 → 1차 현업과제(본인 개발 PR 3건, 코드 리뷰 PR 3건 & 보고서 제출 필요) → 도전과제(하루짜리 실기시험) → 2차 현업과제(1차와 다르게 ”혁신과제”까지 포함 & 보고서 제출 필요) → 최종 보고서 제출(임원 결재) → 면접(임원 면접)
과제에서 가장 중요한건 혁신과제인듯 한데, 난 혁신과제로 GitHub Actions로 CI/CD 파이프라인을 구축했다. 본 블로그에 있는 Jenkins나 GitHub Actions 사용법은 이 혁신과제를 수행하면서 배웠던 내용 중 일부를 조금 정리한 것이다.
나는 이 혁신 과제를 수행하면서 과제에 그치지 않고, 실제로 사용될 수 있게 하려고 상당히 노력했다. 나는 그래도 남들과 다르다고, 남들과 다르게 과제용이 아니라 실제로 현업을 바꿨다 얘기하고 싶었다. 그래서 최종 보고서를 제출하고 나서도 현업에 적용될 수 있게 노력했는데, 파트장님이 모든 예외 상황들을 다 고려해야 현업에 적용할 수 있다며 사실상 반대를 하고 나섰고, 현업도 더 이상 이런 것들을 생각할 수 없을 만큼 바빠져서 현재는 좀 흐지부지 된 상태가 됐다. 그래도 내년엔 어떻게든 짬을 내서 바꿔볼 생각이다.
이 인증 과정을 한마디로 표현하면 아마추어 마라톤과 같다고 생각한다. 아마추어 마라톤을 완주하면 메달은 다 주듯, 끝까지 CRA 과정을 진행하고 나면 Best Reviewer 인증은 다 해주는 느낌이지만, 3주간 교육을 제외한 과제 시간이 너무 고통스럽다.
그래도 따고 나니 상당히 뿌듯하다. S/W직군 절반은 다 있는 칭호라 Expert만큼 대단한 칭호는 아니지만, 어쨌든 메신저에 표시되는 칭호가 생겨 좋았고, 100만원도 받았다. 그리고 올해 자격증이라도 하나 건진 느낌이 들어서 좋은 것도 있었던 것 같다.
내년엔 Associate Architect에도 도전해 볼 생각이다. Expert도 내년엔 제발 좀 땄으면 좋겠다.