grep

Culture

2024 카카오 인턴십 뉴크루들의 기술온보딩 여정

kakao tech카카오

2024년 7월 19일

원문에서 보기 ↗

글쓴이 소개

sky.j

안녕하세요. 카카오 기술기획에서 테크 영입/성장을 담당하고 있는 sky(스카이)입니다. 테크직군 크루들의 기술성장을 위한 다양한 프로그램을 운영합니다. 👏

eve.y2k

안녕하세요. 카카오 애플리케이션을 모니터링하기 위한 표준 시스템을 개발하는 모니터링기술의 eve(이브)입니다. 다양한 챌린지가 가득한 카카오에서 개발할 수 있게 되어 기쁘게 생각합니다 ☺️

helen.one

안녕하세요. 카카오 인턴십 과정을 마치고 FE 개발로 합류한 다음채널개발의 helen(헬렌)입니다. 다음채널개발 팀의 팀원으로서 기여할 수 있도록 성장하고 싶습니다 🙌

깃헙 링크에서 뉴크루들의 기술 온보딩의 코드를 확인하실 수 있습니다! 👍


1. 들어가며

안녕하세요. 카카오 기술기획에서 테크직군의 성장을 고민하는 sky입니다.

올해 카카오에는 매우 큰 이벤트가 있었습니다. 바로 2024년 카카오 채용 연계형 겨울 인턴십이 진행이 되었다는 것인데요, 약 두 달간 진행된 겨울인턴십을 마친 인턴분들께서 드디어 카카오의 정규 크루로 입사를 하게 된 것입니다. 이렇게 입사한 카카오 뉴크루들을 위해 저희는 크루분들이 각각 현업으로 가기 전 Backend 기술 온보딩을 진행하였습니다. 뉴크루들이 가진 열정에 멋진 체계적인 기술 역량 한 스푼을 더한다면, 이후 현업에 돌아가서도 무서운 속도로 적응과 성장을 할 수 있다고 믿기 때문이죠.

뉴크루들은 Backend 온보딩 기간 동안 자바와 스프링을 중심으로 TDD와 객체지향, 그리고 WAS 구현을 통한 프레임워크의 이해 등 다양한 분야의 지식을 배우며 경험 및 성장하게 되는데요, 그럼 지금부터 Backend 온보딩을 매우 우수한 성적으로 마친 eve.y2k와 helen.one의 생생한 경험과 성장 과정을 통해 여러분들과 함께 나누어 보고자 합니다.


2. 2024 겨울 인턴십 소개

2024 겨울 인턴십은 채용 연계형으로 진행된 프로그램이에요. 약 두 달간의 프로젝트에 참여하여 과제를 수행하고, 나아가 카카오의 문화와 일하는 방식 등을 경험할 수 있습니다. 또한 이 과정에서 나에게 맞는 기술과 직무에 대해 고민을 해 볼 수 있는 소중한 시간이기도 합니다. 프로젝트 및 인턴십을 마치게 되면, 전환 인터뷰를 통해 정규 크루로 입사하게 되는 프로세스로 진행이 됩니다.

이번 겨울인턴십에 대해 보다 더 많은 궁금증이 있으시다면 2024 카카오 채용 연계형 겨울 인턴십 Coming soon! 에서 확인 해 주세요!


3. 기술 온보딩은 이렇게 진행됐어요🚀 (eve & helen)

뉴크루 기술 온보딩은 미션을 받고, 미션의 요구사항을 만족하는 애플리케이션을 개발하는 과정으로 이뤄졌습니다. 교육 과정이 진행되는 4주 동안 총 3개의 미션을 일정한 단계를 반복하며 진행했습니다.

기술온보딩 교육시간표

