미리보기
기본 정보

7년 차 안드로이드 개발자입니다. 꾸준히 성장하는 개발자가 되기 위해 항상 새로운 기술을 탐색하고 추구합니다. 주도적인 팀원이자 개발자로서 비즈니스 목표를 실현하는 데 집중합니다. 효율적인 협업과 원활한 커뮤니케이션의 가치를 이해하고, 공동의 목표를 달성하기 위해 팀원들과 함께 발전해 나가는 것을 중요하게 여깁니다.
기술 스택
Android, Kotlin, Java, clean-architecture, Git, coroutine, Android Compose, android-multi-module, github-actions, CI/CD, MVVM, Slack, JIRA, Figma
경력
(주)헬로마켓
안드로이드 개발자 | 셀러스쿼드
2022.08. ~ 2024.09. (2년 2개월)
헬로마켓 - 중고거래 앱
누적 다운로드 약 800만+, MAU 약 130만+, 앱 안정성 크래시 미발생 비율 99.9% 이상 유지
🫡 업무 진행 방식 및 역할
OKR + 애자일 기반 업무
변화에 빠르게 대응하고, 스프린트마다 신속히 실행
분기(3개월) 단위로 목표를 수립하고 주기적으로 달성도 점검
팀원들이 합의한 목표를 바탕으로 스프린트 진행
(참고 문서: OKR과 애자일: 변화의 시작과 도전)
셀러 스쿼드 구성
안드로이드 개발자(본인), 스쿼드 팀장, 디자이너, iOS 개발자, 프론트엔드 개발자, 백엔드 개발자로 팀 구성
판매자 관련 기능을 집중적으로 개발하며, 빠른 피드백과 협업 진행
목표 수립 및 진행 방식
충분한 논의를 거쳐 실현 가능한 목표를 설정하고, 팀 전체 동의 아래 최종 확정
설정된 OKR을 중심으로 스프린트를 구성해 업무를 진행
주요 지표 및 목표는 “판매자 경험 개선”에 집중
데일리 스크럼
매일 아침 전날 작업 내용과 당일 계획, 이슈를 공유
진행 상황을 빠르게 확인하고 필요한 지원 사항을 즉시 논의
스프린트 종료 후 회고
“Keep, Problem, Try” 형태로 회고를 진행해 개선점을 식별하고 다음 스프린트에 반영
회고 결과를 문서화하여 팀의 업무 프로세스와 협업 방식을 지속 개선
주니어 개발자 협력
안드로이드 주니어 개발자들의 사수 역할 수행
바이어 스쿼드 업무도 주기적으로 모니터링하여 기술 지원 및 방향성 제시
코드 리뷰 및 기술적 문제 해결을 함께 논의해 성장 지원
최신 안드로이드 기술(Paging3, GraphQL(SDUI) 등)과 트렌드를 공유하며 프로젝트에 적용
🏗 코드베이스 개선 및 아키텍처 개편
✔ 레거시 코드 리팩토링 (Java → Kotlin, MVC → Clean Architecture + MVVM)
기존 아키텍처의 한계
Java + MVC 기반으로 인해 유지보수성과 확장성이 낮고, 신규 기능 추가 시 변경 범위가 큼
관심사 분리가 부족해 UI와 비즈니스 로직이 강하게 결합됨
변경 내용
Java 코드를 Kotlin으로 전환하여 가독성과 유지보수성을 향상
MVC에서 Clean Architecture + MVVM 구조로 개선
UI Model을 도입하여 UI와 Domain 간 의존도를 줄이고, ViewModel을 통해 UI 상태를 명확하게 관리
Coroutine & Flow를 활용하여 비동기 처리의 안정성과 성능을 향상
성과
관심사 분리와 계층 구조 개선을 통해 유지보수 비용을 30% 절감
코드 구조를 개선하여 문제 해결 속도와 기능 개선 효율이 증가
신규 기능 추가 시 영향 범위를 최소화하여 확장성을 확보
✔ 멀티 모듈 아키텍처 개편
기존 아키텍처의 한계
깊게 커플링된 레거시 코드로 모듈 세분화가 어려움
단일 모듈에 모든 화면이 몰려 유지보수성과 확장성 저하
의존성이 복잡해 변경 및 관리 부담 증가
개편 내용
Clean Architecture(app, domain, data, common, design-system)를 Feature, Domain, Core 단위로 모듈화
Feature 모듈(
feature.seller
,feature.buyer
,feature.home
등)을 도입하여 화면별로 분리하고, 독립적인 개발이 가능하도록 구성Domain 모듈을
domain-xxx-api
(인터페이스 정의)와domain-xxx-impl
(구현)로 분리하여, 모듈 간 의존성을 명확히 관리다른 도메인 모듈(
domain-xxx
)은 API 모듈을 의존하여 인터페이스만 활용하고, 직접 구현체에 의존하지 않도록 설계구현체는
@Module
을 통해 의존성 주입을 관리하여 결합도를 낮추고 유지보수성을 향상
Core 모듈을 정리하여
ui
,data
,model
,designsystem
,test
등 앱 전반에서 공통적으로 사용되는 모듈을 분리하여 관리함으로써 재사용성과 유지보수성을 향상
성과
모듈화를 통해 역할별로 분리하여, 여러 개발자가 동시에 여러 모듈을 개발할 수 있는 환경을 구축
모듈별 역할과 의존성이 명확해져, 코드 변경 시 영향 범위가 줄어들고 유지보수성과 확장성이 향상
모듈 단위로 분리하여 모듈 간 의존성을 최적화하고, 변경 범위를 최소화
코드 충돌 위험을 줄이고, 병렬 빌드를 최적화하여 전체 빌드 시간을 단축
✔ Gradle Kotlin DSL 및 컨벤션 플러그인 적용
기존 Gradle 설정의 한계
Groovy DSL 사용으로 인해 IDE 지원이 부족하고, 중복 설정이 많아 유지보수성이 저하됨
각 모듈별 의존성 관리가 비효율적이어서 버전 충돌 및 업데이트 부담이 증가
개선 내용
Gradle Kotlin DSL을 도입하여 IDE 자동 완성과 정적 타입 검사를 지원함으로써 코드 가독성과 안정성을 향상
컨벤션 플러그인(
buildSrc
)을 적용하여 공통 빌드 설정을 플러그인화함으로써 모듈 간 일관성을 유지libs.versions.toml
을 활용하여 의존성과 빌드 설정을 중앙에서 관리함으로써 버전 충돌을 방지하고 업데이트 편의성을 강화
성과
신규 모듈 추가 시 설정을 자동화하여 개발 속도를 향상
공통 빌드 설정을 효율적으로 관리하여 중복 코드를 최소화
버전 충돌을 방지하고 빌드 성능을 개선
🚀 새로운 기술 도입과 최적화
✔ GraphQL과 Apollo Client를 활용한 SDUI 구현 및 문서화
기존 UI 변경 방식의 한계
홈 화면에 유연한 UI를 구성하기 어려워, UI 변경 시 반복적 개발 리소스 소모
앱 배포 없이 즉각적인 UI 조정이 불가능해 변경 대응 속도 저하
도입 내용
SDUI를 적용하여 서버에서 UI를 동적으로 구성할 수 있도록 개선, 이를 통해 클라이언트 수정 없이 UI 변경이 가능해짐
GraphQL을 활용하여 필요한 데이터만 요청함으로써 언더페칭 및 오버페칭을 방지하고, 서버 부하를 감소
공통 스키마를 문서화하여 Android 및 iOS 간 UI 구조의 일관성을 유지
성과
홈 화면 UI를 동적으로 변경할 수 있도록 개선하여 개발 리소스를 30% 절감
네트워크 사용량을 최적화하여 성능을 향상하고 서버 비용을 절감
UI 관련 에러 발생 없이(0건 유지) 안정적인 운영 환경을 유지
✔ Paging3 도입과 한계, 그리고 ListAdapter 전환
기존 SuperRecyclerView의 한계
유지보수 부재로 기술 부채 발생, 최신 SDK와 호환성 문제
Paging3 도입
구글 공식 Paging3 적용으로 비동기 데이터 처리 최적화
Flow
기반 페이징 구조로 리스트 업데이트 효율 개선
문제점
PagingData
가 불변이라 삽입/삭제 시 전체 재생성 필요Domain Layer에서 Android 의존성을 제거하기 어려움
ListAdapter로 전환
Paging3 제거 후
ListAdapter
+DiffUtil
방식 채택부분 업데이트 가능해지면서 성능·유지보수성 향상
얻은 교훈
Google에서 권장하는 라이브러리가 항상 최적의 선택은 아니므로, 프로젝트 요구사항과의 적합성을 신중히 검토해야 함
장기적인 유지보수성과 확장성을 고려하여 기술을 선정하는 것이 중요함
철저한 테스트와 팀 내 논의를 통해 의사결정 품질을 높여야 함
✔ GitHub Actions 기반 CI/CD 자동화 구축
기존 문제점
별도의 CI 서버 없이 수동 빌드 및 배포를 진행하여 배포 리드타임이 길고, 인적 오류 발생 빈도가 높음
멀티 모듈 구조 전환 이후에도 자동화 체계가 미비하여 팀 간 협업 및 통합 테스트가 어려움
개발 환경마다 빌드 조건이 다르게 설정되어 예측할 수 없는 오류가 자주 발생
개선 내용
GitHub Actions를 도입하여 자동 및 수동 실행 워크플로우를 구축하고, CI/CD 프로세스를 확립
PR 생성 시 CI/CD 워크플로우를 실행하여, 코드 변경 사항에 대한 빌드, 테스트, 정적 분석 및 품질 검증을 자동화
다양한 자동화 기능을 구현
Detekt 정적 분석, APK 빌드 및 배포, PR 코멘트 기반 트리거 등 주요 자동화 기능을 포함한 여러 기능을 구현함
기존에 수동으로 진행되던 작업과 추가 자동화가 필요한 영역을 지속적으로 탐색하고 검토하여, 새로운 자동화 기능들을 도입하고 이를 점진적으로 확장
자동 배포 프로세스를 구축하여, Release 브랜치가 Main 브랜치로 병합될 경우 Firebase App Distribution을 활용해 자동으로 빌드 및 배포가 진행되도록 설정
빌드 및 배포 프로세스를 문서화하여, 팀원들과 워크플로우 설정을 공유하고 일관된 개발 환경을 유지
성과
배포 리드타임을 단축하고 인적 오류를 감소
PR 단계에서 코드 품질 문제를 조기에 발견하여 유지보수 효율을 개선
멀티 모듈 환경에서도 일관된 프로세스를 유지하여 협업 효율을 극대화
주요 스프린트
✔ 관심 탭 구현
기존 홈 추천 탭의 한계를 극복하여, 사용자가 찜한 상품과 팔로우한 상점을 한 화면에서 손쉽게 확인할 수 있도록 개선
레거시 SuperRecyclerView의 제약을 보완하기 위해 최신 Paging3 라이브러리를 도입
클린 아키텍처 기반 데이터 레이어에 재사용 가능한 페이징 모듈을 설계 및 구현함
✔ 판매자와 구매자 상점 분리
기존 하나의 화면에 통합되어 있던 판매자와 구매자 기능을 분리하여, 각 사용자 유형에 맞는 최적의 UI 및 기능을 제공
판매자 상점: 구매자 관련 요소 제거 및 상품 등록/관리 인터페이스 개선
구매자 상점: 별도의 화면에서 상품 검색, 내 사이즈 설정, 카테고리 필터를 활용해 원하는 상품을 쉽게 찾을 수 있도록 개선하고, 사용자 후기 기능을 통해 상품 선택에 참고할 수 있는 정보를 제시.
두 상점 모두에서 할인 정보 등 동적 데이터를 일관되게 표시하기 위해 텍스트 슬라이드 애니메이션을 설계 및 구현
✔ 상품 일괄 편집 기능 도입
판매자가 다수의 상품을 한 번에 편집할 수 있도록 하여 관리 효율성을 극대화
할인, 상단업, 자동판매, 가격 수정, 삭제 등 주요 편집 기능을 추가하여 편리성을 대폭 향상
✔ 상품 등록 프로세스 개선
복잡했던 기존 등록 절차를 단순화하여, 사용자가 보다 쉽게 상품 정보를 등록할 수 있도록 개선
입력 순서와 배치를 재구성하여 등록 과정을 직관적으로 개선함
✔ 묶음 구매 제안 기능 구현
판매자가 여러 상품을 묶어 할인 조건을 제공할 수 있도록 하여, 구매 옵션을 다양화
구매 수량에 따른 할인 조건을 설정할 수 있는 로직을 설계하고, 이를 UI에 효과적으로 표현함
✔ SDUI(GraphQL) 기반 홈피드 개선
기존 레거시 홈피드를 대체하여 개인화된 쇼핑 환경을 제공하는 새로운 홈피드를 구축
SDUI(GraphQL) 기술 도입으로 다양한 상품 피드 타입을 추가하고, 사용자 맞춤형 정보를 제공함
✔ 상품 상세 화면 개편
상품 상세 정보를 한눈에 파악할 수 있도록 UI를 재구성하여 사용자 편의성을 극대화
핵심 정보를 상단에 요약 배치하고, 추가 정보는 스크롤 방식으로 제공하는 UI를 설계함
✔ 프리미엄 매입 진행 현황 시각화
매입 프로세스를 "신청 확인 → 봉투 발송 → 수거 중 → 검수 진행 → 검수 완료" 단계별로 시각화하여, 사용자에게 투명한 진행 상황을 제공
사용자에게 실시간 진행 상태를 확인할 수 있는 화면 및 단계별 노티 알림 기능을 구현하여 중고 의류 매입 과정의 편리성과 투명성을 동시에 향상
더싸이언티스트
안드로이드 개발자 / 매니저
2021.10. ~ 2022.07. (10개월)
지카 차란차 스튜디오 앱
딜러가 실시간 방송으로 차량을 소개하고 판매할 수 있도록 지원하는 앱 개발
차란차 스튜디오 - 중고차 라이브커머스 - Apps on Google Play
주요 기능 구현
화면 전환 최적화
Single Activity 패턴을 적용하여 Activity 간 불필요한 전환을 줄이고, 화면 관리를 단순화
Navigation Component를 활용해 Fragment 간 이동을 효율적으로 관리
아키텍처 설계
UI, 데이터, 도메인 계층을 분리하여 유지보수성과 확장성을 고려한 구조 적용
라이브 방송 및 실시간 커뮤니케이션 기능 개발
Tencent SDK를 활용해 실시간 방송 송출 기능 적용
방송 중 시청자와 딜러 간 실시간 채팅 기능 적용
VOD(Video On Demand) 기능 추가
방송 종료 후 다시보기 기능을 제공하여 콘텐츠 접근성 향상
기술 스택
아키텍처: Clean Architecture(MVVM)
네트워크: Retrofit2, OkHttp3
비동기 처리: Coroutine
미디어 처리: ExoPlayer2
라이브 방송: Tencent SDK
Jetpack 라이브러리: ViewModel, LiveData, Room, DataBinding, DataStore, LifeCycle
(주)버텍스아이디
대리 | 사업수행 파트
2018.05. ~ 2021.09. (3년 5개월)
농협하나로유통 DFC (디지털 풀필먼트 센터) - PDA 앱 개발
피커가 총량피킹(농협몰에서 고객들이 주문한 상품의 총 수량 단위) 상품 리스트를 PDA에서 확인하고, 매장으로 이동해 트레이(바구니)에 상품을 매핑한 후, 피킹이 완료된 트레이와 상품 정보를 DAS 스테이션(컨베이어 벨트)으로 전송하는 PDA 앱 개발
주요 기능 구현
총량피킹 상품 리스트 연동 및 매핑
PDA에서 피킹 리스트를 확인하고, 트레이(바구니)와 매핑 후 매장으로 이동
바코드 스캔 기능 구현
Honeywell SDK를 활용해 상품과 트레이를 스캔하여 매핑 처리
피킹 완료 후 데이터 전송
피킹이 완료된 트레이와 상품 정보를 DAS 스테이션(컨베이어 벨트)으로 전송
기술 스택
아키텍처: Clean Architecture(MVP)
네트워크: Retrofit2
비동기 처리: RxJava
바코드 스캔: Honeywell SDK
Jetpack 라이브러리: ViewModel, LiveData, Room, DataBinding, DataStore, LifeCycle
농협하나로유통 (신)PCS 고도화 - PDA 앱 개발
(구)PCS 시스템을 농협몰(NGIN) 시스템으로 이관하면서, 기존 존별 피킹 방식에서 주문별 피킹 방식으로 전환하는 PDA 앱 개발
주요 기능 구현
주문별 피킹 방식 전환
기존 존별 피킹 방식에서 주문별 피킹 방식으로 개편
바코드 스캔 기능 구현
Honeywell SDK를 활용해 상품과 트레이를 스캔하여 매핑 처리
기술 스택
아키텍처: MVP 패턴
네트워크: Retrofit2
데이터 관리: Room
바코드 스캔: Honeywell SDK
기타 프로젝트
농협하나로유통 (구)PCS
하나로마트 피킹 시스템 유지보수 및 기능 개선
팔도 PSM
영업 지원 시스템 앱의 추가 기능 개발 및 UI 개선
사인 라이브러리를 활용한 서명 기능 구현
동서식품 DSIS, 다사 PAMS, ESL 전자가격택 관리 시스템
유지보수 및 신규 기능 개발
지도 API 전환 (다음맵 → 카카오맵)
주식회사 비트바이트
안드로이드 개발자 / 매니저
2017.09. ~ 2017.11. (3개월)
플레이키보드
키워드에 반응하는 인터랙티브 키보드 서비스인 '플레이키보드' 앱을 개발하여 사용자 입력 경험을 개선
플레이키보드 - 2배로 주는 앱테크, 리워드앱, 포인트 - Google Play 앱
주요 기능 구현
새로운 UI 화면 추가
기존 앱에 새로운 화면을 추가하고, 디자이너와 협업하여 UI 구성
기술 스택
UI: ConstraintLayout