2022 신입 공채 서버 뉴크루들의 기술 온보딩 이야기

– binary : 안녕하세요. 톡서버파트의 바이너리입니다. 톡서버파트는 카카오톡과 카카오톡 기반의 플랫폼을 위한 친구, 프로필, 설정 정보 등에 대한 API를 제공하는 부서입니다.

– everett : 안녕하세요. 선물하기 개발 2셀 에버렛입니다. 선물하기 개발 2셀은 선물하기 상품, 리뷰, 쿠폰, 수수료 시스템의 API를 개발을 담당하고 있는 부서입니다.

 

안녕하세요, 2022 카카오 뉴크루에서 이제는  “카카오 서버 개발자”로 커리어를 소개하려 하는 binaryeverett 입니다.

카카오는 함께 일하는 동료를 크루, 새롭게 합류한 크루들을 뉴크루라고 부릅니다. 이번 글에서는 작년 12월 말부터 2월 초까지 약 6주간 서버 직군 뉴크루들이 진행했던 기술 온보딩 과정에 대한 소개와 저희가 온보딩 교육을 통해 어떠한 것들을 경험했고 배웠으며, 어떻게 성장하였는지를 회고해 보려 합니다.

 


 

6주 동안 이런 것을 했어요

 

무슨 기술교육을 6주 동안이나 받아?!라고 생각하실 수 있습니다. 밖에서 봤을 땐 조금 길다고 생각할 수 있는 시간일 수 있지만, 실제로 겪어본 6주는 힘들다는 생각도 들 새 없이 정말로 짧은 기간이었습니다.

카카오의 크루들은 “스스로 몰입하고 주도적으로 일하며”, “나보다 동료의 생각이 더 옳을 수 있다는 믿음을 가지는” 카카오스러움이라는 가치를 가지고 협업하고 있는데요. 온보딩이 끝남과 동시에 뉴크루들도 각 부서로 가서 사용자의 요구사항을 만족시킬 수 있는 기능들을 구현하기 위해 동료들과 일해야 했습니다. 그래서 기술 온보딩은 끊임없이 변화하는 요구사항에 대응할 수 있는 구현 능력을 갖출 수 있도록 하루 단위의 세부 미션을 수행하고, 함께 일하는 크루들과 건강하게 소통하며 협업할 수 있도록 하는 다양한 활동으로 이루어져 있습니다.

 

 

뉴크루의 대다수는 실제로 서버 프로그래밍 경험이 전혀 없는 경력 없는 신입이었습니다. 하지만 기술 온보딩을 통해 관련 언어 지식이나 개발 경험이 없어도 미션을 열심히 해내다 보면 기초적인 서버 개발자로 성장할 수 있도록 설계되어 있었습니다. 

이렇게 뉴크루들이 성장할 수 있었던 커리큘럼을 간단하게 소개해 볼게요. 카카오 서버 사이드 개발의 주 언어인 자바를 객체지향스럽게 학습하고, 스프링 프레임워크로 서버를 구현하고, 프레임워크가 처리해 주었던 여러 기능을 다시 퓨어한 자바로 구현하는 것이 지난 6주간의 여정이었습니다.

이런 미션들을 단순히 수행하는 게 아니라, 아래 활동들을 번갈아 진행하면서 경험을 할 수 있었습니다.

  1. 내가 짠 코드를 설명할 수 있고
  2. 여러 코드를 참고하면서 코드 퀄리티를 발전시킬 수 있고
  3. 실제 서버 개발자는 어떤 지식들을 어떻게 습득할 줄 알아야 하며
  4. 피드백을 주고받으면서 커뮤니케이션 능력을 기르며
  5. 협업하기 좋은 코드를 위해 점진적으로 개선해 나가는


이제부터 각각의 세션에서 어떤 경험을 할 수 있었는지 구체적으로 설명드릴게요!


피어 세션

피어 세션은 매일 4~6명의 뉴크루가 한 조가 되어 서로의 코드를 공유하고 지식을 공유할 수 있는 미팅입니다. 

매일 아침 10시마다 톡메시징파트의 뉴크루 분들과 모여서 서로가 전날 어떻게 코드를 짰고, 어떤 리뷰를 받았는지 공유했습니다. 피어 세션을 진행하다 보면 서로의 코드에서 궁금한 점이 많았는데요. “이 부분을 이렇게 짜신 이유를 설명해 주실 수 있나요?”라는 질문을 받았을 때 자신 있게 설명할 수 있게, ‘이유 있는 코드’를 짜려고 노력했습니다.