그 과정을 간략히 요약하면, 일단 미션의 기능적 요구사항과 기술적 요구사항을 듣고 이를 구현하는데 필요한 개념을 강의를 통해 학습했습니다. 강의는 프로그래밍 이론뿐만 아니라 클린 코드 기반의 자바 프로그래밍에 익숙해질 수 있도록 구성되었습니다. 그 뒤 페어 프로그래밍 및 개별 작업을 통해 진행한 미션을 github 리포지토리에 제출하고, 리뷰어 분과의 리뷰 과정을 통해 개선점을 찾고 코드를 리팩토링하는 시간을 가졌습니다. 여기에 더불어 온보딩 조원들과 함께 데일리 회고와 주간 회고를 통해 아쉬운 부분이나 개선점을 찾아나갈 수 있었습니다.

이제 각 단계가 구체적으로 어떤 내용으로 진행되었는지 소개해드릴게요.

미션 설명 및 개념 강의

뉴크루 기술 온보딩 과제는 시작부터 끝까지 강의와 함께 진행됐습니다. 강의 내용은 과제에 대한 설명, 그리고 과제를 완수하는데 필요한 개념으로 구성되어 있었습니다.

미션 설명 및 개념 강의

“과제 설명" 학습 목표, 범위, 미션의 요구사항 등을 자세히 설명해 주셨습니다. 특히 과제를 해결하며 겪었던, 혹은 앞으로 겪게 될 고민이나 어려움을 함께 고민하고 공유해 주셔서 많은 도움이 되었습니다. 강의 방식에서 흥미로웠던 부분은, 강의가 단순히 개념을 주입받는 시간이 아니라, IDE 창을 화면에 공유하며 실시간으로 라이브코딩을 하는 과정 속에서 크루들과 적극적으로 소통하는 시간이었다는 점입니다. 요구사항을 정리하고, 패키지와 클래스 구조를 설계하고, 예외를 처리하는 부분까지 모든 과정은 TDD로 진행되었으며, 어떤 클래스를 먼저 만들고, 어떤 기능을 어떻게 테스트할 것인지 이야기를 나누는 토론 시간이 되었습니다.

강의에서는 TDD(Test-Driven Development), OOP(Object-Oriented Programming), 아키텍처 설계 원리 및 원칙을 비롯해 웹 애플리케이션 서버의 구조와 HTTP의 동작 원리까지 다양하고 폭넓은 주제를 다루었습니다. 다소 딱딱할 수도 있던 이론 설명 시간 후에 직접 HTTP cookie 값을 설정하고 활용하여 브라우저 상에서 웹 작동 과정을 조작하는 자바 코드를 작성하고, 이를 페어와 함께 실시간으로 테스트하여 통과시키는 실습을 진행했습니다.

미션 소개

미션은 총 세 가지로, 후반부 미션으로 갈수록 요구 사항이 많아지고 지켜야 할 규칙도 많아졌습니다. 각 미션 별로 정해진 PR 제출 기한이 있었기 때문에 많은 뉴크루가 미션 완성도와 마감 기한 사이에서 적절히 타협해 나가는 모습을 보였던 것 같습니다.

① 자동차 경주 미션

처음 진행된 자동차 경주 미션은 제한된 횟수에서 랜덤 생성한 숫자에 따라 자동차의 전진 여부를 결정하며 우승한 자동차를 결정하는 미션이었습니다. 오직 한 단계의 들여쓰기 만을 사용해야 하는 규칙이나 else 예약어를 사용할 수 없는 규칙 등의 제한을 만족해야 했고, 테스트 코드를 작성한 뒤 도메인 코드를 작성하는 순서로 진행해야 했습니다. 또한 교육 과정의 첫 미션이면서 첫 TDD, 그리고 첫 페어 프로그래밍이라는 낯섦에 적응해야 했기 때문에 쉽지 않았던 경험이었습니다. 메인 패키지의 클래스를 만들기 전, 테스트 패키지에서 먼저 테스트 코드를 작성할 때 IDE에 표시되는 빨간 줄을 먼저 보고 개발을 시작하는 것이 새로웠던 기억이 있네요.

리팩토링 미션의 요구사항

② 로또 미션

