프롤로그
"소셜벤처창업" 수업을 선택한 이유
나는 3학년 2학기에 교환학생을 갈 예정이다. 이번 학기는 교환학기 바로 전 학기라서 학업과 여러 준비를 한꺼번에 병행해야 했고, 그래서 주 2회 공강을 꼭 만들고 싶었다. 사실 이 수업을 선택한 데에 거창한 이유가 있었던 건 아니다. 이걸 들으면 화·금 공강을 만들 수 있다는 아주 단순한 이유가 가장 컸다.
여러가지 사회혁신가님 중 황민호 옥천신문 대표님을 선택한 이유
지역소멸, 마음건강, 환경 등 여러 주제가 있었지만, 그중 굳이 옥천신문을 선택한 이유는 내가 농촌 출신이기 때문이다. 나는 광역시의 군 지역에서 자랐고, 외할머니댁은 지역소멸위험지역에 있어서 지역소멸 문제를 몸소 느껴 온 사람이다. 게다가 옥천신문이 지역 풀뿌리 언론으로 유명하다는 것도 알고 있었기에, 다른 어떤 주제보다 이곳에 가장 마음이 갔다.
프로젝트를 시작하기 전 지역 소멸에 대한 나의 여러 감상들
지역소멸이 심각하다는 말은 많이 들었지만, 정작 농촌에 살지도 않고 지금은 서울에서 대학을 다니는 내가 왜 지역소멸에 신경을 써야 할까? 이런 질문이 자연스럽게 들었다. (신경 쓰기 싫다는 뜻이 아니라, 이 근본적인 이유를 먼저 따져봐야 한다고 생각했다. 다른 사람에게 내 프로젝트가 왜 꼭 필요한지, 또 이 프로젝트를 했을 때 무엇이 좋아지는지를 설명할 수 있어야 한다고 믿었기 때문이다.)
어릴 적 많은 시간을 보낸 외할머니댁은 지금 소멸위기지역이다. 마을에 어린이는 한 명도 없고, 해마다 돌아가시는 어르신이 많아 빈집만 늘어가고 있다. 이처럼 지역소멸은 나에게 가깝기도 멀기도 한, 정말 해결해야 할 문제가 맞는지도, 왜 해결해야 하는지도 다소 모호한 상태였다. "당장 먹고살기 바쁜" 서울살이 지방민에게는 너무 큰일처럼 느껴지기도 했다.
1장. 첫 문제 정의 및 필드트립
막막했던 문제 정의의 출발
첫 주에는 팀 빌딩을 했다. 그 때는 어색했으나 한 학기 동안 전우애(?)가 생긴 존경스러운 팀원들을 처음 만나고, 한 학기를 잘 보내자는 의미로 규칙을 만들고, 간단한 아이스브레이킹도 했다. 2주차부터는 문제 정의에 대해서 배우기 시작했다. 우리는 문제를 정의하기 위해, 먼저 지역소멸이 왜 심각한 문제인지부터 찾기 시작했다. 동시에 이를 해결할 수 있는 여러 문제들을 살펴보았다. 우리 팀이 주목한 문제는 정말 많았다. 팀원 다섯 명이 각자 다른 문제를 들고 오기도 했고, 데스크 리서치만으로 얻을 수 있는 정보가 한정적이라 어려움을 겪기도 했다. 무엇보다 가장 어려웠던 것은, 지역소멸을 해결할 수 있는 "우리가 할 수 있는 일"이 마땅히 보이지 않는다는 점이었다. 인프라가 부족하고, 역이 없고, 버스가 안 다니고, 아이들이 없고, 일자리가 없고…… 어느 것 하나 우리가 해결할 수 있는 일처럼 보이지 않았다.
청산면 필드트립

