두 달간의 온보딩 스터디, LINE iOS 신입 개발자 적응기

들어가며

안녕하세요. LINE 신입 iOS 개발자 김유진, 김윤재입니다. 저희는 세 편의 시리즈 글을 통해 어떻게 재택근무 환경에서 신입 iOS 개발자 스터디를 진행했는지, 스터디에서 어떤 내용을 배웠는지 공유하려고 합니다.

 

Q. 자기소개 부탁드립니다.

김윤재 님(이하 윤재): 안녕하세요. 올 6월에 iOS Platform Dev 팀에 입사한 김윤재입니다. iOS Platform Dev 팀은 특정 화면이나 기능에 국한하지 않고 다른 iOS 개발 부서에서 사용할 수 있는 모듈과 같은 공통적으로 사용할 수 있는 기능을 개발하는 팀입니다. 대학 졸업 후 LINE 신입 공채를 통해 곧바로 입사하게 되어서 개발자로서의 커리어를 LINE에서 처음 시작하게 되었습니다. 

김유진 님(이하 유진): 안녕하세요! 윤재 님과 함께 입사해 이제 입사한지 세 달 된 신입 LINER 김유진입니다. 저는 대학생 시절에도 클라이언트 개발에 관심이 많았는데요. LINE에 입사하면서 본격적으로 iOS 개발자의 길을 걷게 되었습니다. 제 첫 팀은 LINE iOS 앱의 Keep과 앨범, 검색 기능을 개발하는 Service Client Dev 2 팀입니다.

 

온보딩 과정

Q. LINE 신입 iOS 개발자는 어떻게 온보딩하나요? 

유진: 저희가 입사한 시점에는 코로나19 때문에 모든 온보딩 과정이 원격으로 진행됐습니다. 가장 먼저 2021년 상반기에 입사한 신입사원을 대상으로 진행하는 입문 교육이 5일간 Zoom을 통해 진행됐는데요. LINER답게 일하는 법도 배우고 동기와 교류하는 시간도 가질 수 있었습니다. 코로나19 시대의 LINE의 입문 교육에 대해 더 알고 싶으시다면 LINE Careers의 소개글을 살펴봐주세요! 입문 교육을 받은 후에는 신입 개발자가 잘 적응할 수 있도록 iOS 개발에 꼭 필요한 개념들을 공부하는 팀 내 신입 개발자 스터디 프로그램을 진행했습니다.

 

Q. 스터디는 어떤 방식으로 어떻게 진행됐나요?

유진: 스터디는 매주 하나의 주제에 대해 공부하는 방식으로 총 8주간 진행했습니다. 첫 2주는 Swift 언어에 대해 공부하고, 이후 6주는 iOS 개발에 필요한 라이프 사이클, 런 루프(RunLoop), 오토 레이아웃, 뷰 컨트롤러, 제스처, 그리고 동시성 프로그래밍을 주제로 스터디를 진행했습니다. 각 주제마다 팀원과 멘토 님이 서너 개의 읽기 자료를 준비해 주셨고, 그 외에도 Swift 언어 레퍼런스와 포럼, Apple 공식 문서, WWDC 세션, GitHub에 공개되어 있는 프레임워크의 소스 코드 등을 참고하며 공부했습니다.

스터디 내용은 다시 살펴보기 쉬우면서 팀원들에게 피드백도 받을 수 있는 사내 위키에 정리했습니다. 위키에는 인라인 댓글 기능이 있어서 팀원분들이 필요한 내용에 대해 추가로 설명해 주시거나 잘못된 내용을 바로잡아 주시기도 했고, LINE의 개발 관례를 알려주시는 경우도 있었습니다. 위키 댓글로 추천받은 WWDC 세션들은 스터디 내용을 더 깊이 이해할 수 있는 훌륭한 자료였는데요. 그중에서 특히 재밌었던 부분을 추려 이번 포스트 시리즈의 2편에서 소개할 예정입니다!

윤재: 스터디한 내용을 기반으로 매주 발표를 진행했습니다. 해당 주차에 공부한 내용을 Keynote에 정리해서 Zoom을 통해 짧게는 20분, 길게는 50분 정도로 발표했습니다. 유진 님과 저는 해당 주차에 학습해야 하는 내용을 각자의 위키 페이지에 정리한 뒤에 함께 발표 자료를 만들어서 발표했습니다. 저와 유진 님이 번갈아가면서 발표했고, 같은 센터의 iOS 개발자 분들께서 발표를 들어주셨습니다. 매주 약 20~30명의 선배 LINER 분들이 신입인 저희의 발표를 들으러 와주셨기 때문에 더욱 동기 부여가 돼 스터디를 진행하고 내용을 정리할 수 있었습니다. 많은 분들 앞에서 발표해야 했기 때문에 최대한 정확하고 자세히 조사해서 발표하고자 했고, 발표에 참석하시는 분들이 이미 알고 있는 내용만 다루기보다는 처음 알게 되거나 흥미를 가지실만한 부분들에 대해서도 조사하고 발표했습니다. 발표를 진행한 덕분에 학습 내용을 더욱 심도 있게 배울 수 있었습니다.

또한 스터디를 진행하면서 멘토 분들의 피드백이 큰 도움이 되었습니다. 위키 페이지에 스터디 내용을 정리해 두면 팀원 분들이 제 페이지를 보고 추가로 알아보면 좋을 부분들을 알려주시거나 잘못 이해한 부분을 바로잡아 주셨습니다. 피드백을 통해 새롭게 알게 된 지식도 있었고, LINE에서의 적용 사례나 컨벤션 등에 대해서도 알려주셔서 현재 하고 있는 스터디와 앞으로 진행하게 될 업무의 연관성도 이해할 수 있었습니다. 팀원 분들이 피드백을 달아주시는 것을 보면서 원격 환경에서 조금 느끼기 힘들었던 소속감도 느꼈고 스터디를 좀 더 효율적으로 진행하는 데에도 큰 도움이 된 것 같습니다.

 

