교육 시스템을 만들다가, 동네 공부방을 생각했다
저는 SI 업계에서 공공·교육 분야 시스템을 만들어 왔습니다. 발주처는 기관이고 사용자는 수만 명입니다. 요구사항 정의서가 수백 쪽이라 화면 하나를 바꾸려면 협의를 몇 번 거쳐야 하고, 예산은 억 단위로 잡힙니다. 그 일 자체가 나쁘다는 뜻은 아닙니다. 규모가 있으니 그만한 절차가 필요하고 그 안에서 배운 것도 많습니다.
다만 오래 하다 보니 한 가지가 계속 걸렸습니다. 제가 만드는 도구는 그 도구를 가장 필요로 할 법한 사람들에게 닿지 않았습니다.
경력을 문서로 정리하다 알게 된 것
작년 말부터 올해 초까지, 제 경력을 처음부터 끝까지 문서로 정리할 일이 있었습니다. 어떤 프로젝트에 언제 들어가 무엇을 맡았는지, 그때 실제로 손으로 만든 산출물이 무엇인지를 연도별로 적어 내려갔습니다. 이력서를 고치는 것과는 조금 다른 작업이었습니다. 이력서는 잘 보이게 쓰는 문서지만 그때 만든 건 사실만 적었습니다.
다 적고 나서 보니 목록이 한쪽으로 확실히 기울어 있었습니다. 학습 콘텐츠를 다루는 화면, 수강 이력을 쌓는 테이블, 진도와 이수를 판정하는 로직. 제가 가장 오래, 가장 많이 만진 것이 그쪽이었습니다. 스스로는 "이것저것 해 온 개발자"라고 생각했는데, 기록은 다르게 말하고 있었습니다.
그러면 이 경험으로 혼자 만들 수 있는 것이 무엇일까. 그 질문에서 시작했습니다.
진도 관리가 큰 곳에만 있는 이유
기관용 학습 시스템에는 보통 진도 관리가 들어갑니다. 누가 어느 영상을 어디까지 봤는지, 이수 조건을 채웠는지를 시스템이 판정합니다. 당연한 기능처럼 보입니다. 다만 그 당연함은 그 시스템에 돈과 인력이 들어간 결과입니다.
제 주변의 작은 공부방과 1인 강사에게 같은 것이 있는지 물어보면 답은 대체로 비슷했습니다. 유튜브에 영상을 올려 링크를 보내고 봤는지는 아이에게 묻거나 부모에게 묻습니다. 다음 수업 때 질문을 던져 보고 대답을 못 하면 그때 짐작합니다. 확인할 방법이 없어서 확인을 포기한 상태였습니다.
상용 학습 시스템이 없는 것도 아닙니다. 그런데 열 명 남짓 가르치는 교습소가 쓰기에는 가격이 맞지 않고 기능이 너무 많습니다. 학사일정과 게시판과 과제 제출과 출결이 전부 들어 있는 시스템을 도입해서, 정작 쓰는 기능은 "영상 다 봤는지 확인" 하나뿐인 상황이 됩니다. 무료 도구를 조합해 보려 해도 진도 확인이라는 조각이 어디에도 없습니다.
문제를 한 문장으로 줄이기
여러 이야기를 듣고 나서 제품 가설을 한 문장으로 줄였습니다.
"영상 강의를 부정 없이 끝까지 보게 만들고, 봤다는 사실을 강사가 믿을 수 있게 한다."
이 문장에 들어가지 않는 것은 만들지 않기로 했습니다. 출결도, 학원비 결제도, 학부모 알림장도, 커뮤니티도 넣지 않습니다. 혼자 만드는 서비스에서 기능 목록이 늘어나는 건 대체로 좋은 신호가 아닙니다. 다 만들다 만 상태로 오래 머물게 됩니다.
그리고 이 한 문장이 사실은 기술적으로 가장 어려운 지점이라는 것도 처음부터 알았습니다. "영상을 다 봤다"를 브라우저가 알려주는 대로 믿으면 시스템은 아무것도 보장하지 못합니다. 학생이 재생 속도를 올리거나, 막대를 끝으로 끌거나, 개발자 도구로 값 하나만 바꿔도 이수가 찍힙니다. 이걸 실질적으로 막지 못하면 나머지 기능은 의미가 없습니다. 반대로 이것만 제대로 되면, 나머지가 조금 투박해도 쓸 이유가 생깁니다.
혼자 만들 수 있는 크기로 자르기
시작하면서 스스로 못 박은 제약이 몇 가지 있습니다.
쓰는 기술은 전부 이미 쓰고 있던 것으로 한정했습니다. 새 언어나 새 프레임워크를 이 프로젝트에서 배우지 않기로 했습니다. 배우고 싶은 마음과 완성하고 싶은 마음은 같이 갈 때도 있지만, 혼자 하는 일에서는 대체로 부딪힙니다.
예상 규모를 먼저 못 박았습니다. 강사 수십에서 수백 명, 동시 접속 수십 명. 이 숫자를 넘어서는 최적화는 하지 않기로 했습니다. 트래픽이 그만큼 올 때 고민해도 늦지 않습니다. 오지 않을 부하를 위해 구조를 복잡하게 만드는 건 그 자체로 결함이라고 봤습니다.
서버는 집에 있는 미니PC를 씁니다. 매달 고정비가 나가는 순간 "본전을 뽑아야 한다"는 압박이 생기고 그 압박은 대체로 제품을 이상한 방향으로 밀어붙입니다. 전기요금 수준의 비용이라면 결과가 어떻든 계속 만들 수 있습니다.
그래서 지금
그렇게 StudyDesk를 만들기 시작했습니다. 이름 그대로 공부하는 책상 하나를 놓아주는 정도의 서비스를 목표로 했습니다.
돌아보면 아이디어는 번뜩임에서 나오지 않았습니다. 제가 이미 오래 해 온 일을 사실대로 적어 보니, 그 목록 안에 답이 들어 있었던 쪽에 가깝습니다. 새로 배워야 할 것을 찾기보다 이미 할 줄 아는 것을 다르게 배치하는 편이 혼자 만드는 사람에게는 훨씬 현실적인 출발점이었습니다.
다음 글에서는 이 한 문장을 실제 구조로 옮기면서 무엇을 만들지 않기로 했는지를 적겠습니다.