0375

회고

[우테코] 27편 : 오픈미션 21일차

| 서론

안녕하세요, 팡일입니다!

어느새 21일차, 길다면 길고 짧다면 짧았던 우아한테크코스 8기 프리코스 오픈미션의 마지막 날이 찾아왔습니다. 처음 시작할 때만 해도 ‘3주라는 시간이 이렇게 빨리 지나갈까?’ 싶었는데, 매일 고민하고 기록하고 기능을 만든 흔적들이 쌓여 보니 시간이 참 빠르게 흘렀다는 걸 실감하게 되네요.

오늘은 마무리인 만큼, 단순히 기능 개발을 넘어서 지난 21일 동안 제가 어떤 도전을 했고 어떤 변화가 있었는지, 그리고 오픈미션이 제게 어떤 의미로 남았는지를 차분히 돌아보는 시간을 가져보려고 합니다.

| 오늘 한 일

1) 오픈 미션

  • 배포 사이트 최종 점검

  • 코드 구조 및 제거할 부분 확인

  • 최종 제출용 Notion 마무리

  • 최종 제출하기

| 어려웠던 점 & 배운 점

기존까지는 어려웠던 점과 배운 점을 기록했다면, 이번에는 과제와 함께 제출했던 소감문을 작성해보려고 합니다. 내용이 상당히 길지만, 한 번 공유해보겠습니다.

“시작하며 — 이번 도전의 출발점”

안녕하세요 김광일입니다. 먼저, 약 6주라는 시간 동안 프리코스를 운영해주신 우아한테크코스 관리자 분들께 감사의 말씀을 전해 드립니다. 프리코스 1~3주차 동안 다양한 미션을 수행하면서 저는 “정답을 찾기보다, 스스로 기준을 세우고 확장해 나가는 방식”에 익숙해지기 시작했습니다. 하지만 그 과정 속에서도 무언가 더 본질적인 도전을 갈망하고 있었고, 오픈미션은 그런 점에서 가장 자유롭고, 동시에 가장 어려운 미션이었습니다. 누가 정해준 요구사항도 없고, 따라야 할 기능도 없고, 심지어 “이걸 만들면 된다”는 답도 존재하지 않았습니다. 오로지 ‘도전’이라는 단어만이 기준이 되었습니다. 그래서 저는 이번 프로젝트를 시작하며 “누군가가 만들어둔 길을 따라 걷지 말고, 내가 직접 길을 만들어보자”는 마음으로 임했습니다. 누군가의 기대를 충족시키는 프로젝트가 아니라, 내가 직접 문제를 발견하고 해결 기준을 만들며 한 걸음씩 설계해 나갈 수 있는 프로젝트로 만들고 싶었습니다.

특히 이번 미션을 준비하면서 스스로에게 가장 많이 던졌던 질문은 “나는 어떤 개발자가 되고 싶은가?”였습니다. 기술을 배우는 것도 중요하지만, 무엇을 우선순위로 두고 어떤 기준을 가지고 결정을 내릴 것인지, 그런 ‘내 기준’을 세우는 힘이 더 중요하다는 생각이 들었습니다. 그래서 저는 이번 오픈미션을 단순히 새로운 기술을 배우는 시간이 아니라, 내가 어떤 개발자이며 어떤 개발자가 되고 싶은지를 확인하는 과정으로 바라보게 되었습니다. 그 과정에서 ‘도전’이라는 단어는 단순히 새로운 일을 시도하는 의미를 넘어, 머릿속에서만 존재하던 생각들을 실제 구현으로 옮기는 ‘실행의 시작점’처럼 느껴졌습니다.

지금까지의 프로젝트를 돌아보면, 익숙한 기술의 울타리 안에서만 움직이려고 했던 제 모습이 있었습니다. “할 수 있을까?”라는 의심 때문에 새로운 선택을 피했던 순간들도 많았습니다. 하지만 그런 순간마다 결국 가장 성장했던 건 “익숙함을 벗어났을 때”였다는 사실을 깨달았습니다. 그래서 이번 오픈미션에서는 익숙한 React나 Next.js가 아니라, 한 번도 제대로 사용해본 적 없던 SvelteKit을 선택했습니다. 처음엔 부담도 있었지만, 기능을 하나씩 구현하며 흐름을 익혀 나가는 동안 점점 그 불안은 사라지고, 오히려 새로운 기술에 도전하는 과정이 즐거움으로 변했습니다.

