본문 바로가기

개똥철학

현실에선 iOS개발자 지망생이었던 내가 이세계에선 Flutter개발자?! (취업회고)

이번 회고의 중심은 어쩌다가 제가 Flutter를 사용하는 회사에 입사하게 됐는지까지의 일대기가 되겠습니다. 이 글은 저 스스로 정리하려는 목적이긴 하지만 지금 취업준비를 하시는 분들에게도 도움이 될 수 있도록 적어보겠습니다.

 

우선 아시는 분들은 아시겠지만 저는 프랑스어학부로 입학을 한 '문과'입니다. 2020년 복학 후 7개월간 영어와 일본어 통번역 알바를 하며 통번역대학원 입학을 목적으로 공부를 했습니다. 하지만 통대에 진학한 선배들과 만나 이야기하고 현직자들과의 상담을 통해 저의 이상과는 거리가 있다고 생각하였고 진로에 대한 고민을 다시하게 되었습니다. 그러던 중 개발자인 친형의 영향을 받아서 처음으로 개발자를 목표하게 되었고, 학교의 이중전공을 EICC(영어통번역)에서 소프트웨어학과로 전과를 하게 됩니다.

 

제가 처음에 목표로 했던 직종은 iOS개발자고 그 이유는 다음과 같습니다.

 

1. 애 플 조 아

 

2. 살짝 완벽주의 기질도 있고 단순한 것을 지향하는 사람이기 때문에, 학교 수업중에 학습한 웹개발의 다양한 프레임워크부터 산발적인 지식들이 저에게는 지저분해보였고, 학습에 있어서 버겁기도 했습니다. (그냥 제가 못했다는 뜻)

 

3. 웹개발과 백엔드를 하는 사람들은 너무나 많았고, 오랜시간 일을하고 학습한 사람들이 많았기에, 그 사람들과 경쟁하여 이길 자신이 없었습니다. 저의 강점은 영어에 있다고 봤기 때문에, 비교적 영문 정보들을 접할 일이 많고 (당시에는)경쟁자가 적었던 iOS가 저에게 적합하다고 생각했습니다.

 

이 목표를 위해서는 학교에 졸업요건을 충족시키고, 부트캠프를 들어가야겠다고 생각했습니다. 대학의 전공과 부트캠프에서 한 것에 대해서 소개해드리겠습니다.

 

소프트웨어학과를 졸업할때까지 저는,

 

1. 객체지향프로그래밍, 알고리즘, DB, 파이썬, 자바 등의 기초를 탄탄히 하기 위해 노력했습니다. (하지만 실패했습니다)

 

2. swift 기초문법에 대해서 공부했습니다. 야곰님의 스위프트 프로그래밍 책을 구매하여 학습했고, 학교의 알고리즘 수업 때 학습한 알고리즘들을 swift로도 동일하게 구현했습니다.

 

3. swift를 활용하여 통신이 필요없는 작은 프로젝트들을 만들었습니다.

 

그 이후 부트캠프에 들어가서는,

 

1. 아키텍쳐 패턴을 집중하여 공부하려고 노력했습니다. 부트캠프에서 MVC와 MVVM을 활용하여 프로젝트를 하였고, 따로 TCA에 대한 학습을 시작했습니다.


2. HIG 학습. 부트캠프에 디자인수업이 포함되어있었고 개인적으로도 디자인에 관심이 많았기 때문에 영문 HIG를 따로 노션에 정리하고, 이를 프로젝트에 적용했습니다.

 

3. 네트워킹. 아, 그 네트워킹 말고 인맥 네트워킹입니다. 학교에 다닐 때 혼자 공부를 하면서 많은 한계점을 느꼈었습니다. 그래서 같이 공부하는 동료도 필요하다고 생각했고, 멋사의 강사님들을 포함하여 멘토님들, 동료분들과의 커넥션을 만들기 위해 노력했습니다.

 

수료하고 나서는 본격적으로 저의 취준생활이 시작되는데요. 부트캠프 수료한 이후인 3월부터의 이야기를 해보려고 합니다. 수료 당시 저는 제가 부족한 부분을 먼저 채우고서 지원을 해야겠다고 생각했습니다. 지금 생각해보면 이 선택이 참 후회되기도 합니다.....(그냥 있는대로 준비해서 바로 정면돌파하는게 최고인듯...ㅎ;;)

 