Q. 온라인으로 스터디를 진행하면서 어려운 점은 없었나요? 

윤재: 두 명이 진행한 스터디였기 때문에 발표 자료를 만들 때와 같은 여러 상황에서 논의를 많이 해야 했습니다. 하지만 원격 환경이어서 자유롭게 논의를 할 수 있는 환경이 아니었는데요. 그래서 매일 반복되는 Zoom 회의를 만들어서 유진 님과 그날 스터디를 진행하면서 새로 알게 된 점을 공유했습니다. 이렇게 매일 Zoom으로 얼굴을 보며 진행 사항을 공유하다 보니 원격 환경에서 스터디를 진행하는 것에 익숙해졌고, 마지막에는 오히려 원격 환경이 더 익숙하고 편할 정도로 효율이 좋아졌던 것 같습니다. 

또한 온라인으로 발표를 진행하다 보니 발표에 참석하신 분들의 반응을 확인하기가 어려웠는데요. 오프라인 발표였다면 참석하신 분들과 호흡을 맞춰가며 발표할 수 있는데, 온라인 발표이다 보니 현재 발표가 잘 전달되고 있는지 걱정되기도 했습니다. 하지만 발표가 끝나면 매번 많은 분들이 질문이나 피드백을 주셨고, 이를 통해 추가로 공부할 만한 부분을 알 수 있었습니다. 또한 온라인 발표를 준비해서 수차례 진행하다 보니 마지막에는 Zoom에서 화면 공유를 통해 발표하는 환경에 익숙해져서 Zoom 채팅으로 올라오는 반응을 확인해 가면서 여유 있게 발표하기도 했습니다. 

 

Q. 스터디를 통해 온보딩하니 어떤 장점이 있었나요?

유진: 저는 iOS 개발이 처음이었는데요. 스터디를 통해 iOS 개발자가 될 수 있는 첫 발을 디딘 것 같습니다. 입사 전에도 iOS 개발 공부를 시도했었지만 근처에 iOS 개발을 해 본 사람이 없다 보니 문제가 생길 때마다 한참을 헤맸는데요. iOS 개발 경험이 풍부하신 윤재 님과 멘토 님께 바로바로 물어볼 수 있어서 훨씬 수월하게 공부할 수 있었던 것 같습니다. 또한 많은 LINE 개발자분들이 저희 발표를 들으러 와주셔서 책임감을 느끼고 더 깊이 공부할 수 있는 동기가 되기도 했습니다.

윤재: iOS 개발 기본기를 탄탄하게 다지고 업무를 시작할 수 있어서 좋은 것 같습니다. iOS 개발자로 취업을 준비하면서 다양한 프로젝트를 진행해 봤는데요. 이번 스터디를 진행하면서 iOS 개발에 대한 본질적인 이해 없이 프로젝트를 진행했다는 반성이 들 정도로 많은 지식을 쌓게 되었습니다. 앞으로 업무를 맡아 개발할 때 많은 도움이 될 것이라고 생각합니다.

또한 무엇보다 센터에서 신입들에게 스터디만 할 수 있는 시간을 두 달 이상 부여해 준다는 점이 매우 만족스러웠습니다. 그만큼 개발하는 데 있어서 기본기를 중요하게 생각한다고 느낄 수 있었고, 개발자 개개인이 최대한 성장할 수 있게 기회를 준다는 생각이 들었습니다. 또한 같이 스터디를 진행한 유진 님과는 서로 다른 부서인데요. 이번 스터디를 기회로 알게 되어서 좋았고, 팀원 분들에게 피드백을 받으며 스터디를 진행하면서 부서에 적응하는 데 큰 도움이 된 것 같습니다. 

 

마치며

Q. 스터디를 진행하면서 앞으로 개발하는 데에 특히 도움이 될만한 주제들이 있었나요? 

유진: 저는 Swift의 타입 시스템이 가장 흥미로웠습니다. Swift를 사용하다 보면 ‘Using `P` as a concrete type conforming to protocol `P` is not supported’와 같은 기이한 메시지를 종종 만날 수 있습니다. 왜 프로토콜 타입 그 자체는 프로토콜을 만족시키지 못하는 걸까요? 스터디를 통해 프로토콜 타입의 구현과 이론적인 배경을 알게 되니 위와 같은 메시지를 더 명확하게 이해할 수 있었습니다. 이 시리즈의 다음 포스트에서는 Swift 타입 시스템의 개념인 제네릭스와 프로토콜, 그리고 opaque 타입에 대해 제가 이해한 것을 공유하려고 합니다. 

윤재: 저는 이번 스터디에서 동시성 프로그래밍(concurrency programming)이 가장 도움이 된 것 같습니다. 고성능을 위해 동시성은 꼭 필요한 개념 중 하나이기 때문에 더 열심히 공부했습니다. 특히, 이번 WWDC2021 세션에서 새로운 Swift 동시성 프로그래밍이 도입되면서 기존에 GCD를 사용하던 동시성에 큰 변화가 생기게 되었습니다. LINE에서 Swift 동시성 프로그래밍을 적용하기 위해서는 iOS 배포 대상 이슈 때문에 시간이 걸리겠지만, 그럼에도 미리 알아두면 좋을 만큼 중요한 개념이라고 생각합니다. 이에 관한 자세한 내용은 이번 포스팅 시리즈의 3편, Swift Concurrency에서 다뤄보고자 합니다.