2026년, 나를 다시 만들자

회고

· 13 min read
회고

올해를 한 문장으로 정리하면 “개발자라는 나의 대해서 다시 생각한 한 해”에 가깝다.

예전에도 코드를 짰고, 회사에서도 기능을 만들었다.
그런데 지금 와서 돌아보면 주어진 문제를 어떻게든 해결하는데 집중했다.

구글링으로 해결 방법을 찾고, ChatGPT가 나온 뒤에는 AI로 찾았다.
도구는 바뀌었지만 태도는 크게 바뀌지 않았다.
주어진 문제 해결에 급급했고, 돌아가면 끝이라고 생각했다.

올해는 나의 사고가 많이 바뀌었다.

···

처음으로 바닥을 보는 법을 배웠다

달라지겠다고 마음먹고나서 가장 먼저 마주한 건 기술보다 나의 습관이었다.

올해 초 나는 이렇게 생각했다.

내 바닥을 다지는 게 아니라, 내 바닥을 다지는 법을 배우자.

그때는 멱등성, 문제 정의, 테스트 케이스, TDD, BDD, OOP, 아키텍처 같은 단어들이 전부 생소했다.
이름만 들어본 것들은 많았지만, 왜 필요한지 내 말로 설명해본 적은 거의 없었다.
직접적으로 마주한 적은 처음이었다.

그리고 처음에는 AI를 덜 쓰는 게 좋은 태도라고 생각했다.
내가 오래 고민해야 내 것이 된다고 믿었다.
하지만 독이 된다는 것을 깨닫았다.

그때부터 AI를 보는 방식이 바뀌었다.

AI를 쓰느냐 마느냐가 중요한게 아니었다.
내가 문제를 정의하지 못한 상태에서 AI에게 답만 받는 것이 문제였다.
반대로 문제를 정의하고, 선택지를 비교하고, 테스트와 문서로 남길 수 있다면 AI는 단순한 답안지가 아니라 사고를 확장하는 도구가 될 수 있었다.

이 변화가 올해의 출발점이었다.

···

코드 작성에서 제품 생각으로 넘어갔다

멘토링에서 만들었던 것들은 크고 완성된 서비스라기보다 작은 실험에 가까웠다.

ZEP 이벤트를 Firebase Functions로 받아 Firestore에 저장하고 Slack으로 보내는 흐름을 만들었다.
입장과 퇴장 이벤트를 받아 메시지로 바꾸고, 원본 payload를 저장하고, Slack webhook으로 알림을 보내는 정도였다.

그 안에서도 배운 건 있었다.

처음에는 “연동이 된다”에 집중했다.
그런데 조금만 더 들여다보면 데이터를 어떻게 가공하는지가 중요했고, secret을 코드에 두면 안 됐고, Firestore rules는 닫혀 있어야 했다.

만들면서 어떻게 해야 이걸 맞닥뜨리게 되는 사용자가 더 편리하게 사용할 수 있을지 매력을 느낄 수 있을지 고민을 하게 되었다.
고민이 매우 즐거웠다.

···

ghworld 프로젝트를 시작했다

ChatAppProject, 지금의 ghworld는 올해 가장 많은 시간을 쓴 프로젝트다.

처음에는 외로운 사람이 들어와서 대화할 수 있는 공간을 만들고 싶었다.
단순 채팅앱보다는 고향 같은 마을, 잠깐 머물 수 있는 장소에 가까운 서비스를 상상했다.

그래서 정말 많은 것을 붙였다.
Spring Boot, Hexagonal Architecture, PostgreSQL, Cassandra, Redis, Kafka, WebSocket/STOMP, Next.js, React, Three.js, AWS EC2, nginx, Cloudflare, S3, CloudFront까지 이어졌다.

회원가입, 게스트 토큰, 3D 마을과 도서관, 실시간 위치 공유, 공개 채팅, 방문 집계, 건의, 고백, 편지, 감사 답장, 반응, 신고까지 만들었다.
Cucumber BDD, Testcontainers, ArchUnit, Checkstyle, Error Prone, NullAway, GitHub Actions도 붙였다.

이렇게 쓰면 그럴듯해 보이지만, 실제로는 시행착오가 많았다.

STOMP Simple Broker 기반으로 부하 테스트를 했을 때 256MB heap 환경에서는 VU 50 근처에서 서버가 감당하지 못했다.
heap을 1GB로 늘리고 Tomcat thread를 늘린 뒤에는 hard crash는 줄었지만, VU 200 근처에서 STOMP 연결 지연이 12초 이상으로 늘어졌다.
리소스만의 문제가 아니라 fan-out 구조와 broker dispatch 병목이 드러났다.

3D 마을도 한 번에 나온 게 아니다.
처음에는 2D 방향도 봤고, Phaser도 고민했다.
결국 Three.js로 넘어갔지만, 그 선택도 “멋있어 보여서”만으로 정당화할 수는 없었다.
내가 만들고 싶은 안식처의 감각을 표현하려면 어떤 장면, 어떤 이동, 어떤 UI가 필요한지 계속 다시 물어야 했다.

가장 큰 변화는 AI에 대한 생각이었다.

