코드스테이츠 춘식이 개발기

이전보다 성장하는 어드미션

Jinhwan Kim
7 min readDec 16, 2021

개요

제가 속해 있는 어드미션팀은 “부트캠프선발” 을 담당하고 있습니다.

다른 교육 기업들도 하는 고민이지만, WEWIN으로 비롯된 비즈니스 모델로 인해. 특히 코드스테이츠의 어드미션팀은 교육의 효과 (취업)가 가장 극대화 될 수 있는 지원자들을 선발해야합니다.

즉. 선발이라는 프로덕트를 운영한다를 넘어서서 개선한다. 라는 statement가 있는 상황인데요.

조금 더 구체적으로는

  1. 현재 지원중인 부트캠프의 지원현황 (선발이 잘 굴러가는지)
  2. 심사, 교육 참여 이후의 수강생들의 현황 (선발을 잘 했는지)

라는 2개의 문제로 볼 수 있습니다.

이번 글에서는 2개의 문제 중. 첫번째 문제의 일부를 해결하기 위해 “춘식이”라는 봇을 개발한 과정과 결과를 소개합니다.

이미지는 구글에서 줍줍…

잘 굴러 가고 있는지

라는 문제라고 위에서 작성했던 내용은 “운영”이라는 의미로 생각하면 됩니다.

아무튼 이는 궁극적으로

  1. 더 잘 굴러가게 하자 (선발 프로세스 운영 효율화)
  2. 굴러가는 데 문제가 있으면 확인해서 해결하자 (프로세스 모니터링)

로 다시 나눠볼 수 있습니다.

이 중 1번 문제는 내년 상반기쯤에 결과를 글로 공유 할 수 있을 것 같고, 이번 글에서는 2번. “프로세스 모니터링”에 대해서 다루겠습니다.

이전의 모니터링을 위해서 저희가 했던 것은 크게 2가지였습니다.

  1. [요청이 들어오면] “어드민페이지” 에 들어가서 상황 확인.

2. [Daily] 사내 슬랙의 “borahae” 채널에 업데이트 되는 현황 확인.

이미 있는데 왜 새로 만들었을까?

라는 의문이 들었을텐데요.

엄밀히 말하면, 확인 요청이 들어온 상태에서의 액션은 모니터링과는 거리가 있었고, 무엇보다 매우 수동적인 방법이었습니다.

2번째로 있던 기존 슬랙앱의 경우 마케팅팀에서 요청한 내용을. 개발팀에서 구현해 준 것이기 때문에 저희 선발팀에서 필요한 내용들은 포함 되어 있지 않았고, 무엇보다 업데이트나 개발, 유지보수가 개발팀에 의해서만 되기 때문에 관련 작업에 디펜던시가 크게 발생하였습니다.

다행히 저희 팀에는 개발 백그라운드가 있고, 데이터를 다루는 것에 흥미를 가진 크루가 있어서. 어떤 데이터를 봐야하는지, 어떤 툴을 사용하는 지 등의 아이디어만 주어지면 이 아이디어를 현실로 만들어 낼 수 있었기에 춘식이를 개발하기로 결정했습니다.

무엇을 봐야 할까?

이전의 모니터링 작업 중 많은 부분을 차지했던 [요청]의 대부분은 다음과 같은 문장으로 요약 됩니다.

우리 부트캠프 모집에 문제가 있나요?

이는

  • 선발의 특정 단계에 에러가 있는지,
  • 남은 지원기간 대비 지원자 수는 어떠한지,
  • 이슈로 인한 지원 취소,
  • 이전 기수대비 지원 추이가 어떠한지

등등의 여러 질문과 이를 구성하는 세부 메트릭으로 자세히 나눠지고, 기존에 Daily 로 보여지던 지원자, 최종 완료수비율 만으로는 보기 어려워서 “수동”으로 추가적인 정리 작업이 필요했습니다.

그리고 어쨌든 이를 매일 자동으로 모니터링하는 “슬랙앱”을 만들기 위해 고려했던 수치는 이러합니다.

주의, 회사 특유의 단어가 일부 있어서 공용적으로 쓰이는 용어와는 다를 수 있음

그리고 최종 결과물은 (중 일부분만) 아래 그림과 같습니다.

