출입국카드 : 해외여행출입국신고서
2011년 ~ 2013년
2013년 11월까지 앱스토어 여행 카테고리 1위를 장기간 유지했습니다.
초등학교 시절 GW-BASIC으로 처음 프로그래밍을 접한 뒤 개발의 재미에 빠져 꾸준히 성장해 왔습니다. iOS 개발자로 커리어를 시작해 앱 개발을 중심으로 경험을 쌓았고, 필요에 따라 웹과 백엔드까지 확장하며 서비스 구현 전반을 다뤄왔습니다.
주로 React Native 프로젝트의 설계, 기술 선정, 공통 모듈 구축을 주도해 왔으며, 서비스 구현 과정에서 반복되는 혼선과 수작업을 기준·도구·가이드로 바꾸는 방식으로 일해 왔습니다. 최근에는 통합 인증, 디자인 자동화, AI 워크플로우처럼 여러 직군과 시스템이 맞물리는 문제를 실행 가능한 구조로 정리하는 데 집중하고 있습니다.
앱개발 파트장과 스크럼 마스터 역할을 맡으면서는 회의를 진행하고 논의 내용을 정리해 팀원들이 같은 맥락을 볼 수 있도록 돕는 역할을 도맡았습니다. 백로그 정제에서는 논의가 길어지거나 각자의 이해가 어긋나는 지점이 보이면 중간중간 정리하는 말을 던져 목표, 정책, 우선순위를 다시 맞추려고 했습니다.
협업 중 이슈가 생기면 빠르게 공유하고 함께 해결 방향을 찾는 것을 중요하게 생각합니다. 출시 후에는 운영 피드백, 오류 문의, 회고에서 나온 내용을 그냥 기록으로 남기지 않고 액션 아이템으로 정리해 팀원들과 공유하고, 다시 개선 백로그로 연결해 결과물이 배포에서 끝나지 않도록 챙겼습니다. 함께 일하는 사람들이 필요한 맥락을 빨리 얻고, 막힌 문제를 편하게 가져와 같이 풀 수 있다고 느끼게 만드는 것이 제가 지향하는 협업 방식입니다.
AI를 활용하면서 느낀 점은 개개인이 AI를 잘 다루는 능력도 중요하지만, 팀 전체 워크플로우 관점에서 반복되는 병목을 찾고 개선 방향을 실행 가능한 구조로 만드는 일이 더 중요하다는 것입니다. 구체적인 도구나 구현보다 중요했던 것은 AI가 사람의 일을 대체하게 만드는 것이 아니라, 기획자·디자이너·QA·운영자·개발자가 같은 맥락 위에서 더 빠르게 이해하고 더 정확하게 판단할 수 있게 만드는 일이었습니다.
앞으로는 AI를 잘 쓰는 개발자를 넘어, AI와 사람이 함께 일할 수 있는 구조를 설계하는 개발자로 성장하고 싶습니다. 반복되는 일은 시스템으로 만들고, 모호한 일은 더 명확한 질문과 기준으로 바꾸며, 불확실한 결과는 검증 가능한 흐름 안에 두는 개발자이고 싶습니다. 팀이 더 높은 수준의 문제에 집중할 수 있도록 만들고, 필요한 기반과 흐름을 서포트하는 개발자이고 싶습니다.
2022.12 ~ 현재 | 재직중
React Native 앱 개발뿐 아니라 AI OPS, 인증 체계 고도화, 사내 서비스 통합, 개발 환경 개선 업무를 함께 수행하고 있습니다. 2023년 8월부터 앱개발 파트장으로, 2024년 7월부터 현재까지 스크럼 마스터로 일하며 데일리 스크럼, 백로그 정제, 스프린트 리뷰, 회고를 주도해 왔습니다.
여러 팀이 AI 코딩 에이전트를 활용해 유사한 도구를 각자 만들면서 리소스가 중복되고 품질 기준이 분산되는 문제를 줄이기 위해, skills, agents, commands, hooks를 공용 자산으로 관리·배포하는 저장소를 구축했습니다.
기획 콘텐츠에서 Figma 디자인, 프론트엔드 구현, 디자인 검수까지 이어지는 워크플로우를 AI로 단순화하고 가속화하기 위해, Figma 플러그인–MCP 구조와 컴포넌트·토큰·스타일 매핑 기반의 Figma-to-code 워크플로우를 시도했습니다.
다만 Figma 중심 접근만으로는 실제 실행 환경과 디자인 의도 사이의 차이를 즉시 확인하기 어렵다는 한계가 있었고, 결과적으로 주된 해결책으로 이어지지는 못했습니다.
기존 Figma 중심 워크플로우에서는 디자이너가 컴포넌트와 디자인 토큰, 화면을 작성하면 개발자가 이를 다시 코드로 구현하고, 이후 디자이너가 실제 구현 결과를 다시 검수하는 과정이 반복됐습니다. 또한 개발 요구사항에 따라 props나 화면 표현이 달라지면서 Figma에 남아 있는 설계와 실제 코드가 점점 불일치하는 상황도 생겼습니다.
어차피 최종 산출물은 코드라는 점에 주목해, 코드베이스를 디자인 협업의 기준점(Single Source of Truth)으로 삼는 방향을 시도했습니다. 디자이너가 코드베이스 안에서 컴포넌트를 확인하고 디자인 변경을 요청하면, 개발자는 그 결과를 이어받아 기능과 비즈니스 로직을 붙이는 방식으로 전달·검수 과정을 줄일 수 있다고 보았습니다.
Tauri v2 기반으로 로컬 코드 프로젝트를 자동 인식하고 dev server를 실행해 실시간 미리보기를 제공하며, Claude Code CLI와 연결해 자연어로 디자인 변경을 요청하고 변경 내용을 git/PR 흐름으로 전달할 수 있는 구조를 구현했습니다. CSS/SCSS/JSON/Tailwind/TypeScript 기반 디자인 토큰 추출, Storybook 컴포넌트 탐색, 반응형 뷰포트 전환을 지원해 코드베이스 중심의 디자인 협업을 실험했습니다.
직군과 숙련도에 따라 PRD, 티켓, UI 초안, API/TC 문서, 코드 리뷰 결과물의 품질 편차가 커지고 특정 역할에 업무가 집중되는 문제를 줄이기 위해, Jira·Confluence·Slack·GitHub를 연결하는 AI 실행 플랫폼을 설계·구축했습니다.
Fastify 백엔드에서 Jira 상태 변경, Slack 커맨드, GitHub 웹훅을 받아 워크플로우로 라우팅하고, chat-server와 Claude Agent SDK를 통해 대화형 분석·생성 세션을 실행하도록 구성했습니다. PRD, API, UI, TC, 코드, 티켓, Slack 봇 등 여러 워크플로우를 프롬프트 정의 기반으로 관리해 요구사항 구체화부터 산출물 생성·검토·업로드까지 한 흐름으로 이어지게 했습니다.
개발 직군이 아니더라도 필요한 Slack 봇 기능을 쉽게 제안·생성·검증할 수 있게 하려면, 이벤트 처리, 프롬프트, 핸들러, 권한 설정 같은 반복 구현 부담을 낮춰야 한다고 보았습니다. 이를 위해 Socket Mode 기반 Slack 봇을 워크플로우 엔진과 연결했습니다.
commands.json에 커맨드 별칭, 트리거 타입, 모델, 프롬프트 파일을 정의하고, 멘션·슬래시 커맨드·메시지 단축키·모달 제출을 공통 라우터에서 처리하도록 구성했습니다. 스레드 메시지와 사용자 정보를 모아 컨텍스트를 만들고, 요약·티켓 생성·코드베이스 질의·스프린트 현황·회고 시작 등 14개 커맨드를 실행할 수 있게 했습니다.
신규 기능 아이디어는 Slack에서 신규기능 명령으로 slack-bot-dev 채팅 세션을 열고, Claude가 커맨드 정의·핸들러·프롬프트 초안을 생성한 뒤 PR 흐름으로 전달하도록 만들어 비개발자도 초기 아이디어를 실제 기능 초안까지 연결할 수 있게 했습니다.
사내 여러 서비스가 공통으로 사용할 인증 플랫폼을 처음부터 설계하고 구축했습니다. 기술 선택부터 전체 인증 흐름을 설계했으며, 카카오·애플 SNS 로그인과 로그인 후 앱 복귀, 세션 유지, 로그아웃·회원 탈퇴까지 초반 설계와 구현을 주도했습니다.
모바일 출입카드 발급, 출입 권한 안내, SDK 초기화 타이밍, BLE 스캔 간격, 오류 로그 개선 등 출입 흐름 전반을 지속적으로 개선했습니다. 기존 모바일 출입카드 중심의 출입 경험을 확장하기 위해 토스 FacePass 도입을 결정하고, iOS/Android SDK를 React Native에서 사용할 수 있도록 Native Module 패키지로 작성했습니다. FacePass가 운영 초기 단계의 서비스였고 React Native 환경에서 정상 동작하지 않는 이슈가 있어, 토스 측과의 기술 커뮤니케이션을 도맡아 진행하며 얼굴 인식 기반 출입 흐름을 구현했습니다.
얼굴 인식 출입 서비스의 현장 운영이 확대되면서 기존 앱 구조와 기기 인증 방식으로는 안정적인 확장이 어렵다고 판단했습니다. 태블릿 입장 앱과 연동 구조를 재정비하고, 기기별 안전한 인증, 환경별 배포, 현장 페어링·오류 안내 흐름을 함께 개선했습니다. 그 결과 신규 기기 설치와 운영 대응이 쉬워지고, 출입 과정의 보안성과 현장 안정성을 높였습니다.
예약 탭, 공간 리스트·상세, 예약 내역, 필터, 시간 막대, 지도/목록 전환, 지점·공간 마커와 바텀시트 등 공간 예약 흐름을 개선했습니다. 네이버 지도 SDK를 연동해 사용자가 지점과 공간 위치를 지도에서 확인하고, 예약 가능한 공간을 더 직관적으로 탐색할 수 있도록 했습니다.
KCP 결제 모듈을 앱에 연동하고, 결제용 웹뷰, 외부 결제 앱 스킴, 결제 승인 요청, 결제 결과 화면, 영수증 보기, 결제 취소·환불 예정 금액 표시 등 개인 결제와 크레딧 결제 흐름을 구현했습니다. 회의실 예약과 결제 기능을 앱 안에서 이어지게 해 공간 이용의 편의성과 운영 투명성을 높였습니다.
외부 고객센터 의존을 줄이기 위해 자주 묻는 질문, 문의 내역, 문의 상세, 1:1 문의 등록, 추가 문의, 파일 첨부, 딥링크, 알림센터·푸시 연동 등 고객센터 기능을 앱 내부 흐름으로 구현했습니다. 문의 등록과 조회, 첨부파일 처리, 상태별 안내를 앱 안에서 처리할 수 있게 해 사용자 지원 흐름을 개선했습니다.
단일 언어 구조에 i18n을 적용해 다국어 지원이 가능한 형태로 구조를 개선했습니다. 언어별 리소스 분리와 공통 키 관리 체계를 도입해 유지보수성을 높였습니다.
운영 과정에서 반복적으로 문의되던 모바일 출입카드 오류를 단순 사용 문의가 아니라, 사용자가 앱 안에서 원인과 조치 방법을 충분히 확인하지 못하는 문제로 정의했습니다.
블루투스 기반 모바일 출입카드 SDK에서 간헐적으로 발생하는 오류를 수백 회 이상의 반복 테스트로 재현·분석해 문제 원인 규명과 안정성 개선에 기여했습니다. 이후 오류 안내 메시지와 이미지 가이드를 보강해 사용자가 스스로 상황을 이해하고 조치할 수 있도록 개선했습니다.
기존 line-by-line 로그 방식은 외부 SDK 이슈를 추적할 때 로그 노이즈가 많고 단일 시도 흐름을 파악하기 어려워 디버깅 효율이 낮았습니다. JavaScript Proxy로 외부 SDK 호출을 래핑하고 1회 시도 단위로 로그를 집계하는 구조로 재설계해, 디버깅에 필요한 맥락은 유지하면서 로그 노이즈를 줄이고 문제 분석 효율을 높였습니다.
저사양 기기에서 공간 예약 화면 로딩이 30초 이상 걸려 실제 사용 흐름이 끊기는 문제를 확인했습니다. 이를 단순 기기 성능 문제가 아니라 데이터 로딩과 렌더링 흐름이 사용자의 예약 맥락을 끊는 문제로 보고, 병목 구간을 나누어 개선해 로딩 시간을 1초 이하로 단축했습니다.
Redux & Redux-Saga를 Zustand로 전환해 코드 단순화, 모듈화, 성능 개선을 이끌었습니다. TypeScript 도입과 레거시 리팩토링을 통해 타입 안정성을 확보했고, TanStack Query(React Query) 적용으로 서버 상태 관리와 데이터 페칭 구조를 단순화했습니다. Tailwind CSS 도입으로 디자인 시스템 대응력과 협업 효율을 높였습니다.
React Native를 0.63.3에서 0.79까지 지속적으로 업그레이드하고 주요 라이브러리 업데이트, Old Architecture → New Architecture 전환, CodePush 종료 대응 EAS Update 마이그레이션을 수행했습니다.
GA4 이벤트 체계가 없는 상황에서 전역 버튼 클릭 이벤트 자동 수집 구조를 만들고, 버튼 텍스트·페이지 정보 등 핵심 파라미터를 함께 수집하도록 구성했습니다. Microsoft Clarity를 도입해 세션 리플레이 및 히트맵 기반의 정성적 사용자 행동 분석 환경을 구축했습니다.
주요 사용자 흐름을 자동 검증하고 실행 영상과 결과 리포트를 남기는 환경을 구축했습니다. 배포 변경 범위에 맞춰 필요한 검증을 실행하도록 연결해 반복적인 수동 확인을 줄이고, 앱 변경으로 인한 사용자 경험 회귀를 더 빠르게 발견할 수 있게 했습니다.
GitHub Actions + Fastlane 기반으로 iOS/Android 배포 자동화를 구성했습니다. TestFlight, Firebase, CodePush, EAS Update를 활용해 배포 프로세스를 고도화했습니다.
Datadog 기반 모니터링 강화, n8n을 활용한 Slack/OpenAI 기반 요약·티켓 생성·UI 개선 제안 자동화, GitHub Workflow 기반 월별 개발자 연구노트 자동 작성까지 운영 생산성 개선을 병행했습니다.
2022.05 ~ 2022.12 | React Native 개발 | 8개월
버그, 느린 속도, 크래시, 복잡한 구조, JavaScript 기반 타입 불안정성으로 기능 추가가 어려웠던 React Native 앱을 신규 프로젝트로 전체 재구축했습니다. TypeScript와 Redux Toolkit 기반으로 구조를 정비하고 앱 전면 리뉴얼까지 진행해 유지보수성, 안정성, 기능 확장 대응력, 개발 속도를 함께 개선했습니다.
버그가 잦고 속도 저하와 크래시가 발생하던 기존 앱을 구조적 문제로 정의하고, 기능을 부분 수정하는 대신 신규 프로젝트로 전체 재구축했습니다. 복잡한 화면·상태 구조를 정리해 이후 기능 추가와 유지보수가 가능한 기반을 마련했습니다.
JavaScript 기반 구조에서 발생하던 타입 불안정성을 줄이기 위해 TypeScript로 전환했습니다. Redux Toolkit 기반 상태 관리 구조를 적용해 상태 변경 흐름을 단순화하고 개발 효율과 안정성을 높였습니다.
새롭게 정비한 구조를 기반으로 앱 전체 UI를 리뉴얼해 사용자 경험을 개선했습니다. 리뉴얼 이후에도 신규 기능 확장과 화면 개선에 대응하기 쉬운 구조를 목표로 정리했습니다.
2020.01 ~ 2022.05 | React / React Native / iOS / Android | 2년 5개월
React와 React Native를 중심으로 배달앱 통합 관리, 공공배달앱, 제로페이상품권 구매앱, 모바일 키오스크 등 여러 서비스의 앱·웹·POS 채널을 설계하고 구현했습니다. 앱·웹·POS 개발과 백엔드 대부분, 실시간 결제 구현까지 담당했습니다. 서비스 개발뿐 아니라 보일러플레이트, 문서화, PR 리뷰, 장애 모니터링 체계를 도입해 팀의 개발 속도와 운영 안정성을 함께 개선했습니다.
점주가 여러 배달앱의 리뷰, 매출, 경쟁 매장 데이터를 각각 확인해야 하는 불편을 운영 데이터 확인 문제로 정의했습니다. 데이터를 한 화면에서 조회하고 시각화할 수 있도록 구현해 운영에 필요한 핵심 정보를 빠르게 확인할 수 있게 했습니다.
사용자 앱, 점주용 앱, 관리자 웹, Windows POS Agent까지 포함한 멀티 채널 서비스를 설계하고 구현했습니다. 여러 채널을 동시에 개발해야 하는 상황에서 프론트엔드 전체 아키텍처를 정의하고 유지보수 체계를 수립했습니다.
제로페이상품권 구매 흐름의 프론트엔드를 개발했습니다. 네이티브 환경용으로 제공된 SecureKeypad를 React Native 화면에서 사용할 수 있도록 브릿지 모듈을 구현해, 결제·인증 입력 흐름을 앱 안에서 연결했습니다.
점주용 앱, 사용자 웹, 백엔드 대부분까지 서비스 전반을 담당했습니다. 여러 사용자가 한 주문의 결제 금액을 나누어 결제할 수 있는 1/N 결제 기능을 구현했습니다. Apollo Subscriptions를 사용해 참여자별 결제 상태와 전체 결제 진행 상황이 실시간으로 갱신되도록 했습니다.
신규 프로젝트가 지속적으로 발생하는 환경에서 매번 Firebase, Push Notification, SNS 로그인, CodePush 같은 공통 기능을 반복 구현하는 문제가 있었습니다. 공통 기능을 사전 탑재한 React Native 보일러플레이트를 설계해 초기 개발 속도를 높이고 프로젝트 품질을 표준화했습니다.
문서화 체계가 부족해 프로젝트 설정, 툴 사용법, 개발 가이드가 사람마다 다르게 전달되는 문제가 있었습니다. 산출물 품질을 일정 수준으로 유지하면서 접근성이 좋은 Notion을 도입하고 반복 업무를 문서화해 반복 질문을 줄이고 온보딩 효율을 높였습니다.
개발자 간 실력 편차로 에러와 제품 품질 문제가 반복되는 상황을 코드 공유와 검증 체계의 부재로 보고, GitHub PR 기반 리뷰 체계를 도입했습니다. 리뷰를 통해 구현 의도를 공유하고 변경 사항을 함께 확인하면서 코드 공유와 협업 책임감을 강화했습니다.
장애 상황을 빠르게 인지하고 원인을 추적하기 어려운 문제를 줄이기 위해 Graylog 기반 실시간 알림 및 로그 분석 체계를 구축했습니다. 장애 대응 속도를 높이고, Swagger 도입으로 API 명세 자동화 기반을 마련해 프론트엔드-백엔드 협업 효율을 개선했습니다.
2016.10 ~ 2019.07 | iOS | 2년 10개월
iOS 개발자로 영상 편집 앱 Contenter의 개발과 운영을 담당했습니다. AVFoundation 기반 영상 플레이어와 자막·음악·필터·클립 편집 기능을 구현하며 앱스토어 메인 노출, Top 100 달성, 디캠프 D-Day 우수상 수상에 기여했습니다.
AVFoundation을 활용해 영상 플레이어와 비디오 편집 기능(자막, 음악 추가, 필터 효과, 클립 편집 등)을 구현했습니다. 앱스토어 메인 노출 및 Top 100 달성, 디캠프 D-Day 우수상 수상에 기여했습니다.
2015.12 ~ 2016.07 | 웹사이트 개발 | 8개월
Java, Spring, JSP 기반으로 기업 홈페이지와 주요 서비스 페이지 개발·리뉴얼을 수행했습니다. 니콘이미징 코리아 홈페이지, E-SHOP, 서포트 페이지 등 고객사 웹사이트의 요구사항을 일정에 맞춰 구현하며 웹 서비스 개발 경험을 확장했습니다.
2015.12 기업 홈페이지 개발을 수행했습니다.
2016.05 ~ 2016.07 니콘이미징 코리아 홈페이지, E-SHOP, 서포트 페이지 리뉴얼을 Java, Spring, JSP 기반으로 수행했습니다.
2016.05 ~ 2016.07 JSP 기반 홈페이지 개발을 수행했습니다.
2012.02 ~ 2014.03 | iOS(Objective-C), Java(Spring), JSP | 2년 2개월
Objective-C 기반 iOS 앱과 Java/Spring/JSP 기반 웹 서비스를 함께 개발하며 앱과 서버 연동 경험을 쌓았습니다. 의료 제품용 iPad 콘텐츠 앱, AppPort, MR Library, 니콘이미징 코리아 웹 서비스와 관리자·E-shop, 콘텐츠·개인정보 이행 툴까지 다양한 업무를 수행했습니다.
Otsuka, Abilify, Mucosta, Meptin, Plettal, Samsca, Busulfex 등 의료 제품용 앱에서 E-Book 형식 이미지 뷰어, PDF 뷰어, 낙서, 동영상 재생, 콘텐츠 업데이트, 서버 연동 조회수 확인 기능을 구현했습니다.
Busulfex에서는 사용자 파일 다운로드와 iPad 내부 폴더 및 파일 생성·이동 기능도 함께 구현했습니다.
XML 기반 다자간 채팅, 문서 순서 편집, 서버 파일 다운로드, E-Book 뷰어, 낙서, 메일 전송, 동영상 재생, 콘텐츠 업데이트 기능을 구현했습니다.
PDF 뷰어, 동영상 재생, 문서·동영상 이어보기, 파일 다운로드/업데이트, 북마크, 웹에서 입력한 스케줄 표시 기능을 구현했습니다.
안드로이드 앱에서 서버 상태를 체크하고 이상 상황을 알림으로 전달하는 서버 모니터링 기능을 개발했습니다.
2011년 ~ 2013년
2013년 11월까지 앱스토어 여행 카테고리 1위를 장기간 유지했습니다.
2011년
출시 당시 앱스토어 무료 전체 순위 2위를 기록했습니다.
2011년 ~ 2013년
2013년 12월 앱스토어 여행 카테고리 유료 상위권을 기록했습니다.
2017
슈프림, 나이키 등 한정 제품 판매 시점에 맞춰 상품 선택부터 결제까지 자동으로 진행하는 Java 기반 개인용 자동 구매 도구를 개발했습니다.
2022
멜론·지니 앱 API를 분석해 날짜·시간별 음원 순위를 자동 수집하는 데이터 적재 파이프라인을 구축했습니다. NestJS, Strapi, GraphQL, TypeScript 기반으로 구현했습니다.
2025
입력한 텍스트를 다양한 폰트, 배경, 레이아웃, 플랫폼 형식에 맞는 이미지로 변환해 다운로드할 수 있는 툴을 개발했습니다.
2026
글쓰기 모임에서 사용할 글쓰기 플랫폼을 제작했습니다.
| 연도 | 대회·수상명 | 결과 |
|---|---|---|
| 2003 | 제20회 한국정보올림피아드 광주대회 | 동상 |
| 2002 | 제13회 광주·전남 컴퓨터 경진대회 | 금상 |
| 2002 | 제19회 한국정보올림피아드 광주대회 | 금상 |
| 2001 | 제18회 한국정보올림피아드 광주대회 | 은상 |
| 2001 | 제12회 광주·전남 컴퓨터 경진대회 | 금상 |
| 2000 | 제17회 한국정보올림피아드 광주대회 | 동상 |
| 2000 | 제11회 광주광역시 컴퓨터 경시대회 | 금상 |
| 1999 | 제10회 광주광역시 퍼스널 컴퓨터 경진대회 | 은상 |
| 1998 | 제9회 광주광역시 퍼스널 컴퓨터 경진대회 | 금상 |
| 1997 | 제14회 한국정보올림피아드 전국대회 | 장려상 |
| 1997 | 제8회 광주광역시 퍼스널 컴퓨터 경진대회 | 금상 |