듀오링고가 사용자의 성장에 다시금 불을 지핀 방법 - Part 1

듀오링고의 350% 성장의 뒷 이야기, 리더보드, 연속 학습, 알림, 그리고 혁신적인 그로스 모델

들어가기에 앞서

원문: Lenny’s Newsletter, How Duolingo reignited user growth

  • 원문은 Substack 에서 발행 중인 Lenny’s Newsletter 에 듀오링고의 전 CPO 였던 Jorge Mazal 이 기고한 글입니다.
  • 원문은 하나의 글로 이루어져 있지만 편의를 위해 여러 부분으로 나누었습니다.

몇 달 전 제가 참석한 작은 행사에서 듀오링고의 전 CPO 인 Jorge Mazal 이 듀오링고의 재성장에 관한 뒷이야기를 해준 적이 있습니다. 저는 그 이야기에 되었습니다. 이전까지 단 한 번도 그정도의 성장을 들어본 적이 없었거든요. 이미 성숙한 제품에서 4.5배의 성장이 있었고, 그게 여러 개의 자그마한 제품 변화가 이를 이끌었다고 했고, 혁신적인 그로스 모델 (the Growth Model) 에 뿌리를 두고 있으며, 매우 자세한 행동에 대해서 설명해주었습니다. 그래서 저는 Jorge 에게 더 많은 사람들에게 (그리고 더 깊게) 그 이야기를 들려줄 생각이 있느냐고 물었고, 이에 동의해준 것에 매우 기쁩니다. 많은 제품들이 이미 듀오링고로부터 영감을 얻고 있으며, 이 이야기 덕분에 그런 경향이 더 크게 생길 것이라고 기대합니다. 시작하겠습니다!

더 많은 정보를 얻고 싶으시면 LinkedInTwitter 에서 Jorge 를 팔로우 하세요.


jorge-picture

저는 2017년 말 제품 책임자 (Head of Product) 로 듀오링고에 합류하였습니다. 이미 듀오링고는 전세계에서 가장 다운로드 횟수가 높은 교육 앱이었고, 수억명의 사용자가 있었으며, “세상에서 가장 뛰어난 교육 방식을 개발하고, 모두가 이용할 수 있도록 하자” 는 미션을 충실히 지켜나가고 있었습니다. 하지만, 사용자의 성장 속도가 조금씩 느려지고 있었습니다. 2018년 중순, 일간 활성 사용자 (DAU) 의 연간 성장률은 한 자리 수였고, 듀오링고가 지난 몇 년간 폭발적으로 성장한 것을 감안한다면 문제가 있다고 여겨졌습니다. 이는 빠른 재무적 성장을 목이 빠져라 기다리고 있는 투자자들이 존재하는 스타트업들에게는 문제가 됩니다.

이 글에서 저는 저희의 초반 실패 사례를 공유하고, 다시금 성장할 수 있도록 도와준 첫 번째 큰 승리와 함께 리더보드를 런칭한 것, 푸시 알림에 다시 집중한 것, 그리고 “연속 (streak)” 기능을 최적화한 것에 대해 다루려고 합니다. 제품과 마케팅 조직의 다른 여러 노력들과 함께 이러한 것들이 저희로 하여금 지난 4년 동안 4.5배의 DAU 성장을 이끌게 해주었습니다. 강력한 오가닉 (organic) 사용자의 성장 덕분에 듀오링고는 2021년 IPO 를 성공적으로 진행할 수 있었습니다.

duolingo-dau-growth

이 글은 위에서 언급한 여정에 대해 깊게 다루려고 합니다. 이 글로 하여금 여러분들이 보다 빠르게 급격한 성장을 이룰 수 있기를 기원하겠습니다.

1단계: 게이미피케이션 (gamification) 늘리기