옥천신문 황민호 대표님께서는 아주 빠른 필드트립 일정을 잡아주셨고, 우리는 3주차가 되기도 전에 현장으로 떠났다. 옥천군 청산면은 내가 자란 농촌과 비슷하면서도 어딘가 낯설었다. 매력적인 농촌, 친절한 사람들, 그리고 귀여운 어린이들까지. 우리는 하루 종일 여러 사람의 이야기를 들으며, 외부인의 시선이 아니라 당사자의 마음으로 문제를 바라보려고 노력했다.
아침 일찍 옥천역으로 이동해, 옥천신문 건물에서 황민호 대표님을 만나 함께 식사를 한 뒤 청산면으로 향했다. 전 면장님, 현 면장님, 백운리 이장님, 청산면 아동센터장님... 참 많은 분들을 만났다. 너무 이야기를 많이 하여 지친 나머지 돌아올 때는 팀원 전원이 한 마디의 스몰토크 없이 돌아왔다. (이 때부터 전우애가 생기기 시작한 것 같다. 하하.)
현장에서 만난 사람들
청산면에서는 다양한 사람들을 만나 인터뷰했다.


- 전 면장님(현 마을살리기위원장님)은 옥천의 역사와 지명, 특산품, 축제에 대한 깊은 자부심을 보여주셨다. 과거와 현재의 가장 큰 차이로는 학업·결혼·직장 때문에 인구가 빠져나가는 인구 유출을 꼽으셨는데, 한때 초등학생이 이천 명에 달하던 시절이 지금은 23명뿐이라고 하셨다. 그러면서도 초·중·고가 모두 있어 "학교가 살아야 지역이 산다"는 신념을 강조하셨고, 인구 5,000명 회복을 목표로 하시면서도 빈집만 남을까 걱정하셨다. 문화 인프라·목욕탕·체육시설이 거의 없다는 점을 아쉬워하셨지만, 주민들끼리 거의 다 아는 긴밀한 공동체와 세대 간 교류가 살아 있다는 점은 강점으로 꼽으셨다.
- 현 면장님은 좀 더 구체적인 현실의 문제들을 짚어주셨다. 가장 큰 문제는 고령화로, 노동력과 일손이 부족하고 홈페이지의 정보 전달력이 떨어지는 이유도 대상자 대부분이 고령이기 때문이라고 하셨다. 정보는 주로 이장님의 새벽방송이나 오프라인 소모임을 통해 빠르게 퍼지며, 어르신들도 대부분 스마트폰을 사용하신다고 하셨다. 또한 "더 많은 기회를 위해서는 서울로 가야 한다"는 사람들의 마인드도 문제라고 보셨고, 빈집 정보를 귀농·귀촌인에게 공유할 방법, 그리고 축제·문화행사나 군 지원 사업 정보를 한눈에 모아 쉽게 신청할 수 있는 창구의 필요성을 강조하셨다.
- 그 다음으로는 청산면 지역 아동센터 센터장님을 만났다. 작년 6월부터 센터장으로 활동하고 계신 분으로, 초등학교에서 도보 2분 거리에 위치한 센터를 운영하며 밥과 다양한 프로그램, 저녁 돌봄까지 제공하고 계셨다. 버스로 한 시간 걸리는 곳에서 오는 중·고등학생도 있다고 한다. 귀농·귀촌한 학부모들은 저녁 돌봄에 감사하고 있으며, 학생들은 밥이 맛있고 센터와 바로 옆 문화의 집에서 주로 놀기 때문에 이 공간을 매우 소중하게 여긴다고 하셨다. 다만 운영비에는 한계가 있어 1년에 강사님 두 분 정도밖에 초빙하지 못한다고 한다. 센터장님이 그리는 미래는 분명했다. 아이들이 자연스럽게 책을 읽는 분위기를 만들고 싶고(교보문고가 책을 기부한 이력도 있다), 서울과 달리 문화 체험이 쉽지 않은 만큼 한 달에 한 번이라도 미술관·음악회·여행을 진행하려 하시며(이미 두 차례 실시했다고 한다), 예체능에 재능이 있을지 모를 아이들의 잠재력을 발굴할 프로그램도 고민하고 계셨다. 시골 청소년들은 학교가 끝나면 대부분의 시간을 센터에서 함께 보내기 때문에 동네 형·누나·동생 사이가 끈끈한데, 센터장님은 좋아하는 사람들과 행복했던 경험이 훗날 아이들이 청산면으로 돌아오는 이유가 될 것이라 짐작하셨다. 교육 현장의 현실적인 어려움도 들을 수 있었다. 청산면에는 학원이 없어 학원에 다니는 두 학생은 보은과 대전까지 이동하고 있었다. 영어나 국어는 관심만 있으면 유튜브와 책으로 보충이 가능하지만, 수학은 흥미도가 낮아 대부분 강사 수업에 의존하는데, 외부 강사 대부분이 60대라 아이들 눈높이에 맞춰 소통하는 데 한계가 있다고 하셨다. 그래서 귀농·귀촌한 학부모가 직접 강사가 되기도 하고, 사단법인 점프를 통해 청년 봉사자를 연결받아 이동 차량 지원이나 수업을 받을 수 있기를 기대하고 계셨다. 센터장님은 청소년을 대할 때의 유의점도 일러주셨다. 아이들은 자신의 이야기와 사진이 공유되는 것을 원하지 않는데, 스스로가 "지역소멸 위험 지역의 시골 청소년"으로 비치거나 알려지는 것을 꺼리기 때문이다. 다큐멘터리나 인터뷰를 진행할 때 특히 주의가 필요한 지점이었다. 실제로 만난 중학교 1·2학년 남학생들은 지역 생활에 별다른 불편이 없다고 했다. 교통도 센터 앞 버스 노선표를 보거나 이미 외우고 있어 문제가 없고, 자연보다는 컴퓨터 게임·축구·아이돌에 관심이 많았다. 청산면의 명물인 생선국수는 먹어본 적 없지만 축제에는 참여해 봤다고 했다.
- 마지막으로 주간영동 인턴기자는 저널리즘 스쿨 인턴으로 옥천 옆에서 3개월간 거주하며 지역을 취재한 사람이었다. 그는 외지인이자 또래 청년의 눈으로 본 청산면을 들려주었다. 청년 세대 입장에서는 즐길 거리가 적고 또래 청년 인구 자체가 적으며, 버스 시간표 역시 앱으로 확인하기 어려워 마트 벽에 붙은 종이 시간표를 봐야 한다는 점이 불편하다고 했다. 다만 청산면은 다른 면에 비해 환경이 괜찮은 편이고, 생선국수 축제 같은 특징적인 행사와 주기적으로 열리는 장 덕분에 지역 공동체가 꽤 활성화되어 있으며, 외지에서 방문하는 사람도 적지 않다고 느꼈다고 한다. 그래서 그는 온라인 커뮤니티가 있으면 좋기야 하겠지만, 기존에 잘 작동하는 방식을 대체할 만큼 유의미할지는 의문이라는, 다소 신중한 시선을 보태주었다. 무엇보다 인상 깊었던 것은, 지역소멸 논의에서 청년층과 노년층은 자주 언급되고 정책적 지원도 많은 데 비해 중장년층은 정책의 사각지대에 놓여 있다는 지적이었다. 실제로 중장년 1인 가구의 고독사 사례가 적지 않다고 했다. 또 농촌의 일자리 구인이 주로 연줄을 통해 이루어진다는 점에서 체계화된 시스템의 필요성을, 어르신들이 텍스트보다 음성 매체에 익숙하다는 점에서 음성 기반 시스템을 고려할 필요성을 짚어주었다.
첫 문제정의문과 교수님의 피드백
그렇게 어찌어찌 첫 문제정의문을 만들었다. 구체적 대상은 2030 청년 세대, 최종 목표는 이들이 인구소멸지역(청산면)에 머물도록 하는 것, 그리고 우리가 정의한 문제는 인구소멸지역(청산면)을 경험하지 못하는 문제가 해결되어야 한다는 것이었다.
하지만 교수님의 피드백은 날카로웠다. 우선 '경험'이라는 워딩이 모호하고, 그 문장만으로는 문제의 심각성이 잘 드러나지 않는다고 하셨다. 또 '인구소멸지역' 같은 추상적인 표현보다 옥천·청산처럼 직관적으로 이해되는 단어를 쓰는 편이 낫다고 하셨다. 즉, "인구소멸지역을 경험하지 못하는 문제"라는 표현 자체를 심각성이 더 분명히 드러나도록 손봐야 한다는 지적이었다.
이처럼 솔루션이 문제 정의에 섞여 들어가서도 안 되고, 무엇보다 문제의 심각성이 또렷이 드러나야 한다는 피드백 앞에서... 문제정의문을 만드는 일은 정말로 나를 괴롭게 했다. 창업 수업을 들으면서 나는 문제 정의가 창업의 70% 가까이를 차지한다고 생각하게 되었다.
이 시기에 느낀 것
현장을 다녀와서 깨달은 것이 있다. 같은 청산면 안에 있더라도, 사람들은 저마다 경험한 것에 따라 전혀 다른 답을 내놓는다는 것이다. 마을 어린이들은 생활에 크게 어려운 점이 없다고 했지만 외지인인 인턴기자는 버스 시간표를 마트 벽에서 확인해야 했고, 어떤 어르신에게는 자부심의 터전인 이 마을이 어떤 청소년에게는 "지역소멸 위험 지역"으로 비치는 것을 거부하고 싶은 곳이었다. 필드트립을 다녀오면 문제정의문을 하나로 수렴할 수 있을 줄 알았는데 더 넓게 펼쳐진 기분이라 매주 수업시간이 괴로웠다... 모두에게 이로운 "돕는 기술"을 만들려면 어때야 하는지를 깊이 고민하기 시작했다.
2장. 전화 인터뷰로 깨달은 것들
전화 인터뷰 내용
필드트립 하루 안에 만난 사람들만으로는 뭔가 부족하다는 느낌이 있었다. 면장님, 이장님, 마을살리기위원장님. 청산면을 오래 지켜온 분들이었고, 그분들의 이야기는 충분히 들었다. 인터뷰를 마치고 정리를 하던 도중, "누구"를 인터뷰했는지가 우리가 문제를 바라보는 방향을 잠재적으로 정했을 수도 있을 것 같다는 생각이 들었다. 그리고 결정적으로는, 교수님께 문제 정의문을 정하는 것이 너무 어렵다고 했더니 인터뷰를 더 해보라고 하셨다.
황민호 대표님께 연락처를 받아 추가 전화 인터뷰를 진행했다. 청산면에 귀농하거나 이주해온 분들이었다. 존경스러운 팀원 분들께서 직접 전화하고, 정리까지 해주셨다. (나는 개발 팀원이라고 초반에 너무 아무것도 안한 것 같아서 지금 쓰면서 반성 중이다...)
한 귀농 청년은 이장에게 정보를 받아본 적이 한 번도 없다고 했다. 처음 이주했을 때 이장님께 직접 연락을 드렸는데 별다른 답변을 얻지 못했다는 분도 있었다. 마을에서 어떤 일이 일어나는지, 새 이장이 선출됐는지, 주민자치회에서 무슨 논의가 오가는지... 이런 것들을 알 방법이 없다고 했다. 버스 시간표도 홈페이지에 있긴 한데 한글 파일로 올라와 있어서 확인하기 불편하다고 하셨다.
오랫동안 살아온 주민들과 엇갈리는 의견
필드트립에서 만난 토박이 주민은 전혀 다른 이야기를 했었다. "면은 걱정이 없어요. 입소문도 빠르고 여기가 고향이라 만나서 다 소통합니다." 정보가 느리거나 막힌다는 느낌을 전혀 받지 못하고 있었다. 이장님도 마찬가지였다. 마을 사람들에게 정보 전달을 잘 하고 있다고 했다.
그러나 이주민들에게 그 말은 사실이 아니었다. 이장에게 연락을 드렸는데 답변을 받지 못했다는 분도 있었고, 마을에 산 지 몇 년이 지났는데도 주민자치회에서 어떤 논의가 오가는지 한 번도 들어본 적 없다는 분도 있었다. 버스 노선을 아직도 잘 모른다고 했다. 청산면에 오래 살았지만 완전히 주민으로 녹아든 기분이 들지 않는다는 말도 들었다. 같은 마을에 살고 있었지만, 그들이 경험하는 청산면은 토박이 주민이 묘사한 것과 전혀 달랐다.
두 집단의 말이 동시에 사실일 수 있다는 게 처음에는 잘 이해가 안 됐다. 그런데 생각해보면 당연한 일이었다. 토박이에게 정보는 관계 안에서 자연스럽게 흘러들어온다. 오래 알고 지낸 사람들이 있고, 마을 방송이 울리면 전화가 오고, 장에서 만나면 소식을 주고받는다. 그 네트워크 안에 있으면 정보가 막힌다는 느낌을 받을 일이 없다. 반면, 이주민은 그 네트워크 밖에서 시작한다. 관계가 형성되지 않았기 때문에 정보가 닿지 않았던 것이다.
무엇이 문제였을까?
인터뷰들을 정리하면서 팀 안에서 논의가 길어졌다. 이게 단순히 소통이 부족한 문제인가, 아니면 구조의 문제인가.
청산면 홈페이지 게시판을 찾아봤다. 2023년부터 사실상 한 사람만 글을 올리고 있었다. 주민자치회 회의록은 게시물 자체가 없었다. 공식적인 채널이 있는데 아무도 쓰지 않는 상태였다.
정보가 흐르지 않고 인적 네트워크에서만 공유되는 문제
여기서 우리가 찾은 구조가 있었다. 면사무소에서 정보가 나오면, 이장에게 전달되고, 이장이 마을 사람들에게 알린다. 그 연결고리가 작동하는 사람에게는 정보가 닿는다. 그런데 이장과 연결되지 않은 사람, 관계망 밖에 있는 사람에게는 닿지 않는다.
정보가 없는 게 아니었다. 흐르는 경로가 특정 사람들 사이에만 열려 있었다.
이 구조를 이해하고 나서, 우리가 풀어야 할 문제가 조금 더 선명해졌다. 정보 전달의 문제가 아니라, 정보 접근의 문제였다. 누군가를 알아야만 정보에 닿을 수 있는 구조! 그게 이주민에게는 보이지 않는 벽이 되고 있었다.
3장. 문제 정의 완성, 그리고 솔루션을 향해서!
최종 문제 정의문 만들기
전화 인터뷰까지 마치고 나서는 팀이 가야 할 방향이 더욱 뚜렷해졌다. 일자리가 문제라고 했던 팀원도 있었고, 교육이 문제라고 했던 팀원도 있었다. 그런데 인터뷰를 거듭할수록 그 아래에 공통적으로 깔려 있는 것이 보이기 시작했다. 이주민이 일자리를 못 구하는 이유도, 지역 정책을 활용하지 못하는 이유도, 마을에 녹아들지 못하는 이유도 결국 정보가 닿지 않아서였다. 그리고 그 정보는 없는 게 아니라, 인적 네트워크 안에서만 돌고 있었다.
최종 문제 정의문은 이렇게 수렴됐다.
외부에서 청산면으로 이주한 주민이 마을의 실질적인 구성원으로 안착하고 지역 공동체와 연결되기 위해서는, 지역 정보 전달 체계가 인적 네트워크에만 의존하는 문제가 해결되어야 한다.
솔루션 결정! — 온마을 앱
문제가 명확해지자 솔루션 논의가 빨라졌다. 우리가 해결하려는 것은 정보 접근의 문제였다. 인적 네트워크 밖에 있는 사람도 지역 정보에 닿을 수 있는 구조를 만드는 것. 여러 방향이 나왔다. 오프라인 게시판, 카카오톡 단체채팅방, 기존 청산면 홈페이지 개선 등. 결국 우리가 만들어야 할 것은 청산면 전용 마을 커뮤니티라고 생각했다. 접근성이 높고, 정보를 구조화할 수 있고, 커뮤니티 기능과 생활 정보를 한 번에 담을 수 있는 면 단위 전용 애플리케이션을 만들어야 한다고 생각했다.
멘토에게 SOS
솔루션 방향이 잡히긴 했는데, 막막한 부분들이 여전히 남아 있었다. 카카오 멘토님께 질문을 정리해 보냈다. 노년층 사용자를 위한 음성·사진 입력 데이터를 어떻게 의미있게 저장할 것인지, 흩어진 정보를 수작업 없이 수집할 수 있는 더 나은 방법이 있는지, 연령대가 다양한 타겟을 어떻게 설계에 반영할 것인지... 당시에 궁금했던 것을 모두 질문했던 것 같다.

