Skip to content

Instantly share code, notes, and snippets.

@minsOne
Last active September 25, 2023 02:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save minsOne/df1be0e9d214594c01f5340ee4a2a88d to your computer and use it in GitHub Desktop.
Save minsOne/df1be0e9d214594c01f5340ee4a2a88d to your computer and use it in GitHub Desktop.
레츠스위프트2023 발표 준비
  • 제목 : iOS 애플리케이션 개발 생산성 고찰 - 빠른 퇴근을 위한 우리는 어떻게 해야할 것인가?

  • 목차

  1. 개발 생산성 고찰
  2. 개인의 개발 환경 개선
  3. 프로젝트 구조 개선
  4. 프로젝트 환경 개선
  5. 마치며
  • 개발 생산성 고찰 - 우리는 왜 정시 퇴근을 지키지 못하는가?
  • 우리가 iOS 앱 개발을 배웠을 때를 생각해보자
    • Hello World를 보여주는 앱을 시뮬레이터, 아이폰에서 보았을 때의 감흥을 느끼고 있는가?
    • 현재 우리는 그러한 감흥을 느끼면서 개발하고 있는가?
    • 그 당시에는 우리가 코드를 작성하면 시뮬레이터나 프리뷰에서 빠르게 결과를 확인할 수 있었는데, 지금은.. 그러시나요?
  • 서비스 화면 A, B, C, D, E, 순으로 보여줄 것
  • 각 화면을 개발하는 사이클을 보여줄 것 -> 렛어스고 발표자료 참고
  • 운영 및 유지보수시 지라 티켓이 발급되어 해당 이슈를 수정해야할 때, 어려운 점 이야기
  • 전체적인(거시적인) 관점에서 우리는 어떻게 해야할 것인가를 이야기
  • 외부 요인
    • 기획 시나리오 변경
    • 디자인 변경
    • 서버 작업으로 인한 네트워크 요청 실패
    • 끊임없는 회의
    • 피처 작업 중에 과거의 이슈 수정 요청
  • 내부 요인
    • 런타임에만 검증 가능한 코드 작성
    • 정합성이 떨어지는 아키텍처
    • 오래 걸리는 빌드 및 작업한 코드 확인
  • 개인의 개발 환경 개선
  • 프로젝트 구조 개선
  • 아키텍처, 테스트코드 작성
  • 구조적인 개선을 통해 정합성을 지키고, 체계적으로 개발할 수 있게
  • 그러나 아키텍처를 통해서 정합성을 지키고, 응집도 높은 코드를 작성한다고 하지만 실제 코드 확인은 오래 걸리지 않는가? 테스트 코드를 작성하다가, 기존 로직 코드를 수정하는 경우, 전체 빌드 후 테스트 코드를 빌드하는데, 테스트 코드 작성에 흥미가 떨어지지 않을까? 그러면 테스트 코드를 작성해야할 동기가 점점 없어지고, 테스트 코드를 꼭 작성해야하는지 당위성이 줄어들게 됨
    • 코드로 할 수 있는 방법은 더이상 없으니, Xcode 밖에서 찾아야 하지 않을까?
  • 프로젝트 환경 개선
  • 오픈소스(RxSwift, SnapKit 등)은 단일 기능을 담은 모듈

    • 우리가 만드는 기능들은 이러한 코드들을 엮어 하나의 기능, 상품을 구성함
    • 하지만 우리가 작성한 코드는 과연 단일 기능만 담당하는 것일까?
    • Access Control Level을 충분히 사용하고 있는가? Private, Fileprivate, Internal 밖에 다루지 못하지 않는가?
    • Internal로 접근 수준을 설정하기 때문에, 다른 기능을 쉽게 사용할 수 있고, 따라서 결합도가 자연스레 올라감
    • Public, Open 접근 수준을 설정할 수 있도록 구축해야함
    • 그럴려면 결국 모듈화 작업이 필요
  • 예전에는 어느정도 코드를 기억하고 빠르게 파악할 수 있었다면, 이제는 프로젝트가 커지면서 추가되는 코드를 다 기억하기 어렵습니다. 또한, 하나의 프로젝트에서는 응집도를 높이고, 격리화를 한다고 하지만 모든 사람들은 동일한 이해를 가지지 못하기 때문에 어떻게 할 것인가를 이야기 합니다.

  • 프로젝트를 동적으로 제어 필요

  • 이는 입맛대로 우리가 현재 작업시 필요한 최적의 개발 환경을 구축해야 빠른 개발이 가능해진다는 의미

  • 이것저것
    • 정시 퇴근을 통해 우리는 창의성, 판단성이 올라가며, 선행 연구를 할 수 있는 힘을 받아 선순환 구조를 그릴 수 있습니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment