토이 프로젝트🤖 주도 학습+성장

송요창
10 min readJul 11, 2022

--

백엔드 스터디나 프론트엔드 스쿨 라이브세션에서 많이 받는 질문이 있다.

추천해주실 책, 공부법 등 다양한 학습방법을 알려주실 수 있으신가요?

이런 질문을 받으면 먼저 자신만의 학습 방법을 찾으라고 한다. 영어 학습을 예로들면

  • 영화 한 편을 통째로 외우기
  • 실전 120문장 익히기

등 여러가지 학습 방법이 있다. 어떤게 자신에게 맞는지 찾아서 실천하라고 한다.

그리고 빼놓지 않고 토이 프로젝트 추천한다. 오늘은 왜 이토록 토이 프로젝트를 추천하는지 이야기해보겠다.

아무 생각없이 `토이`란 말에 홀려 책상 위에 있는 레고 사진찍어봤다. 썸네일 잘 부탁해.

토이 프로젝트의 장점

입력이 아닌 인출하는 학습법

어떻게 공부할 것인가에 많은 사람이 선호하는 학습 방법으로 교재를 반복해서 읽기집중적으로 연습하기가 나온다. 책에서는 이 방식이 가장 생산성이 떨어지는 학습 전략이라고 나온다. 노력을 많이 들여 배운 지식일수록 더 깊이 남고 오래 가는데 앞선 방식은 노력이 별로 들지 않기때문이다.

우리는 이 방법이 얼마나 비효율적인지 최소 12년이상 경험을 통해 기억하고 있다.

책에서 인출연습을 효율적인 학습 전략이라고 소개한다. 기억 속에서 사실이나 개념, 사건을 떠올리는건데 쉬운 예로 플래시 카드를 생각하면 된다. 한마디로 익힌걸 계속 밖으로 꺼내보는거다.

학습과학의 이해와 적용(12) — <원리 11> ‘능동적 인출 연습’이 ‘수동적 복습’보다 효과적이고, ‘분산학습’이 ‘집중학습’보다 효과적이다 글에서 발췌

토이 프로젝트를 만드는 과정을 생각해보면 만들려고하는걸 정의하고 생각나는대로 만들어간다. 그러다가 막히는 부분이 있으면 이전에 사용했던 코드를 뒤져보거나 인터넷을 검색한다. 찾아낸 부분을 적용해보고 버그가 있으면 이렇게 저렇게 수정하면서 계속 만든다.

같은걸 수없이 검색한 흔적이 남아있기도하다.

제작과정에서 끝없이 뭔가를 인출하는 과정이 반복된다. 자연히 누군가의 강의를 듣는거보다 훨씬 품이 많이든다. 이후에 비슷한 걸 만들 때 학습한 내용이 잘 떠오른다.

적은 자원으로 빠른 테스트

한 달에 수억 매출이나는 서비스를 개발하고 운영하고 있다면 새로운 걸 시도해볼 때 조심스러울 수 밖에 없다. 아무리 잘된 장애 대응 프로세스가 있어도 뭔가 잘못 시도했다가 갑자기 매출이 급감할만한 장애를 몇번 일으키면 사람인지라 자연히 자신감이 떨어질 수 밖에 없지 않나.

이럴 때 토이 프로젝트가 돌파구가 될 수 있다. 직장 동료나 학우들이 쓸만한 서비스를 만들고 거기에 테스트하고 싶은 새로운 라이브러리나 프레임워크, 개발 방법론 등을 도입해보는거다. 설령 망해도 리소스가 크게 들지 않고 매출에도 타격이 없다. 잘 된다면 운영에도 적용해보자며 사용한 예를 말할 수 있고, 자신의 기술 블로그에 글도 적을 수 있어 좋다. 운영에 적용하지 못해도 기술 블로그 글이나 GitHub 레포지토리는 남으니 이득이다.

10년 전 MobiDIX란 회사에서 게임 클라이언트 프로그래머로 일할때부터 지금까지 이 방법은 내게 아주 유효했다. 당시에 Unity로 게임을 개발할 때 ngui란 라이브러리가 굉장히 인기있었다. 이를 더 잘 다뤄보려고 따로 프로젝트를 만들고 학습 했었던 기억이 난다.

이게 이어져서 악평만 남은 책까지 쓸 수 있는 기회를 얻었다.

php만 다루다가 node.js로 게임용 웹서버를 만들 때도 마찬가지였다. 일단 토이 프로젝트로 조그맣게 테스트해보는거다. 그러다가 여력이 생기면 글을 쓰기도 해서 기술 블로그가 풍성해졌다.

