-
제목 : iOS 애플리케이션 개발 생산성 고찰 - 빠른 퇴근을 위한 우리는 어떻게 해야할 것인가?
-
목차
- 개발 생산성 고찰
- 개인의 개발 환경 개선
- 프로젝트 구조 개선
- 프로젝트 환경 개선
- 마치며
- 개발 생산성 고찰 - 우리는 왜 정시 퇴근을 지키지 못하는가?
- 우리가 iOS 앱 개발을 배웠을 때를 생각해보자
- Hello World를 보여주는 앱을 시뮬레이터, 아이폰에서 보았을 때의 감흥을 느끼고 있는가?
- 현재 우리는 그러한 감흥을 느끼면서 개발하고 있는가?
- 그 당시에는 우리가 코드를 작성하면 시뮬레이터나 프리뷰에서 빠르게 결과를 확인할 수 있었는데, 지금은.. 그러시나요?
- 서비스 화면 A, B, C, D, E, 순으로 보여줄 것
- 각 화면을 개발하는 사이클을 보여줄 것 -> 렛어스고 발표자료 참고
- 운영 및 유지보수시 지라 티켓이 발급되어 해당 이슈를 수정해야할 때, 어려운 점 이야기
- 전체적인(거시적인) 관점에서 우리는 어떻게 해야할 것인가를 이야기
- 외부 요인
- 기획 시나리오 변경
- 디자인 변경
- 서버 작업으로 인한 네트워크 요청 실패
- 끊임없는 회의
- 피처 작업 중에 과거의 이슈 수정 요청
- 내부 요인
- 런타임에만 검증 가능한 코드 작성
- 정합성이 떨어지는 아키텍처
- 오래 걸리는 빌드 및 작업한 코드 확인
- 개인의 개발 환경 개선
- 빌드 한번이라도 줄일 수 있다면?
- LLDB 소개 및 런타임 기법 설명
- InjectionIII
- Lookin, Reveal
- Pulse
- Proxyman, Charles
- 프로젝트 구조 개선
- 아키텍처, 테스트코드 작성
- 구조적인 개선을 통해 정합성을 지키고, 체계적으로 개발할 수 있게
- 그러나 아키텍처를 통해서 정합성을 지키고, 응집도 높은 코드를 작성한다고 하지만 실제 코드 확인은 오래 걸리지 않는가? 테스트 코드를 작성하다가, 기존 로직 코드를 수정하는 경우, 전체 빌드 후 테스트 코드를 빌드하는데, 테스트 코드 작성에 흥미가 떨어지지 않을까? 그러면 테스트 코드를 작성해야할 동기가 점점 없어지고, 테스트 코드를 꼭 작성해야하는지 당위성이 줄어들게 됨
- 코드로 할 수 있는 방법은 더이상 없으니, Xcode 밖에서 찾아야 하지 않을까?
- 프로젝트 환경 개선
-
오픈소스(RxSwift, SnapKit 등)은 단일 기능을 담은 모듈
- 우리가 만드는 기능들은 이러한 코드들을 엮어 하나의 기능, 상품을 구성함
- 하지만 우리가 작성한 코드는 과연 단일 기능만 담당하는 것일까?
- Access Control Level을 충분히 사용하고 있는가? Private, Fileprivate, Internal 밖에 다루지 못하지 않는가?
- Internal로 접근 수준을 설정하기 때문에, 다른 기능을 쉽게 사용할 수 있고, 따라서 결합도가 자연스레 올라감
- Public, Open 접근 수준을 설정할 수 있도록 구축해야함
- 그럴려면 결국 모듈화 작업이 필요
-
예전에는 어느정도 코드를 기억하고 빠르게 파악할 수 있었다면, 이제는 프로젝트가 커지면서 추가되는 코드를 다 기억하기 어렵습니다. 또한, 하나의 프로젝트에서는 응집도를 높이고, 격리화를 한다고 하지만 모든 사람들은 동일한 이해를 가지지 못하기 때문에 어떻게 할 것인가를 이야기 합니다.
-
프로젝트를 동적으로 제어 필요
-
이는 입맛대로 우리가 현재 작업시 필요한 최적의 개발 환경을 구축해야 빠른 개발이 가능해진다는 의미
- 이것저것
- 정시 퇴근을 통해 우리는 창의성, 판단성이 올라가며, 선행 연구를 할 수 있는 힘을 받아 선순환 구조를 그릴 수 있습니다.