7월부터 두 달간 TainAI의 인턴십 프로그램인 Labs에 참여하였다.
이 두 달은 나의 개발 인생에서 하나의 중요한 체크포인트가 될 만큼, 많은 것을 배우고 성장할 수 있었던 시간이었다. 그 경험을 정리하여 공유하고자 한다.
살아있는 프로덕트
예전에 ‘프로덕트를 잘 만드는 개발자가 되고 싶다’라고 글을 쓴 적이 있다.
하지만 지금 돌아보면, 어떤 프로덕트를 어떻게 잘 만들 것인가에 대한 고민은 많이 부족하였던 것 같다.
그저 단순히 ‘제품을 잘 만들고 싶다’는 생각만 하였을 뿐, 그것을 진지하게 파고든 적은 거의 없었다.
이번 두 달간의 인턴십 동안, 그 고민에 깊이 몰입할 수 있는 시간을 가질 수 있었다.
매일같이 프로덕트에 대해 생각하고, 어떻게 하면 더 좋은 사용자 경험을 만들 수 있을까를 끊임없이 고민하면서, 자연스럽게 성장할 수 있었다.
인턴십 초기에 여러 실험 프로젝트 중 하나를 선택할 수 있었고, 나는 고민 끝에 ‘러비큐피드’라는 프로덕트를 맡고 싶다고 하였다.
러비큐피드가 해결하고자 하는 문제 설명을 들었을 때, 꼭 한번 직접 해결해보고 싶은 문제라고 느꼈다. 이 경험을 더 자연스럽게 만들 수 있는 방법을 직접 고민해보고자 하였다.
러비큐피드는 ‘캐릭터와의 대화’라는 러비더비의 핵심 경험을 확장하여, 유저가 찾고자하는 캐릭터를 더 쉽게 발견할 수 있도록 돕는 서비스였다.
이 프로덕트가 궁극적으로 해결하고자 하였던 문제는 다음과 같았다:
- 사용자들은 수많은 캐릭터 중에서 자신의 이상형과 잘 맞는 캐릭터를 고르기 어려워하였다
- 외형이나 성격에 대해 모호한 기억이나 막연한 취향만 있는 경우가 많았다
- 기존 캐릭터 검색은 키워드 기반이라, 이름이나 시리즈를 정확히 알아야만 검색이 가능하였다
→ 즉, "내가 뭘 좋아하는지도 잘 모르겠는데, 어떻게 검색해야 하지?"라는 문제를 해결해야 하였다.
프로젝트는 개발자 1명(인턴) 또는 개발자 1명(인턴)와 디자이너 1명(인턴)으로 인턴들로 구성된 소규모 팀 단위로 진행되었고, 대표님과의 정기적인 싱크를 통해 피드백을 받고, 프로덕트의 방향성과 세부 기능들을 함께 다듬어 나갔다.
인턴십 기간 동안 대표님과 주기적인 워크숍과 싱크를 진행하며, 좋은 프로덕트를 만들기 위한 여러 개념들을 배울 수 있었다.
그중에서도 가장 인상 깊었던 개념은 바로 ‘살아있는 프로덕트’였다.
처음에는 다소 추상적으로 느껴졌으나, 반복적으로 개념을 접하고 직접 고민하면서 점차 이해할 수 있게 되었다.
내가 이해한 ‘살아있는 프로덕트’란, 다음과 같다.
유저의 반응과 맥락에 따라 유기적으로 변화하고, 자연스럽게 손이 가는 프로덕트를 말한다. 기능 하나만 눈에 띄는 것이 아니라, 전체가 조화롭게 연결되어 사용자가 ‘편안하다’, ‘익숙하다’고 느끼게 되는 것이다. 작은 스텝들을 밟아 나가며, 유저의 피드백을 바탕으로 하나하나 살아 움직이듯 만들어지는 과정을 의미한다. 그렇게 완성된 프로덕트는 결국 유저에게도 ‘살아있다’는 인상을 주게 된다.
‘살아있는 프로덕트’라는 개념에 대해 더 깊이 이해하고 싶다면, 대표님이 작성하신 이 글을 참고하면 좋다.
이 개념과 더불어, 내 생각에 가장 큰 전환점을 준 대표님의 가르침은 다음과 같았다.
“유저와 끊임없이 피드백을 주고받으며 하나씩 만들어 나가는 프로덕트와, 몇 달 동안 외부와 단절된 채 머릿속으로만 구상한 프로덕트는, 유저가 느끼는 완성도와 생동감에서 큰 차이가 난다.”
이 말이 머릿속에 깊이 박혔다. 그 차이는 ‘살아있음’의 정도에서 비롯된다. 상상을 해보았다. 두 방식이 실제 유저에게 얼마나 다른 인상을 줄까? 상상만으로도 유저가 느끼는 경험의 차이는 어마어마하게 다를거라고 생각이 되었다.
또 하나 중요한 점은, 유저는 언제나 ‘단계적으로’ 프로덕트를 경험한다는 사실이다. 하나의 스텝에서 다음 스텝으로 자연스럽게 넘어가는 흐름이 중요한데, 처음부터 네 단계 전체를 상상해 완성해버리면 유저는 첫 단계에서부터 길을 잃을 수 있다는 것이다.
결국, 각 단계마다 유저의 피드백을 반영해 유기적으로 만들어진 프로덕트가 훨씬 더 ‘살아있는’ 제품이라는 점을 실감하게 되었다.
이러한 관점을 갖게 되면서 자연스럽게 예전의 내 프로젝트들이 떠올랐다.
“이거 만들면 유저들이 좋아하겠지?” 하는 막연한 확신 속에서 나 혼자 몇 달간 개발에 몰두했던 시간들.
기술적인 챌린지나 구현 난이도에만 집중한 채, 유저의 피드백은 충분히 반영하지 못했던 경험들.
나의 에고를 버리지 못하고 유저가 진짜로 원하는 것이 아니라, 내가 만들고 싶은 것을 만들었던 순간들.
그런 기억들을 떠올리며 스스로에게 되물었다. “진짜 좋은 프로덕트를 만든다는 건 과연 무엇일까?”
물론 ‘좋은 프로덕트’의 기준은 사람마다 다를 수 있다.
하지만 지금의 나에게는, 그 답이 조금씩 명확해지고 있었다.
바로, 살아있는 프로덕트를 만드는 것.
단순히 복잡한 기술을 구현하는 것이 아니라, 유저의 반응과 피드백을 기반으로 유기적으로 변화하며, 작은 변화로도 실질적인 가치를 끌어올릴 수 있는 제품. 그런 제품을 만들어가는 것이 지금의 나에게는 ‘진짜 좋은 프로덕트’라는 생각이 들었다.
이러한 통찰은 인턴십 동안 진행된 워크숍에서 더욱 깊어졌고, 매번 개념들을 들을 때마다 “이걸 내 프로덕트에 어떻게 적용할 수 있을까?”를 끊임없이 고민하게 만들었다.
살아있음을 정의하다
‘살아있는 프로덕트’라는 개념이 처음에는 조금 막연하게 느껴졌다.
그래서 이 개념을 정말 잘 이해하고 싶어서 팀 슬랙에 여러 가지 질문을 던지고 생각을 공유하였다.
“이건 진짜 살아있는 걸까?” “유저가 실제로 그렇게 느낄 수 있을까?” “그럼 이건 단지 좋은 기능일 뿐, 살아있는 건 아닌가?”
그 질문들에 대해 랩스 인턴분들과 함께 나눈 이야기들이 내가 이 개념을 더 입체적으로 이해하는 데 큰 도움이 되었다. 비록 정답은 없지만 '살아있음'이란 무엇인지 함께 고민하고 토론을 하며 살아있음에 대해서 스스로 정의를 하게 된 것 같다.