개발자 취업에 있어서 신경을 써야할 부분은 포트폴리오와 이력서, 코딩테스트, 면접 이 세가지 정도로 생각했습니다. 따라서 각 파트별로 제가 어떻게 준비를 해왔고 부족한 부분을 어떻게 채워나갔는지 말해보려고 합니다.

 

1. 포트폴리오와 이력서

 

제가 가장 공을 들인 부분입니다. 우선 포트폴리오에 대해서 이야기하자면 저는 약 4개 정도의 프로젝트를 담았습니다.

수료 후 당시에 올라와있던 신입 채용공고들을 모두 모아 자격요건 및 우대요건들을 분석하였고, 자격요건에 작성되어있지만 제가 모르는 지식 및 기술들과 우대요건에 있는 기술들 중 제가 해볼만 하다고 생각한 기술들을 취합하였습니다. 그 후엔 제가 부트캠프에 했던 프로젝트들을 다 모은 후에 이미 제가 경험해본 부분은 제외하고 남은 부분들을 다 포함하는 큰 프로젝트 하나를 혼자서 만들어보아야겠다고 생각했습니다. 그렇게 시작한 프로젝트가 서울살람이며 이 프로젝트를 약 반년에 걸쳐 출시하고 버전업그레이드를 하는 등 유지 보수하였습니다. 따라서 부트캠프 당시에 했던 프로젝트 2개와 서울살람, 그리고 이후에 카카오 모빌리티 해커톤의 본선에 진출한 프로젝트까지 총 4개를 담았습니다. 부트캠프에서는 UI프레임워크를 SwiftUI중심으로 사용했기 때문에 수료 후엔 UIKit을 적용한 앱도 만들었고, Objective-C를 공부하기도 했습니다. 이 부분이 참 도움이 많이 되긴 했습니다. 개인적으로는 힘들겠지만 SwiftUI, UIKit 둘 다 해보는 게 좋은 것 같고, Objective-C도 능력되시면 건드려보시는 것도 좋을 것 같습니다. 좋게 봐주신 분들이 꽤 계셨던 기억이 있습니다.

 

대략적으로 제가 포트폴리오에 포함시킨 키워드들만 나열을 하자면, SwiftUI, UIKit, Swift, Objective-C, Restful API(네트워킹), 디자인패턴(MVC, MVVM, TCA), Clean Architecture, CI/CD(fastlane), 메모리 최적화, 브랜칭 전략(Git-flow 전략), Local Notification, FCM Push Notification, Realm,  CoreData, Combine, Localization, JIRA 정도가 될 것 같습니다. 

 

아, 그리고 개인적 의견이지만 포트폴리오에는 팀프로젝트와 개인프로젝트가 밸런스 있게 들어가 있으면 좋을 것 같습니다. 협업능력에 대해서 묻는 회사도 있지만, 개인프로젝트를 온전히 혼자 진행하며 늘어난 기술적 스킬을 요구하는 회사들도 있기 때문에 이는 적절히 밸런스를 맞추는게 좋을 것 같다는 생각입니다.

 

그리고 출시에 대한 이야기이지만, 유지보수를 제대로 할 생각이 아니시라면 출시경험은 그렇게 큰 요구를 받는 부분은 아니라고 생각합니다. 사실 출시라는게 처음에만 조금 당황스럽지 전혀 어려운 것도 아니고 큰 의미가 있다고 생각하지 않습니다. 하지만 유지보수하고 유저 피드백도 받아서 버그 수정 및 버전 업그레이드를 한 경험이 있다거나, 그거로 수익화 경험이 있는 것에 대해서는 당연히 회사에서 좋게 볼 것이라고 생각됩니다. 저는 한 개의 앱이 아직 다운로드가 발생하기도 하고 다운로드 유지하는 유저들도 있으며 광고로 수익화를 해놓았습니다. 결국에 이력서라는 것도 기본이 충족되어 1차 합격이 된 후 면접에서 썰을 풀기 위한 도구이기 때문에, 그냥 한 줄 작성용으로 어떠한 활동을 하는 것은 최종까지 보았을 때 그렇게 큰 도움이 되지 않는다는 생각을 하고 있습니다.

 

