미리보기
기본 정보
저는 1년 9개월동안 Swift와 Flutter를 사용하여 여러 프로젝트에 참여한 경험이 있습니다. 프로젝트를 진행하면서 소통과 협업을 중요시하며 개발을 하였고, 팀에서 필요하다면 개발이외에 작업인 기획서 작성, Lo-Fi 설계, IA 작성, User Interview 및 Test 등 다양한 역할을 맡아 국토교통부에서 개최한 공모전에서 입상이라는 쾌거를 이루었습니다.
자기소개
자기소개
Product와 Business를 이해하며 이를 개발 프로세스에 통합하는 능력을 갖춘 개발자입니다.
공모전과 해커톤을 준비하면서 다양한 기획서와 비즈니스 모델을 작성하여 실무에서의 기획 역량을 키운 경험이 있습니다. 2023년에는 Apple Developer Academy를 수료하면서 개발뿐만 아니라 작업 방법론, 리서치 방법 등 기획과 관련된 작업도 동시에 수행하였습니다. 서초구에서 진행하는 PM 교육에 대한 이론과 방식을 학습하여 전문적인 기획 역량을 갖추었습니다. 개발 외에도 Apple Developer Academy에서 기획, 리서치, 작업 방법론을 익혔고, PM 교육을 통해 전문적인 기획 역량도 갖추었습니다.
프로젝트 경험
목표를 달성하기 위해 팀원들과 적극적으로 소통하고 협업하는 열정을 가진 개발자입니다.
여러 공모전과 해커톤 경험을 통해 협업과 소통 능력을 키워온 개발자입니다. 매년 팀을 구성하여 프로젝트를 진행했으며, 학업 중에도 교내 공모전에서 꾸준히 수상하여 개발 역량을 인정받았습니다. 특히 4학년 때 개발한 학식 어플로 대학교 총장상을 수상한 쾌거를 이루었습니다. 교외에서도 2023 새싹톤 본선 진출, 2024 DND 해커톤 수료, 국토 교통 데이터 경진대회에서 주택도시보증공사 사장상을 수상한 경험이 있습니다.
애플 코리아 소속 직원의 업무 효율성 개선 프로젝트에 참여한 경험이 있습니다.
iPad 디지털 교과서 제작 과정에서 수작업으로 1~2시간이 소요되던 작업을 자동화하는 MacOS 애플리케이션을 Swift로 개발함으로써, 작업 시간을 약 10분으로 단축하여 최대 91%의 시간 절감을 이뤘습니다. 이 과정에서 PdfKit을 사용해 PDF 파일을 이미지로 변환하는 기능을 구현했으며, 변환 과정에서 발생한 이미지 여백 문제를 해결하기 위해 픽셀 값을 측정하고, x, y 좌표와 너비, 높이를 조정하여 여백을 제거하는 로직을 추가했습니다.
또한, Instruments 프로파일링을 통해 메모리 누수가 발생하는 문제를 확인했습니다. PDF를 NSImage로 변환하여 배열에 저장했으나, 배열이 정상적으로 초기화되지 않아 heap에 남아 메모리를 점유하고 있었습니다. 이를 해결하기 위해 배열 참조 코드를 디버깅한 후 참조 해제 코드를 작성했습니다.
마지막으로, 앱 내에서 교과서 이미지 배치 및 패딩 값을 조정하는 기능에서 이미지 개수가 많아질수록 렉과 지연 현상이 발생했는데, 이를 LazyVGrid로 변경하여 현재 화면에 표시되는 이미지만 메모리에 할당되도록 최적화함으로써 문제를 해결했습니다. 현재도 애플 디지털 교과서 프로그램 소개에 활용되고 있습니다.
성격의 강점
저는 목표를 설정하면 어떤 도전도 회피하지 않고 문제를 해결하는 성격입니다.
프로젝트 진행 중 사용자 인터뷰와 리서치가 필요했던 상황에서, 서비스의 실효성을 높이기 위해 노인정과 노인 복지관에 전화하고 직접 방문하여 인터뷰와 테스트를 수행했습니다. 이 과정에서 노인회관은 3곳, 노인 복지관은 총 5곳을 방문했지만 모두 거절당했습니다. 그러나 마지막으로 효곡동 평생학습센터에서 허락을 받아 앱의 타깃인 사용자를 인터뷰하고 테스트할 수 있었습니다.
프로젝트 진행 중 공모전 준비 과정에서도 다수의 기사와 논문을 분석하여 발표 자료를 체계적으로 준비했습니다. 이를 통해 Figma를 활용한 컴포넌트 및 프로토타입 제작 능력을 갖추게 되었습니다. 또한, 기획서 작성과 Jira를 활용한 일정 관리 등 다양한 툴을 능숙하게 다루며, 개발 외에도 프로젝트 전반을 관리할 수 있는 역량을 키웠습니다.
이러한 경험을 바탕으로 국토교통부 주최 데이터 활용 서비스 개발 공모전에서 기획, 발표 자료 제작, 앱 개발 등 서비스의 기획부터 배포 작업까지 진행하여 우승하는 성과를 이루었습니다.
기술 스택
Swift, SwiftUI, Flutter, Firebase, GitHub, Figma, JIRA
포트폴리오
프로젝트
몽글(반려견 출장 목욕 플랫폼 어플)
개인
2024.04. ~ 진행 중
자세한 내용은 포트폴리오를 확인 해주시면 감사하겠습니다.
성과
2024 대학 창업동아리 경진대회 예선 선정
3개 업체 얼리버드 등록 후 미팅 진행(어플 테스트 및 피드백 수집)
역할
iOS App 개발(앱 아키텍처 설계 및 기능 개발)
기획자 및 대표(기능 IA 작성, 업체 Interview, Lo-Fi 작성,개발 일정 계획 수립)
기간/팀
24.04~현재 / 6명(iOS: 2명, Server: 1명, Front: 2명, Design: 1명)
기술스택 및 구현 내용
Swift, SwiftUI, Tuist, TCA 패턴
Tuist를 활용한 모듈 아키텍처 설계(App, Core, Feature, UI)
Tuist를 적용하면서 발생한 문제 해결
TCA패턴을 이용한 간편 로그인 구현
React 웹뷰와 iOS 클라이언트 간의 데이터 통신
트러블 슈팅 중 일부
Tuist를 활용한 모듈 아키텍처 설계
Tuist 도입 배경
지난 프로젝트에서 4명의 개발자가 3개월 안에 개발을 완료하는 과정에서
런 타임 에러, 긴 빌드 시간, Xcode 설정 충돌 등 여러 문제를 경험했습니다.
효율적인 모듈 관리, 프로젝트 설정 자동화, 빌드 속도 개선, Xcode 설정을
지원하는 Tuist를 도입하여 이전 프로젝트에서 경험한 아쉬운 부분을 최소화하고 싶었습니다.Tuist 경험
여러 회사 블로그와 Tuist 행사 참여를 통해 Tuist에 대한 지식을 쌓았고,
공식 문서를 참고하여 프로젝트를 App, Feature, Core, UI로 모듈화했습니다.
또한, Feature Target을 app, demo, framework, unitTest, uiTest로 설정하여
모듈별 Product Type을 구성하였습니다. 외부 라이브러리 관리를 TuistSPM을 사용하면서 Build 시간을 20초에서 4초로 단축하였습니다.App: 모든 모듈을 결합한 어플리케이션.
Core: 네트워크 통신, 로컬 데이터 저장 등 재사용 가능한 기능 제공.
UI: SwiftUI 뷰와 커스텀 컴포넌트, Image & Color Assets, Fonts 등 UI 요소 관리.
Feature: 홈, 캘린더, 채팅, 프로필 등 앱의 개별 기능을 담당.
Tuist를 적용하면서 발생한 문제 해결
프로젝트 폴더 자동 생성 개선
Tuist로 모듈을 생성할 때, 폴더가 없으면 프로젝트 실행 시 오류가 발생하는 문제를 겪었습니다. 이를 해결하기 위해 createDirectoryAtCustomPath 함수를 만들었습니다. Sources와 Resources 폴더, Dummy 파일을 자동으로 생성하도록 했습니다.
이 기능은 필요할 때만 폴더와 파일을 생성하여 중복 작업을 방지하며, 기존 수작업으로 6분이 소요되던 작업을 5초로 단축, 약 98%의 시간을 절약했습니다Tuist 버전 오류 해결
처음 프로젝트를 4.0 버전의 Tuist로 프로젝트를 생성할 때
SwiftUI 템플릿을 찾을 수 없다는 오류가 발생했습니다.
Tuist 팀에 문의 후, 여러 버전을 테스트한 끝에 3.42.2 버전에서 문제없이 작동했으며,
설정 작업을 완료한 후 4.8.1로 업데이트하여 변경된 메소드를 반영했습니다.
iWaver(디지털 교과서 제작 MacOS 어플)
Apple Developer Academy@POSTECH
2023.10. ~ 2023.12.
자세한 내용은 포트폴리오를 확인 해주시면 감사하겠습니다.
성과
총 5개 대형 출판사와 테스트 및 계약 미팅을 진행
(주)코더스하이와 위탁 판매 계약서 작성 단계까지 진행하였으나,
아카데미 종료, 학업 증진, 유료 계약 책임에 대한 우려로 계약을 파기하였습니다.
무료 배포 후 실제 교육 현장에서 사용
현재 약 70명 이상의 유저가 현업에서 사용중이며, 좋은 리뷰와 피드백을 남기고 있습니다.
역할
iOS 개발(앱 아키텍처 설계 및 기능 개발)
Product Manager 및 대표(기능 IA 작성, Lo-Fi 작성, 개발 일정 계획 수립)
기간/팀
2023.10-2023.12 / 6명(개발자 4명, 디자이너 1명, 기획자 1명)
기술 스택 및 구현 내용
Swift, SwiftUI, MVVM 패턴, PDFKIt, AppleScript
PDF 파일을 이미지 파일로 변환
CustomTextField 및 Numbers, Sheet 생성 구현
메모리 누수 해결
UI 최적화 작업
트러블 슈팅
자세한 내용은 포트폴리오를 확인 해주시면 감사하겠습니다.
PDF 파일을 이미지 파일로 변환
PDF 페이지 이미지 렌더링 문제 해결
PDFKit을 사용해 PDF 페이지를 이미지로 변환하는 작업 중 이미지 가장자리에 여백이 생기는 문제가 발생했습니다. 이를 해결하기 위해 .mediaBox와 .cropBox를 사용해 x, y 좌표값을 조정하여 정확하게 이미지를 렌더링했습니다.
비동기 처리 문제 해결
PDF 파일을 이미지로 변환하는 과정에서 동기 작업으로 인해 ImageLoadingView가 얼어버리는 문제가 발생했습니다.
DispatchQueue.main.async로 비동기 처리를 했으나, ProgressBar가 업데이트되지 않았습니다. 이는 메인 스레드에서 작업이 실행되었기 때문입니다.
DispatchQueue.global().async를 사용해 메인 스레드가 아닌 백그라운드 스레드에서 작업을 처리하여 문제를 해결했습니다.
UX 경험 향상을 위해 CustomTextField 개발
Numbers와 유사한 기능을 제공하는 CustomTextField를 개발하여 사용자 경험을 향상시켰습니다. ZStack을 활용해 텍스트와 텍스트 필드 간의 데이터 전달을 최적화했습니다. 사용자가 한 번 클릭하면 텍스트가 선택되고, 두 번 클릭하면 편집 모드로 전환됩니다.
중복된 Sheet 이름이나 공백 입력 시 이전 이름으로 돌아가게 하여 데이터 일관성을 유지하며, Sheet 또는 Numbers 생성 시 자동으로 최소값의 Sheet 번호를 부여했습니다. 이러한 기능을 통해 사용자에게 직관적인 텍스트 편집 경험을 제공했습니다.
메모리 누수 문제 발견 및 해결
iWaver 앱은 파일 변환과 이미지 편집 후 초기화되어 맨 처음 화면으로 돌아가는 흐름을 가지고 있습니다.
Memory Report를 확인한 결과, 초기화 과정에서 메모리가 중첩되어 제대로 해제되지 않는 문제를 발견했습니다. 프로파일링을 통해 앱 사이클을 반복한 후, 초기 화면으로 돌아올 때 NSImage 객체를 저장하는 메모리가 해제되지 않는 상황을 확인했습니다iWaver 앱의 전체 코드를 분석하고 NSImage를 사용하는 코드를 주석처리하며 디버깅을 진행했습니다. pdfImageVM 모델을 사용하는 코드의 주석처리 후 앱을 실행하며 메모리 사용을 관찰했습니다. 그 결과, ImageListArea에서 필터를 적용하여 이미지를 표시하는 부분에서 메모리 해제가 이루어지지 않는 문제를 발견했습니다. 이를 수정하여 메모리 누수 문제를 식별하고 해결할 수 있었습니다.
교육
평택대학교
대학교(학사) | 융합소프트웨어학과
2017.03. ~ 현재 | 재학 중
Apple Developer Academy @POSTECH
사설 교육 | Tech
2023.03. ~ 2023.12. | 졸업
서울경제진흥원(SESAC)
사설 교육 | 현재 재학중 Flutter 웹/앱 풀스택 개발
2024.09. ~ 현재 | 재학 중
코드스테이츠 IT 교육
사설 교육 | Product Manager
2024.08. ~ 2024.08. | 졸업
대외활동
2024 국토 교통 데이터 활용 경진대회 사장상 수상
개인
애플 디벨로퍼 아카데미에서 알게 된 개발자 1명과 디자이너 1명에게 연락하여 팀을 구성하고, 기획, 개발, 발표 등에서 팀장으로서 주도적이고 적극적인 태도로 경진대회에 참가하였습니다.
1차 기획 서류 및 서비스 검토를 통과한 후, 2차 온라인 발표를 성공적으로 마친 결과, 최종 발표에서 주택도시보증공사 사장상을 수상하는 영예를 안았습니다.
아카데미에서 형성한 소중한 인적 네트워크와 포기하지 않는 도전 정신이 94팀 중 7팀안에 드는 영광을 이끌어낼 수 있었습니다.
2024 평택대학교 학습 프로그램 총장상
평택대학교
2023년 아카데미를 수료하며 습득한 경험(어플 기획, 개발, 프로젝트 방법론)을 바탕으로 후배들과 함께 교내 서비스(학식 & 장학 프로그램)어플 프로젝트를 진행하여 총장상을 수상하는 성과를 이뤘습니다.
프로젝트에서 저는 어플의 기획, 디자인, 개발 및 발표를 담당하였고, 후배들은 서버 개발과 API 구축을 맡아 협력하였습니다.
이 과정에서 제가 학습한 내용을 후배들에게 전수하며, 함께 성장할 수 있는 기회를 마련할 수 있었습니다. 이를 통해 팀워크와 실무 경험을 더욱 강화하고, 미래의 개발자로서의 역량을 한층 발전시킬 수 있었습니다.
DND 해커톤 경험
개인
저의 실력을 확인하고 협업 능력을 기르기 위해 해커톤에서 개인으로 참여하여 모르는 팀원들과 협업하였습니다.
iOS 개발을 담당하며 실시간 날씨 공유 어플을 개발하였고, 백엔드 개발자 2명, iOS 개발자 2명, 디자이너 2명과 함께 협력하였습니다.
모든 시간을 개발에 집중하였으나, 초기 계획했던 만큼의 기능을 완전히 구현하지 못했습니다. 이 해커톤을 통해 개발자로서의 부족한 점을 깨닫고, 다시 한 번 학습에 대한 의지를 다질 수 있는 소중한 기회를 가졌습니다.
새싹톤
Apple Developer Academy
1개월 동안 진행된 공모전에서 1차 및 2차 심사를 통과하여 본선에 진출, 동대문 DDP 아트홀에서 발표한 경험이 있습니다.
아카데미 내에서 팀원을 모집하여 기획서 작성, PPT 자료 제작, MVP 어플 개발에 참여하였으며, 개발 과정에서는 Firebase를 활용한 서버 구축과 프로필 관련 뷰 및 기능 개발을 담당하였습니다.
처음 경험한 공모전을 통해 부족한 점과 잘했던 점을 파악하게 되었고, 기한 내에 완성도 높은 프로젝트를 개발해야겠다는 중요성을 깨닫는 소중한 경험이었습니다.