블로그 이미지

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] Roadmap
    iOS 2022. 5. 3. 14:48

     


    iOS 전문가가 되기 위해 공부해야 하는 것들은 무엇일까?

      막연히 iOS를 공부한다고 하면 그 범위가 넓고, 어디서부터 무엇을 봐야 할지 감이 잡히지 않는다. Swift와 같은 프로그래밍 언어도 공부해야 하고, 프레임워크, 디자인 패턴, 네트워킹, Xcode, 빌드/배포 등등 굉장히 알아야 할 것이 많은데, 무엇부터 시작해서 어떻게 공부할 지 혼자 생각해서 정리하기가 어려웠다.

     

      찾아보니 iOS 전문가가 되기 위해 알아야 하는 내용들을 잘 정리해 둔 목록이 있어서 이를 참고했다. 나처럼 iOS를 공부하고 싶은데, 뭐부터 해야할지 모르면 참고하기 좋은 것 같다.

    Computer Science

    • History of the computer
    • Hardware
      • CPU
      • RAM
      • Storage (HDD, SSD)
    • Basics of programming (Swift)
      • Constants, Variables, Data Types
      • Basic Operations
      • Strings and Characters
      • Collection Types
      • Control Flow
      • Functions
      • Basics of Algorithms
        • Efficiency (Big O and Omega Notations)
        • Search (Linear, Binary)
        • Sort (Bubble, Selection, Insertion, Merge)
        • Graphs
        • Machine Learning
      • Basics of Data Structures
        • Array
        • Queue
        • List
        • Tree
        • Hash table
        • Sets
        • Graphs
      • Memory
        • Pointers
        • Segmentation Faults
        • Dynamic Memory Allocation
        • Stack
        • Heap
        • Buffer Overflow
        • Data Structures
        • File I/O
        • Images
    • Swift Language
      • Closures
      • Enumerations
      • Structures and Classes
      • Properties
      • Methods
      • Subscripts
      • Inheritance
      • Initialization
      • Deinitialization
      • Optional Chaining
      • Error Handling
      • Concurrency
      • Type Casting
      • Nested Types
      • Extensions
      • Protocols
      • Generics
      • Opaque Types
      • Automatic Reference Counting
      • Memory Safety
      • Access Control
      • Advanced Operators
      • Method Dispatch
      • Advanced Memory Management (Memory Layout, Copy-on-write)
      • Async/await

    iOS Platform

    • Xcode
      • Project
      • Target
      • Settings, Configurations, Schemes
      • Property List Files, Nib Files, Code Files, Resources,
      • Frameworks, SDKs, and Packages
      • App Launch Process
    • UIKit
      • UIView
      • UIWindow
      • UIViewController
      • Auto Layout
      • Touches
      • Gestures
    • Core Graphics
      • Images,
      • Drawing
    • Core Animation
      • Layers
      • Animation
    • Advanced View Controllers
      • Storyboard Layout
      • Manual Layout
      • Tab Bar Controller
      • Navigation Controller
      • Page View Controller
      • Container View Controller
    • Scroll View
    • Table View
    • Collection View
    • SwiftUI
    • Text
      • Label
      • Text Filed
      • Text View
      • Attributed Strings
      • Text Kit
    • Controls
    • Multithreading
      • Thread
      • Grand Central Dispatch
      • Operations
      • Runloop
    • Notification Center
    • Web View
    • Modal View
    • Audio
    • Video
    • Camera and Photo Library
    • Contacts
    • Calendar
    • Map
    • Core Location
    • Persistent Storage
      • User Defaults
      • Files
      • XML, JSON
      • SQLite
      • Core Data
      • PDF
    • Networking
    • In-App Purchases
    • User Notifications
    • TCP/IP
    • Sockets
    • Power Management
    • File System
    • Security

    Product Thinking

    • Processes
      • Time Management
      • Communications
      • Decision Making
    • Product (Economics)
      • Market Research
      • Customer Development
      • Analytics
      • Monetisation
      • A/B-testing, Experiments
      • Minimal Viable Product
    • Design
      • User Experience, Human Oriented Design
      • Visual Design, User Interface Design

     


    위 목록은 hack-ios-dev github repository에서도 확인할 수 있다.

    추가로 위 목록을 작성한 사람이 Medium에 How to become an expert in iOS development라는 글을 썼는데, 위 로드맵에 대한 개요를 설명하고 있다. 2021년에 작성된 글이라 비교적 최신 글이라 읽어볼만 한 것 같다. 아래는 이 글을 대략적으로 번역했다.

     

     

    더보기
    뉴비가 iOS 개발을 보는 시각

    몇 주 혹은 몇 달간 공부한 뉴비는 iOS 개발이 단순히 Swift언어와 몇 UI 프레임워크 이상이라는 걸 이해하기 시작한다. 심지어 주니어 포지션에도 알고리즘, 데이터 구조, 디자인 패턴, 아키텍처 (MVC, MVVM, MVP, VIPER 등등), 네트워킹, 데이터베이스, 애니메이션, 패키지 매니저 등과 같은 추가 툴과 기술에 대한 이해를 요구하는 회사들이 있다.

     

    주니어 iOS 개발자에게 요구되는 지식

    사실 iPhone과 iPad의 월드 클래스 급 앱을 만들기에 위의 지식만으로도 부족하다.

    iOS 개발은 더 많은 내용들을 포함하고, 좋은 개발자는 대부분의 것에 익숙하다. 하지만 이 모든 걸 한 번에 다 사용할 필요는 없고, 나만의 첫 번째 앱을 만드는데는 이런 기술들의 기본만 알아도 충분하다. 하지만 꾸준히 공부해서 이런 지식들을 계속 익히는 것이 중요하다.

     

    멋진 iOS 개발자가 되기 위해 필요한 것은 오직 두 개다 - 열정과 호기심이다.

     


    iOS 개발자에게 필요한 스킬들을 보자.

    Computer Science, iOS Platform, Product Thinking

    Computer Science

    모든 디바이스에서 잘 동작하는 효율적이고 최적화 된 프로그램을 만들고 싶으면, 이 기기들이 어떻게 작동하는 지를 알아야 한다. CPU, 메모리, os, 그리고 얘네들이 소프트웨어와 어떻게 동작하는 지 알아야 한다.

    프로그래밍의 기초를 아는 것도 도움이 된다. 변수, 함수, 데이터 타입을 먼저 알고, 알고리즘과 데이터 구조를 공부하는 것이 좋다.

    간단한 프로그램을 만들 줄 알게 되었으면, Swift를 심도있게 공부한다. 구조체, 클래스, 프로퍼티와 메서드, 초기화, 상속, extension, 프로토콜, 제네릭, 메모리 관리 등등을 공부하면 된다. 주로 사용하는 툴도 마스터해야 한다.

    물론 가장 중요한 것은 실제로 해보면서 연습하는 것이다.

    iOS Platform

    컴퓨터 과학의 기초와 Swift에 대해 공부했다면, iOS SDK, 프레임워크와 툴에 대해 공부해야 한다. 공부한 걸 실전에 적용하는 것을 항상 시도해야 한다. 앱, 스크립트, 토이 프로젝트를 만들어봐라. 프레임워크와 라이브러리를 직접 사용해보면서 공부해라. 알고리즘, 데이터 구조, 언어, 하드웨어를 알고 있다면 이런 툴들의 내부 동작들을 더 잘 이해할 수 있게 될 것이다.

    Design and Product Thinking

    마지막 영역은 개발자가 단순히 앱이 아닌, 좋은 제품을 만드는데 필요한 영역이다. 여기에 해당하는 스킬들은 더 많은 고객과 월드 클래스 급 앱을 만들기 위해 팀으로 일하는데 필수적이다. 이런 지식들을 알고 있으면 나만의 비즈니스를 시작하거나 다른 회사에서 숙련된 소프트웨어 개발자로 일할 수 있다. 작은 규모의 팀이나 혼자만의 프로젝트를 개발한다 해도 이런 지식들을 알고 있는 것이 도움이 된다.

     


    참조

     

    How to become an expert in iOS development

    Usually people beginning their way in iOS development imagine the studying area like this:

    medium.com

     

    GitHub - yuraist/hack-ios-dev: Hack iOS Development

    Hack iOS Development. Contribute to yuraist/hack-ios-dev development by creating an account on GitHub.

    github.com

     

    이미지 참조

    반응형

    'iOS' 카테고리의 다른 글

    [WWDC22] Hello Swift Charts  (0) 2022.06.14
    [WWDC22] What's new in Xcode  (0) 2022.06.13
    [WWDC22] What's new in Swift  (0) 2022.06.13
    [iOS] KVO 패턴  (0) 2022.06.12
    [iOS] UIStackView와 AutoLayout, Dynamic height  (0) 2022.05.27

    댓글

Designed by Tistory.