개발/회고

풀스택에서 프론트엔드 개발자로 보낸 3년, 그리고 새로운 시작

개발과 운동, 그리고 책장 2025. 10. 30. 22:24

들어가며

첫 회사에서 4년 6개월간 대입 입시 서비스를 개발하며 첫 커리어를 쌓았고, 두 번째 회사에서 프론트엔드 개발자로 3년을 보냈습니다. 이제 세 번째 회사로의 도전을 앞두고, 두 번째 회사에서의 경험을 정리해보려 합니다.

 

첫 회사에서는 정해진 틀 안에서 안정적인 서비스를 운영하는 법을 배웠다면, 두 번째 회사에서는 정말 다양한 프로젝트를 리드하며 많은 경험을 할 수 있었습니다.

 

첫 직장에서 두 번째 회사로

대입 입시 서비스 회사에서의 4년 6개월

첫 회사는 대입 입시 관련 서비스를 제공하는 회사였습니다. C#과 ASP.NET 기반의 레거시 시스템 위에서 일했고, 합격자 통합 관리 시스템, 원서접수 페이지, 입학상담 앱 등을 개발했습니다.

안정적인 환경이었지만, 한계도 명확했습니다:

  • 정해진 입시 일정에 맞춘 반복적인 개발 사이클
  • 레거시 기술 스택으로 인한 제약
  • 새로운 도전이나 기술 도입의 어려움

하지만 이곳에서 배운 것들이 있었습니다:

  • 대규모 트래픽 처리 (입시 마감일의 동시접속자 관리)
  • 데이터 정합성의 중요성 (합격자 발표는 실수가 허용되지 않음)
  • 다양한 대학별 요구사항을 하나의 시스템으로 통합하는 설계

영어교육 에듀테크 회사로의 이직 

2022년 10월, B2B 영어 교육 서비스를 주력으로 하는 영어 에듀테크 회사에 입사하면서 제 개발 인생의 터닝포인트가 시작되었습니다. 이 회사에서 저는 대부분의 프로젝트에서 프론트엔드 1인 개발자로서 수많은 프로젝트를 처음부터 끝까지 책임지게 되었습니다.

 

 

Vue.js와 함께한 3년, 그리고 20개가 넘는 프로젝트

프론트엔드 1인 개발자의 도전

처음에는 막막했지만, 이것이 오히려 저를 빠르게 성장시킨 원동력이 되었습니다. 기획 단계부터 참여하고, UI/UX 설계, 개발, 배포까지 전 과정을 책임지며 처음부터 끝까지 프로젝트를 이끌어가는 책임감을 느꼈습니다.

Vue 생태계와의 만남

Vue CLI에서 시작해 Vite로의 전환, Options API에서 Composition API로의 마이그레이션까지, Vue의 진화를 직접 체험하며 성장했습니다. 특히 Vite의 빠른 빌드 속도는 개발 생산성을 극적으로 향상시켰고, Composition API는 복잡한 로직을 더 깔끔하게 관리할 수 있게 해주었습니다.

 

<!-- 자주 사용했던 컴포저블 패턴 -->
<script setup>
import { useAuth } from '@/composables/useAuth'
import { useApi } from '@/composables/useApi'

const { user, isAuthenticated } = useAuth()
const { fetchData, isLoading, error } = useApi()

// 재사용 가능한 로직의 중요성
</script>

 

3년간의 주요 프로젝트들

1. 네이티브 앱 개발의 세계 - WebView의 가능성

강사앱, 학습 플랫폼 앱, 통합 서비스 앱 등 여러 모바일 앱을 개발하며, WebView 기반 하이브리드 앱 개발의 경험을 하게 되었습니다.

 

특히 기억에 남는 것은 이런 것들이 있습니다. 

  • APNS와 Firebase를 활용한 푸시 알림 시스템 구축: Push 알림이 제대로 작동하지 않던 레거시 앱을 정상화시킨 경험
  • Xcode와 Android Studio를 활용한 네이티브 브릿지 구현: JavaScript와 Native 코드 간의 통신 구조 설계
  • Module Federation으로 마이크로 프론트엔드 아키텍처 구축: 학습 앱에서 각 모듈을 독립적으로 개발/배포할 수 있는 구조 구현

2. B2B 맞춤형 서비스 개발 - 대기업에서 사용하는 서비스 개발 

BPO 서비스, 메일링 학습 서비스, 다면평가 시스템 등 대기업 클라이언트를 위한 맞춤형 서비스를 개발했습니다.

 

3. 통합 서비스 개발 – 아키텍처의 중요성

콘텐츠 아카이브 시스템과 통합수강신청 서비스를 개발하면서, 아키텍처가 얼마나 중요한지를 온몸으로 느꼈습니다.
예전에는 기능을 빠르게 만드는 데 집중했다면, 이 개발건은 처음부터 구조를 어떻게 잡을지 고민하며 시작했습니다.
그 결과, 코드가 훨씬 깔끔해지고 프로젝트 전반이 정돈되어 있다는 느낌을 받았습니다.
‘아, 이렇게 구성해두면 나중에 얼마나 편해지는지’ 몸소 체감한 경험이었습니다.

  • 3단계 계층형 카테고리 시스템으로 콘텐츠를 구조적으로 관리
  • LogRocket을 활용한 실시간 에러 트래킹 및 사용자 세션 모니터링
  • 권한별 접근 제어 시스템 (Master / Admin / User) 구현

이 프로젝트를 통해 좋은 아키텍처는 개발 속도보다 ‘지속 가능한 성장’을 가능하게 한다는 걸 배웠습니다.
단순히 “코드를 잘 짠다”를 넘어, “시스템을 잘 설계한다”는 게 어떤 의미인지 조금은 알게 된 시간이었습니다.

 