또한, 자신의 코드를 명확하게 설명하는 것 외에도 다른 사람의 코드를 보고 배울 수 있다는 점이 좋았는데요. 미션을 수행하면서 비슷한 문제에 대해서 동료들과 함께 고민하면서 다양한 해결 방법을 배울 수 있었습니다.

라이브 수업

라이브 수업 세션은 백엔드 개발자라면 반드시 알아야 하는 지식들을 배우는 시간입니다. 이번에는 코드스쿼드의 “백엔드 마스터, 호눅스”께서 매주 월/수/금요일에 진행해 주셨는데요. TDD, Java Stream, Mysql, Database Index, Docker, Transaction 등의 주제를 가지고 핵심적인 이론 수업과 실습을 통해 각 부서로 돌아가 실무를 수행할 때 필요한 지식들을 준비할 수 있었습니다. 또한, 호눅스께서 수업 중간중간에 책에서는 얻을 수 없는 꿀팁들을 대방출해 주셨었는데요. 저희에게 전수해 주고 싶은 것들이 너무 많아 항상 2시간을 초과해서 수업해 주시는 모습에 뉴크루들은 감동이었습니다. 🙂


개인 미션

개인 미션은 매주 월요일에 오픈되는 미션들을 수행하는 방식으로 진행되었습니다. 각 개인 미션은 콘솔 화면에서 사용자 입력을 받아 출력하는 간단한 게임을 구현하는 것에서부터 HTTP 스펙을 지원하는 WAS 서버를 직접 구현하는 등 다양한 미션으로 구성되었는데요.. 6주 동안 뉴 크루들은 각 미션을 클리어하면서 백엔드 개발자에 중요한 소양을 점차 갖춰가는 과정으로 진행되었습니다.

첫 번째 미션 : 사다리 게임

기술 온보딩 과정의 첫 번째 미션은 사다리 게임 구현하기입니다. 자바 언어를 이용하여 콘솔 UI를 통해 사용자의 입력을 받고, 랜덤으로 사다리를 생성하여 선택된 사다리의 결과를 출력하는 미션을 수행하게 되었습니다.

처음 미션의 기능적인 요구 사항을 들었을 때는 그렇게 어렵지 않은데..?라고 생각했었는데요. 단순하게 기능을 구현하는 것뿐만 아니라 구현을 하면서 지켜야 하는 사항들이 있었습니다. 하나의 메소드의 크기를 짧게 하거나 들여 쓰기를 최소한으로 하는 클린 코드에서부터 자바 활용, 단위 테스트 작성까지 경험하며 어떻게 구현해야 좋은 코드를 작성할 수 있는지 고민하게 되는 미션이었습니다. (단순한 코드를 작성하더라도 엄청 고민을 했던 기억이..)

두 번째 미션 : 로또 게임

두 번째 미션은 로또 게임 구현하기입니다. 두 번째 미션에서는 로또 구매, 로또 번호 생성, 당첨금 계산 등의 기능들을 구현하고 콘솔 UI에서 시작하여 SparkJava를 이용한 웹 프로젝트를 구현함으로써, 본격적으로 웹 애플리케이션을 개발하기에 앞서 워밍업 하는 시간이었습니다.

또한, 두 번째 미션에서는 Java Exception를 활용하여 로또 번호와 로또의 제약 조건에 대한 예외 처리와 로또 번호 등 로또 게임에 필요한 요소들을 객체 지향적으로 설계하면서 개발 실력을 향상할 수 있는 시간이었습니다. 또한, 당첨 결과를 계산하는 과정에서 데이터베이스를 활용하여 생성된 로또 번호를 저장하고 비교한 결과를 출력하는 등 기본적인 백엔드 요소들을 적절히 활용하여 수행해야 하는  미션이었습니다.

세 번째 미션 : Kakao Café

세 번째 미션은 Spring을 이용하여 게시판 구현하기입니다. 해당 미션에서는 많은 IT 회사에서 사용하는 Spring 프레임워크를 학습하고, 세션, 쿠키를 활용한 로그인, Ajax를 이용한 댓글, 페이징 등을 개발하여 직접 서버에 배포해 보는 미션이었습니다.

이 미션 중에서 가장 인상 깊었던 점은 사내 클라우드에 직접 배포를 해보는 시간이었는데요. 배포를 위해서 개발 서버를 발급받고, 빌드 된 파일을 서버에 직접 배포해 보면서 실무와 비슷한 경험을 배울 수 있었습니다. 내가 만든 애플리케이션이 실제 카카오 사내 클라우드 인프라에서 서비스되고 있다고 생각하니 개발자로써 처음 한 발을 내디딘 기분이 들었습니다.

