미리보기
기본 정보

기본기와 디테일을 중요시하는 개발자, 진준호입니다.
자기소개
평소 주위 사람들로부터 책임감이 강하고 성실하다는 평가를 받았으며, 꼼꼼한 성격을 바탕으로 디테일을 놓치지 않습니다.
- 맡은 일을 정해진 기한안에 해결하기 위해 책임감을 가지고 수행합니다.
- HIG에 대한 기본적인 이해를 바탕으로 디자인 디테일의 중요성을 인지하고 놓치지 않으려 노력합니다.
사람들과 소통하는 것을 좋아합니다.
- 사람들과 관심사를 공유하며 다양한 시각에서 지식을 배우려고 노력합니다.
- WWDC, SyncSwift 등 온,오프라인 컨퍼런스 참여하며 다양한 개발자, 멘토들과 기술에 대한 지속적인 대화를 통해 지식을 공유합니다.
성장하기 위해 끊임없이 생각합니다.
- 새로운 기술에 대한 학습을 하더라도 왜 사용하는지에 중점을 두고 학습합니다.
- 최근에는 코드의 재활용과 유지보수, 아키텍처에 대해 지속적으로 고민하며 학습하고 있습니다.
프로젝트
Split it
Apple Developer Academy
2023.09. ~ 진행 중
한줄 설명 : 사람들과의 즐거운 모임 후 쉽고 빠른 정산을 도와주는 앱
참여 인원 : iOS 개발자 4명, 디자이너 2명
사용 기술 : UIKit, RxSwift, SnapKit, Realm, MVVM, Coordinator Pattern
맡은 역할 :
- 팀 리더로서 격주 전체회의, 매주 개발자 회의를 주최하여 신규 아이디어 도출, 디자인/개발 과업 진행 현황 파악, 일정 조율 등 지속적인 앱의 업데이트가 가능하도록 함.
- 앱에 필요한 정산 및 멤버 관련 모델(6개)를 설계 후 Realm으로 구현하였고, 비즈니스 로직에 따라 데이터를 가공하는 객체를 추가 개발하여 모든 팀원들로부터 뷰모델에서 바로 가져다 쓰기가 매우 편했다는 평가를 받음.
- 출시 후 업데이트 과정에서 싱글톤 객체가 비대해지고 역할이 불명확하다고 느껴 각 플로우마다 Service 객체로 역할을 나누고, Coordinator Pattern을 통해 Service를 View에 주입해 주는 구조로 리팩토링을 진행하여 플로우의 재사용성 향상.
- 플로우가 깊은 앱의 특성상 추가적인 정보를 표시하기 위한 커스텀 네비게이션 바의 필요성을 느껴 UIView를 상속받아 구현, 여러 뷰에 주입하여 재사용하고 enum 타입으로 UI 설정을 가능하게 하였고, 이후 Usability Test에서 사용자에게 플로우를 파악하기 편했다는 피드백을 받음.
- 유저를 인터뷰에 초대하여 실사용 모습을 녹화하여 분석하고, HIG 학습을 통해 앱 사용성 개선에 끊임없는 노력을 기울인 결과 실제 사용자들에게 사용하기 편하다는 피드백을 받음.
- Figma 디자인 가이드와 상이하게 구현된 UI를 검수하고 iOS 팀원들에게 디자인 가이드에 맞춘 화면 개발 중요성 강조.
MiniSuperApp
개인 프로젝트
2023.12. ~ 2024.01.
한줄 설명 : 카드 등록 및 금액 충전을 주제로 만든 데모 앱
참여 인원 : 카드 등록 및 금액 충전을 주제로 만든 데모 앱 - 개인 프로젝트
사용 기술 : UIKit, Combine, ModernRIBs, UnitTest
맡은 역할 :
- 카드 등록 및 충전 플로우를 재사용하기 위해 Topup이라는 View-less Riblet을 만들고 하위 Riblet을 관리하게 해줌으로써 어디서든 Topup Riblet을 Attach 시켜 해당 플로우를 손쉽게 사용할 수 있게 됨.
- 객체 간의 무분별한 참조를 막고, 관심사를 분리해 코드를 빠르게 파악하기 위해 각 관심사별로 모듈화를 진행하였고, 상위 모듈에서 하위 모듈로 단방향으로 참조하도록 모듈을 계층화함.
- 원하는 모듈만 빌드 하기 위해 protocol로 인터페이스를 정의해 소스코드 의존성을 끊어 느슨한 결합을 해줌으로써 빌드 시간을 줄이고 테스트하기 용이하도록 만듦.
- 테스트를 위해 로컬 서버를 활용해 dummy response를 만들어 외부 환경에 영향을 받지 않고 테스트 가능하도록 함.
- pointfreeco/combine-schedulers를 활용해 테스트 코드에서 비동기성을 제거하여 단위테스트의 불안정성 제거.
- UI가 의도한 대로 실행되는지 Test 하기 위해 각 요소의 accessibilityIdentifier를 정의하고 UITest를 진행함으로써 Test case에 따라 자동으로 UI의 Flow를 확인할 수 있도록 함.
Memorizing
멋쟁이 사자처럼 앱스쿨
2022.12. ~ 2023.01.
한줄 설명 : 망각곡선 이론을 바탕으로 암기를 도와주는 암기장 앱
참여 인원 : iOS 개발자 6명, 디자이너 1명
사용 기술 : SwiftUI, Firebase, CoreData
맡은 역할 :
- 1박 2일 해커톤 기간 동안 MVP 단위의 앱을 만들기 위해 팀원 모집, 업무 분배, 기획 리딩 등 개발자와 PM의 역할을 함께 수행하여 해커톤에서 최우수상 수상.
- 해커톤 이후 앱 출시를 위해 팀원들과 회의를 통해 기획을 다듬고, 디자인 및 사용성 피드백을 받아 개선 후 앱스토어 출시.
- 암기장 복습 과정에서 서버 비용을 줄이고자 CoreData를 적용하였으며, 이로 인해 서버 비용을 줄이고, 네트워크 환경이 아닌 곳에서도 복습을 가능하게 함.
- 한 명의 사용자가 여러 기기에서 사용할 수 있도록 애플, 구글, 카카오톡 소셜 로그인을 도입하고 자동 로그인 구현으로 간편하게 사용자가 다양한 기기에서 접속이 가능하도록 함.
- 코드의 품질을 높이기 위해 팀의 코드 컨벤션을 정하고 Lint를 활용해 코드의 통일성을 높여 가독성이 올라감.
포트폴리오
교육
창원대학교
대학교(학사) | 산업시스템공학
2012.03. ~ 2019.08. | 졸업
Apple Developer Academy
사설 교육 | iOS 앱 개발
2023.03. ~ 2023.12. | 졸업
멋쟁이 사자처럼 앱스쿨
사설 교육 | iOS 앱 개발
2022.09. ~ 2023.02. | 졸업
대외활동
멋쟁이 사자처럼 해커톤 최우수상
멋쟁이 사자처럼 앱스쿨
‘Memorizing’ MVP 단위 앱으로 참여한 10개팀 중 2등으로 최우수상 수상