구직/이직을 위한 재료

토이 프로젝트를 진행하면 반드시 어딘가에 홍보를 한다. 글을 쓰거나 웹 페이지를 만들어서 소셜 미디어, 커뮤니티 등에 홍보하게 될텐데 이 산출물이 구직이나 이직 과정에서 도움이 된다.

이력서를 작성할 때

  • xx회사, aa 프로젝트 진행하였고 ㄴㄴ에 기여했습니다
  • aa 프로젝트 회고나 성과 등이 담긴 글을 링크

어떤게 면접관에게 더 많은 정보를 남길 수 있겠나? 잘 작성된 글은 정보에 목마른 면접관에게 가뭄에 단비같은 존재임을 기억하자.

특히나 처음 구직하는 입장이라면 무얼 학습했는지 기술만 나열하는거보다 배운걸로 어떤걸 만들었고 무엇을 느꼈는지 혹은 만들고 운영하면서 만난 문제가 무엇이고 어떻게 해결했는지 등이 적혀있다면 면접장에서 할 말이 풍부할거다. 면접장에서 같은 개념을 설명해도 글로만 읽은 사람과 써본사람은 표현부터 다르다.

주제 선정 및 실행 방법

여기까지 읽고나서 토이 프로젝트가 너무 좋고 꼭 해보고 싶은데 할만한 주제가 없다며 실망하고 있다면 안심해도 좋다. 바로 시작할 수 있을 만큼 널린게 토이 프로젝트 주제다. 어떻게 주제를 찾고 실행하는지 알아보자.

주위를 살펴라

토이 프로젝트로 전국민 혹은 전세계가 쓸만한 서비스를 만들 수 있지만 보통 이러긴 쉽지 않다. 대신 단 한 명이라도 좋으니 주변에서 반드시 써줄만한 사람이 쓸 수 있는 제품을 만든다고 생각하고 살펴보자.

여기서 단 한 명이라도 써줄 사람이 중요하다. 개🐶떡같은 제품이라도 만들어서 사용자에게 써보게 한 뒤 피드백을 받아야 어느 부분을 개선할지 무엇이 불편한지 더 알아볼 수 있다. 그러면서 피드백 받은 부분을 수정하기 위해 새로운 기술을 습득하기도하고 키워드를 발견하기도 한다.

직장 생활을 하고 있다면 살펴볼 사람이 많아서 매우 유리하다. 우리팀 사람들을 살펴보거나 CS, HR, DevRel 등 다양한 부서에서 겪는 어려움을 확인할 수 있다. 대게 직접적으로 협업하는 조직이 아니라도 이런이런 부분 어려우시냐고 묻고 요래오래 도와줄 수 있다고하면 마다하는 사람 못 봤다.

부장님, 팀장님이 네 일이나 잘하라고 말하는 곳이라면 회사 밖에서 사용자를 찾아보자.

조직의 크기와 무관하게 어디나 일손이 부족하기 마련이다. 자연히 뭔가 개발해서 쉽게 할 수 있는 일을 사람이 복잡하게 처리하는 경우가 많으니까 어디에 무슨 문제가 있는지 잘 살펴보자.

사용자가 동료나 지인이라면 피드백 받을 확률이 매우 높으니 꼭 주위를 살펴보자.

작은 제품을 빠르게 만들기

문제를 겪고 있는 사람을 찾았다면 그 사람의 문제를 해결해 줄 수 있는 제품을 생각하고 만들어보면 된다. 이때 주의해야할 점은 욕망을 억제해서 작고 작은 제품을 만드는거다.

만들다보면 욕심이 생겨서 이기능 저기능 넣는데 사용자는 그런 기능 필요없을 수 있다. 또 이렇게되면 개발 기간이 길어져서 에너지만 낭비되고 결과가 안나올 수 있다. 그러니 완벽보다 완성을 추구하면서 빠르게 제품을 사용자의 품에 안겨줄 수 있도록 하자.

어쨌든 사용자 손에 제품이 들어간 다음부터는 피드백을 받을 수 있을테니 이를 가지고 다음에 뭘 더 고치거나 추가할지 가늠해볼 수 있다.

일단 만든다

멋진 아이디어를 실현할 완벽한 기획을 만든 뒤 개발하려고 하지 말자. 사람마다 다르겠지만 내 경우는 기획처럼 만든 경험이 별로 없다. 만들면서 수정하고 주변에 보여주고 아니다 싶으면 방향을 틀면서 개발을 이어갔다.