다음으론 이력서입니다. 우선 학력에 대해서 말씀드리자면, 저는 소프트웨어학과 복수전공의 전공자라고 하기도 애매하고 비전공자라고 하기도 애매한 학력입니다. 이걸 전공이라고 생각하시는 분들과 면접을 볼 땐 전공자 수준의 CS지식을 요구하는 분위기였고 그 기대에 충족하지 못한 경우가 많았습니다. 반대로 이걸 전공이라고 생각하지 않거나 학력에 전혀 신경을 쓰지 않는 분들은 그냥 신경도 안 쓰시는 분위기 였기 때문에, 이 때문에 크게 득이 된 경우는 없는 것 같습니다. 학력은 진짜 눈길이 확 가는 좋은 학교이거나, 진성 컴공인 경우가 좋은 듯 합니다.

 

저는 영어와 프랑스어 자격을 가지고 있고 일본어는 자격은 없지만 비즈니스 회화로 명시를 해두었기 때문에 다개국어 화자라는 부분에 흥미를 가지신 분들이 꽤 계셨습니다. 거의 대부분의 면접에서 이 부분을 좋게봐주시거나 아이스브레이킹 용으로 언급을 해주시기 때문에 면접때 도움이 된 경험이 있습니다. 하지만 외국어가 취업에 있어서 필요성이 있는가 하면 답은 'NO'입니다. 하지만 영어정도는 읽고 작성하는 정도가 가능하면 좋고 회화가 되면 더 좋은 느낌은 지울 수가 없네요.

 

제 블로그를 읽으셨던 분들은 아시겠지만 저는 SwiftUI 상태 관리부터 테스트까지 iOS 개발자를 위한 TCA 1.0 라는 e-book 개발서적을 기획하고 집필하였습니다. 또한 TCA를 활용한 프로젝트가 저의 대표프로젝트이기도 하며, TCA와 Apple의 Swift 오픈소스에 기여한 경험이 있기 때문에 아키텍쳐 패턴과 오픈소스에 대한 이야기를 면접에서 주로 하게 되었습니다. 위에서도 말하였지만 한 줄 작성만 하면 되는 것이 아니기에 책 내용에 대한 부분을 포함하여 제가 기여한 파트 + 제가 활동을 하며 얻은 지식에 대한 부분들도 확실히 학습을 해두었습니다. 취업 외적인 부분으로 치면 대기업 iOS 현업자 분들도 읽으셨다고 하고 사내 스터디 용으로 쓰였다고 하기도 하며, 면접때도 몇몇 면접관 분들께서 사전에 읽어보았다고 하신거 보면 서적 집필 경험은 어떻게든 도움은 됐다고 생각합니다.

 

업무경력으로는 개발 유관경력으로 외주개발자로 활동한 경험을 넣었었고, 개발 무관경력으로는 (주)멋쟁이사자처럼 iOS앱스쿨의 보조강사로서 활동한 경험을 넣었습니다. 외주개발은 지인의 추천으로 한 회사의 앱 버전 업그레이드 프로젝트에 참여하게 되었습니다. 저는 Flutter앱의 iOS 네이티브 모듈을 혼자서 개발하게 되었고, 이력서에는 이 프로젝트를 하며 어떤 기술을 사용했는지와 함께, 디자이너와 기획자 그리고 백엔드 개발자와 Flutter개발자와 협업한 경험이 있다는 점을 어필하였습니다. 이 회사에서 일 하며 레거시 코드 이해를 위해 처음으로 Flutter를 학습하게 되었는데 이를 알게 된 대표님께서 이후에 릴리즈 버전의 앱 크래시 관련 어드바이스를 요청하셨고 총 약 2개월 정도를 일하였습니다. 이 경험이 취업에 있어서 그렇게 크리티컬하게 좋았느냐라고 하면 반반이라고 대답할 것 같습니다. 어떤 분들은 거기서 그렇게 일 했는데 왜 정규직 제안을 안 받았느냐(사실 받았는데 조건이 안 맞아서 거절한 건데 이렇게 말하면 좀 건방져보이기 때문에 당시 회사에서 채용계획이 없었다고 돌려 말함. 하지만 면접관 분들은 스타트업 특성상 만족스럽다면 바로 채용가능한 것을 알기 때문에 이렇게 말하면 내 실력이 그렇게 만족스럽지 못했나보다 라는 오해를 하실 확률이 높을 것으로 예측) 혹은 그렇게 짧게 일 해서 뭘 알겠느냐(이 분은 조금 무례한 분이셨음) 등 안좋은 반응을 보이신 분도 있습니다. 결과적으로 현재 출근 예정인 회사에서는 우연히도 비슷한 작업을 할 필요성이 있기 때문에 굉장히 좋게 봐주셨습니다. 

 