성장에 다시 불을 지피기 위한 저희의 첫 시도는 저희의 “밑빠진 독” 을 고치는 것 같은 리텐션을 높이는 데에 집중하는 것이었습니다. 저희는 신규 사용자 획득에 대한 리텐션에 집중하는 것에 우선 순위를 높게 뒀고, 그 이유는 당시 저희의 신규 획득 사용자의 대부분은 오가닉이었기 때문에 이를 급격하게 높이기 위해 당길 수 있는 레버가 없었기 때문입니다. 게다가, 저희들 중에는 게이미피케이션을 통해 리텐션을 개선할 수 있지 않을까 하는 의구심을 품은 사람들도 있었습니다. 저는 두 가지 이유로 이 접근법이 맞다고 느꼈는데, 첫 번째로는 듀오링고가 이미 성공적으로 홈 화면의 진도 시스템이나, 연속 학습, 그리고 업적 시스템과 같은 여러 게이미피케이션 메커니즘을 적용했기 때문이었습니다. 그리고 두 번째로는 그 당시의 최고의 게임들은 듀오링고 보다 훨씬 높은 리텐션을 보이고 있었으며, 저는 이것이 게이미피케이션으로 할 수 있는 최대치에 도달하지 않았다는 증거라고 생각했습니다.

duolingos-gimified-home-andachievements-pages

수석 디자이너와 함께 만든 짧은 발표 자료를 가지고, 저희는 나머지 의사 결정자들로부터 충분한 지지를 얻었고, 게이미피케이션 팀을 새로 만들었습니다. 이 팀의 구성원은 엔지니어링 매니저, 엔지니어, 디자이너, APM, 그리고 제가 있었습니다.

한 가지 작은 문제가 있었다면, 어떤 추가적인 게이미피케이션 메커니즘이 듀오링고에 적합할지 몰랐다는 것이었습니다.

그 당시 저희 팀은 꿈의 정원 (Gardenscapes) 라는 게임에 빠져있었는데, 캔디 크러시와 같은 매치3 (match-3; 3개의 동일한 그림을 맞추는) 퍼즐 게임이었습니다. 이 게임이 저희의 첫 번째 영감이 되어줬습니다.

a-gardenscapes-match-3-puzzle-level

꿈의 정원의 다양한 게임 요소들을 살펴보았지만, 저희가 무엇을 찾고 있었는지는 알지 못했습니다. 단지 꿈의 정원이 듀오링고 보다 중독성이 있었고, 몇 가지 비슷한 점이 있었다는 것만 찾았습니다. 3분 짜리 듀오링고 수업은 꿈의 정원의 매치3 레벨과 비슷하게 느껴졌고, 두 서비스 모두 사용자가 해당 세션의 끝마치는데까지 얼마나 남았는지를 시각적으로 보여주기 위한 장치를 제공해주었습니다. 하지만 꿈의 정원은 진행 상태바와 함께 남은 이동 횟수를 보여주었지만, 듀오링고에는 그게 없었습니다. 이러한 남은 이동 횟수는 사용자에게 제한이 있다는 것을 알려주는 장치였고, 게임을 플레이하는데 있어서 약간의 두려움과 긴박함을 더해주었습니다. 저희는 이 횟수 메커니즘을 듀오링고에도 적용해보기로 결정하였습니다. 사용자들이 수업을 진행하면서 오답을 말할 수 있는 횟수를 보여주었고, 이 횟수를 넘으면 수업을 다시 진행해야 하도록 만들었습니다.

duolingo-with-moves

