LINE 인턴십 회고

dodo·2021년 8월 14일
3
post-thumbnail

2021년 6월 ~ 8월까지 LINE에서 iOS 개발 인턴십을 경험했습니다.
올해 초부터 인턴십을 준비하고, 경험했던 과정에 대해 적어볼까 합니다.

인턴이 하고싶어요..

2020년 대학교 3학년을 SW마에스트로, 멋쟁이 사자처럼 활동으로 불태웠습니다.
이런 대외활동을 통해 많이 배우면서도, 실력에 대한 부족함을 끊임없이 느꼈습니다.
회사에 간다면, 더 많은 것들을 배울 수 있지 않을까라는 생각을 하며 인턴 공고를 찾아보았습니다.

흔히 말하는 IT 대기업 네카라쿠배 중에서, 체험형 인턴은 네이버밖에 뽑지 않았던 걸로 기억합니다.
그렇게 2020년 겨울, 네이버에만 지원서를 넣고, 네이버 서버 개발 인턴십 최종 면접까지 가게 되었습니다.

바닥이 드러나다


패기롭게 네이버 면접을 시작하게 되었습니다.
면접관님 두 분이 계셨고, 면접은 약 40분 동안 진행되었습니다.

첫 면접 경험이었습니다.
40분이라는 시간이 너무나 길게 느껴지고, 끊임없는 꼬리 질문에 당황하며, 면접은 당연히 잘 보지 못했습니다.
결과는 역시나 탈락이었고, 지금까지 면접 탈락을 경험해 본 적이 없었기 때문에 개인적으로 더 큰 충격이었습니다.

진로를 정하자

면접이 끝나고 가장 먼저 들었던 생각은 주 분야를 정해야겠다는 것입니다.
저는 지금까지 React, Vue, React Native, Flutter, Node.js, django, AWS, Docker 등 다양한 분야를 얕게 공부했습니다.
네이버 면접을 탈락을 통해 제가 얼마나 얕게 공부하고 있었는지를 깨달았고, 이제는 하나의 전문 영역을 정할 필요가 있다고 느꼈습니다.

개인적으로 백엔드보다 프론트엔드가 저에게 재밌었고, 또 개인적으로는 웹보다 앱 개발이 재밌었습니다.
하지만 그동안 다뤘던 RN이나 Flutter 개발자를 원하는 기업은 인력이 부족한 스타트업뿐이었습니다.

따라서 iOS를 공부해보면 어떨까라는 생각을 하게 되었습니다.
iOS에 매력을 느낀 이유는 다음과 같습니다.

  • 국내에 iOS 개발자가 굉장히 적습니다 (시니어는 많고, 주니어는 적습니다, 단점으로는 신입을 많이 안 뽑습니다.)
  • iOS는 국내에 관련 자료 및 강의자료가 굉장히 적습니다 (초반 러닝 커브가 다른 프론트엔드보다 어렵다고 생각됩니다.)
  • 추후에 개인 앱 배포를 통한 수익 / 프리랜서로도 활동이 가능합니다
  • 대기업은 어쩔 수 없이, iOS 개발자를 필요로 합니다.
  • 애플이 망할 일은 없을 것 같고, 국내 iOS / macOS 사용자 비율은 점점 느는 추세입니다.
  • 그냥 재밌습니다 (이게 제일 중요)

인턴 지원 과정 (코딩테스트 ~ 면접)

그렇게 올해 초부터 학부 연구실에서 일을 병행하며, iOS 개발을 공부하기 시작했습니다.
알고리즘의 경우 백준 450문제, 프로그래머스 150문제 정도를 풀었습니다.
물론 이 많은 문제를 올해에 풀지는 않았습니다.
이전에 SW 마에스트로, 알고리즘 대회 등을 준비할 때 많이 풀었고, 올해는 한 100문제 정도 푼 것 같네요.

면접은 CS 기본 지식, 기출 면접 등을 구글링하며 한 2~3주 정도 준비했습니다.
그렇게 삼성전자, 라인 최종 면접에 가게 되었고, 삼성전자의 경우 면접이 3번(창의, 직무, 인성)을 거쳐 보게 됩니다.

라인은 5:1 면접으로 약 1시간이 진행되었습니다. (물론 제가 1입니다.. ㅠ)
나중에 알게 된 사실인데, 보통은 2:1로 면접이 진행되나 제 자소서가 웹 분야도 많고, iOS분야 내용도 많아서 웹 면접관님 2분, iOS 면접관님 2분, 그리고 그냥 구경하러 들어오신 면접관님 1분 이렇게 해서 5:1이 되었습니다.. 😅


두 면접 다, 이전에 네이버에서 떨어졌던 경험을 통해 더 열심히 준비했고, 더 잘 대답할 수 있었습니다.
그렇게 삼성전자, 라인 이렇게 두 곳 채용형 인턴십에 합격하게 되었습니다.
저는 엄청난 고민 끝에, 최종적으로 라인에 가게 됩니다. (마지막 날까지 고민했습니다. 나중에 "삼성전자를 포기한 이유" 라는 주제로 포스팅을 해볼까 생각 중입니다.)

인턴 과정