처음에는 일반 채팅 안에 AI NPC, 요약, 기억, pgvector, Kafka 흐름을 넣고 싶었다.
AI가 들어가면 더 좋아 보인다고 생각했다.
그런데 만들수록 서비스의 중심이 흐려졌다.

그래서 다시 덜어냈다.

일반 채팅은 사람 간 대화와 위치 공유에 집중시키고, AI/RAG는 도서관과 고백 데이터 쪽으로 분리했다.
개인 방, 캐릭터, 꾸미기, 포인트, 아이템 같은 저장 모델도 제거했다.

많이 붙여본 뒤에야 무엇을 빼야 하는지 알게 됐다.

···

이력서를 다시 써보기

올해 이력서를 다시 정리하면서 묘한 감정이 들었다.

글로 쓰면 무엇이든 그럴듯해진다.
WebSocket, Kafka, Cassandra, Three.js, RAG, AWS 배포 같은 단어는 보기 좋다.
하지만 단어가 많다고 내가 그만큼 단단해진 건 아니다.

회사에서 했던 일도 다시 생각해봤다.
전자결재, 그룹웨어, 로그인, 조직도, 웹메일 같은 시스템은 화려한 기술보다 운영 흐름을 놓치지 않는 게 중요했다.
고객사마다 서버, DB, 배포 방식, 전자결재 양식, 다국어, 외부 연동이 달랐다.
화면 하나를 고쳐도 세션, 로그, 프로시저, 다국어, 모바일, 배포 절차가 같이 따라왔다.

ghworld에서도 결국 같은 습관이 필요했다.
기능을 만들고 끝내는 게 아니라, 왜 그런 결정을 했는지 README, ADR, 학습 노트, handover 문서로 남겼다.
STOMP를 언제까지 유지할지, raw WebSocket으로 언제 넘어갈 수 있는지, 일반 채팅과 사서 RAG의 경계가 어디인지 문서로 남겼다.

“내가 어디까지 해봤고, 어디서 막혔고, 그래서 다음 판단을 어떻게 바꿨는지”를 보여주는 쪽이 더 중요하다고 느낀다.

···

다시 기본기로 돌아가는 중이다

사두고 읽지 않았던 책들을 하나씩 읽어가고 있고 탑다운으로 다시 한번 2~3 단계까지 들어가서 탑다운 학습을 하고 있다.

예전 같았으면 “이 정도는 안다”고 넘겼을 것이다.
지금은 나의 위치를 확실히 알고 다시 한번 되돌아보고 있다.

CS 공부나 코딩 테스트가 AI 시대에 의미 없어진 것처럼 보일 때도 있다.
하지만 올해 내가 겪은 건 반대에 가깝다. AI를 잘 쓰려면 오히려 내가 판단할 수 있는 기준이 있어야 했다.
테스트 피라미드의 목적을 모르면서 모양이 중요하지 않다고 말했던 것처럼, 기준이 없으면 AI가 준 답을 검증할 수 없다.

AI를 쓰더라도 내 판단의 바닥을 다지자고 결심했다.

···

올해의 변천사

올해 초의 나는 빠른 해결을 원했다.

문제가 생기면 답을 찾고, 답이 나오면 붙이고, 돌아가면 안심했다.
그 방식으로도 일을 할 수는 있었다. 하지만 오래 남는 것은 적었다.

나는 문제를 먼저 정의해야 한다는 걸 배웠다.
TDD, BDD, OOP, 아키텍처 등이 따로 떨어진 유행어가 아니라 내 제품을 안전하게 다루기 위한 도구라는 걸 조금씩 이해했다.

ghworld에서는 많이 만들었다.
실시간 통신 병목을 직접 봤고, 2D와 3D 사이에서 흔들렸고, AI를 어디에 둬야 하는지 다시 판단했다.
그 과정에서 기능을 추가하는 것만큼 기능을 제거하는 일도 중요하다는 걸 배웠다.

이력서를 정리하면서는 나를 포장하는 것보다 증거를 남기는 게 중요하다는 걸 느꼈다.
내가 잘한 것만 쓰는 게 아니라, 내가 어떤 조건에서 일했고 어떤 흐름을 확인했는지 써야 했다.

지금은 다시 기본기를 보고 있다.
이미 안다고 생각했던 것들을 다시 설명해보고 있다.
모르면 모른다고 적고, 틀리면 틀렸다고 남기고 있다.

올해의 나는 대단한 개발자가 된 게 아니다.

다만 예전보다 조금 덜 조급해졌고, 조금 더 구체적으로 부끄러워할 수 있게 됐다.

···

다음 목표

사용자와 가까운 그리고 제품을 사랑하는 개발자가 되고싶다.

남은 올해는 더 많이 보이게 만드는 것보다 더 정확하게 남기는 데 집중하려고 한다.

웹 기초, 브라우저 동작, 네트워크, 운영체제, 데이터베이스, 알고리즘을 AI와 함께 보되, AI가 말한 것을 내 말로 설명할 수 있는지 확인하려고 한다.

그리고 글도 조금 더 솔직하게 쓰고 싶다.

성과를 크게 보이게 만드는 글보다, 내가 어떤 착각을 했고 어떤 근거로 생각을 바꿨는지 남기는 글을 쓰고 싶다.