3주 동안 이루고 싶었던 목표는 명확했습니다. 처음 서비스를 방문하는 순간부터 마지막 기능을 사용할 때까지 어색함 없이 자연스럽게 이어지는 사용자 흐름을 가진 제품을 만들어보고 싶었습니다. 이를 위해 전체 기능을 세밀하게 나누고, 일정에 따라 한 단계씩 완성해 나가며 가능한 한 실제 서비스처럼 ‘사용할 수 있는 흐름’을 구축하는 데 집중했습니다. 특히 글을 작성하는 행위가 조금 더 풍부해질 수 있도록 마크다운 에디터 구현에 큰 비중을 두었습니다. 단순한 input이 아니라, 텍스트와 감정, 카테고리, 체크박스 문법 등이 자연스럽게 녹아 있는 에디터를 직접 만들어보고 싶었습니다.

결과적으로 3주라는 짧은 시간 안에 서비스의 전체 흐름을 완성할 수 있었고, 무엇보다도 실제 사용자 대상 QA를 경험하며 기능을 다듬는 과정까지 나아갈 수 있었습니다. 단순히 동작하는 서비스를 넘어서, 사용자의 경험을 중심에 둔 제품으로 완성해 나간 과정이 이번 3주 중 가장 보람 있는 시간이었습니다.

“1주차 — 새로운 기술과 환경에 대한 도전”

이번 미션에서 가장 먼저 내린 결정은 “익숙함에서 벗어나보자”였습니다. React와 Next.js는 이미 익숙하게 다루던 기술이었기에, 이번에는 완전히 새로운 패러다임을 경험해보고 싶었습니다. 그런 마음으로 선택한 것이 바로 Svelte와 SvelteKit이었습니다. 처음엔 왜 굳이 Svelte를 써야 하는지 의문도 있었지만, 조사하고 코드를 분석해 나가면서 그 미니멀한 구조와 컴파일 기반 프레임워크가 가진 매력에 빠르게 끌렸습니다. Virtual DOM 없이 빌드 단계에서 DOM 업데이트를 직접 구성하는 구조는 기존의 UI 렌더링 방식보다 훨씬 직관적이었고, 반응성 또한 자연스러웠습니다. 특히 감정, 텍스트, 인터랙션이 유기적으로 연결되는 회고 서비스의 특성과 잘 맞는다는 점이 크게 다가왔습니다.

하지만 SvelteKit을 선택한 순간부터 바로 낯선 지점들이 드러나기 시작했습니다. Next.js 경험 덕분에 SSR·SSG·CSR 같은 개념 자체는 익숙했지만, SvelteKit은 같은 용어를 사용해도 작동 방식이 꽤 달랐습니다. 특히 라우팅 구조와 서버·클라이언트의 경계가 Next.js와는 다르게 정의되어 있어, +page.svelte, +page.server.ts, +layout 같은 파일들이 각각 언제 실행되고 어떤 방식으로 데이터를 주고받는지 이해하는 데 시간이 필요했습니다. 문서와 예제가 충분하지 않은 생태계도 한몫해, 작은 기능 하나를 구현할 때에도 “이 흐름이 맞는 걸까?”를 계속 확인해야 했습니다. 익숙한 개념이지만 다른 방식으로 구현된 구조를 마주하며, 자연스럽게 SvelteKit의 철학을 하나씩 몸으로 익혀가는 과정이 이어졌습니다.

첫 기능을 구현할 때는 React의 관성을 그대로 적용했다가 렌더링이 예상과 다르게 작동하거나, 값이 사라지는 등의 문제를 반복해서 마주했습니다. 하나의 버튼 동작을 구현하더라도 공식 문서를 꼼꼼하게 확인해야 했고, 데이터 흐름이 왜 이런 구조를 가지는지 이해하는 데 많은 노력이 필요했습니다. 하지만 이 과정은 결국 SvelteKit이라는 새로운 패러다임을 온몸으로 익히는 시간이 되었고, 그 과정에서 점점 더 탄탄한 방향성이 잡혀 갔습니다. 처음엔 복잡하고 낯설게 느껴졌던 구조가 어느 순간 자연스럽게 이해되기 시작했고, 이 프레임워크를 선택한 결정에 확신을 갖게 되었습니다.

