방은수

WritingsNEW

마지막 업데이트

Introduce

(만 27세) · 2년 3개월

안녕하세요. 만 27세 2년 3개월의 경력을 가진 프론트엔드 개발자 방은수입니다.

TypeScript와 React, Next.js를 기반으로 웹 서비스를 개발하고 있으며, React Native(CLI) 환경에서 자사 모바일 애플리케이션의 신규 기능 개발과 유지보수도 함께 담당하고 있습니다.

화면을 만드는 것에서 그치지 않고, 진입 성능이나 인터랙션처럼 사용자 경험과 맞닿아 있는 부분을 신경 쓰며 개발하고 있습니다. 문제가 생기면 원인을 함께 살펴보고 구조적으로 접근해 해결하려고 합니다.

Claude Code 같은 AI 도구를 일상적인 개발 흐름에 활용하는 것에도 관심이 많습니다. 프로젝트 컨텍스트를 도메인별로 정리해 적재하거나, 서브에이전트를 활용한 반복적인 작업을 자동화하는 식으로, AI를 실제 업무에 자연스럽게 녹여내는 방법을 고민하고 있습니다.

업무 중 생기는 문제는 팀원들과의 충분한 대화로 풀어가는 편이며, 비즈니스와 개발 사이의 간극을 줄이는 것이 좋은 프로덕트의 출발이라고 생각합니다. 변화하는 기술과 AI 기반 개발 환경에 꾸준히 적응하며, 사용자에게 더 나은 경험을 전하는 개발자가 되고 싶습니다.

Experience

(주)원더라운드

2025.04 ~ 현재

475일째 근무 중

  1. 1.

    OTA(무선 코드 배포) 인프라 hot-updater 신규 도입 및 운영 체계 구축

    • 스토어 심사 주기에 묶여 긴급 버그 수정과 QA 반영이 지연되던 구조를 해소하기 위해, JS 번들을 심사 없이 무선 배포하는 OTA 파이프라인을 hot-updater로 신규 도입. 번들 저장소 연동, iOS / Android 및 dev / beta / pro 환경별로 관리하는 체계 구성, 배포·롤백 운영 흐름까지 전반을 설계·구축

    • Problem

      초기에는 전 환경이 채널·설정을 공유하여, 상위 환경 번들이 하위 환경 네이티브에 덮어써지거나 배포 전 설정 스왑을 누락하면 번들-네이티브가 불일치. 잘못된 키 설정으로 소셜 로그인이 크래시되는 사고가 반복

      Solution

      배포 목적지를 appVersion + 채널(dev / beta / production) 조합으로 격리하고, 채널·환경 설정을 빌드 시점에 주입하도록 자동화. set-<env> → 배포 → dev 복원 절차를 표준화하여 번들이 항상 의도한 환경에만 도달하도록 칸막이를 확립

    • Problem

      특정 상황에서 앱이 강제 업데이트(force update) 무한 루프에 빠져 정상 진입 자체가 불가능한 치명적 현상 발생

      Solution

      부팅 실패 루프를 관측 가능하게 만드는 롤백 계측(현재 번들 id === 최소 번들 id → 부팅 실패로 확정)을 추가하고, 콘솔·DB로 즉시 회수 가능한 수동 킬스위치를 확보하여 장애 대응 경로를 마련

  2. 2.

    주요 화면의 진입 성능 최적화를 위한 단계적 마운트 패턴 도입

    • Problem

      리스트 / 지도 / 상세 등 다수의 hooks와 API 호출이 누적되는 무거운 화면에서, 진입 시점에 위젯이 동시 마운트되며 네비게이션 애니메이션이 끊기고 skeleton 노출이 지연되는 문제 발생

      Solution

      진입점과 본문을 두 단계로 분리하여, 네비게이션 전환 직후에는 skeleton만 즉시 노출하고 transition 종료 시점을 setImmediate로 감지하여 본문이 애니메이션 종료 이후에만 마운트되도록 처리. 체감 진입 지연을 약 700~800ms 수준에서 200~300ms 수준으로 단축

    • 화면 상단에 노출되는 데이터는 별도 prefetch 훅으로 사전에 워밍업하여, 본문 마운트 시점에 캐시 히트되도록 설계

    • 스크롤 이벤트 핸들러를 JS 스레드 비차단 방식으로 처리하는 공통 훅을 도입하여, 스크롤 중에도 다른 인터랙션이 지연되지 않도록 개선

  3. 3.

    푸시 알림 및 딥링크 기반 진입 동선 구축

    • Problem

      콜드 스타트 상태에서 푸시 클릭 시 네비게이션 스택이 준비되지 않아, 라우팅이 누락되는 케이스 발생

      Solution

      전역 storepending payload를 적재하고, 네비게이션 ready 시점에 큐를 소비하여 라우팅하도록 비동기 큐 패턴 적용

    • Problem

      푸시 딥링크 목적지가 웹뷰 화면인 경우, 콜드 스타트로 진입하면 네비게이션 스택이 해당 웹뷰 단일 화면만 갖게 되어 뒤로가기 시 앱 내부 화면으로 복귀하지 않고 앱 자체가 종료되는 문제 발생

      Solution

      단순 navigate 호출 대신 navigation state를 직접 구성하여, BottomTabs를 베이스 라우트로 두고 그 위에 Stack(연관 underlay 화면 + 웹뷰)을 쌓는 형태로 reset. 뒤로가기 시 웹뷰 → 연관 화면 → BottomTabs 순서로 자연스럽게 이탈하도록 흐름을 보장

    • 백엔드 푸시 발송 API 스키마 변경에 맞춰 알림 목록 응답을 정규화하는 레이어 도입

    • 푸시 페이로드를 파싱하여 콜드 스타트 / 백그라운드 / 포그라운드 각 진입 케이스를 분기 처리하는 딥링크 핸들러 구현

  4. 4.

    TanStack Query 낙관적 업데이트 패턴 도입 및 표준화

    • 북마크 / 좋아요 등 토글성 mutationcancel → snapshot → cache update → rollback 흐름을 표준화하여, 서버 응답 전 즉시 UI 반영과 실패 시 일관된 롤백을 팀 전반에 확립. setQueryData 기반 캐시 직접 패치로 불필요한 invalidate 라운드트립도 제거

  5. 5.

    Claude Code 기반 개발 생산성 인프라 구축

    • 기존 RN 앱 담당 개발자의 퇴사로 도메인 지식 인계가 끊긴 상태에서, RN 앱 개발 경험이 부족한 채로 단독으로 유지보수와 신규 기능 개발을 동시에 진행해야 하는 환경에 놓임. 학습 비용 절감과 도메인 컨텍스트의 항시 참조를 위해 Claude Code 기반 보조 인프라를 직접 설계 및 구축

    • 프로젝트 규칙을 UI 생태계 / 성능 / 애니메이션 / 서버 상태 / 네비게이션 / 전역 상태 / 다국어 / 신규 기능 흐름 등 도메인별로 분리하여, 작업 키워드 기반으로 필요한 규칙만 부분 적재되는 구조로 설계

    • 역할 분리 멀티에이전트 파이프라인 — planner → generator → evaluator 구현 루프에 더해, 분석 결과를 별도 critic 에이전트가 객관적으로 반박·검증하는 자기검증 레인을 구성하여 단일 컨텍스트 자기검증의 편향을 완화

    • 반복 구현 패턴의 스킬화 — API 추가 / 낙관적 업데이트 뮤테이션 / 화면 진입 최적화 / 다국어 반영 등 정형화된 작업을 재사용 가능한 커맨드로 코드화하여, 컨벤션을 매번 재설명하지 않고도 일관된 산출물을 확보

    • 작업 복잡도에 따라 모델을 라우팅(경량 조회 → 아키텍처·심층 분석)하고, 프롬프트 캐싱·추론 강도(effort)를 튜닝하여 응답 지연과 토큰 비용을 최적화