돌아온 답변들은 다음과 같다.





멘토님은 먼저 우리가 해결하려는 문제를 한 문장으로 정리해주셨다. "사람 머릿속에만 있는 묵시적(Implicit) 지식들을 명시적(Explicit)으로 바꾸자." 우리가 질문한 LLM, 음성 입력, 바이브코딩은 전부 How의 문제인데, 그 전에 What이 명확하지 않다고 했다. 기술을 어떻게 쓸지보다 무엇을 만들지를 먼저 정의해야 한다는 것이었다.
청산면의 흩어진 정보 수집 방법에 대해서는 "수작업이 대체로 정답"이라는 말이 돌아왔다. 대신 프레임을 바꿔보라고 했다. 이 정보를 가장 잘 알고 있는 사람이 누구이고, 그 사람이 올릴 동기가 있는가를 먼저 생각하라고. 버스 시간표는 공공데이터포털 API로, 식당 정보는 사장이 직접 등록하도록 유도하고, 농사 꿀팁은 어르신에게 음성으로 받는 것이 오히려 자연스럽다는 식으로. 정보 수집의 문제가 아니라 플랫폼 설계의 문제라는 시각이었다.
타겟 연령대에 대한 답변도 큰 도움이 되었다. "모두를 위한 앱은 아무도 위하지 않는 앱이 된다." 귀농 청년, 은퇴 이주 장년, 고령 원주민 세 집단을 동시에 만족시키는 UI는 존재하지 않는다고 했다. Primary 페르소나 한 명만 MVP 타겟으로 정하라고. 멘토님의 추천은 은퇴 이주 장년이었다.
기능 목록을 어떻게 줄일지에 대해서도 방법을 알려주셨다. 머릿속 기능을 전부 종이에 적고, 각 기능마다 하나만 물어보라고 했다. "이게 없으면 청산면 이주민이 페인포인트를 겪나?" Yes면 MVP 후보, No면 v2 이후로 버리라는 조언을 주셨다.
MVP를 세 가지로 좁히는 과정
멘토님의 조언에 따라 MVP의 기능을 3가지로 줄이기로 하였다. 생각나는 모든 기능을 적고, 꼭 필요한 기능을 제외하고 모두 취소선을 그으며 조원들과 토론하였다.