(라인에서 맥북과, 모니터가 왔습니다! 제 개인 맥북과 / 개인 모니터가 더 성능이 좋긴 하지만요.. )
저는 iOS Ad SDK 개발 과제를 담당했습니다. (다양한 광고를 그리고, 라인에 있는 많은 App들에게 전달하는 역할을 하는 SDK 개발입니다.)
저희 부서의 경우 완전 재택근무제가 가능했고, 인턴의 경우는 매주 화요일만 출근이었습니다.
하지만 코로나가 4단계로 격상되고, 인턴도 재택근무가 권장되어 8주 동안 회사에는 한 4번 가본 것 같네요. (한 번도 뵙지 못한 멘토님도 계셨습니다.)

무엇을 배웠는가?

설계 기간 (4주)

우선적으로 설계 단계에서, 시퀀스 다이어그램, 컴포넌트 다이어그램 등을 작성했습니다.
Ad SDK의 R&R을 설정한 후, 클래스 다이어그램 그리고 멘토님들께 발표할 자료들을 준비했습니다.
이 과정에서 저는 프로토콜 지향 프로그래밍에 대한 많은 아티클을 읽었습니다.(해당 내용은 Swift에서 재미있는 부분 중 하나이니, 관심이 있으신 분들은 한 번 살펴보셔도 좋을 것 같습니다.)

Generic + extension + 프로토콜 지향 프로그래밍을 활용해, 자동적으로 바인됭 되는 Ad SDK를 구축을 목표로 했습니다.

설계 기간이 굉장히 길었고, 설계 기간 동안은 코딩을 하지는 않고,
머릿속으로 해당 설계는 어떤 문제가 생길 것인지, 또 문제를 어떻게 해결할 수 있을까? 이런 고민들을 많이 했습니다.

개발 기간 (3주)

긴 시간 동안, 설계로 고통을 받았고 이제서야 저의 설계를 검증할 수 있는 시간이 와 개인적으로 정말 재밌었습니다.
(역시 개발자는 개발을 해야 하는 것 같아요)
다음과 같은 부분을 위주로 개발했습니다.

  • 설계 때 고민했던 문제들을 해결하기
  • 설계와 달랐던 문제들을 해결하기
  • 새로운 기능 추가에도 유연하게 대처할 수 있는가?
  • 확장성 있는 코드를 작성했는가?

느낀 점

아는 만큼 보인다

인턴십을 마무리하고 떠오른 말입니다.

처음에는 과제가 너무 쉽다고 느꼈습니다. 그렇게 제출했던 첫 번째 발표에서 멘토님들의 평가가 좋지 않았습니다. 리드 멘토님께서 확장성에 초점을 두어보라는 말씀을 해주셨습니다.

그 후, "추상화, 객체지향 프로그래밍, SOLID 원칙" 등을 다시 한번 새롭게 공부해 보았고 특히 "프로토콜 지향 프로그래밍"과 관련된 내용은 구글에 있는 모든 아티클을 읽은 것 같습니다.

그렇게 과제를 다시 바라보니 정말 어렵게 느껴졌던 기억이 납니다.

인턴십 기간이 끝나고 나서도 꾸준히 배우고 늘 겸손한 태도를 가져야겠다는 생각을 하게 되었습니다.

정답이 없다

정말 많은 고민을 했습니다, 하지만 많은 고민들이, 어느 하나의 이점을 선택하면 다른 하나의 이점을 포기해야 하는 trade-off 관계였던 기억이 납니다. 그렇기 때문에 개인적으로 어떤 방식을 선택할 때면, 나름대로의 논리를 설정하려고 노력했습니다.

코드 리뷰 과정 역시 마찬가지로, 제 생각과 멘토님들의 의견이 다를 때면 그 논리를 설명하기 위해 "Because"를 포함하는 코멘트를 남기려고 노력했던 기억이 납니다.

공부한 것들

1주 차: SDK 프로젝트 생성 법, SnapKit 활용 방법, CoreData 공부
2주 차: MVVM 패턴, Image Cache 방법 공부
3주 차: Swift 공식 문서 읽기, 변수명 잘 짓는 방법, 다양한 프로젝트 디자인 패턴 등 공부
4주 차: 객체지향 프로그래밍, 프로토콜 지향 프로그래밍, 의존성 주입 등 공부
5주 차: Swift Code Convention, Error Handling 처리 방법, Git 관리 방법 등 공부
6주 차: Git Conflict 해결 방법, 과제 구현 완료
7주 차: DispatchQueue, OperationQueue, Thread-Safe
8주 차: RxSwift

인턴십을 마무리하며

최종적으로 인턴십 전환에 합격하게 되었습니다. 😀
바쁜 건 여전한 것 같아요. 미뤄둔 외주와 영어회화 공부를 해야겠죠..

그래도 졸업까지 4달이라는 시간이 남았고, 취업 걱정 없이 제가 하고 싶은 공부와, 개발을 할 수 있으니 정말 다행인 것 같습니다. 남은 기간 동안 정말 제가 iOS 개발을 좋아하는지 점검하는 시간을 가져보려고 합니다.

처음엔 기능을 돌아가게만 하는데 급급해서, 넓게 생각하지 못하고 보냈던 시간들이 아쉽게 느껴집니다.
마지막이라는 순간이 지나면 언제나 최선을 다하지 못했다는 생각과 함께 조금의 아쉬움이 남지만, 그 또한 성장하는 과정 중 하나라고 생각합니다.

아무것도 몰랐던 제 사소한 질문들을 친절하게 받아주셨던 LINE Ad Platform iOS 멘토님들께 다시 한 번 감사드리며, 같이 인턴십을 함께 한 인턴님들에게 고생했다는 말씀을 드리며 회고를 마무리합니다.

profile
Software Engineer interesting mobile app

0개의 댓글