마지막으로 가장 중요한 포인트입니다. 저는 이력서와 포트폴리오의 가독성과 미적인 부분에 굉장히 많이 신경 썼습니다. 

첫 이력서와 포트폴리오는 Notion으로 제가 직접 배치하여 작성했고 다음으로는 어디서 좋다고 들은 Notion 이력서 폼을 가져와서 다 적용해보기도 했습니다. 마지막 이력서 폼으로 정착하기 전까지 정말 한 5개의 타입의 이력서들을 돌려본 것 같네요.... 하지만 솔직히 말해서 만족한 적이 없었구요. 실제로 타율 자체도 그렇게 좋진 않았습니다.

 

제가 노션에 만족하지 못 한 부분에 대해서 말씀 드리자면,

 

1. 식상하다. 솔직히 대부분 노션 이력서들이 그냥 다 비슷하게 생겼어요. 그냥 배치 좀 다르고 아이콘 조금 다르고 다른 요소들이 들어간 정도....

2. 안 예쁘다. 1번 이유랑 이어지긴 하는데 디자인적 요소가 제한되어있기도 하고, 배치를 예쁘게 해서 가독성 좋게 하기도 힘들다고 느꼈습니다. 

3. 화면비 및 브라우저 크기 등 읽는 쪽의 영향을 받는다. 이건 제 경험인데, 제 맥북(+모니터)로 열심히 작업한 이력서를 급하게 PC방에서 볼 일이 생겼는데 거기서는 진짜 이상하게 보였습니다.. 그래서 PDF로 제출해야겠다는 의지가 강해졌습니다. 근데 노션은 PDF로 하면 진짜 더 안 예뻐지기 때문에ㅋㅋㅋ결국 노션 유기...

그래서 마지막 이력서는 도박수라도 두자는 심정으로 애플의 KeyNote로 만들었으며, 와이어프레임도 직접 작성했고 디자이너의 도움을 받아서 레이아웃도 받았고, 포트폴리오에는 디자인적인 요소도 넣었습니다. (색, 도형 등등) 어떻게 보자면 세계 유일의 이력서 템플릿인 거죠. 사실 이 때 정말 많은 회사에서 거절을 당한 상태였기 때문에, 눈에라도 띄자! 라는 마인드로 했습니다. 이 마지막 이력서에 한 해서는 성공률이 굉장히 괜찮았던 기억이 있네요. 지금 iOS 공고 자체가 잘 올라오지도 않는데 그 중 원래 답변이 잘 안 온다는 회사 포함해서 1/4 제외하고 1차는 다 패스했던거 같습니다.

 

2. 면접

 

