10주가 지났다.
시작할 땐 이 시간이 멀게만 느껴졌는데,
막상 끝에 서서 돌아보니 눈 깜짝할 사이에 지나간 것 같다.
매일이 벅찼다.
하나를 겨우 이해하면 그 사이에 두세 개가 새로 밀려들었고,
못 끝낸 숙제는 다음 날의 나에게 그대로 넘어갔다.
머릿속은 늘 무언가로 가득 차 있었다.
다행히 내 업무는 생각보다 여유 시간이 꽤 있는 편이라,
그 틈을 과제와 개념을 다시 들여다보는 데 썼다.
막히는 부분을 붙들고 클로드와 이런저런 이야기를 나누며 답을 찾곤 했다.
예전엔 10시 전이면 잠들던 사람이었는데, 멘토링에 과제에 청강까지 겹치면서 잠드는 시간이 12시, 1시로 밀렸다. 힘들다는 말로도 부족한 날들이었다.
그런데 이상하게도, 그 시간을 떠올리면 나쁘지 않은 기분이 남는다. 처음엔 지난 일을 미화하는 마음인 줄 알았는데, 가만히 생각해보니 조금 달랐다. 그건 그 순간순간에 집중하며 열심히 고민했던 나 자신이 뿌듯했던 거였다.
무언가에 빠져본 적이야 있지만 이번엔 결이 조금 달랐다. 완전히 몰입하진 못한 날도 많았지만, 그래도 이 10주 동안 나는 하나를 놓지 않고 있었다. 결과가 늘 만족스러웠던 건 아니지만, 끝까지 붙들고 파고들었던 그 태도만큼은 스스로 기특하다. 그렇게 열심히 보낸 시간이 남긴 것들을, 이제 하나씩 꺼내어 정리해보려 한다.
거의 다 처음이었다
시작하기 전에도 왜 그렇게 하는지 나름대로 고민은 했다.
다만 경험이 없고 아는 게 좁다 보니, 생각할 수 있는 깊이에 한계가 있었다.
막상 시작해보니 거의 다 처음 보는 것들이었다. 아는 것이라곤 손에 꼽을 정도였고, 모르는 게 한꺼번에 밀려와서 정말 버거웠다. 솔직히 어디서부터 손을 대야 할지도 막막했다.
게다가 나는 그동안 특별한 목표 없이 그냥 흘러가는 대로 지내온 사람이었다. 어딘가 멈춰 있는 듯한 느낌, 앞으로 나아가지도 뒤로 밀리지도 않는 애매한 자리에 머물러 있었다.
10주, 주차별로 돌아보면
첫 3주는 모든 게 시작되던 시기였다. 회원가입을 필두로 상품, 좋아요, 주문처럼 서비스의 가장 기본이 되는 기능들을 하나씩 세웠다.
이때 절실히 느낀 게 '먼저 설계해보는 것'의 힘이었다.
마음이 급할수록 코드부터 손이 갔는데, 그럴 때마다 오히려 더 헤맸다. 무엇을 왜 만드는지, 데이터가 서로 어떻게 얽히는지를 먼저 그려두고 시작하면 길을 덜 잃었다. 급할수록 설계에 시간을 쓰는 게 결국 지름길이라는 걸 이 초반에 배웠다.
또 하나 처음 만난 게 '테스트를 먼저 쓰는' 방식이었다.
만들 기능이 어떻게 동작해야 하는지를 테스트로 먼저 적어두고, 그걸 통과시키는 코드를 뒤따라 쓰는 순서다.
처음엔 순서가 거꾸로 된 것 같아 번거로웠는데, 막막한 과제 앞에서 '무엇부터 손댈지'를 정해주는 나침반이 되어줬다. 지금까지도 나를 받쳐주는 습관이 여기서 생겼다.
조금 익숙해질 무렵, 현실적인 문제들이 하나둘 나타났다.
인기 상품은 여러 사람이 같은 순간에 주문한다.
이때 남은 재고를 잘못 세면 있지도 않은 물건을 팔아버리게 된다.
그래서 '한 번에 한 명씩만 재고를 건드리도록' 차례를 지키게 만드는 법을 배웠다.
결제는 우리 손 밖에 있는 외부 결제사를 거치는데, 그쪽이 느려지거나 멈추면 우리 서비스까지 덩달아 멈출 수 있었다.
그래서 결제가 실패하거나 응답이 없어도 서비스가 무너지지 않고, 나중에 상태를 되돌려 바로잡을 수 있게 만드는 걸 처음으로 진지하게 고민했다.
'잘 되는 경우'만이 아니라 '안 될 때 어떻게 버티느냐'를 설계에 넣기 시작한 시기다.
그다음은 많은 사용자를 견디는 방법이었다. 같은 데이터를 매번 무겁게 꺼내오는 대신, 자주 찾는 것은 빠른 임시 저장소에 담아두고 가볍게 읽게 했다.
또 주문 하나가 끝나면 뒤따라 붙는 일들을 본 흐름에서 떼어내, 뒤에서 따로 처리되도록 나눴다.
덕분에 사용자는 기다리지 않고, 부가 작업은 그 뒤에서 조용히 돌아간다.
선착순 쿠폰이나 대기열처럼 '한꺼번에 몰리는 순간'을 다루는 법도 이때 익혔고, 실시간으로 인기 순위를 매기는 기능까지 붙였다.
마지막 주제는 '랭킹 및 미리 계산해두기'였다.
지금 이 순간의 순위는 실시간으로 보여주면 되지만, 한 주나 한 달치 순위는 볼 때마다 수십만 건을 그 자리에서 더할 수 없다.
그래서 무거운 계산은 정해진 때에 한꺼번에 미리 해두고, 조회는 그 결과만 가볍게 읽도록 나눴다. 보여주는 일과 계산하는 일을 시간대로 떼어놓는 발상을, 이 마지막 주에 배웠다.
매일을 받쳐준 습관, TDD
돌아보면 가장 기억에 남는 건 화려한 무언가가 아니라, 1주차에 배운 TDD였다. 처음엔 테스트부터 쓰는 게 번거롭고 낯설었는데, 10주 내내 잘 써먹으면서 오히려 나를 받쳐주는 습관이 됐다.
실패하는 테스트를 먼저 만들고, 그걸 통과시킬 최소한의 코드를 쓰고, 다시 다듬는 그 흐름 덕분에 막막한 과제 앞에서도 '어디부터 시작할지'를 잡을 수 있었다. 무엇을 만들지 막연할 때 테스트가 첫 질문이 되어줬다. 화려하진 않아도 매일의 작업을 받쳐준 이 방식을, 누구에게든 가장 먼저 추천하고 싶다.
맡기지 않고, 함께 맞춰간 파트너
이 과정에서 클로드 코드를 쓰는 방식도 조금씩 달라졌다. 처음엔 모르는 걸 물어보고 답을 받는 정도로 썼다. 그런데 시간이 지나면서, 무언가를 통째로 맡기고 결과만 받아오는 도구가 아니라 함께 맞춰나가는 파트너에 가깝게 쓰게 됐다.
설계 단계에서 '이런 선택지가 있는데 각각 무엇을 포기해야 하느냐'를 같이 따져보고, 테스트를 어떻게 짤지 맞춰보고, 구현을 한 줄씩 함께 다듬어 나갔다. 답을 대신 내주는 존재라기보다, 내 생각을 소리 내어 정리하게 하고 내가 놓친 관점을 되짚어주는 상대였다.
그렇게 주고받다 보면 어느새 내가 왜 이걸 이렇게 만들었는지를 스스로 설명할 수 있게 됐다. 맡겨서 편해지려고 쓴 게 아니라, 같이 고민해서 내가 더 이해하게 되는 쪽으로 썼던 것 같다.
멘티와 멘토링
특히 좋았던 건, 하나의 과제를 두고 여러 사람의 생각을 볼 수 있었다는 점이다. 같은 과제를 풀어가는 방식도 사람마다 다 달랐고, 그 안에는 각자가 쌓아온 경험이 담겨 있었다.
그 다양한 시선을 통해 나는 그들의 경험을 조금이나마 느낄 수 있었고, 동시에 내가 아직 한참 멀었다는 걸 느꼈다. 그래서 우쭐하지 말고 더 열심히 해야겠다고 마음먹었다.
멘토링 시간도 그랬다. 정작 내가 던진 질문은 많지 않았다. 하지만 다른 사람들이 던진 질문과, 거기에 하나하나 붙는 세세한 답변을 듣는 것만으로도 얻어가는 게 많았다. 내가 미처 궁금해하지 못한 것까지 누군가 대신 물어봐 준 셈이다.
다만 그 대화를 온전히 따라가려면 넘어야 할 문턱이 있었다. 생소한 단어나 개념, 배경지식이 나오면 이야기의 핵심에 닿기도 전에 그것부터 찾아 익혀야 했다. 그래서 좋은 답이 오가는 자리에서도 나는 종종 한 발 늦게 이해하곤 했다.
아직 남은 아쉬움
한편으로는 아쉬움도 남는다. 남들은 저마다 날카로운 질문을 던지는데, 나는 어떤 질문을 해야 할지조차 몰랐다. 그게 깊이 파고들어야 나오는 질문이었던 건지, 아니면 그냥 내가 몰라서였던 건지 아직도 잘 모르겠다.
사실 내가 모르는 걸 남이 알고 있으면, 그것만으로도 그 질문은 날카로워 보일 수 있으니까. 그 답을 스스로 내리지 못한 채 이 시간을 보낸 게 계속 아쉽다. 하지만 그 아쉬움도 내가 어디쯤 서 있는지 알려주는 신호라고 생각하고, 다음엔 좋은 질문을 던질 수 있는 사람이 되고 싶다.
무엇이 달라졌나
10주가 지난 지금도 그 한계를 완전히 넘었다고는 못 하겠다. 그래도 어떤 선택지가 있고, 왜 이걸 골랐고, 그로 인해 무엇을 포기해야 하는지를 조금 더 넓게 보게 됐다.
답을 아는 것보다, 그 답에 이르기까지 고민하고 부딪힌 경험이 진짜 남는다는 걸 알게 됐다.
그리고 늘 품고만 있던 '어떤 목표를 향해 어떻게 나아가는가'라는 질문에, 이제야 조금씩 길이 보이기 시작했다.
방법을 몰라 멈춰 있던 내가 한 걸음씩 움직이는 것 같다.
Loop:PAK - 새로운 코딩 교육의 시작, 루퍼스에서 곧 만나요!
루퍼스 부트캠프는 크루원들의 한단계 높은 성장을 이끄는 선순환을 목표로 현업 개발자와 협업하여 새롭게 탄생한 실전 개발 강의입니다. 열정있는 여러분에게, 진심을 다하는 루퍼스가, 진짜
www.loopers.im
추천인 코드: DE6S8
'Loopers > WIL' 카테고리의 다른 글
| Week 6. 이론과 수치 (0) | 2026.06.26 |
|---|---|
| Week 5. 인덱스와 캐시 (0) | 2026.06.19 |
| Week 4. 동시성 제어 (0) | 2026.06.12 |
| Week 3. 도메인 주도 설계 (0) | 2026.05.29 |
| Week 2. 설계는 선택의 연속이다. (0) | 2026.05.22 |