웹 서비스 기반의 iOS 채용공고 JD를 보면, 아래와 같은 기술 자격요건을 많이 보게된다.
기업마다 요구하는 세부 기술 자격요건은 상이하겠지만, 통상적으로 웹 서비스 기반의 iOS 앱을 개발하는 기업들에서 위와 같은 기술적 역량을 요구하는 것을 많이 볼 수 있었다.
도메인 영역과 Swift에 대한 이해가 정확하지 않은 상태에서 개발을 한 과거를 돌이켜 보았을 때, '내가 기본이 탄탄하지 않았구나'를 느낄수 있었다.
특히 Swift에 대한 이해를 예로 들었을 때,
두 클래스 인스턴스 간에 참조가 일어났을 때 weak 키워드와 unowned 키워드는 '어떠한 상황에서 왜 써야하는지'
또는 클로저 내에서 클래스 인스턴스를 캡처를 통해 참조할 때 순환 참조의 문제를 해결하기 위해 '캡처리스트를 사용한 [weak self], [unowned self]가 무엇인지' 등
의미를 정확히 이해하지 못하고, 남들이 쓰니까 아무렇지 않게 그냥 따라 쓰던 나였다.
그래서 지난 5월부터 '모든 것은 기본에서 시작한다' 라는 마인드로,
Swift 공식 문서를 통해 그간 잘 인지하지 못한 부분들을 공부하였다.
단순히 공부하고 머릿속으로만 남기는 것이 아니라 글로 기재하여 나만의 이해를 표현하고자 했다.
더 나아가 Apple의 swift Repository를 통해서도 새로운 사실들도 많이 알게 되었다.
가령, Swift의 컬렉션 타입은 구조체로 되어있으나 내부적으로는 COW로 메모리 최적화를 위해 실질적으로는 힙 영역에 데이터가 저장된다거나, String은 C언어와 달리 가변적이고 메모리 공간에서 연속적으로 할당되지 않는다거나, Array가 어떻게 생성되는지 등
처음알게된 것들이 많았다.
뿐만 아니라, '기본이 초석이 되어야 한다' 는 생각으로 다른 사람들이 swift에 대해 더 쉽게 이해하고자 하는 바램으로 swift 공식문서 번역본에 기여 (contribute)한 경험도 하였고 이로인해 swift에 대한 애정(?)도 커졌다.
최근 2달 간 기본에 포커스를 둔 학습을 통해 다양한 경험들을 할 수 있었고, 앞으로도 어떠한 영역이건 간에 '기본을 절대 무시하면 안된다' 는 것을 느꼈다.
무엇보다 공식문서를 읽어가는게 재밌어졌다 🫠 (시간이 흘러서 보니까 다시 보이는게 정말 많아졌다. ㅎ)