네 번째 미션 : WAS 서버 구현

네 번째 미션은 HTTP Spec을 지원하는 WAS 서버 구현하기입니다. 이 미션을 수행하기 위해서는 HTTP 지식에 대해서 먼저 학습이 필요했는데요. 개인적으로는 구현을 하기 위해 docs 문서에서 구체적인 HTTP 스펙을 열심히 찾아보며 학습을 했던 것 같습니다. 

또한, 그간 프레임워크가 얼마나 많은 일들을 해주고 있는지 알게 되었는데요. 동적 페이지를 만들거나 컨트롤러의 URL 매핑 등을 구현하면서 스프링 내부 구조에 대해서 더 자세하게 지식을 얻을 수 있었고 모두 구현한 이후에는 스트레스 테스트를 진행해 보면서 성능을 향상시켜보는 과정들을 거칠 수 있었습니다.


코드 리뷰

뉴크루들은 주어진 과제를 구현해 내는 동시에, 카카오 사내 다른 크루에게 직접 코드 리뷰를 받았습니다. 코드 리뷰는 온라인 교육이라는 환경에서도 아무 제약을 받지 않고, 비동기적 커뮤니케이션을 통해 일관된 구조를 만들 수 있으며 코드 품질을 향상시킬 수 있기 때문에 카카오의 대부분의 파트에서 적극적으로 활용하고 있는 개발 문화입니다. 세밀한 코드 리뷰를 경험하면서 피드백을 토대로 추가적인 내용을 학습하거나, 코드를 개선하는 연습도 할 수 있었습니다.

작년과 달라진 점을 뽑자면, 이번 2022 기술 온보딩에서 코드 리뷰어는 뉴크루들이 온보딩이 끝나고 배정될 실제 조직의 시니어 크루로 매치되었습니다. 카카오에는 많고 다양한 조직의 숫자만큼 조직별로 다양한 개발 문화를 가지고 있는데요. 덕분에 뉴크루들은 온보딩이 끝난 후 배정될 조직의 문화를 미리 체험하고 적용해 볼 수 있었습니다. 매주 화/목에 등록하는 풀 리퀘스트에 리뷰어를 등록하면 요구사항을 잘 충족했는지, 개선할 만한 부분이나 추가로 학습하면 좋을 주제들에 대한 구체적인 피드백을 받았습니다.


가장 재미있었던 & 힘들었던 프로젝트

제게 온보딩 교육에서 겪었던 가장 인상 깊었던 것은 클린 코드, 객체지향 프로그래밍이었는데요. 주차별 미션들을 수행하면서 아래와 같은 원칙을 지키려고 노력했습니다. 

이와 같은 제약 조건들을 지키면서 구현하니 코드의 가독성 뿐만 아니라 각 객체들의 역할도 분명해지게 설계할 수 있었습니다. 사실 실무에서는 모든 원칙들을 지킬 순 없을 텐데요. 객체 지향 프로그래밍에 대해서 연습하고 싶은 분들께는 몇 가지 원칙들이라도 따라 해보기를 추천드립니다. 저는 코드의 퀄리티에서 많은 도움을 받았습니다.


가장 힘들었던 기술적 문제

뉴크루에게 어떤 기술적 문제로 가장 어려웠는지 질문했습니다

일부 뉴크루를 대상으로 “기술 온보딩 과정 중 가장 힘들었던 기술적 문제”에 대한 설문조사를 진행했습니다. Docker와 Krane을 이용해서 애플리케이션을 배포하는 경험을 해봤는데, 배포 경험이 없는 경우가 대다수였기 때문에 기술적 어려움을 겪는 뉴크루가 많았습니다.

저희는 아키텍처를 설계하는 데 겪었던 과정들이 가장 기억에 남는데요. 모든 미션은 하루 단위의 세부 미션으로 구성됩니다. 실무에서도 실시간으로 바뀌는 요구사항에 유연하게 대응할 수 있는 아키텍처는 개발자들의 주요 관심사인데요. 작은 게시판 애플리케이션을 구현하면서도 사용자와 게시판의 정보를 저장하는 데이터베이스가 변경되거나, 사용자 인터페이스가 추가되는 상황이 발생했습니다. 이때 기존의 코드를 크게 변경하지 않고, 유지 보수 하기 쉬운 아키텍처로 개선해나가기 위해 아키텍처 관련 책을 읽거나 리뷰어에게 적극적으로 여쭤보기도 했어요. 더 좋은 구조를 만들기 위해 고민하고 의견을 나누는 모습에서 저희가 정말 개발자가 되어가고 있다는 걸 실감했습니다.