결국 세 가지 기능 빼고 모든 것을 지웠다! 첫째, 지역 생활 게시판. 사진, 글, 음성 메시지를 올리고 댓글로 반응할 수 있는 공간. 인적 네트워크 없이도 정보를 주고받을 수 있는 핵심 창구 역할을 할 예정이다. 둘째, 버스 시간표와 노선 정보. 인터뷰에서 반복적으로 나왔던 불편함이었고, 정보가 있어도 접근하기 어려운 대표적인 사례였다. 셋째, 행정 일정 캘린더. 이장을 거치지 않고 면사무소 정보를 직접 확인할 수 있도록 하기 위함이다.
4장. 개발을 합시다
개발과정: UX 흐름 → 와이어프레임 → 프로토타입 → MVP
시간이 촉박했으므로 우리는 주로 클로드 코드를 이용하여 바이브코딩을 했다. 좋은 팀원을 만난 덕에 와이어프레임과 UX 흐름을 빠르게 받아볼 수 있었다. 게다가 피그마를 아주 잘 만지는 팀장님 덕에 좋은 디자인도 받을 수 있었다.
우리의 MVP는 단순하다. 홈, 게시판, 행정 소식, 버스 이렇게 하단바에 네 개의 메뉴가 있고, 각 메뉴에 들어가면 청산면의 정보를 인적 네트워크 없이도 얻을 수 있도록 해두었다. 특히, 홈화면에서는 오늘의 한마디에 답변을 하며 자연스럽게 마을의 DB가 쌓이게 구성하였다.