저는 면접 준비가 두 단계로 나누어진다고 생각하는데요. 지식과 썰들을 채워넣는 input 단계와 실제로 갔을 때 뱉는 연습을 하는 output 단계로 나눕니다. 따라서 input 단계는 위의 1번 과정을 겪는 모든 과정입니다. 즉, 저는 포트폴리오와 이력서 작성, 그리고 이를 위해 한 프로젝트, 집필, 블로그, 오픈소스 활동 전부가 면접준비라고 생각합니다. 이게 무슨말이냐면, 그 행위를 직접 하면서 썰 풀 거리들을 만들어 놓는 것입니다. 저는 신입에게 면접관들이 전문적인 지식, 고도의 지능을 요구한다고 생각하지 않았습니다. 따라서 어떤 질문이 들어왔을 때 실제 경험한 썰들을 풀 생각만 했습니다. 따라서 저는 모~든 사건 사고들을 포함하여 제가 직접 경험하고 느낀 상황들을 평소에 다 아이폰 메모장에 기록해두었고, 이를 정리하여 블로그에 다 옮겨놨습니다. 즉, 최소한 경험하면서 한 번, 메모장에 즉시 옮기며 한 번, 블로그에 정리하여 옮기며 한 번으로 총 세 번 해당 경험에 대한 복습이 되는 겁니다. 이러면 면접이 아니라 그냥 같이 공부하는 친구들끼리 대화하다가도 그 이야기가 자연스럽게 나옵니다. 저는 면접과 같은 것에 굉장한 두려움과 스트레스를 가진 사람입니다(진짜 땀이 비오듯 쏟아지고 목이 바싹바싹 마르고 그냥 말에서 떨리는게 전부 느껴질 정도로). 그래서 절대 면접질문에 대한 답을 인터넷에서 찾아서 외우고 그걸 테스트 받듯이 그대로 출력해낼 수 있는 사람이 아니였죠. 그래서 최대한 이질감이 없는 단어와 말투로 저의 추억, 경험담을 이야기 하듯 했어야했습니다. 따라서 위의 방식이 저에게 적합한 거의 유일한 방식이었습니다. 그리고 output연습은 진짜 거의 하나도 안 했던 것 같습니다. 긴장을 많이 했기 때문에 오히려 스트레스와 긴장관리가 더 중요했습니다... 면접 전날 점심~저녁즈음에 예상 질문들을 적어두고 저 혼자 대답하는 연습을 몇 번 하고 끝냈습니다.

 

3. 코딩테스트

 

코딩테스트는 백준 실버는 다 풀고 골드는 고전하는 정도이며, 프로그래머스 레벨 3의 정답률 50퍼센트까진 풀 정도만 했던 것 같습니다. 솔직히 말해서 코테를 그렇게 열심히 준비하지도 않았었고, 심지어 제가 긴장도 진짜 잘하는 편이라서 시험장에 가서도 시간 안배 잘 못하거나, 좋은 코드를 작성하지 못한 경우도 많습니다. 결과적으로 진짜 떨어질만 했다 싶은 곳은 다 떨어지는 정도의 실력을 갖췄던 것 같습니다.

 

이렇게 해서 정리를 좀 해보자면, 결국 저는,

2022년 1학기 종강 이후(학교 수료 후)를 기준으로 하면 1년 반, 2023년 3월에 부트캠프를 수료를 기준으로 하면 약 1년간의 취준 끝에 한 다국적 회사의 Flutter개발자로 취직하게 됐습니다.

이 동안 제가 느낀 점은, 취업은 '운'에 달려있고, 이 '운'이라는 것은 또 어느정도 만들 수 있는 것이라는 점입니다. 저 뿐만 아니라 저와 함께 공부한 친구도 결국 회사가 쓰는 기술을 우연히 학습하거나 사용해본 경험으로 취업에 성공했다는 것을 미리 경험했기에 이 생각에 더더욱 확신을 가지고 있습니다. 또한 결국 사람과의 일이기 때문에 분위기와 궁합이 잘 맞아야 할 겁니다. 저는 긴장을 잘 하고 잘 떨기 때문에, 살짝 삭막한 분위기나 저에게 압박을 주는 분들과는 정말 궁합이 안 맞았습니다. 떠는 저를 보며 불만족스러워하고 그 불만족스러운 반응을 보면 저는 더 떨어서 말을 더 떨기 때문이죠... 하지만 결국 이것 또한 제가 경험하면서 덜 떨게 된 부분도 있고, 떨더라도 어떻게 대처할지 나름 노하우를 터득한 부분도 있습니다.

 

작년 한 해는 저에게 취업활동 뿐만이 아니라 개인적으로 많은 힘든 일들이 있었습니다. 몇년이 지나도 가슴깊이 슬퍼할 일이 생기기도 했네요. 우리들을 사랑해주는 사람들은 우리가 어떤 회사에 가던, 어떤 삶을 살던, 어떤 선택을 하던 충분히 존중하고 도와줄 것이라고 생각합니다. 취업도 중요하지만 위로해주고 믿어주는 관계를 만들어나가고 유지하고, 힘들면 그 사람들에게 이야기하고 힘을 얻을 수 있는 상황을 만드는 것도 정말 중요합니다. 다들 화이팅입니다!

'개똥철학' 카테고리의 다른 글

내가 틀리더라도 예시코드를 작성하는 이유.  (2) 2023.06.06