기획하면서 혹은 생각만하면서 너무 많은 시간을 보내면 정작 개발할 시간만 줄어든다. 일단 GitHub에 레포지토리라도 만든 뒤 README.md라도 적고 hello world라도 화면에 출력되도록 해보자. 빈 껍데기만 있는 레포지토리가 불쌍해서라도 다음 개발이 시작된다.

물론 많은 레포지토리는 미완성인체로 버려지곤한다. 그래서 더욱 일단 만들어야한다. 장인으로 불리는 도공도 하나의 작품을 얻으려고 수많은 도자기를 깨버리는데 하물며 우리가 매번 성공할리 없다. 수많은 미완의 레포지토리를 밟고 결과물이 나온다. 그러니 일단 만들자.

토이 프로젝트 사례 소개

왜 좋은지, 어떻게하는지 소개했으니 사례를 살펴보자.

워크로그

2018년 7월 1일부터 300인 이상 규모 기업인 경우 주 40시간(최대 52시간) 근로 를 해야됐다. 업무 집중도 향상과 함께 업무 시간을 명시해야하는 일이 생겨 만든 토이 프로젝트다.

동료 몇 명만 이용하고 말 서비스였는데 CX서비스실 실장님이 전격적으로 실 전체가 사용하도록 지시한 덕분에 사용자가 늘어났다. 입소문과 홍보를 통해 사용자가 꾸준히 늘어서 300명이상이 이용했다.

개발 조직의 절반 이상이 사용했으며, 지원 부서 등에서도 사용했다.

react.js는 그대로 썼지만 after.js나 razzle 같은 도구를 만져볼 수 있어서 재미있었고, 하반기 인사 평가에 업무 외에도 이런 이런 기여를 했다고 적을 수 있어서 뿌듯했던 기억이 난다.

yalive

코로나가 드리닥치기 전 2019년 12월. 사내 연말행사용으로 라이브 퀴즈 서비스를 만들었다.

Culture&Grow팀에서 일하던 민서님과 사부작 거리면서 일하기 시작해서 같은팀 동료 3명과 함께 개발/운영해서 최종 행사까지 잘 치뤘다. 총 참여자 329명과 무리없이 행사를 진행할 수 있었다.

이정도만 적어도 개발이 가능하다?

Firebase에 작은 과금을 하고 300명이상 사용자를 받았던 터라 기분이 아주 좋았다.

Tech야,놀자

프로그래머에게 토이 프로젝트는 보통 프로그래밍으로 만들어내는걸 떠올리곤 하지만 그외에도 다양한 분야가 있다. 예를들면 밋업도 토이 프로젝트다.

2019년에 2회 진행하고 사라진 Tech야,놀자는 함께 일하는 동료를 알리고 싶어서 만든 밋업이다. 발표자리가 없다면 만들어서라도 홍보하고 싶어 일을 벌렸는데 정말 많은 동료들의 도움을 받아 행사를 치뤘다.

2019년 7월 Tech야,놀자를 물심양면 도와준 동료들과 함께

전에는 경험할 수 없던 부분을 많이 경험할 수 있어 더 없이 좋았다. 그리고 이 행사는 내 이직에도 큰 행운으로 작용했다. 지금 회사로 이직할 때 면접관 중 한 분이 이 행사를 참여하여 내 발표를 듣고 좋은 인상을 받았다고 나중에 얘기해주었다.

우아한선물하기

우아한형제들로 이직하고 처음 사내에서 만든 토이 프로젝트가 우아한선물하기였다. 전사 구성원이 참여하는 사내 행사를 앞두고 피플실의 요청으로 제작한 제품이다. 지금은 피플실 외에도 인사팀, 조직장 등 다양한 구성원이 사용하고 있다. 이 프로젝트 덕분에 우아콘2021에서 발표도 할 수 있었다.

지금 가장 많이 사용하는 프로필 사진도 이 발표로 건졌다.

맺는말

과연 몇 명이나 여기까지 읽을지 모르겠지만 한 분이라도 토이 프로젝트를 시작할 용기가 생겼으면 좋겠다. 부디 먼 훗날 어느 글에서 이 글 때문에 토이 프로젝트 시작했고 시작하길 잘했다는 소리를 들어보기 희망한다.

--

--

송요창

👨‍👩‍👧‍👦, 우아한형제들의 잡스런 프로그래머, 강의 및 스터디 정보(쿠폰도!) 👉https://litt.ly/totuworld