“2주차 — 사용자 경험(UX) 완성도를 향한 도전”

2주차에 접어들면서 개발의 중심은 기능 구현에서 사용자 경험으로 이동했습니다. 단순히 잘 동작하는 기능보다, 사용자가 경험하는 흐름 전체가 자연스러워야 한다는 사실을 깊이 깨닫게 되었기 때문입니다. 특히 회고라는 행위가 본질적으로 개인적이고 반복적인 작업이라는 점에서, 사용자가 불편함 없이 몰입할 수 있는 환경이 필요했습니다.

기본 alert나 prompt 같은 브라우저 요소들은 기능적으로는 충분했지만, 서비스 디자인과 맞지 않아 매번 흐름이 깨지는 느낌을 주었습니다. 그래서 이 부분을 모두 커스텀 모달로 대체해 relog의 전체적인 톤앤매너에 맞게 UI를 일관되게 유지했습니다. 또한 사용자에게 알림을 전달하는 방식도 toast UI를 통해 보다 부담 없이 자연스럽게 전달되도록 구성했습니다. 페이지 구조와 동선도 최대한 간결하게 유지하여, 사용자가 고민 없이 회고를 작성할 수 있는 경험을 만드는 데 집중했습니다.

사용자 흐름을 실제로 따라가 보면서 많은 깨달음도 있었습니다. 개발자가 보기엔 당연하거나 자연스러워 보이는 UI도, 실제 사용자에게는 막히는 지점이 되기도 하고, 사소해 보이는 디테일이 전체 경험을 크게 좌우하기도 했습니다. 이 과정에서 “사용자의 관점으로 생각하는 연습”이 습관처럼 자리 잡기 시작했습니다. 이전에는 기능 단위로 작업하는 방식에 익숙했다면, 이번에는 로그인부터 작성·저장·조회·수정·공유까지 이어지는 전체 흐름을 한 번에 바라보며 개발해야 한다는 사실을 배웠습니다. 덕분에 기능을 만드는 개발자에서 경험을 설계하는 개발자로 한 단계 성장할 수 있었습니다.

“3주차 — 실제 사용자 테스트라는 새로운 도전”

3주차에는 실제 사용자 테스트를 거치며 relog가 가장 빠르게 발전했습니다. 기능적으로는 작동하고 있었지만, 실제 사용자가 남긴 피드백은 개발자가 예상하지 못했던 디테일을 많이 발견하게 해줬습니다. 특히 작성 페이지는 가장 많은 개선이 이루어진 부분이었습니다. 모바일 환경에서의 사용성을 개선하고, 감정 칩의 디자인과 색감의 이질감을 해소하며, 마크다운 체크박스 문법과 코드 하이라이트를 추가해 실제 회고 경험을 더 풍부하게 만들었습니다. 또한 모든 필드를 채워야 저장할 수 있었던 불편함을 완화해 최소 한 칸만 입력해도 저장이 가능하도록 구조를 바꾸었습니다.

디테일 페이지에서는 선택한 감정만 깔끔하게 표시되도록 개선했으며, 공유 플로우도 모달을 통해 명확하게 정리해 사용자들이 혼란 없이 공유 기능을 사용할 수 있도록 했습니다. 리스트 페이지에서는 감정 배치, 삭제 UI 겹침 문제, 드롭다운 UX 등을 개선하고, 제목뿐 아니라 내용까지 검색이 가능하도록 기능을 확장했습니다. 마이페이지에서도 입력 포커스 스타일 개선, 탈퇴 플로우 정리 등 작은 불편함을 제거하는 작업이 이어졌습니다. 이 외에도 버튼의 커서 포인터, 파비콘, 스크롤 구조 등 눈에 잘 드러나지 않지만 전체 경험을 매끄럽게 만드는 수많은 디테일을 다듬었습니다.

무엇보다도, 이 과정에서 사용자들이 원하는 새로운 기능에 대해 더 깊게 고민하게 되었습니다. 자동 태그 추천, LLM 기반 한 줄 요약, 임시 저장글 관리, 프로필 이미지 변경 등 서비스의 확장성을 고려한 다양한 아이디어가 생겨났고, 이 모든 경험은 relog를 단순한 프로젝트가 아닌, 사용자 중심의 서비스로 성장시키는 중요한 전환점이 되었습니다.

