RxSwift, Combine 신입 취준에 꼭 필요할까?

2023-03-25
조회수 1447

개요

iOS 개발자를 취준하는 기간에 있어서 RxSwift/Combine 와 같은 리엑티브 프로그래밍 경험에 대해서 꼭 필요한지에 대한 질문을 자주 볼 수 있습니다.

고민하시는 이유라고 한다면 채용공고에서 본다면 "우대사항"으로 나와있기 때문이죠.

Combine / RxSwift


그렇다면 우대사항이라는 것은 무엇일까요?

우대사항이라고해서 무조건 해야하는 것 일까요?


그렇지 않습니다. 

우대사항은 의미 그대로 우대사항입니다. 꼭 필요한 조건은 아니지만 갖추고 있다면 가산점을 받을 수 있기 때문입니다.

그럼 우리는 무조건 RxSwift나 Combine을 학습해야 할까요? 오늘은 이 내용을 알아보려고 합니다.

RxSwift는 왜 우대사항일까? 

먼저 RxSwift는 왜 우대사항으로 대부분의 회사의 채용공고에 기입되어 있을까요?

그 이유는 대부분의 회사에서 RxSwift나 Combine 같은 리엑티브 프로그래밍을 하고 있기 때문이죠.


iOS 앱 개발에서 RxSwift는 굉장한 센세이션을 불러왔습니다.

클로저 지옥이 아닌 보다 간결한 비동기 처리를 가능하게 해주었습니다. 또 선언적인 구문들로 가독성 있는 코드들을 만들게 해주었죠.

그러므로 많은 회사들에서는 리엑티브 프로그래밍을 채택하고 있습니다.


iOS 진영에서는 비동기 처리에 있어서 안드로이드의 코루틴과 비슷한 async / await가 등장했지만 아직 명확한 레퍼런스나 사용성에 대해서는 많은 iOS 조직들이 고민하고 있는 분위기이니까요.

아직까지는 리엑티브 프로그래밍이 상당한 역할을 하고 있습니다.


그러므로 RxSwift를 잘 사용한다는 것은 그만큼 조직에 빠르게 적응할 수 있다는 의미입니다.

RxSwift는 자격요건은 아닌가요?

네, 몇몇 회사들은 필수 자격요건으로 리엑티브 프로그래밍을 걸어두곤 합니다.

아래와 같은 예시에서 볼 수 있죠.

예시 iOS 채용 공고


이 회사들은 그만큼 리엑티브 프로그래밍을 중요하게 사용하고 있다는 의미입니다.

리엑티브 프로그래밍을 사용한 경험이 없더라도 회사에 가서 배워서 사용할 수도 있습니다.


하지만 리엑티브 프로그래밍의 단점으로 지적되는 부분의 하나는 "러닝커브가 높다"라는 것 입니다. "배우기 어렵다" 이죠.

그만큼 배우기 힘들기 때문에 이미 배웠고 사용해보신 분들을 선호하는 경향이 있는 것이죠.


위의 경우라도 사실 리엑티브 경험이 없더라도 채용은 될 수 있습니다.

지원자가 그만큼 뛰어나서 빠르게 학습하고 적응할 수 있다는 판단이 선다면 그렇습니다.


그래서 RxSwift / Combine을 공부 할까요?

네, 해야한다고 생각합니다.

여태까지 안해도 된다라는 위의 문맥과는 달라지죠?


요즘 지원자들은 굉장히 상향평준화 되어있습니다.

발전된 커뮤니티와 수준높은 강의 코스들 덕분이죠.

그렇기에 기본적으로 RxSwift/Combine에 대한 학습을 많이들 하고 계십니다. 당연히 신입분들을 포함해서요.


이러한 현재의 상황에서 리엑티브 프로그래밍 경험이 없다면 나의 경쟁력은 떨어질 수 있다고 생각합니다.

뭐, 이것보다 중요한 다른 것을 배운다면 당연히 이것을 후순위로 미룰 수 있겠지만 그럴만한 것들이 있을까도 생각이 되네요.


또 회사에 입사해서 리엑티브 코드를 마주치고 수정해야하는 일은 빈번히 일어날 것이라고 생각합니다.

그런 관점에서도 리엑티브 프로그래밍은 권장드리고 싶습니다.


그럼 어떻게 공부하죠?

위에서도 한번 언급했지만 리엑티브 프로그래밍은 실제로 사용을 능숙하게 하기까지 상당한 노력을 필요로 합니다.

이미 현업에서 iOS 개발을 하고 계신분들도 포함해서요.


굉장히 많은 오퍼레이터들과 함수들이 제공되고 있고 알아야 할 개념들도 많습니다.

무엇보다 기존의  명령적인 프로그램과는 사고의 방식이 달라진다는 것도 있습니다.


결국은 많이 사용하고 오퍼레이터에 대해서 자주 다뤄보는 경험이 필요합니다.

실제 프로젝트를 진행하면서 UITextField의 이벤트를 받아 처리하는 과정 등등 다양한 예외케이스들을 Rx/Combine을 사용해 적용하는 것이 능숙도를 올릴 수 있는 유일한 길 같습니다.


아래의 링크는 가장 유명한 youtube 강의입니다.

곰튀김님의 RxSwift 강의


위 강의를 시작으로 실제 프로젝트에 적용하면서 아래와 같은 고민들을 한번쯤은 해보시면 좋습니다.

"엇 이 상황에 좋은 오퍼레이터나 기본 API가 있을 것 같은데?" 

그렇다면 주저하지 마시고 RxSwift나  Combine의 공식 문서에 접근하셔서 적절한 오퍼레이터를 찾아보세요.


가장 쉽게 리엑티브 프로그래밍을 학습할 수 있는 방법인 것 같습니다.

RxSwift Docs


왓에버는?

끊임없이 성장하고 인정받는 탑티어 엔지니어가 되고 싶지만
자신의 학습에 대한 방향성과 확신이 필요한 이들에게
왓에버가 탑티어 엔지니어의 멘토링과 코드리뷰를 통해 빠르게 성장할 수 있는 동력을 제공합니다.


왓에버 알아보기