살아있는 프로덕트를 위한 첫 시도
러비큐피드 프로젝트에서 가장 의미 있었던 순간은, 처음으로 베타 테스트용 0.1버전을 유저에게 배포하였을 때였다.
당시 나는 캐릭터 검색 기능을 구현하며, 기존의 단일 키워드 검색 대신 ‘다중 해시태그 적용’ 기능을 추가해보았다. 내부적으로 여러 차례 테스트를 마쳤지만, 실제 유저와의 접점을 갖는 순간은 완전히 다른 차원의 경험이었다.
"실제 유저가 내가 만든 기능을 써본다고?"
설렘 반, 긴장 반이었다. 사이드 프로젝트에서 유저 경험을 해본 적은 있었지만, 실제 러비더비 앱을 사용하는 분들을 대상으로 한 것이었기에 첫인상을 좋게 주고 싶었다.
이렇게 작은 스텝부터 배포해보는 건 처음이었기에, 유저들의 반응이 무척 궁금하였다. 그리고 동시에, ‘다음 스텝에서는 무엇을 해야 하지?’ 라는 생각이 끊임없이 들었다.
첫 피드백이 만든 다음 변화
0.1버젼의 베타 오픈 후, 유저 피드백 중 이런 의견이 들어왔다.
“해시태그를 적용했을 때 해당 조건에 맞는 캐릭터 수를 바로 보여주면 좋겠어요!”
기존에는 결과보기 버튼을 누르기 전까지 해시태그 선택 시 몇 명의 캐릭터가 나지 예측할 수 없었다.
before