이 기능을 추가하기 위해 저희 팀은 두 달 정도 작업을 했습니다. 앱 업데이트를 출시하고 나서 저는 예상했던대로의 완벽한 성공을 기다렸습니다. 우울하게도, 이 모든 노력의 결실은 전혀 없었습니다. 리텐션에도 변화가 없었고, DAU 도 오르지 않았습니다. 사용자들의 피드백 또한 전혀 없었습니다. 저는 기운이 빠진 채로 있었고, 저희 팀에 매우 큰 영향을 끼쳤습니다. 이 결과를 보고 팀 안에서는 빠르게 불화가 일어나기 시작했습니다. 이 아이디어를 이용해서 계속 반복해보자는 사람들도 있었고, 다른 아이디어로 바꿔보자는 사람들도 있었습니다. 팀은 거의 즉각적으로 (그리고 극적으로) 해체되었고, 이 아이디어도 폐기되었습니다. 꽤나 안 좋은 결과였습니다. 이 실패의 그나마 긍정적인 부분은 제가 회사의 문화와 제 개인적인 리더십 스타일을 배웠던 것인데, 이건 다른 글에서 다루기로 하겠습니다.

The first attempt to reignite growth through more gamification resulted in a dumpster fire.

2단계: 레퍼럴

게이미피케이션 작업 이후 번아웃을 느끼고, 저희는 리텐션을 개선하겠다는 것에서 완전히 벗어나서 신규 사용자를 모으는데 집중하는 획득팀 (the Acquisition Team) 이라는 제품 조직을 만들었습니다. 우버 (Uber) 는 사용자 획득에 일가견이 있었고, 레퍼럴 프로그램을 통해 크게 성장했다고 알려져 있었습니다. 여기에서 영감을 얻어서 우버와 비슷한 형태로 레퍼럴 프로그램을 만들기 시작했습니다. 혜택은 저희의 유료 구독 서비스인 슈퍼 듀오링고 (그 당시에는 듀오링고 플러스였습니다만) 의 한 달 무료 이용권이었습니다. 상당히 괜찮은 제안이었죠!

referral-program

해당 기능을 만들어서 배포했고, 두 번째 시도는 첫 번째보다는 더 성공적이길 바랐습니다. 하지만 신규 사용자는 겨우 3% 밖에 오르지 않았습니다. 긍정적이기는 했지만 저희에게 필요했던 급격한 성장과는 거리가 멀었습니다. 여전히 저희는 속도는 높이고, 더 열심히 몰아붙여서 리퍼럴 프로그램을 반복적으로 개선해보고, 도박도 해봤지만 소용 없었습니다.

팀에서는 새로운 기능들을 반복해서 추가해봤지만, 성장을 촉진하기 위해서는 다른 방법을 찾아야만 한다는 것이 명확해질 뿐이었습니다.

새로 그룹을 만들어야할 시기

길지 않았던 지난 몇 달 동안의 연속적인 실패를 겪고 나서 저는 제품에 있어서 더 나은 도박을 해야하는 시기라고 생각했습니다.

지금와서 돌이켜보면, 꿈의 정원의 이동 횟수를 보여주는 기능이 듀오링고에 먹히지 않았던 이유는 꽤나 명확했습니다. 꿈의 정원이라는 게임에서 모든 움직임은 전략적인 결정인 것처럼 느껴집니다. 왜냐하면 승리를 위해서는 다양한 장애물을 뛰어 넘어야하기 때문입니다. 하지만 듀오링고의 수업에서는 전략적인 의사 결정을 필요로 하지 않습니다. 대부분은 질문의 정답을 알거나, 모르거나 둘 중 하나입니다. 여기에는 전략적인 요소가 없기 때문에 듀오링고의 남은 횟수 기능은 지루하며 귀찮은 기능이었습니다. 듀오링고에 적절하지 않은 게이미피케이션 요소를 붙인 격이었죠. 저는 듀오링고와 꿈의 정원 사이의 유사함에만 매몰된 나머지, 숨겨져있던 차이가 중요하다는 것을 알아차리지 못했습니다.