바로 다음 미션이었던 로또 미션은 2단계로 진행이 되었는데요. 1단계에서는 자동으로 로또를 생성하는 기능만 제공했지만, 2단계에서는 사용자가 수동으로 추첨 번호를 입력해야 한다는 요구사항의 변화에 대응해야 했습니다. 로또 미션을 진행하면서부터는 ‘객체지향 생활체조 원칙’에 따른 더욱 엄격한 규칙을 지켜야 했는데, TDD에 이어 이러한 규칙들까지 적용하며 페어프로그래밍을 해야 하니 이전 미션보다도 진행이 더뎠습니다. 뿐만 아니라 사용자의 입력에 대한 예외 케이스를 처리하기 위해 시간을 많이 사용했던 기억이 나네요. 이래저래 난관이 많았지만, 낯선 것에 계속 도전하며 요구사항을 해결해 나가는 과정을 통해 한층 성장한 기분을 느낄 수 있었습니다.

③ WAS 미션

마지막은 WAS 구현 미션이었습니다. 웹 프레임워크의 도움 없이 HTTP 기반의 웹 서버를 직접 구현하며, HTML과 CSS 등의 정적 리소스를 제공하는 기능부터 로그인 처리, 사용자 요청에 따른 데이터 조작, 동적인 콘텐츠 제공까지 웹 어플리케이션 서버가 제공하는 다양한 기능을 구현해야 했습니다. 이 과정에서 HTTP 헤더와 바디, 요청과 응답 라인, 쿠키와 세션 등 웹의 주요 구성 요소를 TCP 위에서 직접 파싱하고 객체화하는 작업을 수행했습니다. WAS 미션을 통해 단순한 프로그래밍 능력의 향상뿐만 아니라 웹 기술의 핵심을 이해하고, 스프링 MVC와 같은 웹 프레임워크가 왜 현재의 아키텍처를 선택했는지를 더 깊이 있게 이해할 수 있었습니다.

열정적으로 미션에 대한 피드백을 학습하고 있는 크루들

페어프로그래밍

미션은 전부 페어와 함께 2인 1조로 진행되었다고 말씀드렸는데요. 대부분의 페어가 자바 프로그래밍에 상대적으로 익숙한 Server 직군, 그리고 FE와 Infra 등 그 외 직군의 조합으로 이뤄졌습니다. 이번엔 특별히 온보딩 교육 기간 동안 페어로써 함께 프로그래밍을 진행한 저희 helen과 eve의 대화 형식으로 소감을 들려드리겠습니다.

eve.y2k : 헬렌은 처음 페어프로그래밍을 한다고 했을 때 어떠셨나요? 걱정되는 부분이 있지는 않았나요? 🤔

helen.one : 저는 서버 직군이 아니어서 처음에는 어떻게 진행해야 할지 막막한 부분이 있었어요. 드라이버와 내비게이터의 역할을 번갈아가며 코드를 작성하는 방식이었는데, 자바의 문법이나 컨벤션이 익숙하지 않다 보니 그런 부분에서 이브에게 많은 도움을 받을 수 있을 것 같았어요. 그러나 반대로 이브에게는 어떤 도움을 줄 수 있을지 걱정이 되었어요. 이브는 어떠셨나요?

eve.y2k : 저는 서버 직군으로서 작성한 모든 코드에 대해 설명을 해야 한다는 부담감이 조금 있었던 것 같아요. 하지만 헬렌의 이해가 빠르고 적극적으로 질문해준 덕분에 기존에 애매하게 알고 있던 내용이나 깊이 있게 숙지하지 못했던 언어와 프레임워크의 기능들을 복습하고 더 깊이 있게 이해할 수 있었어요. 그리고 페어가 다른 직군이어서 코드를 작성할 때나 컨벤션을 적용할 때 더욱 다양한 의견을 주고받으며 훨씬 넓은 시야로 문제를 바라보고 해결책을 모색하는 경험을 할 수 있었어요.