이 피드백은 정말 명확했고, 유저의 맥락을 잘 드러내는 이야기였다. 그래서 곧바로 해당 기능을 구현했고, 반영된 버전을 다시 배포했다.
after

그 결과, 유저들이 남긴 반응은 긍정적이었다.
Filtré dos carácter (terco + gracioso + género masculino) y en un segundo, abajito, me salía que se encontraban 68 resultados! Luego, eliminé la característica de "terco" y nuevamente, en un segundo, me mostraba ya 229 resultados. ^^ 고집 세고 + 웃긴 + 남성 캐릭터"로 필터를 했더니, 1초 만에 아래에 68개의 결과가 나왔어요! 그리고 나서 "고집 세다"는 특성을 제거하자마자, 다시 1초 만에 229개의 결과가 뜨더라고요. ^^
“Me encanta cómo mejoraron la búsqueda por etiquetas: Ha encontrado resultados de hasta seis etiquetas a la vez. ¡Es genial!” “태그별 검색이 개선된 게 정말 마음에 들어요 한 번에 최대 여섯 개 태그로도 결과를 찾을 수 있더라고요. 정말 멋져요!”
“Y la mejora de mostrar el número de resultados disponibles es una maravilla!” “결과 수를 표시해주는 개선점도 정말 훌륭해요!”
그저 UI 상으로는 ‘검색 결과 수를 보여준다’는 아주 작은 변화였지만, 유저는 거기서 큰 가치를 느꼈다. 그걸 체감하면서, “아, 진짜 중요한 건 이런 작지만 명확한 변화구나”라는 걸 배울 수 있었다.
“유저의 경험과 가치를 높이는 일이 이렇게 뿌듯한 거구나.”
처음으로 ‘개발자’가 아닌 ‘프로덕트 오너’의 시선으로, 유저의 목소리를 듣고 그것을 실제 제품에 반영하는 흐름을 처음부터 끝까지 겪었고, 이 경험은 내가 앞으로 프로덕트를 만들어갈 때 무엇을 우선순위로 두어야 할지 명확하게 보여주었다.
사실 이 변화는 UI적으로 보면 캐릭터 수를 보여주는 아주 작은 시도에 불과하였다. 그런데도 유저들은 그 작고 단순한 개선에 대해 “너무 편해졌다”, “이게 필요했어요” 같은 반응을 보였다.
간단하지만 유저 입장에서 진짜 중요했던 포인트, 즉 '작지만 결정적인 변화(Small but Critical)'를 건드린 것이었다. 이게 바로, 내가 처음으로 경험한 “하나의 작고 명확한 변화로 유저의 가치를 끌어올린 순간”이었다. 그리고 이 작은 변화가 나에게 ‘살아있는 프로덕트’를 만든다는 게 어떤 느낌인지 더욱 실감하게 해주었다.
선순환의 시작
이 경험을 통해 나는, "그렇다면 다음에 유저들이 원하는 건 뭘까?" 라는 질문을 스스로에게 던지게 됐고,
이후에는 아예 제안한 아이디어를 유저에게 투표로 물어보는 방식도 시도했다. 유저들이 직접 선택하고, 그 의견을 반영하는 구조였다.
이러한 흐름은 자연스럽게 나의 개발 방식을 변화시켰고, ‘살아있는 프로덕트’의 감각을 실천하게 만드는 선순환으로 이어졌다.
외부와의 인터랙션의 중요성
이 경험을 통해, 나는 “피드백을 받을 수 있는 구조 자체”의 중요성을 절실히 느끼게 되었다.
러비큐피드에서는 나중에 디스코드 채널을 통해 유저 피드백을 수집하기 시작했지만, 지금 돌아보면 그 구조를 더 일찍 만들었더라면 어땠을까 하는 아쉬움이 남는다.
기억에 남는 순간이 하나 있다. 러비큐피드에서 기획 변경으로 기능이 잠시 멈췄던 시기였다. 그 시간 동안 단순히 기획을 고민하기보다, “유저와 소통하고 싶다”는 의지를 가지고 먼저 다가갔더라면 어땠을까 싶었다.
지금처럼 디스코드를 활용하거나, 소통할 수 있는 작은 창구라도 열었더라면, 처음부터 유저의 반응을 가까이서 보며 살아있는 프로덕트를 만들어가는 과정을 더 빠르게 경험했을 것이다.
그랬다면 단순한 텍스트 수정이나 UI 조정만으로도, 유저가 진짜 원하는 것을 훨씬 더 빠르고 명확하게 파악할 수 있었을 것이다.
기술적인 한계를 넘어서
러비큐피드에서는 단순히 프론트엔드만이 아니라, 프로덕트를 제대로 구현하기 위해 백엔드까지 직접 다루는 풀스택 역할을 수행하였다.
기존에는 프론트엔드 중심의 개발만 해왔지만, 이번에는 프로덕트를 위해서 백엔드까지 맡게 되었고, 유저가 다양한 태그를 조합해도 빠르고 정확한 결과를 받을 수 있도록 최적화하는 과정을 직접 경험하였다.
처음 해보는 기술적인 챌린지가 많았지만, 그만큼 배우는 것도 많았다. 단순히 UI를 만드는 수준을 넘어서, 유저가 체감하는 ‘좋은 경험’을 제공하기 위한 기술적 뒷받침이 얼마나 중요한지를 몸소 깨달을 수 있는 시간이었다.
두달의 변화, 그리고 앞으로
두 달 동안 아쉬운 점도 있었고, 배운 것도 정말 많았다.
무엇보다 ‘좋은 프로덕트를 만든다는 건 어떤 의미일까?’에 대해 깊이 고민할 수 있었던 시간이었다.