와이어프레임을 React와 Vite로 옮겨 첫 프로토타입을 만들었다. 개발 첫 주에는 백엔드가 없었으므로 게시글도 버스 시간표도 전부 컴포넌트 안에 더미데이터로 넣어 동작만 하는 페이지를 만들었다.
그 후, 실제로 사용할 수 있게 Supabase로 데이터베이스를 연결하고, FastAPI로 백엔드를 올리고, 카카오 로그인을 붙이고, 더미 데이터를 실제 데이터로 교체했다. (청산면 버스 정보를 시각화하려고 하니 데이터가 필요했는데, 옥천군 버스정보는 진짜 hwp 파일 한 장으로만 공지되어 있어서, 정류장을 조사하고 시간표를 해석하는 데에 팀원들이 고생을 꽤나 해주셨다.)
아래는 실제 개발한 웹사이트의 화면이다.



첫 바이브코딩에 대한 감상
나는 컴퓨터공학을 전공했어서 딱히 바이브코딩을 할 일이 없었다. AI에게 의존하지 않고 코딩하는 연습을 주로 했기 때문이다. 그러나 4-5주 안에 실제 동작하는 앱을 만들어야 하는 입장에서는 바이브코딩을 주로 이용할 수밖에 없었다. 또, 다른 팀플로 무척 바쁘기도 했고... 개발을 함께하는 팀원이 인공지능학과라 깃허브 등 협업툴을 어떻게 사용하는지 처음부터 알려줘야해서 그런 것도 있었다.
그래서 이번에 클로드 코드를 처음 사용했다. 데이터베이스 스키마도 잘 만들고... (다만 실수를 많이 해서 디버깅하느라 애를 먹기도 했다...) 프론트 코드도 아주 수려하게 잘 만들더라. 처음에는 속도가 빠르고 결과가 눈에 보여 좋았다. 그러나 말로 시킨다고 해서 원하는 것이 그대로 나오지는 않았다. 흐릿하게 설명하면 흐릿한 결과가 돌아왔다. 결국 화면을 정확히 그려보고, 동선을 정확하게 파악한 뒤, 그것을 문장으로 잘 옮겨야 했다.
개발과정에서 어려웠던 부분들
- 가장 오래 붙들린 것은 배포였다. 일단 나는 배포를 처음 해봤다. (작년에 오소플 수강신청 실패로 웹사이트 개발 경험이 전무하다!) 로컬에서는 멀쩡히 동작하던 것이 서버에 올리면 멈춰 있었다. 알고보니 Vercel에 환경변수를 제대로 넣지 않아 프론트엔드가 백엔드를 어디로 불러야 할지 모르고 있었기 때문이었다.
- 이미지도 한동안 속을 썩였다. 사용자가 올린 사진이 자꾸 사라지는 것이다. 콘솔에는 404와 500 오류가 번갈아 떴다. Render는 파일을 임시로만 보관했다가 서버가 재시작되면 통째로 지운다는 사실을 모르고 거기에 저장하고 있었던 나의 불찰이었다. 결국 이미지를 Supabase Storage로 옮기고 해결했다.
- 그리고 옥천군 공지사항에서 일정을 가져오는 크롤링을 자꾸 차단당했는데, 군청 사이트가 클라우드 서버의 IP를 막아둔 탓이었다. 결국 개인 노트북에서 직접 실행해 Supabase에 저장하는 방식으로 우회했다. (최종 발표하기 하루 전날에 테이블 다시 업데이트해서 발표했다. 하하.)
아래의 링크에서 우리가 만든 웹사이트를 확인해볼 수 있다.
https://mvp-on-maul.vercel.app/
5장. 최종발표! 그리고 내가 배운 것들
최종 발표날