한국글로벌널리지네트웍(주)

2024.03 ~ 2025.03

총 1년 10일 근무

  1. 1.

    퀴즈에 필요한 문제 은행 관리 기능 개발

    • 보기의 추가·수정·삭제 후 TanStack QueryinvalidateQueries로 데이터 신선도를 유지하고, 최신 보기 데이터를 기반으로 정렬한 뒤 순서 변경 API를 호출해 정확성을 보장

  2. 2.

    강의 구성 단위(챕터 / 섹션 / VOD / 퀴즈 / 실습) 관리 기능 개발

    • Problem

      실습, VOD 등에 따라 요구되는 설정 값이 달라 일관된 폼을 제공하기 어려웠고, UI 복잡성이 증가하는 문제가 발생

      Solution

      각 콘텐츠 유형별로 독립적인 폼을 구성하고, 선택된 유형에 따라 동적으로 렌더링하도록 개선하여 UI 복잡성을 완화하고 사용성을 개선

Skills

Languages

  • JavaScript (ES6+)
  • TypeScript
  • HTML5 / CSS3
  • Java
  • C#

Libraries & Frameworks

  • React.js (vite)
  • Next.js
  • React Native (CLI)+47
  • Tailwind CSS+1
  • TanStack Query
  • Zustand+1
  • Recoil+1
  • Shadcn
  • Express

Backend

  • Prisma
  • Drizzle
  • Neon
  • Supabase
  • Vercel
  • Docker
  • GitHub Actions
  • EC2
  • S3

Tools

  • Git & GitHub
  • Jira
  • Notion
  • Figma
  • Slack

Portfolio

Bread And Source

  • 실제 운영중인 베이커리의 사이트 & 백오피스 (beta)
Next.jsTypeScriptTailwind CSSNeonDrizzleZustandTanStack QueryFramer Motion

Eunsutory

  • 개인 회고 & 소개 블로그
Next.jsTypeScriptTailwind CSSPrisma

Scrama

  • 아마존 웹 스크레핑 사이트
Next.jsTypeScriptTailwind CSSCheerio

Wasd Rental System

  • 대학교 동아리에서 제작한 장비 대여 시스템
React.jsTypeScriptExpress.jsTailwind CSSZustandTanStack Query

Eunimation

  • 애니메이션 추천 사이트
Next.jsTypeScriptTailwind CSSFramer MotionZustand

Eunsuread

  • Thread 클론 사이트
Next.jsTypeScriptTailwind CSSClerkMongoose

Education

명지전문대학교

소프트웨어 콘텐츠학과

2022.03.02 ~ 2024.02.28

  • 학점 4.26 졸업
  • 웹 개발 동아리 운영 (부장) 및 프로젝트 개발 주도 (2022.06 ~ 2024.02)
  • 기자재 대여 시스템 사이트 / 주변 맛집 등 명소를 찾는 사이트 / 2D 로그라이크 앱 게임 등 개발

Certification

  • 정보처리산업기사
  • 컴퓨터 활용능력 1급
  • 워드프로세서
  • TOEIC (815점)

Writings