불맛 취업시장, 유독 iOS Native자리는 더더욱 보이지 않는 요즘. 어렵게 서류를 통과하고 사전과제를 받게 되었다. 사전과제를 받는다면 코딩테스트보다 훨씬 더 그동안의 노력을 발휘할 수 있을거라고 생각했다. 그래서 과제를 받게 되었을 때 정말 설레고 떨리는 마음으로 임했다.
과제 내용에 대해 구체적으로 밝힐 수는 없지만, 내가 예상했던 것과 과제의 구현 범위가 달랐다. 생각보다 자유롭게 구현 범위를 내가 정할 수 있었고, 기술스택 조건 또한 최소한의 기준만 지키면되었다.
주어진 시간은 일주일. 우선 구현해야 할 앱의 요구사항을 분석해보았다.
탭바에 속한 ViewController가 4개, 각 ViewController에서의 컴포넌트도 꽤 복잡했다. SegmentedControl에 속한 UIView 또한 여러 개였고, 그 UIView 내에서는 각종 CollectionView들과, Gesture, 동적 Layout들이 필요했다.
이 모든 것을 일주일 만에 구현하기는 어려울 것이기 때문에 나는 고민했다. UI라도 모든 부분을 구현할 것인가? 아니면 탭바 중 일부 ViewController만 집중해서 구현할것인가? 나는 후자를 선택했고, 개발을 시작했다.
내가 계획한 기능 구현을 마치고 리드미를 작성한 뒤 과제를 제출했다. 결과를 기다리며 혹시 모를 (?) 좋은 소식에 나는 면접 준비를 하고 있었다.
그러다 어제 결과를 받았으나, 메일 제목에서 느껴지는 불합격의 향기. 이유가 무엇이었을까? 생각해보았다.
나는 기능을 완벽하게 구현해야 한다는 생각에 아키텍처에 대한 부분을 깊게 하지 못했다. 다시 프로젝트를 뜯어보니 Manager에서 선언한 메서드들의 내용을 ViewController에서 중복해서 사용하기도 하고... (임시로 사용하고, 이에 따르는 모든 에러를 해결하고 Manager로 구현한것인데, 제일 처음 구현했던 부분을 Manager로 대체하지 않았던 것이었다..)
돌이켜보니 내가 계획한 개발범위가 너무 많았던 것 같다. 처음에 과제를 받고, 회사에서 바라시는게 무엇일까 고민했다. 최대한 많은 기능을 개발하는 것? 아니면 적은 범위를 정하더라도 그 전체적인 구조를 설계하고 구현해내는 것? 이 중에 후자를 정했다고 생각했지만 나의 결과물은 적은 범위와 전체적인 구조 설계를 고려하지 못한 결과물이었던 것 같다.
물론 나만의 회고이기 때문에 이는 회사의 시각 혹은 불합격 이유와는 다를 수 있다. 하지만 다음 사전과제 기회가 생긴다면 이번과는 달라야 할 것이다.
구조 설계에 대한 고민을 깊게 하고, 기능 구현에만 급급하지 않아야 겠다고 생각했다.
아쉬운 점만 있는 것은 아니었다.
들을 구현하는 경험을 할 수 있었는데, 그동안 프로젝트 하면서 일주일안에 이렇게 많은 기능을 구현해낸 것은 처음이긴 했다...!
탈락한 것은 아쉽지만, 매번 서류에서 탈락하다가 이제 사전과제 까지는 왔다. 이번 사전과제에서의 교훈을 발판삼아 앞으로는 면접까지 갈 수 있도록 더더욱 노력하고 열심히 개발해야겠다.