열 개의 팀이 한 학기 동안 골몰하고 고심한 문제와 솔루션에 대해 들었다. 열심히 해준 우리 모두가 정말 기특했다.
우리 팀은 팀장님께서 발표를 하셨다. 비록 쟁쟁한 많은 팀에 밀려 순위권에 들지는 못했으나 발표회 자체가 참 재미있었다.
배운 것들
가장 크게 배운 것은 누군가를 돕는 기술에 대해 한 학기 동안 치열하게 고민한 과정 그 자체에 있다고 생각한다.
나는 공대생이다. 공대생이라면 누구나 한 번쯤 이런 말을 들어봤을 것이다. Time and Money. 공대에서는 어떻게 하면 프로세스를 더 빠른 시간 안에, 더 낮은 비용으로 끝낼 수 있는지를 계산한다. 내가 가진 기술로 누군가를 도울 수 있다는 사회적 관점에서 수업을 들어본 적이 없었다. 그래서 "소셜 벤처"의 고민을 해봤다는 것 자체만으로도 매우 값진 시간이었다. 기술의 효율이 아니라 기술의 방향을 묻는 수업이 꼭 필요하던 차였다. 누구를 위한 기술을 만들 것인가. 공대생이라면 꼭 한 번 생각해봐야 할 질문이다. 나는 과연 누구를 위한 공학을 할 것인가? 이번 한 학기는 내가 앞으로 나아갈 방향을 조금 보여준 것 같아서 기쁘다.
또 한 가지 배운 것은 창업에 대한 통찰이다. 내가 좋은 솔루션이라고 확신한 것이 당사자들에게는 필요하지 않은 것일 수 있다. 기술은 만드는 사람의 아이디어를 구현하는 도구가 아니라, 쓰는 사람의 문제를 해결하는 도구여야 한다. 그래서 문제 정의가 먼저다. 페인포인트를 제대로 짚지 못하면, 아무리 정교하게 만들어도 공허한 솔루션이 된다. 이번 프로젝트에서 문제 정의에 그토록 오랜 시간을 쏟은 것이 후회되지 않는다.
세 번째로 배운 것은 협업의 힘이다. 이번 한 학기 동안 참 좋은 팀원들을 만났다. 매주 회의가 버겁게 느껴질 때도 있었고, 교양 수업 하나에 이렇게 많은 것을 쏟아야 하나 싶은 순간도 있었다. 그래도 끝까지 달릴 수 있었던 건 팀원들 덕분이었다. 밤늦게까지 학생문화관에 남아 라면을 먹으며 디버깅하던 여름밤, 최종 발표를 몇 시간 앞두고 다 같이 모여 마지막 힘을 끌어올리던 오후. 그런 기억을 안고 한 학기를 마칠 수 있어서 감사하다.
나가며
정리를 하며 보니, 참 즐거운 한 학기였다.
무겁고 힘든 자리가 결국 나를 성장하게 한다. 처음에는 수업 내용이 너무 낯설고 어렵다고 느꼈는데, 끝나고 나니 오히려 아쉬움이 남는다. 좋은 기회를 만들어주신 두 교수님, 배우고 성장할 수 있도록 수업을 지원해주신 카카오임팩트, 아낌없이 도움 주신 멘토님들, 그리고 무엇보다 함께 달려준 우리 팀원들에게! 이렇게라도 감사하다고 전하며 글을 마친다.
'공부중' 카테고리의 다른 글
| [컴퓨터 구조] 16진수를 RISC-V 어셈블리 코드로 바꾸기 (0) | 2025.10.09 |
|---|---|
| [자료구조] 스택 관련 문제 풀이(과제 1) (0) | 2025.09.29 |