처음에는 단순히 프론트엔드 개발자로서 기능 구현에 집중했던 내가, 이제는 유저의 감정과 맥락까지 함께 고민하는 ‘프로덕트 엔지니어’로 한 걸음 더 나아갔다고 느낀다.
러비큐피드를 만들며 “유저가 진짜 원하는 건 무엇일까?” 를 끊임없이 질문했고, 그에 따라 제품을 점진적으로 개선하는 흐름을 경험할 수 있었다.
앞으로는 이렇게 할 것이다
이번 인턴십을 통해 ‘살아있는 프로덕트’라는 개념을 처음 접했고, 실제로 유저와 함께 만들어가는 경험을 하며, 단순히 기능을 잘 구현하는 것 이상의 좋은 프로덕트를 만든다라는 과정을 배울 수 있었다.
1. 처음부터 유저와 함께 기획하는 구조 만들기
이전에는 완성된 제품을 먼저 만들고, 유저에게 보여주고 피드백을 받아 개선해나가는 방식이었다면,
앞으로는 유저와 상호작용할 수 있는 소통 창구를 제품 초반부터 함께 설계하고자 한다.
유저의 언어에서 출발해, 함께 프로덕트를 만들어나가는 과정이야말로 좋은 프로덕트의 시작점임을 깨달았다. 앞으로는 완벽함보다 외부와의 인터랙션을 통해 방향성을 개선하는 것에 더 집중할 것이다.
2. 작은 스텝으로 나아가기
“한꺼번에 많은 스텝을 나아간 완성된 제품을 출시하는 것”이 아니라, 유저가 이해할 수 있는 최소한의 기능(MVP 0.1 버전)을 빠르게 만들고, 그에 대한 반응을 보며 방향을 조정해나가는 방식이야말로 ‘살아있는 프로덕트’의 핵심임을 체감했다. 어떻게 스텝을 잘게 쪼갤 것인가 고민을 하고 하나의 작은 스텝으로 나아가려고 한다.
살아있는 사람, 살아있는 개발자
예전에는 "좋은 개발자"가 되기 위해 기술적인 깊이를 쌓는 데 집중했다면, 이제는 "좋은 프로덕트를 만드는 개발자"가 되기 위해, 유저와 함께 설계하고 반응하며 성장하는 엔지니어로 나아가고자 한다.
그리고 이 ‘살아있음’이라는 개념은, 프로덕트를 넘어 삶에도 적용하고 싶다.
살아있는 프로덕트를 만들기 위해서는, 먼저 살아있는 사람이어야 한다고 믿는다.
앞으로는 더욱 주체적으로 사고하고, 선택하며 하루하루를 살아가려 한다.
이번 경험은 단순히 기술을 익힌 시간이 아니라, 내가 어떤 프로덕트를 만들고 싶은 사람인지, 그리고 어떻게 살아가고 싶은지에 대해 스스로 방향을 다시 정립하게 만든 전환점이었다.
두 달이라는 시간 동안 깊이 몰입할 수 있었고, 그 과정에서 내가 어떤 개발자가 되고 싶은지를 또렷하게 마주할 수 있었다. 너무 재밌었다!!!
무엇보다 매 순간 깊이 있는 고민을 할 수 있도록 이끌어주신 대표님께,
인턴십 내내 세심하게 도와주신 매니저님께,
그리고 좋은 프로덕트를 함께 만들기 위해 머리를 맞대고 고민을 나눈 인턴 디자이너님께 진심으로 감사드린다.
이 경험은 단순한 업무 경험을 넘어서, 진짜 성장하는 계기가 되었던 것 같다.
이제는, 유저와 함께 살아있는 프로덕트를 만들어가는 프로덕트 엔지니어로 더 단단히 나아가고자 한다.
앞으로의 과정도 지켜봐주시면 감사하겠습니다!