잭팟이 터진 블록체인 부트캠프 3기 마지막 날. 구체적 지표는 가림

(그날 그날의 지표에 따라서 🟢 가 🔴 나, 🟡 로 바뀌기도 합니다.)

어떻게 만들까?

(애칭) “춘식이”를 만들게 된 가장 큰 계기는 ENG팀을 거치는 비효율이었는데요. 새로운 앱을 만들면서 사내 ENG의 인프라를 타게 된다면 이는 다시 아무 의미가 없어지는 결과를 내었기 때문에 제일 먼저 고려했던 것은 자동으로 굴려주는 서버 였습니다.

이를 위해서 여러가지 방법을 고민했었지만 핵심 질문은 “Slack에 공유 를 위해서 서버를 따로 구축해야 하는 가” 였고, “하루에 몇초”를 위해서 서버를 구축하는 것은 심하게 가성비가 떨어진다고 판단 했습니다.

그래서 Github에서 무료로 제공하는 Github Action을 활용해서 데이터를 정리, 결과를 Slack Api에 뿌려주는 방법으로 구성을 했습니다.

(이렇게 결정하게 된 배경 중 하나는 이전에도 Github action을 이용해서 가벼운 작업을 해본 경험이 있기 때문이기도 합니다.)

그리고 지극히 개인적인 취향으로 관련 코드작업은 R로 진행하였습니다. (Python 으로도 가능하지만 저는 CRAN에 R package도 올려본 사람이라 ㅎ)

그림은 간단한데, 노가다가 정말 많이 필요함

코드를 비롯한 아주 구체적인 내용 공개는 어렵지만, 정말 꽤 많은 맨땅에 헤딩을 했는데… 이 과정에 참여했던 모두에게 큰 성장 경험이 되었습니다.

처절한 고민의 흔적들…😢

So what

춘식이가 정상적으로 매일 저희 채널에 띄워지고 있기 때문에 저희 선발팀에서는 매일매일 중요한 상황을 자연스럽고 쉽게 인지 할 수 있게 되었는데요.

이제는 선발과정을 어떻게 설계해야 “초록불”을 띄울수 있을까?

같은 더 깊은 고민에도 답을 찾고 있습니다.

한편,

borahae에서는 제공 되지 않았던 이전기수의 추이를 보면서 변화가 생기는 이유 등을 분석하고 (가령 SAFFY와 같은 대규모 경쟁 교육) 이에 대해 미리 액션을 고민 할 수 있게 되었습니다.

그리고 개인적으로 정말 중요하게 생각해서 했던 작업은.

실제 이러한 것을 만든 히스토리와 결과물을 설명하는 문서를 사내 위키에 작성한 것입니다.

이를 통해서 개발에 참여 하지 않은 다른 사람들도 더 쉽게 맥락을 이해 할 수 있기도 하지만, 조금 더 중요한 것은 개발에 참여 했던 사람들이 다시 한번 글을 정리하며 돌아 볼 수 있었기 때문입니다.

실제 작성된 문서 일부 갈무리

정리

저희는 팀에서 하는 업무를 잘 굴리는 것 이상으로, 잘 하는 것을 고민했는데요. 이한 결과의 일부로 춘식이라는 “자동 프로세스 모니터링” 을 개발했고 실제로도 그 효과를 체감하고 있습니다.

그렇지만 단순히 개발 결과물을 만든 것 이상으로,

  • 문제를 인지하고
  • 현재 상황을 파악하고
  • 개선점을 찾아
  • 개선한다

데이터 기반 의사결정 과정의 일부를 춘식이를 만들며 함께 이뤄냈다는 점에서 저는 더 큰 만족을 느낀 것도 사실입니다.

물론 프로세스 모니터링을 넘어서 선발 결과 자동 요약 / 리뷰, 주관식 카테고리 자동 그룹화, 슬랙봇을 넘어서는 대시보드 개발 등 저희가 풀 수 있는 문제들이 여전히 많이 남아있습니다. 그리고 언젠가는 이러한 것들도 다시 공유 될 수 있기를 기대하며 글을 마칩니다.

관련해서 궁금한 점이 있으시면. 나 같이 작업 했던 분에게 메일 주셔도 좋습니다.

읽어주셔서 감사합니다 😄.

--

--

No responses yet