기술을 넘어선 성장

첫 회사에서는 정해진 틀 안에서 안정적으로 일했다면, 두번째 회사에서는 '내가 만든다'는 책임감과 자유를 동시에 경험했습니다.

협업의 진정한 의미

혼자 개발하는 것이 많았지만, 그래서 더 협업의 중요성을 깨달았습니다:

  • 백엔드 개발자와의 API 설계: API 설계 원칙 및 데이터 구조를 함께 고민하며 효율적인 데이터 구조 구축
  • 디자이너와의 소통: Figma 디자인을 픽셀 단위로 구현하면서도, 기술적 제약을 설명하고 대안을 제시
  • 운영팀과의 협업: Admin 페이지를 개발하며 실제 운영자들의 업무 프로세스를 이해하고 반영

 

기술 부채와의 싸움

20개가 넘는 프로젝트를 빠르게 진행하다 보니 아쉬운 점들도 있었습니다:

깊이 vs 넓이의 딜레마

  • 다양한 프로젝트를 경험했지만, 각 프로젝트를 깊이 있게 파고들 시간이 부족했음
  • 빠른 개발이 우선시되어 리팩토링이나 최적화에 충분한 시간을 투자하기 어려웠음

테스트 코드의 부재

  • 테스트 코드 작성의 우선순위가 밀렸음
  • 이로 인한 유지보수 비용 증가를 후반부에 체감

문서화의 아쉬움

  • 빠른 개발 속도를 따라가느라 문서화가 제대로 이루어지지 않음
  • 프로젝트 인수인계나 유지보수 시 어려움 경험

 

3년을 돌아보며

숫자로 보는 3년

  • 20개 이상의 프로젝트 완수
  • 5개의 네이티브 앱 개발 (WebView 기반)
  • 대기업 맞춤형 서비스 구축
  • Module Federation 도입
  • Jenkins CI/CD & Nginx 설정

배운 교훈들

"완벽한 코드보다 동작하는 코드가 먼저다"

  • 하지만 기술 부채는 반드시 갚아야 할 때가 온다

"혼자 빨리 가는 것보다 함께 멀리 가는 것"

  • 1인 개발의 한계를 명확히 경험
  • 팀으로 일할 때의 시너지와 성장 가능성을 갈망하게 됨

 

왜 떠나게 되었나

성장의 한계점

3년간 20개 이상의 프로젝트를 진행하며 폭넓은 경험을 쌓았지만, 동시에 한계도 느꼈습니다.

기술적 깊이의 아쉬움

  • 프로젝트마다 빠른 개발과 납기가 우선시되어, 깊이 있는 기술 탐구가 어려웠음
  • 1인 개발 체제로 코드 리뷰나 기술 토론의 기회가 부족
  • 같은 패턴의 반복으로 새로운 기술적 도전이 줄어듦

팀 개발 문화의 갈증

  • 혼자서 모든 것을 결정하고 책임지는 것의 부담감
  • 동료 개발자들과의 기술 토론과 성장의 기회 부재
  • 더 큰 규모의 서비스를 팀으로 만들어가는 경험에 대한 갈망

새로운 도전의 필요성

  • Vue에만 국한되지 않은 다양한 프레임워크 경험 욕구
  • 더 복잡한 상태 관리와 대규모 아키텍처 설계 경험
  • 시니어 개발자로서의 도약

3년의 시간이 준 선물

하지만 이 3년은 저를 진정한 프론트엔드 개발자로 만들어준 소중한 시간이었습니다.

  • 문제 해결 능력: 어떤 요구사항이 와도 "할 수 있다"는 자신감
  • 빠른 학습 능력: 새로운 기술 스택도 빠르게 습득하여 프로젝트에 적용
  • 비즈니스 이해도: 단순 개발을 넘어 비즈니스 관점에서 기술을 바라보는 시각

 

세 번째 도전을 앞두며

이제 세 번째 회사로의 이직을 앞두고 있습니다. 이번에는 아래와 같은 도전을 해보고싶습니다.

다음 회사에서 기대하는 것

  • 팀으로 일하는 경험: 코드 리뷰, 페어 프로그래밍, 기술 토론이 활발한 환경
  • 기술적 깊이: 대규모 트래픽과 복잡한 비즈니스 로직을 다루는 도전
  • 멘토와 멘티: 배울 수 있는 시니어와 가르칠 수 있는 주니어가 있는 팀
  • 새로운 기술 스택: React/Next.js 등 다른 생태계 경험

개발자로서의 성장 방향

  • T자형 인재: 프론트엔드 전문성을 깊이 있게, 동시에 풀스택 역량 유지
  • 기술 리더십: 기술적 의사결정과 아키텍처 설계를 리드하는 개발자
  • 지식 공유: 블로그, 오픈소스, 컨퍼런스를 통한 커뮤니티 기여
  • 지속 가능한 개발: 빠른 개발과 코드 품질 사이의 균형

마치며

두서 없이 이것 저것 작성했지만 저한테 있어서 무엇보다 중요한 것은 내가 하고있는 개발이 왜 개발을 하는지에 대한 답을 찾는 것입니다. 저에게 개발은 단순한 직업이 아닌, 누군가의 일상에 도움을 주면서 저도 함께 발전하는 과정입니다.

 

항상 업무를 진행하며, '왜'에 대한 고민을 정말 많이 했던것 같습니다.

 

감사의 마음

3년간 함께한 두 번째 회사의 동료들, 특히 프론트엔드 개발을 믿고 맡겨주신 분들께 감사드립니다. 비록 혼자 개발했지만, 혼자가 아니었기에 가능했던 성장이었습니다.

 

이제 새로운 챕터를 시작합니다. 더 깊이 있는 개발자, 더 좋은 동료가 되기 위한 여정은 계속됩니다.