helen.one : 저도 궁금한 부분을 이브에게 바로바로 질문하며 빠르게 배울 수 있었고, 그 덕분에 교육 후반에는 자바 언어나 TDD, OOP적인 설계에 익숙해진 것을 체감하며 학습에 즐거움을 느꼈던 것 같아요. 특히나 함께 진행한 자동차 경주나 로또 미션이 기억에 남는데, 간단한 과제라고 생각했지만 실제로는 고려해야 할 부분이 매우 많았고, 함께한 덕에 더 깊이 있게 문제를 파악하고 더 나은 솔루션을 찾아가며 만족스러운 코드를 작성했다고 생각해요.

eve.y2k : 맞아요. 로또 미션을 진행하는 과정에서 초반에는 테스트 코드의 작성이나 클래스 설계에서 어려움을 많이 느꼈고 속도가 더딘 부분이 있었는데, 그 단계를 지나고 나서는 요구사항에 따라 기능이 빠르게 완성되는 모습을 보고 OOP의 장점을 실감했던 것 같아요. 페어로 진행했기에 더욱 의미가 있었던 것 같은데, 헬렌은 앞으로도 페어 프로그래밍을 적극적으로 활용해 보실 의향이 있으신가요?

helen.one : 네! 페어 프로그래밍을 하면서 단기간에 서로에게 많은 것을 배우고 성장할 수 있는 좋은 기회가 됐던 것 같아 기회가 된다면 꼭 적용해보고 싶어요 👍

PR, 리뷰 반영

PR과 코드 리뷰 현황

기술 온보딩에서는 실습을 통해 git과 github의 사용법을 익히고 리뷰를 통해 코드 개선과 성장을 이룰 수 있었습니다. 미션은 깃 저장소를 clone 한 후, 개별 브랜치에서 작업을 진행하면서 컨벤션에 맞게 커밋 메세지를 남기고, PR을 통해 받은 리뷰를 반영하여 리팩토링하는 과정을 포함했습니다.

코드리뷰와 반영 과정

리뷰는 총 2단계로 진행되는데, 1차는 페어와 함께한 코드를, 2차는 1차 리뷰 코멘트를 바탕으로 개인이 리팩토링한 코드를 리뷰받았습니다. 함께 작성한 코드에 대해 각자가 다른 리뷰어의 리뷰를 받으며 더 다양한 의견을 듣고 고민할 수 있었던 것이죠. 페어의 코드뿐만 아니라 온보딩 교육에 참여한 다른 뉴크루들의 리뷰와 리팩토링 과정 역시 볼 수 있었기 때문에 더욱 다양한 구현 방식과 피드백을 접할 수 있어 정말로 유익했던 것 같습니다.

코드 리뷰는 강의와 관련된 내용 위주로 진행되었습니다. 리뷰어 분들은 객체지향 생활 체조 원칙을 지켰는지, 확장과 변화에 유리한 구조인지, 의미 있는 테스트 코드를 빠짐없이 잘 작성했는지 등을 중점적으로 확인해 주셨습니다. 코드 전반적인 부분을 꼼꼼히 리뷰해 주신 덕분에 기능을 구현할 때 주의해야 하는 것이 무엇인지 알 수 있었고, 단순히 사용하던 언어 라이브러리도 성능을 고려하여 공식 문서를 확인하며 더 적절한 구현체나 메소드로 바꿔 사용하기도 했습니다.

회고

2주차 주간 회고 시간

온보딩 교육 과정 전반적으로 데일리 회고, 주간 회고, 최종 회고를 함께 진행했습니다. 이 시간에는 뉴크루들이 공유하는 스프레드시트에 미션을 수행하며 좋았던 점, 아쉬웠던 점, 앞으로의 마음가짐 등을 간단히 적고 팀원들과 함께 회고하며 각오를 나누었습니다.

특히 데일리 회고를 통해 전날의 아쉬웠던 점을 바로바로 공유함으로써 다음 날은 동일한 실수를 줄일 수 있었고, 전날 학습한 내용을 복습하며 더욱 깊이 이해할 기회가 되었습니다. 서로가 전날 한 것들과 오늘 할 것들을 공유하며 잘해나가고 있는지 점검하니 하루하루를 유익하게 살고 있다는 뿌듯함도 얻을 수 있었습니다. 또한 팀원들 각자가 이해하고 학습한 경험과 고민을 서로 공유하는 것만으로도 많은 간접 경험을 할 수 있었던 것 같아요.