“3주간의 성장”

이번 오픈미션은 단순히 기능을 완성하는 프로젝트가 아니라, 개발자로서 성장한 순간들로 가득한 여정이었습니다. 기술적으로는 새로운 프레임워크를 최대한 처음부터 끝까지 이해하며 성장했고, UX 관점에서는 사용자의 흐름을 중심으로 기능을 바라보는 사고방식으로 전환할 수 있었습니다. 또한 꾸준히 기록하며 작업을 정리하는 과정 속에서 학습적인 성장뿐 아니라 심리적으로도 안정과 자신감을 얻었습니다. 그리고 무엇보다, 앞으로 어떤 개발자가 되고 싶은지에 대한 기준이 선명해졌습니다. 저는 단순히 작동하는 기능을 만드는 개발자가 아니라, 사용자의 흐름과 경험 전체를 설계하는 개발자로 성장하고 싶다는 목표를 이번 프로젝트를 통해 다시 확인할 수 있었습니다.

“아쉬움과 다음 도전”

이번 프로젝트에서 아쉬웠던 점이 있다면, 가장 먼저 호스팅 환경 선택의 한계를 들 수 있습니다. 빠른 배포를 위해 Firebase Hosting을 선택했지만, SSR을 지원하지 않는 구조는 SvelteKit의 풀스택 기능을 제대로 활용하기 어려웠습니다. SSR을 구현하려면 별도의 Firebase Functions를 사용해야 했고, 이는 프로젝트 구조를 복잡하게 만들었습니다. 만약 Vercel이나 Netlify처럼 SSR을 네이티브로 지원하는 환경을 선택했다면, SvelteKit의 서버 라우트와 API 엔드포인트를 자연스럽게 활용하며 더 유연한 구조를 만들 수 있었을 것입니다. 이 경험을 통해 기술이나 호스팅 선택 역시 프로젝트의 방향성에 따라 전략적으로 고민해야 한다는 중요한 교훈을 얻었습니다.

하지만 relog는 여기서 끝나는 프로젝트가 아닙니다. 오픈미션이 끝난 뒤에도 저는 relog를 계속 운영하고 발전시키고 싶은 목표를 가지고 있습니다. 이미 떠올린 v2 구상에는 LLM 기반 회고 요약 기능, 캘린더 기반 기록 분석 기능, 더 정교한 데이터 모델링과 백엔드 구축 등 다양한 도전과제가 있습니다. 이 과정은 단순한 기능 확장을 넘어, 개발자로서 성장하고 싶은 방향을 테스트하는 새로운 여정이 될 것이라 기대하고 있습니다. relog는 저에게 하나의 완료된 프로젝트가 아니라, 앞으로 계속 이어질 도전의 출발점입니다.

“마무리하며”

이번 오픈미션을 한 문장으로 요약하자면, “스스로 만든 기준 안에서 도전하며 성장한 3주”였습니다. 익숙함에서 벗어나 새로운 기술을 선택하고, 사용자 경험을 중심으로 기능을 다듬고, 실제 피드백 속에서 서비스가 변화하는 과정을 경험하며 저는 개발자로서 새로운 기준을 만들 수 있었습니다. 앞으로도 이 기준을 잃지 않고, 더 깊고 넓게 성장해 나가고 싶습니다. 긴 글을 읽어주셔서 감사드리며, relog의 다음 도전을 함께 지켜봐 주셨으면 좋겠습니다.

| 내일 목표

우아한테크코스 프리코스 8기의 오픈 미션은 여기서 끝이 나지만, 저의 relog 개발 여정은 이제부터 다시 시작입니다. 내일부터는 미뤄두었던 개선 작업과 새로운 기능 구상을 이어가며, 더 완성도 있는 서비스로 성장시켜보려고 합니다.

앞으로는 ‘우테코’ 카테고리가 아닌, 별도의 ‘relog’ 프로젝트 카테고리를 만들어 계속 개발 일지와 업데이트 내용을 기록할 예정입니다. 관심 있게 지켜봐 주시면 감사하겠습니다!

relog와 함께 이어질 다음 소식들도 기대해 주세요. 더 좋은 모습으로 찾아오겠습니다!

| 한 줄 회고

: "3주, 올해 내가 경험한 몰입 중 제일 뜨거웠던 순간"