- Published on
[Reflection] 첫 회사를 퇴사하고 한 달
- Authors

- Name
- 이민기
- Github
- @lapidix
27 min read721 views
1. Introduction
28살 여름, 블록체인 솔루션 회사에 프론트엔드 개발자로 입사하면서 개발자로서의 커리어가 시작되었습니다. 블록체인에 대한 열정과 기술적 성장에 대한 갈증을 안고 시작한 첫 회사에서 3년 2개월을 보냈고, 결국 퇴사를 결정했습니다.
퇴사를 하고 한 달이 지났습니다. 나름 열심히 했다고 생각하는데, 정작 내가 무엇을 했는지 제대로 정리하지 못했습니다. 정리해야겠다고 생각만 하다가 미루고 있었는데, 최근 보던 웹툰에서 한 인물이 자신의 시작을 되돌아보는 장면이 나왔습니다. 왜 탁구를 시작했는지, 처음 라켓을 잡았을 때 어떤 생각이었는지를 돌아보면서 앞으로 나아가는 모습을 보고, 저도 지금 이 작업이 필요하다는 생각이 들었습니다.
지금은 개발 공부를 처음 시작하겠다고 다짐했던 강릉에 와서 그간의 여정을 돌아보는 시간을 갖고 있습니다.
회고는 전체적으로 YWT형식을 사용했고, 각 프로젝트는 KPT형식을 기준으로 작성했습니다!
2. Y - What I did
돌이켜보면 여러가지 일을 했지만 기억에 남는 3가지로 줄여서 작성했습니다.
2-1. 전자계약 서비스
입사 직후 맡게 된 프로젝트는 SKT PASS에 탑재될 전자계약 서비스였습니다. 기획자, 디자이너, 개발자 모두 주니어로 구성된 팀이었고, 블록체인을 공부하면서 함께 학습한 암호학 지식 덕분에 입사 초기부터 기획 단계에 적극적으로 참여할 수 있었습니다. 서비스의 전체 시나리오를 설계하고, 특히 계약서의 증명 모델을 설계하는 과정에서 대표님과 의견을 주고받으며 기술적 결정을 내리는 경험이 정말 즐거웠습니다.
마감 기한이 한 달 앞당겨지는 예상치 못한 상황도 있었지만, 밤을 새워가며 개발하는 순간들이 힘들기보다는 재미있었습니다. 주니어들끼리의 편한 분위기 속에서 기획자, 디자이너와 긴밀하게 소통하며 예외 처리 화면이나 UI/UX 개선 사항을 적극적으로 제안하고 설득했고, 백엔드 개발자와도 좋은 관계를 유지하며 협업했었습니다.
Keep
기획 단계부터 적극적으로 참여하며 기술적 의견을 제시한 점은 정말 잘한 선택이었습니다. 단순히 주어진 스펙을 구현하는 것이 아니라, 암호학 지식을 바탕으로 증명 모델을 설계하고 대표님과 기술적 논의를 주고받으며 의사결정 과정에 참여한 경험은 이후 프로젝트에서도 큰 경험이 되었습니다. 주니어 팀 구성이라는 특수한 상황 속에서도 수평적이고 활발한 커뮤니케이션을 이끌어낸 점 역시 좋은 협업 문화를 만드는 데 기여했다고 생각합니다.
Problem
급한 일정에 쫓겨 여러 라이브러리를 무분별하게 도입한 것은 명백한 실수였습니다. 프로젝트가 라이브러리 덩어리가 되어버렸고, 그 결과 초기 로딩 속도 저하를 포함한 여러 문제가 발생했었습니다. 이후 개선 작업을 진행하긴 했지만, 애초에 각 라이브러리의 필요성과 트레이드오프를 제대로 검토했다면 피할 수 있었던 기술 부채를 느꼈습니다.
테스트 코드 작성도 비슷한 맥락입니다. 주변 백엔드 개발자들이 테스트 코드를 작성하는 것을 보고 테스트의 필요성을 느껴 작성하기 시작했지만, 당시에는 테스트에 대한 지식이 전무했습니다. 이미 Form에서 검증된 Input을 또 테스트한다거나, 중복된 테스트 코드가 많았고, 커버리지는 높았지만 실효성 없는 테스트가 대부분이었습니다. 테스트 코드를 '왜' 작성하는지는 알았지만, '어떻게' 작성해야 하는지는 몰랐던 것이라고 생각합니다.
Try
라이브러리를 도입하기 전에 반드시 트레이드오프를 분석하는 습관을 들여야 한다고 생각이듭니다. "이 기능을 라이브러리로 해결해야 하는가, 직접 구현하는 것이 더 나은가"를 고민하고, 번들 사이즈, 유지보수 가능성, 프로젝트와의 적합성을 따져봐야 합니다.
테스트 코드는 커버리지보다 '의미 있는 시나리오' 중심으로 작성하는 방법을 배워야 합니다. 단순히 함수가 호출되었는지를 확인하는 것이 아니라, 비즈니스 로직이 올바르게 동작하는지, 엣지 케이스가 제대로 처리되는지를 검증하는 테스트를 작성해야 합니다. 이후 프로젝트에서는 테스트 코드 작성 전에 "이 테스트가 실패했을 때 어떤 버그를 잡아낼 수 있는가"를 먼저 생각해보는 계기가 되기도 했습니다.
2-2. 엔터프라이즈 블록체인 솔루션
전자계약 서비스 이후 Decentralized Identity(DID)에 대한 R&D와 각종 제안서 작업을 거쳐, 블록체인 솔루션 자체를 전반적으로 개선하는 프로젝트를 진행하게 되었습니다. 이 프로젝트에서 Admin 서버와 대시보드 개발을 담당했고, MSA(Microservices Architecture)로 구성된 시스템을 경험하며 이 시기에 모노레포, 모놀리식 아키텍처 등에 대한 개념도 학습했습니다.
이 시기가 제 개발 인생에서 큰 영향을 준 시기였습니다. 백엔드 개발을 진행하면서 단순히 API를 구현하는 수준을 넘어, 의존성 주입과 SOLID 원칙같은 설계 기법, Clean Architecture, Hexagonal Architecture 같은 소프트웨어 아키텍처와 DDD, TDD 같은 개발 방법론을 배우고 학습했습니다. 주변 동료들 덕분에 퇴근 후에도 백엔드 공부에 몰두했고, 설계에 대한 의견을 나누면서 정말 재미있게 개발했습니다. 백엔드를 익히면서 프론트엔드와 백엔드를 떠나 근본적인 개발 실력이 늘었다는 확신이 들었고, 시야가 많이 넓어졌다고 느꼈습니다.
Admin 서버 개발을 마치고 대시보드 웹페이지를 개발할 때는, 백엔드에서 배운 아키텍처 개념을 프론트엔드에 어떻게 적용할 수 있을지 고민하면서 프론트엔드적으로도 많이 성장한 시기였습니다.
Keep
백엔드 개발에 도전한 것은 정말 잘한 결정이었다는 생각이 듭니다. 프론트엔드 개발자로 입사했지만, 백엔드를 경험하면서 전체 시스템을 바라보는 관점을 얻었고, 단순히 기능을 구현하는 것을 넘어 "왜 이렇게 설계해야 하는가"를 고민하게 되었습니다. 백엔드를 개발하면서 학습한 원칙들을 프론트엔드에도 적용할 수 있었고, 이후 프론트엔드 코드를 작성할 때도 계층 분리, 의존성 관리, 도메인 로직 분리 같은 원칙들을 의식하게 되었습니다.
주변 동료들과 기술적 토론을 나누며 성장한 점도 유지하고 싶은 습관입니다. 서로의 설계에 대해 피드백을 주고받으면서 혼자서는 얻을 수 없었던 인사이트를 많이 얻었습니다. MSA 구조를 경험하면서 프론트엔드와 백엔드의 경계를 넘나들며 풀스택 역량을 키운 것도 큰 경험입니다.
Problem
인프라 구성에 소극적으로 참여한 것은 아쉬운 부분입니다. 물론 백엔드 학습에 집중하느라 물리적 시간이 부족했던 것도 사실이지만, 그럼에도 불구하고 Kubernetes 같은 인프라 기술에 더 적극적으로 참여했으면 좋았을 것 같습니다. 메시지 큐도 프로젝트에서 Kafka를 거쳐 NATS Streaming을 사용했지만, Producer와 Consumer 구현에 그쳤을 뿐 브로커 자체에 대한 깊이 있는 학습은 하지 못했습니다.
데이터베이스에 대한 깊이도 부족했습니다. 프로젝트에서 MongoDB와 Mongoose를 사용했지만, NoSQL의 강점을 충분히 활용했다기보다는 필요한 기능을 기반하여 간단하게 설계하는 수준에 그쳤습니다. 다른 아쉬운 점은 RDB를 경험해보지 못한 점입니다. PostgreSQL 같은 관계형 데이터베이스에서의 트랜잭션 관리, 인덱스 설계, 정규화, 쿼리 최적화 같은 데이터베이스 설계 원칙들을 직접 다뤄보지 못한점이 아쉽습니다.
프론트엔드에서는 TurboRepo를 사용했지만 강점을 충분히 활용하지 못했습니다. 모노레포 구조를 통해 여러 프로젝트의 디자인 시스템을 구축하여 모듈화는 적극적으로 활용했지만, TurboRepo의 핵심인 빌드 캐싱, 증분 빌드, 원격 캐시 같은 성능 최적화 기능들은 제대로 활용하지 못했습니다. 모노레포의 장점을 일부만 경험한 채로 넘어간 것이 아쉽습니다.
Try
다음 프로젝트에서는 인프라 구성에 직접 참여하는 경험을 쌓고 싶습니다. Docker 파일 작성 정도는 할 수 있지만, 멀티 스테이지 빌드나 최적화 같은 부분은 부족하고, Kubernetes로 실제 배포 파이프라인을 구축하는 경험은 전무합니다. 프론트엔드 개발자로서는 과할 수도 있지만, 전체 시스템을 이해하고 효율적으로 협업하기 위해서는 인프라에 대한 경험도 필요하다고 생각합니다.
메시지 큐도 Kafka나 NATS Streaming의 브로커 아키텍처를 깊이 있게 학습하고, 이벤트 기반 아키텍처를 직접 설계하고 구현해보고 싶습니다.
데이터베이스는 PostgreSQL 기반으로 트랜잭션 처리, 인덱스 설계, 쿼리 최적화를 직접 경험해보고 싶습니다. 단순히 ORM으로 추상화된 레이어만 사용하는 것이 아니라, 실제 쿼리가 어떻게 실행되고 어떤 성능 특성을 갖는지 이해하고 싶습니다. MongoDB와 PostgreSQL의 트레이드오프를 명확히 이해하고, 프로젝트 특성에 맞는 데이터베이스를 선택할 수 있는 능력을 키우고 싶습니다.
프론트엔드에서는 TurboRepo의 핵심 기능들을 제대로 활용해보고 싶습니다. 빌드 캐싱과 증분 빌드를 통한 빌드 시간 단축, 원격 캐시를 활용한 팀 전체의 빌드 효율화를 경험하며 모노레포 환경에서 효율적인 개발 워크플로우를 구축하고 싶습니다.
2-3. Cosmos SDK로 자체 네트워크 개발
블록체인 솔루션은 이더리움 기반의 Quorum과 Hyperledger를 사용하는 것으로 개발되었지만, 저는 회사에 자체 네트워크가 필요하다고 생각했고 이를 적극적으로 어필했습니다. 다른 서비스 기능 추가, 유지보수, 제안서 작업 등으로 바빴지만, 결국 자체 네트워크 개발 승인을 받고 혼자서 개발을 시작했습니다.
이더리움 포크, Polkadot SDK, Cosmos SDK 등 여러 선택지가 있었지만, 회사 밖에서도 Cosmos SDK를 공부하고 있었고 내부 회의를 통해 Cosmos SDK로 결정되었습니다. 실제 테스트넷을 회사 내부망으로 구성하면서 네트워크 인프라에 대해 배웠고, Golang과 노드 운영에 대해서도 많은 것을 학습했습니다.
Keep
자체 네트워크의 필요성을 적극적으로 제안하고 설득한 과정은 정말 값진 경험이었습니다. 단순히 개발만 하는 것이 아니라, 왜 이 기술이 필요한지, 어떤 가치를 제공할 수 있는지를 논리적으로 설명하고 의사결정자를 설득하는 과정에서도 많이 배웠습니다. Cosmos SDK, Polkadot SDK, 이더리움 포크를 비교 분석하며 각각의 장단점과 우리 프로젝트에 맞는 선택지를 찾아가는 과정도 즐거운 경험이었습니다.
테스트넷을 직접 구축하며 Golang, 네트워크 구성, 노드 운영을 경험한 것도 큰 경험이라고 생각합니다. 블록체인을 단순히 사용하는 것을 넘어, 직접 네트워크를 만들고 운영하면서 합의 알고리즘, P2P 네트워크, 상태 머신 같은 핵심 개념들을 이해할 수 있었으며, 네트워크 환경을 구축하면서 여러 트러블 슈팅을 통해서도 많이 배웠습니다.
Problem
자체 네트워크 기능에 대한 명확한 비전이 부족했습니다. 네트워크를 구축하는 것까지는 성공했지만, 결국 단순히 합의하고 데이터를 저장하는 체인에 그쳤고, 차별화된 기능이나 실제 유스케이스를 반영하지 못했습니다. 시장 리서치를 통해 어떤 기능이 필요한지, 다른 Cosmos 체인들은 어떤 모듈을 구현하고 있는지를 더 적극적으로 조사하고 제안했어야 했습니다.
EMS(Energy Management System) R&D로 회사 방향이 전환되면서 네트워크 고도화가 중단된 것도 아쉽습니다. 기본 설정과 denom 설정 같은 간단한 기능만 적용한 PoC 수준에 머물렀고, DID 모듈이나 NFT 모듈 같은 실질적인 기능 추가는 이루어지지 못했습니다.
Try
Cosmos SDK 프로젝트를 다시 시작한다면, 실제 유스케이스를 반영한 모듈을 구현하고 싶습니다. DID(Decentralized Identity), NFT, Oracle, IBC(Inter-Blockchain Communication) 연동 같은 기능을 추가해서 단순한 데이터 저장 체인이 아닌 실질적인 가치를 제공하는 네트워크를 만들고 싶다는 생각이 있습니다.
다른 Cosmos 생태계 체인들인 Osmosis, Celestia, Injective 등의 모듈 구조를 분석하고 벤치마킹하는 작업도 필요합니다. 각 체인들이 어떤 문제를 해결하기 위해 어떤 모듈을 설계했는지를 공부하면서, 실전에서 사용되는 아키텍처 패턴을 배우고 싶습니다.
현재 블록체인 밸리에서 벨리데이터팀으로 활동하고 있으니, 실제 메인넷이나 테스트넷을 운영하면서 노드 운영 경험을 더 쌓고 싶습니다. 이론과 실습을 넘어 실제 프로덕션 환경에서의 경험이 필요한 시점이라는 생각이 들었습니다.
2-4. 회사 밖에서의 활동
회사를 다니는 동안 퇴근 후에는 약속이 없는 날엔 항상 공부했습니다. 해야 할 공부도, 하고 싶은 공부도 너무 많았습니다.
DLVlabs
솔루션 백엔드를 개발할 때는 백엔드 개발 공부에 전념했고, 전후로는 프론트엔드를 공부했습니다. 그러던 중 매주 목요일마다 주변 지인과 함께 DLVlabs를 시작했습니다. Cosmos SDK 및 ABCI의 동작 원리를 공식 문서 기반으로 학습하며, 단순히 문서를 읽는 것을 넘어 실제 프로젝트로 발전시켰습니다. 현재는 IBC Transaction과 Vote Extension을 트래킹하기 위한 모니터링 시스템을 함께 개발하고 있습니다. Go로 백엔드를, Next.js와 TailwindCSS로 프론트엔드를 구성하며, TurboRepo를 활용한 모노레포 구조로 프로젝트를 진행하고 있습니다.
항해99 프론트엔드 5기
퇴사 직전인 2025년 3월부터 6월까지 항해99 프론트엔드 5기에 참여했습니다. 백엔드 개발과 학습에 몰두하다 보니 프론트엔드 개발과 멀어지는 느낌을 받아 신청했고, 실무 중심 과제와 멘토링을 통해 프론트엔드 역량을 체계적으로 다질 수 있었습니다.
Virtual DOM과 diff 알고리즘을 직접 구현하는 과제를 통해 React의 렌더링 원리와 내부 동작을 깊이 이해했습니다. 메모리 상에서 Virtual DOM이 생성·업데이트되는 과정과 diff 알고리즘의 동작 원리를 직접 구현하며 배울 수 있었고, 이후 컴포넌트 구조화, 렌더링 최적화, 상태 관리 패턴 등을 적용하며 복잡한 UI 상태 변화나 성능 저하 문제를 스스로 진단하고 해결하는 경험을 쌓았습니다.
특히 TDD(Test-Driven Development)와 Vitest, Testing Library를 활용한 테스트 작성에 집중했는데, 첫 회사에서 테스트 코드를 제대로 작성하지 못했던 아쉬움을 보완할 수 있는 좋은 기회였습니다. 단위 테스트, 통합 테스트를 작성하며 코드의 신뢰성을 높이고, 리팩터링이나 기능 추가 시에도 안정적으로 개발할 수 있는 경험을 쌓았습니다.
팀 과제는 개별로 진행했지만, 팀 내에서 정보를 적극적으로 공유하고 동료들을 격려하며 긍정적인 분위기를 이끈 점을 인정받아 소통상을 수상했습니다.
개인 블로그
개인 블로그를 운영하고 있습니다. Next.js 기반의 오픈소스 템플릿을 커스텀하여 MDX로 글을 작성하고, Vercel로 배포하며 학습한 내용을 정리하고 공유하고 있습니다.
항해99 수료 후에는 동료들과 함께 매달 블로그 글을 작성하고 발표하는 스터디를 진행하고 있습니다. 각자 학습한 내용이나 프로젝트 경험을 정리해서 공유하며, 글쓰기를 통해 지식을 체계화하고 동료들의 피드백을 통해 더 깊이 이해하는 시간을 갖고 있습니다.
오픈소스 기여
블록체인 생태계에서 취약점 발견, 버그 수정, 문서 개선 등 오픈소스 기여를 했습니다.
IBC-Go 취약점 발견
Cosmos의 핵심 모듈인 ibc-go에서 패킷 타임아웃 검증 로직의 취약점을 발견하고 이슈를 작성했습니다. --packet-timeout-height 플래그에서 RevisionNumber를 높게 설정하면 트랜잭션이 영원히 타임아웃되지 않는 문제였습니다. SendPacket()의 Timeout.Elapsed() 함수 내부 검증 로직을 분석하여 문제를 파악했고, Docker 기반 PoC 환경을 제공하여 문제를 재현할 수 있게 했습니다. 이후 두 가지 개선 방안을 코드와 함께 제안했습니다. 현재는 이슈를 등록한 뒤 응답을 기다리고 있습니다.
Hyperledger Indy Tails Server
Docker 컨테이너 환경에서 indy_vdr 설치 시 발생하는 오류를 해결했습니다. 다양한 버전을 테스트하며 라이브러리 로딩 오류의 근본 원인을 파악했고, requirements.txt에 특정 버전을 명시하여 일관된 빌드 환경을 보장하는 PR을 머지했습니다.
발표 활동
코드팩토리 IGNITE 2차
"개발 효율성을 높이기 위한 아키텍처와 코드 관리 방법"이라는 주제로 발표했습니다. 회사에서 경험한 모놀리식, MSA, 모노레포 아키텍처를 바탕으로 각각의 장단점과 실전 적용 사례를 공유했습니다. 실무 경험을 정리하고 다른 개발자들과 나누는 과정에서 제 지식을 한층 더 체계화할 수 있었습니다.
Blockchain Valley
현재는 고려대학교 기반의 블록체인 학회인 블록체인 밸리 8기에서 벨리데이터팀으로 활동하고 있습니다. 실제 메인넷이나 Cosmos 생태계에 대한 이해를 깊이 있게 확장해나가고 있습니다.
3. W - What I learned
3-1 기술적 성장
첫 회사에서의 3년 2개월은 기술적으로 엄청난 성장을 경험한 시간이었습니다. 프론트엔드 개발자로 입사했지만, 단순히 React와 Next.js로 화면을 만드는 수준을 넘어 전체 시스템 아키텍처를 이해하고 설계하는 능력을 키웠습니다.
프론트엔드 영역에서는 라이브러리 남용의 문제점을 뼈저리게 느꼈고, 선택적으로 기술을 도입하는 안목을 키웠습니다. 백엔드에서 배운 아키텍처 개념들을 프론트엔드에 적용하면서, 단순히 컴포넌트를 만드는 것을 넘어 유지보수 가능한 구조를 설계하는 방법을 고민하기 시작했습니다. Clean Architecture의 계층 분리 개념을 프론트엔드에 적용하거나, DIP를 활용해 외부 라이브러리 의존성을 추상화하는 패턴을 실험했습니다.
퇴사 후 참여한 항해99 프론트엔드 5기에서는 이론을 넘어 실전 역량을 다질 수 있었습니다. Virtual DOM과 diff 알고리즘을 직접 구현하며 React의 내부 동작 원리를 깊이 이해했고, TDD를 경험하며 첫 회사에서 부족했던 테스트 코드 작성 능력을 보완했습니다. 단위 테스트와 통합 테스트를 작성하며 코드의 신뢰성을 높이고, 리팩터링이나 기능 추가 시에도 안정적으로 개발할 수 있는 경험을 쌓았습니다.
백엔드 영역에서도 정말 많은 발전이 있었습니다. 단순히 Express나 Nest.js로 API를 만드는 수준에서, OOP 원칙을 지키며 의존성 주입, SOLID 원칙, Clean Architecture를 적용한 설계를 할 수 있는 수준으로 성장했습니다. 동료들과 아키텍처에 대해 토론하고, 서로의 코드를 리뷰하면서 "좋은 코드란 무엇인가"에 대한 관점이 생겼습니다. MSA 구조를 경험하면서 서비스 간 통신, 트랜잭션 처리, 데이터 일관성 같은 분산 시스템의 복잡성도 이해하게 되었습니다.
블록체인 영역에서는 Cosmos SDK로 자체 네트워크를 구축하는 경험을 했습니다. 블록체인을 단순히 사용하는 것이 아니라, 합의 알고리즘, P2P 네트워크, 상태 머신 같은 핵심 개념들을 이해하고 직접 구현해보면서 블록체인 아키텍처에 대한 깊이를 얻었습니다. Golang을 배우고, 노드를 운영하면서 인프라 관점에서의 블록체인도 경험했습니다. DLVlabs에서 Cosmos 공식 문서를 기반으로 학습하고, IBC-Go의 취약점을 발견하는 과정에서 코어 레벨의 코드를 보면서도 많이 배웠습니다.
다만 인프라 영역은 개념 수준에서 이해하는 데 그쳤습니다. MSA 구조, 메시지 큐, 이벤트 기반 아키텍처를 개념으로는 알지만, Docker 최적화나 Kubernetes로 배포 파이프라인을 만들어본 경험은 부족합니다. Kafka나 NATS Streaming 같은 메시지 브로커도 코드 레벨에서만 다뤘을 뿐 브로커 자체에 대한 깊이 있는 학습은 하지 못했습니다. 데이터베이스도 마찬가지로 PostgreSQL의 트랜잭션, 인덱싱, 쿼리 최적화 같은 부분을 깊이 있게 다루지 못했습니다
3-2 협업과 커뮤니케이션
기술만큼이나 중요한 것은 협업과 커뮤니케이션이라는 걸 배웠습니다. 주니어들끼리 구성된 팀에서 편한 분위기 속에 적극적으로 소통하며 기획자, 디자이너, 백엔드 개발자와 건강한 협업을 경험했습니다. 예외 처리나 UI/UX 개선 사항을 제안할 때, 단순히 "이게 더 나아요"가 아니라 "이런 문제가 있고, 이렇게 개선하면 이런 이점이 있습니다"라고 설득하는 방법을 배웠습니다.
자체 네트워크 개발을 승인받는 과정에서는 기술적 의사결정 과정에 참여하며 설득과 합의의 중요성을 체득했습니다. 단순히 내가 하고 싶은 기술을 주장하는 것이 아니라, 회사의 비즈니스 목표와 기술적 필요성을 연결해서 설명하는 능력이 필요하다는 걸 깨달았습니다.
항해99에서 소통상을 받고, 이후 블로그 스터디를 통해 동료들과 지식을 공유하는 경험은 이러한 협업 능력을 더욱 강화시켰습니다. 혼자 공부하는 것을 넘어, 배운 내용을 정리하고 다른 사람에게 설명하면서 지식을 체계화하는 방법을 배웠습니다.
3-3 방향성
기술적으로는 많이 성장했지만, 정작 내가 무엇을 하고 싶은지는 명확하지 않았습니다. 프론트엔드도 재미있고, 백엔드도 재미있고, 블록체인 코어 개발도 흥미로웠습니다. Web3도 하고 싶고, B2C 제품도 만들어보고 싶었습니다. 매주 Cosmos 기술 스택을 공부하고, 벨리데이터 활동도 하고, 프론트엔드 공부도 하는데, 정작 내가 어느 방향으로 가고 있는지 알 수 없었습니다.
"공부는 많이 하는데 집중력이 떨어진다"는 자각은 명확한 신호였습니다. 넓은 지식은 좋지만, 방향성 없는 공부는 결국 깊이를 잃게 만듭니다. 회사의 방향성이 EMS 사업으로 바뀌면서, 나는 Web3나 B2C를 하고 싶다는 생각이 명확해졌고, 이 시점에서 멈춰서 내가 정말 무엇을 하고 싶은지 생각해야 할 필요성을 느꼈습니다.
4. T - What I'll try next
가장 먼저 해야 할 일은 커리어 방향성을 명확히 하는 것입니다. 퇴사 후 블록체인 밸리 활동과 여러 커피챗을 통해 다양한 사람들의 이야기를 들으며 방향을 구체화하는 중입니다.
기술적으로는 프론트엔드에서 Clean Architecture나 FSD를 실제 프로젝트에 적용하며 유지보수 가능한 구조를 설계하는 경험을 쌓고 싶고, React Native나 Flutter 같은 크로스플랫폼 개발과 Solidity 학습도 고려하고 있습니다. DLVlabs에서 진행 중인 모니터링 시스템을 완성하고 고도화할 예정입니다.
방향성이 어느 정도 잡히면 포트폴리오를 정리할 계획입니다. 각 프로젝트에서 어떤 기술적 의사결정을 내렸고 왜 그런 선택을 했는지, 어떤 트레이드오프가 있었는지를 문서화하는 작업입니다. Web3 생태계에서 오픈소스 기여를 이어가고, 블록체인 밸리에서 메인넷이나 테스트넷을 운영하며 실제 사용자에게 가치를 제공하는 경험을 쌓고 싶습니다.
궁극적으로는 프론트엔드 중심의 풀스택 개발 능력과 블록체인 아키텍처에 대한 이해라는 차별점을 명확히 하고 싶습니다. Cosmos SDK로 네트워크를 구축하고 운영할 수 있으며, 프론트엔드에서 지갑 연동과 트랜잭션 처리를 구현할 수 있고, 백엔드에서 블록체인 노드와 통신하는 시스템을 설계할 수 있는 수준을 목표로 합니다. Clean Architecture, DDD, FSD 같은 아키텍처 방법론을 실제 프로젝트에 적용하며 지속 가능한 코드를 작성하는 능력도 키워가고 싶습니다. 이런 경험들을 바탕으로 Web3 중심의 B2C 제품을 만드는 곳이든 블록체인 인프라나 프로토콜을 개발하는 회사든, 더 나은 가치를 제공하고 기여할 수 있는 곳에 합류하고 싶습니다.
5. 마치며
28살 여름에 시작한 첫 회사에서 3년 2개월을 보냈습니다. 전자계약 서비스에서 암호학 기반 증명 모델을 설계했던 경험, 백엔드 개발에 도전하며 아키텍처 설계를 배웠던 시간, Cosmos SDK로 자체 네트워크를 구축했던 순간들, 그리고 동료들과 기술 토론을 나누며 성장했던 모든 순간이 지금의 저를 만들었습니다.
부족한 점도 많았습니다. 인프라 경험이 얕았고, 테스트 코드를 제대로 작성하지 못했으며, 무엇보다 제가 정말 무엇을 하고 싶은지 명확하지 않았습니다. 그래서 지금 강릉에 와서 멈춰 서서 돌아보고 있습니다.
퇴사는 도망이 아니라 제대로 된 방향을 찾기 위한 선택이었습니다. 블록체인 밸리 활동, KBW 참여, 여러 커피챗을 통해 다양한 이야기를 들으며 조금씩 방향이 구체화되고 있습니다.
방향성을 명확히 하고, 부족한 부분을 채우며, 실전 경험을 쌓아가면서 "프론트엔드 중심의 풀스택 개발자이자 블록체인 아키텍처를 이해하는 엔지니어"를 지향하고 싶습니다.
감사하게도 주변에 좋은 사람들이 많았습니다. 이 회고는 그분들께 감사를 전하고, 다음 여정을 준비하기 위해 작성했습니다.
감사합니다!