일주일 간의 iOS 사전과제를 마치고

Lena·2024년 8월 19일

iOS

목록 보기
3/4
post-thumbnail

사전과제를 받다

불맛 취업시장, 유독 iOS Native자리는 더더욱 보이지 않는 요즘. 어렵게 서류를 통과하고 사전과제를 받게 되었다. 사전과제를 받는다면 코딩테스트보다 훨씬 더 그동안의 노력을 발휘할 수 있을거라고 생각했다. 그래서 과제를 받게 되었을 때 정말 설레고 떨리는 마음으로 임했다.

과제 내용에 대해 구체적으로 밝힐 수는 없지만, 내가 예상했던 것과 과제의 구현 범위가 달랐다. 생각보다 자유롭게 구현 범위를 내가 정할 수 있었고, 기술스택 조건 또한 최소한의 기준만 지키면되었다.

개발기간 (24.8.6 ~ 8. 13)

주어진 시간은 일주일. 우선 구현해야 할 앱의 요구사항을 분석해보았다.
탭바에 속한 ViewController가 4개, 각 ViewController에서의 컴포넌트도 꽤 복잡했다. SegmentedControl에 속한 UIView 또한 여러 개였고, 그 UIView 내에서는 각종 CollectionView들과, Gesture, 동적 Layout들이 필요했다.

이 모든 것을 일주일 만에 구현하기는 어려울 것이기 때문에 나는 고민했다. UI라도 모든 부분을 구현할 것인가? 아니면 탭바 중 일부 ViewController만 집중해서 구현할것인가? 나는 후자를 선택했고, 개발을 시작했다.

과제 결과와 아쉬운 점

내가 계획한 기능 구현을 마치고 리드미를 작성한 뒤 과제를 제출했다. 결과를 기다리며 혹시 모를 (?) 좋은 소식에 나는 면접 준비를 하고 있었다.
그러다 어제 결과를 받았으나, 메일 제목에서 느껴지는 불합격의 향기. 이유가 무엇이었을까? 생각해보았다.

나는 기능을 완벽하게 구현해야 한다는 생각에 아키텍처에 대한 부분을 깊게 하지 못했다. 다시 프로젝트를 뜯어보니 Manager에서 선언한 메서드들의 내용을 ViewController에서 중복해서 사용하기도 하고... (임시로 사용하고, 이에 따르는 모든 에러를 해결하고 Manager로 구현한것인데, 제일 처음 구현했던 부분을 Manager로 대체하지 않았던 것이었다..)

돌이켜보니 내가 계획한 개발범위가 너무 많았던 것 같다. 처음에 과제를 받고, 회사에서 바라시는게 무엇일까 고민했다. 최대한 많은 기능을 개발하는 것? 아니면 적은 범위를 정하더라도 그 전체적인 구조를 설계하고 구현해내는 것? 이 중에 후자를 정했다고 생각했지만 나의 결과물은 적은 범위와 전체적인 구조 설계를 고려하지 못한 결과물이었던 것 같다.

물론 나만의 회고이기 때문에 이는 회사의 시각 혹은 불합격 이유와는 다를 수 있다. 하지만 다음 사전과제 기회가 생긴다면 이번과는 달라야 할 것이다.
구조 설계에 대한 고민을 깊게 하고, 기능 구현에만 급급하지 않아야 겠다고 생각했다.

배운 점

아쉬운 점만 있는 것은 아니었다.

  • Compositional Layout 을 활용한 다양한 Group, Section을 가진 CollectionView 구현
  • UIPinchGestureRecognizer 구현 및 이 scale에 따른 동적 레이아웃 구현
    (이 부분을 구현하느라 시간을 정말 많이 썼다...)
  • Combine을 활용한 비동기 구현
  • 비디오 재생! (오디오만 했는데 비디오는 처음이었다...!!)
  • Photo Picker로 띄우는 것만 해봤었는데, 로컬의 모든 PHAsset을 불러오는 기능
  • 이를 불러오는 과정에서 캐시를 미리 불러오기 위한 Prefetch Delegate

들을 구현하는 경험을 할 수 있었는데, 그동안 프로젝트 하면서 일주일안에 이렇게 많은 기능을 구현해낸 것은 처음이긴 했다...!

탈락한 것은 아쉽지만, 매번 서류에서 탈락하다가 이제 사전과제 까지는 왔다. 이번 사전과제에서의 교훈을 발판삼아 앞으로는 면접까지 갈 수 있도록 더더욱 노력하고 열심히 개발해야겠다.

profile
어제보다 성장하는 iOS 개발자입니다.

0개의 댓글