그리고 저희의 레퍼럴 프로그램이 우버와 같은 성공을 이루지 못한 이유를 알아차리는데에도 그렇게 긴 기간이 필요하지도 않았습니다. 우버에서 레퍼럴이 잘 작동한 이유는 사용자들이 우버를 부를 때마다 지불해야하는 시스템 때문이었습니다. 무료 승차는 지속적으로 인센티브로 작동할 수 있었습니다. 듀오링고에서 저희는 사용자들에게 무료로 한 달짜리 슈퍼 듀오링고를 제공하는 것이 인센티브로 작동하길 바랐습니다. 하지만, 저희의 최고이자 가장 활발하게 이용하는 사용자들은 이미 슈퍼 듀오링고를 구독하고 있었으며, 이미 구독하고 있는 사용자들에게 한 달 무료 이용을 제공할 수 없었습니다. 즉, 최고의 사용자들에게 의존하는 저희의 전략이 실제로는 그들을 배제하고 있었다는 의미였죠.

이 두 상황 모두에서 저희는 다른 제품의 성공적인 기능을 빌려왔으나, 잘못된 방식으로 적용했습니다. 어떠한 맥락에서의 변화가 해당 기능의 성공에 미치는 영향의 크기를 제대로 파악하는데 실패했던 것입니다. 저는 이러한 시도들을 통해 다른 제품에서 아이디어를 보다 똑똑하게 빌려오는 방법에 대해 제대로 된 이해가 필요하다는 것을 깨달았습니다. 이제 저는 기능을 빌려올 때 다음과 같은 질문들을 던집니다.

  • 해당 제품에서 그 기능이 작동한 이유는 무엇인가?
  • 우리 제품에 적용한다면 그 기능은 성공할 것인가, 실패할 것인가? 제대로 적용할 수 있는가?
  • 우리의 상황에서 이 기능이 성공하기 위해서는 어떤 것을 바꾸어야 하는가?

즉, 저희는 다른 제품의 기능을 적용 (adopting) 하려는 경우, 저희 제품에 제대로 적응 (adapting) 시켰는지 판단을 할 필요가 있었습니다. 이러한 부분에만이라도 더 체계적이었다면, 저희가 추구하려고 했던 게이미피케이션 요소들이 훨씬 더 큰 변화를 만들어냈을지도 모르겠습니다. 그리고 리퍼럴에 집중해야한다는 이야기에 설득 되지도 않았을 거라 생각합니다. 저는 다음에는 훨씬 더 체계적인 시도를 할 수 있도록 만드는데 헌신했습니다. 저희의 결정이 데이터, 인사이트, 그리고 근본적인 원칙에 기반해야할 필요가 있었습니다.

2025

Back to top ↑

2023

영어랑 친해지는 방법

7 minute read

가장 좋은 방법은 당연히 영어 밖에 사용하지 못하는 환경에 강제로 처해지는 것이겠지만 그것이 어려우니…

Back to top ↑

2022

Back to top ↑

2020

사내 스터디에 대한 회고

2 minute read

회사 서비스의 추천 시스템을 개선하기 위해 팀 내에서 (아직까진 두 명이긴 하지만) 지난 두 달 동안 스터디를 진행했습니다. 얼마 전 두 번째 스터디가 끝났고 이에 대한 회고를 해보려고 합니다.

Back to top ↑

2019

GitHub Pages Jekyll Blog 에 MathJax 추가하기

3 minute read

이 글은 MathJax 를 GitHub Pages Jekyll blog 에 추가하는 방법을 다룬다. 이탤릭체로 된 부분은 본문에는 없고 제가 따라하면서 고치거나 추가한 부분이니 참고하세요.

GitHub 블로그에 Jupyter notebook 올리는 방법

4 minute read

여러분의 GitHub 블로그에 Jupyter notebook 을 바꿔서 올릴 수 있도록 도와줄 글입니다. 직접 바꾸는 방법은 1회성 글들을 위해서 추가했고, 변환 과정과 파일 이동, 그리고 여러분의 블로그에 올리는 것까지 한 번에 할 수 있는 자동화 bash 를 만드는 자세한 방법...

Back to top ↑