이번 2022 신입 공채의 기술 온보딩의 모든 과정은 100% 온라인 환경에서 진행했습니다.

혼자가 아니라 함께 성장하기 – 가장 좋았던 활동

사내 챗봇을 이용해서 칭찬을 주고받는 훈훈한 모습

많은 뉴크루들은 이번 온보딩 과정 중 가장 좋았던 활동으로 코드 리뷰와 피어 세션을 뽑았습니다. 두 활동은 동료 크루들과 피드백을 주고받고 소통하며 더 좋은 코드를 짜기 위해 고민한다는 공통점을 가지고 있습니다.

발견하지 못했던 여러 문제들을 코드 리뷰 과정에서 피드백을 받을 수 있었다는 점이 너무 좋았어요. 뉴크루들이 최대한 많은 걸 배울 수 있도록 직접 파트에서 사용하는 아키텍처에 대한 자료를 만들어 공유해 주시기도 하고, 새벽까지 리뷰를 남겨주시는 모습에 끝까지 최선을 다할 수 있었습니다.

피어 세션에서는 비슷한 기술적 어려움을 겪고 있는 동기들에게 전날 받은 피드백을 공유하고, 장단점에 대해 토론하면서 함께 성장할 수 있었습니다. 6주간 매일 화상 미팅으로 대화를 나누고, 기술적인 내용 외에도 이런저런 꿀팁들을 공유하면서 비록 온라인 온보딩이었지만 동기들과의 친밀감이 부쩍 상승한 걸 느꼈습니다.

추상적인 요구사항을 자신만의 방식으로 구현해 내고, 구현한 사항을 리뷰어와 동료 뉴크루들에게 설명할 수 있었어야 했기에 이유 있는 코드를 작성하는 습관을 체득했습니다. 또 동료 크루들과 피드백을 주고받고 건강한 충돌을 경험해가며 뉴크루 본인, 동료, 리뷰어가 모두 함께 성장할 수 있는 경험이 되었습니다.

가장 아쉬웠던 점

아무래도 코로나 시국으로 인해 온라인으로 진행되다 보니 동기들을 직접 만나지 못했던 점이 아쉬웠었는데요. 그러나 온보딩 과정에서 Zoom, Meet, Slack과 같은 다양한 도구들을 아주 잘 활용하여 커뮤니케이션과 라이브 수업 등을 진행하며 동기들과 친밀감을 쌓고 신입 개발자로서 성장하는 데에 큰 무리가 없었다는 점이 매우 좋았습니다. 또한, 입사 후 재택근무로 인해 적응해야 하는 환경에 미리 적응할 수 있었다는 점도 장점이라고 생각합니다.

기술 온보딩을 마치며

입사 후, 어느덧 시간이 흘러 기술 온보딩 교육이 마무리되었습니다. 

기술 온보딩을 돌이켜 보면 모든 뉴크루가 각자의 파트로 돌아가서 업무를 배정받더라도 큰 어려움 없이 카카오의 개발 문화에 금방 스며들 수 있도록 도와주는 소프트랜딩의 역할을 충실히 수행한 것 같아요.

그동안 기술 온보딩 기간 동안 많은 것을 배울 수 있었고, 정말로 즐거웠던 시간이었습니다. 저희는 이제는 부서로 돌아가서 동료 크루들과 함께 실제 업무를 해결하며 1인분을 해내는 개발자로 성장하려 합니다.

서버 개발자를 꿈꿀 때 카카오 테크블로그에서 온보딩 글을 읽으면서 큰 동기부여를 받았었는데, 저희의 경험을 테크 블로그에 실어서 공유할 수 있다는 게 꿈만 같아요.

뉴크루들이 6주간 경험한 미션 과정이 궁금하시다면 아래 링크에서 확인할 수 있습니다!

https://github.com/2022NewKrew

뉴크루 분들이 잘 적응할 수 있도록 커리큘럼을 구성해 주시고, 과제를 수행하면서 항상 꼼꼼하게 피드백을 해주셨던 리뷰어, 호눅스, 신입온보딩 TF분들께 진심 어린 감사를 드립니다.

또한 (전부 나열하지 못하는 많은 동지들…) 서버 뉴크루들이 한계 없이 성장하길 응원하겠습니다!

Latest Posts

[get Server!] [커머스CIC] 채널개발파트 소개 드려요!

평소 커머스 도메인에 관심이 많았다면? 톡딜을 통해 핫템을 득해본적이 있다면? 한번이라도 라이브커머스를 넋놓고 쳐다본적이 있다면? 라이언이랑 춘식이랑 함께하는 카카오 커머스CIC에서 개발자의 꿈을