주간 회고는 ‘감정 회고’라는 키워드로 진행되었는데요. 과제의 진행 과정이나 느낀 점보다는 페어 프로그래밍을 하면서 좋았던 감정, 아쉬웠던 감정, 그리고 회고에 대한 소감과 앞으로의 다짐 등을 팀원들과 공유하는 시간이었습니다. 이런 과정을 통해 서로의 감정을 공유하고 이해하는 것은 물론, 서로가 주는 피드백을 긍정적으로 받아들이며 좋은 협업의 자세도 갖춰나갈 수 있었다고 생각합니다.


4. 기술온보딩을 마치며

온보딩 과정을 마치며

온보딩 과정을 통해 TDD, 객체지향 원칙, 페어 프로그래밍 등 이론적으로는 알고 있었지만 실제로 적용해 보기는 처음인 개념들을 경험할 수 있었어요. 처음에는 낯설고 적용하기 어려웠지만, 페어와 함께 컴포트 존에서 벗어나 새로운 것을 학습해 나가는 과정이 유익했던 것 같습니다.

미션에 대한 리뷰어 분들의 코드 리뷰는 정말 많은 도움이 되었습니다. 단순히 정답을 제시한 것이 아니라, 문제가 될 수 있는 부분을 짚어주고 어떻게 해결할 수 있는지 묻는 질문을 통해 깊이 있게 생각하고 좋은 해결책을 찾도록 이끌어주었습니다. 특히 실무에서 흔히 보이는 “트레이드오프” 상황에서 어떤 것을 중점으로 생각해야 할지에 관한 많은 인사이트를 얻을 수 있었습니다.

또한, 강의에서 배운 프로그래밍 관련 내용뿐만 아니라 팀에 소속된 한 명의 개발자로서 신뢰 자본을 쌓는 법, 팀에 좋은 변화를 만드는 법 등 실무에 합류한다면 갖춰야 할 개발자로서의 마인드셋 역시 배우고 실천해 볼 수 있었습니다. 온보딩 교육을 담당해 주셨던 분들도 교육에 참여한 교육자로서, 그리고 선배 개발자로서 필요한 이야기를 많이 해주셨는데, 재밌고 유익한 내용들이 많아서 많은 도움이 되었습니다. 앞으로 어려움에 부딪혔을 때 어떻게 극복해야 하는지, 어떤 방식으로 개발에 임해야 하는지 등을 배울 수 있었습니다.

온보딩 과정은 개발자로서 성장하고 팀에 기여하기 위한 단단한 기반을 마련할 수 있는 소중한 시간이었습니다. 이를 바탕으로 앞으로도 끊임없이 노력하여 긍정적인 영향력을 주는 카카오 크루가 될 수 있었으면 좋겠습니다. 두 달간의 인턴십 과정부터 4주 간의 기술 온보딩까지, 함께 달려온 뉴크루 여러분 모두 고생 많으셨습니다 🙌

뉴크루들의 소감

카카오 크루가 된 앞으로의 다짐과 각오

helen.one 카카오에서 개발자로서의 첫 시작을 함께 하는 만큼, 얼마나 많이 배우고 도전해 볼 수 있을지 기대가 되는 것 같아요. 앞으로도 개발에 대한 즐거움이나 성장하고자 하는 욕심을 잃지 말고 팀에 도움이 되는 개발자가 되겠습니다 😸

eve.y2k 아직은 욕심만큼 능력이 뛰어나진 못하지만, 배울 수 있는 것들을 최대한 배우고 할 수 있는 것들을 최대한 해보려고 해요. 이렇게 훌륭한 크루들이 많은 카카오에서 일할 수 있는 것을 좋은 기회로 여기고 저 역시 훌륭한 크루의 일원이 되겠습니다 😄