본문 바로가기메뉴 바로가기


카카오의 신입 개발자 온보딩 과정 – 개발자로 거듭나기

지난 1월, 치열한 경쟁을 뚫고 블라인드 신입 공채에 합격한 신입 개발자들이 카카오에 입사했습니다. 이후 두 달간의 온보딩 과정을 마치고 드디어! 카카오의 개발자로 첫발을 내딛게 되었지요. 올해 온보딩 프로그램은 제주 본사 방문을 비롯하여 기술 교육 및 행사, 그리고 프로젝트 등 다양한 내용으로 구성되었는데요, 이 글에서는 그중 기술 교육과 프로젝트를 중심으로 지난 과정을 되돌아 보려 합니다.

기술 교육

카카오의 신입 개발자들은 제주 본사에서 진행되는 공통 직무 교육을 통해 업무에 필요한 여러 가지 기본 소양과 지식을 배웁니다. 그 시간 동안 막연하게만 알고 있던 카카오라는 회사를 보다 잘 이해하게 되고, 각자가 앞으로 개발자로서 어떤 삶을 살아갈지도 그려보게 되지요. (자세한 내용은 카카오가 신입 개발자 크루를 맞이하는 법 편을 참고해주세요) 이러한 적응 기간이 끝나면, 본격적으로 카카오 개발자에게 필요한 것들을 배우는 기술 교육이 진행됩니다.

드디어 직장인인가! 하지만 교육 기간이 되면 우리는 다시 학생이 됩니다.

기술 교육은 총 3주간 진행되는데요, 직무 교육과 인프라 교육의 두 가지로 구성되어 있습니다.

직무 교육

첫번째로 직무 교육 시간에는 카카오에서 개발 업무를 진행하기 위해 필요한 기본적인 지식과 공통 기술들을 배웁니다. 카카오의 현업 개발자와 전문 강사진들을 통해서 최신 웹 기술을 비롯해 Java/Spring 기반의 서버 기술, 데이터를 다루는 기술 등을 학습하게 됩니다. 또한 카카오의 대용량 데이터를 운영하면서 생기는 다양한 사례들과 그 해결 방법도 경험해 볼 수 있습니다.

인프라 교육

카카오톡이나 멜론과 같이 많은 사람이 이용하는 서비스를 개발하고 운영하기 위해서는 단순히 비즈니스 로직을 구현하는 것 이외에도 고려해야 할 사항들이 매우 많습니다. 이를 위해 카카오에서는 클라우드 플랫폼을 비롯하여 모니터링 도구, 분산 파일 시스템, 그리고 협업을 위한 도구 등 개발에 필요한 다양한 인프라 플랫폼을 제공하고 있습니다. 인프라 교육 시간에는 이러한 기술들이 어떤 배경으로 만들어지게 되었고 어떻게 발전해왔는지를 이해하고, 다양한 실습 과정을 통해 그 활용 방법을 익히게 됩니다. 또한 정보 보안의 중요성이 점점 커지고 있기 때문에 개발하고 운영하는 과정에서 발생할 수 있는 여러 가지 보안 이슈와 대처 방안에 대해서도 배우게 됩니다.

혼자 알기 아까운 정보들은 카카오의 사내 협업 도구인 ‘아지트’를 통해 공유합니다. 내가 알고 있는 지식을 공유하여 동료들에게 도움을 준다는 의미도 있지만, 스스로 배운 내용을 글로 정리하는 과정에서 지식을 좀 더 내 것으로 만드는 것에 더 큰 의미가 있을 겁니다.

프로젝트

3주간의 기술 교육이 끝나면 이제 팀 프로젝트를 진행합니다. 3~4명이 하나의 팀으로 구성되는데요, 그동안 배웠던 기술을 활용하여 원하는 주제의 서비스를 만드는 프로그램입니다. 올해는 1월 말에 프로젝트의 주제와 앞으로의 계획을 발표하고, 2월 말에 그동안 만든 결과물을 모두에게 공유하는 일정으로 진행되었습니다.

이 과정에서 가장 중요하게 생각하는 부분은 바로 ‘자기 주도성’과 ‘협업’입니다.

자기 주도성

프로젝트를 진행할 때는 기술 교육 기간에 학습했던 기술들을 적극적으로 활용하게 되고, 추가로 원하는 기술도 자유롭게 사용할 수 있습니다. 따라서 만들고자 하는 서비스의 특성에 맞게 다양한 기술을 실험해 볼 수 있습니다. 또한 자기 주도적으로 문제를 인지하고 이를 해결하는 방법을 찾을 수 있도록 주제에 대한 제안 또한 두지 않습니다. 주어진 문제를 기계적으로 해결하거나 단순히 코딩만 하는 것이 아니라 스스로 문제를 찾고, 그 해결 방법을 고민하고, 구현을 통해 그것을 검증하는 경험을 제공하기 위함입니다. 

처음에는 다들 막막해했지만, 팀원들과 이야기를 나누면서 각자 다양한 문제를 찾고 또 각자의 방법으로 이를 해결하는 모습을 보여 주었습니다. 한 달이라는 시간이 길지 않은 만큼 문제를 100% 해결하지 못할 수도 있습니다. 그렇지만 이 과정을 통해 겪은 시행착오 또한 현업에서 실무를 진행할 때 많은 도움이 될 수 있으리라 생각합니다.

협업

하나의 프로젝트는 혼자가 아닌 팀으로 진행됩니다. 따라서 각자의 역할을 나누고 협업을 하게 되지요. 대부분의 신입 개발자들이 혼자서 일한 경험이 많을 텐데요, 협업 과정을 통해 혼자가 아니라 여러 명이서 일할 때 더 좋은 아웃풋을 낼 수 있고, 서로를 통해 더 많이 성장할 수 있다는 것을 경험하게 됩니다. 조별로 협업을 위한 룰을 정하고 그것을 지키는 과정에서 회사에서 제공하는 가이드들이 왜 필요한지, 무엇이 좋은지도 알 수 있습니다. 뒤에서 자세히 언급하겠지만, 이러한 것들이 원활하게 동작할 수 있도록 하나의 프로젝트에는 여러 명의 멘토들이 다양한 방식으로 도움을 주게 됩니다.

모두들 웃고 있습니다. 협업은 이렇게 즐겁습니다.

카카오의 신입 개발자들은 신입다운 패기와 창의력을 발휘하여 다양한 주제의 프로젝트를 훌륭하게 진행해 주었습니다. 딥러닝 기반 추천기술을 적용한 브런치 앱, 스터디를 돕는 상호감시(?) 기반 스터디 앱, QR 코드로 도움이 필요한 대상의 정보를 편리하게 제공해주는 헬퍼 서비스 등 세상의 다양한 문제를 해결하려 했던 사례를 확인할 수 있었습니다. 카카오에는 사내 직원들 각자가 가진 책을 서로 검색하고 대여할 수 있는 시스템이 있는데요, 이를 챗봇 형태로 구현하여 사용성을 많이 개선하고 기능적으로도 보완한 프로젝트도 있었습니다. 잘 마무리 지어서 프로젝트를 위한 프로젝트로 끝나는 것이 아니라 앞으로 사내에서 계속 쓸 수 있는 좋은 사례가 되기를 기대합니다.

프로젝트를 진행하는 동안 각 팀은 각자의 목표를 세우고 이를 위한 준비를 합니다. 큰 목표를 달성하기 위한 세부 목표를 세우고 그것을 실행합니다. 스탠드업 미팅을 통해 매일 점검을 하고, 크고 작은 실패를 통해 중간중간 전략을 바꾸기도 합니다. 이 과정에서 우리는 많은 것들을 배우게 됩니다. 이렇게 하면 안 되는구나, 이 기술은 이 상황에서는 적절하지 않구나, 계획은 어디까지나 계획일 뿐이구나.. 등등 말이지요. 이렇게 얻은 경험과 시행착오는 앞으로 좋은 개발자로 성장하는데 많은 밑거름이 될 것입니다.

프로젝트를 위해 주어진 시간이 끝나고, 그동안의 결과물을 공유하는 시간을 가졌습니다. 안타깝게도 코로나19(COVID-19)의 영향으로 오프라인 행사를 진행할 수 없어서 대신 온라인으로 프로젝트 발표회를 진행했습니다. 어떤 분위기일지 걱정했지만 오히려 기존의 오프라인 행사와는 다른 색다른 분위기를 경험 수 있었습니다. 각자 편안한 환경에서 채팅으로 발표 중간중간 재미있는 피드백을 남기면서 말이지요. 신입 개발자들은 각자 조 별로 다져진 끈끈한 조직력을 바탕으로 프로젝트 결과물을 발표하고, 그간의 작업 과정을 공유해 주었습니다. 이러한 행사는 각자가 겪은 경험뿐만 아니라 이렇게 다른 멤버들이 배웠던 경험도 간접적으로 배울 수 있는 좋은 기회가 되기도 합니다. 70명이 넘는 인원이 동시에 참여하였지만, 이미 수십 년간 디지털 세상을 경험해 온 우리들은 ‘디지털 네이티브’ 답게 온라인 발표 행사도 잘 마무리할 수 있었습니다.

이 프로젝트들과 함께 카카오 개발자로서의 삶이 시작되었습니다.

멘토링

이러한 일들을 온전히 신입 개발자들의 힘만으로 이루어내기는 쉽지 않습니다. 가능하다고 해도 시간이 오래 걸리거나 적절하지 않은 방법을 택할 수도 있지요. 어떤 분야든 학습 과정에서 이를 적절히 이끌어주고 피드백을 주는 사람이 필요합니다. 이를 위해서 온보딩 과정 동안 다양한 연차와 직무를 가진 현업 개발자들이 멘토로 활동해 주셨습니다.

멘토들은 프로젝트 진행과 관련하여 기술적인 조언을 제공하고, 카카오의 개발 문화나 회사 생활과 관련해서도 크고 작은 질문들에 답하며 신입 개발자들의 적응을 돕습니다. 한편으로는 새로운 멤버들이 열정적으로 일하는 모습을 지켜보면서 긍정적인 에너지를 얻기도 합니다.

신입 개발자들은 멘토들의 코드 리뷰를 통해 본인의 아웃풋에 대한 실질적인 피드백을 받으며 코딩 실력을 향상시켜 갑니다. 프로젝트 구조나 에러 처리 등 세부적인 구현 요소에 대해서 조언을 얻기도 하고요. 장애가 발생했을 때의 경험이나 부서의 분위기 등 실무자가 아니면 알려 줄 수 없는 정보들도 들을 수 있습니다. 최종 발표가 끝나고 회고 과정에서 동료들과 멘토들에 대한 훈훈한 피드백을 많이 확인할 수 있었습니다. 그중 하나만 소개드릴게요.

이름만큼이나 열정적인 멘토링! 이를 통해 신입개발자도 멘토도 함께 성장합니다.

각자의 길로

두 달간의 온보딩 과정이 끝났습니다. 카카오의 신입 개발자들은 선호하는 기술과 서비스를 고려하여 다양한 실무 부서에서 일하게 되었습니다. 누군가는 백엔드 개발자가 되어 카카오톡의 서버 개발을 책임지게 되었고, 또 누군가는 멜론의 음악과 영상 재생을 개발하는 안드로이드 개발자가 되었습니다. 학교에서 배운 전공을 살려 데이터 사이언티스트로의 첫발을 디디게 된 분도 있고요. 온보딩 과정을 통해서 개발자로서 일할 준비를 잘 마칠 수 있었으면 좋겠습니다. 앞으로 각자가 가진 역량을 잘 발휘하고 좋은 동료들과 협업하면서 세상에 없던 좋은 가치를 만들어내는 주인공이 되기를 바랍니다.

어제보다 더 나은 세상을 꿈꾸는 카카오. 신입 개발자들도 이제 그 꿈에 동참합니다.

마지막으로

많은 회사가 새로 입사한 멤버들을 위한 온보딩 프로그램을 운영하고 있습니다. 각자의 규모나 서비스, 필요한 기술, 도메인에 따라 적절한 방식을 택하고 있을 것입니다. 또한 시간이 흐름에 따라 회사에서 필요로 하는 기술들도 변하고 중요하게 생각하는 가치도 달라질 테구요. 카카오 역시 이런 다양한 관점에서 고민하며 카카오에 가장 적합한 온보딩 방식을 찾아가고 있습니다. 특정 개개인의 역량에 의지하는 것이 아니라 열린 마음으로 많은 사람과 소통하며, 가능한 많이 시도하고 실패를 통해 배우고 발전하는 카카오의 방식으로 말이지요.

앞으로 예비 개발자분들과 함께 일할 수 있는 기회가 많이 생기면 좋겠습니다.


카카오의 신입 개발자 온보딩 과정


noah.yang
noah.yang 카카오의 개발자들이 좀 더 즐겁게 일하면서 더 좋은 성과를 낼 수 있는 방법을 고민하고 있습니다.
Top Tag
2021
2021-new-krew
adaptive-hash-index
adt
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
android
angular
anycast
applicative
Architecture
arena
async
aurora
Backend
bgp
ble
blind-recruitment
block
blockchain
bluetooth
brian
cahtbot
cd
ceph
certificate
certification
cgroup
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
competition
component
conference
consul
container
contents
contest
couchbase
COVID-19
cpp
Data
DB
deep-learning
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
go
graphdb
graphql
growth
ha
hadoop
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
json
kafka
kakao
kakao-commerce
kakao-games
kakaoarena
kakaocon
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KCDC
khaiii
kubernetes
l3dsr
l4
links
load-balancing
machine-learning
marathon
meetup
melon
mesos
Messaging
microservice
mobil
monad
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
open
opensource
openstack
OpenWork
page
parallel
PBA
planning poker
programming-contest
pycon
python
quagga
react
reactive-programming
reactor
recommendation
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
support
System
talk
talkchannel
tcp
tech
test
Thread-Debugging
time-wait
tmux
typescript
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly
All Tag
2021
2021-new-krew
adaptive-hash-index
adt
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
android
angular
anycast
applicative
Architecture
arena
async
aurora
Backend
bgp
ble
blind-recruitment
block
blockchain
bluetooth
brian
cahtbot
cd
ceph
certificate
certification
cgroup
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
competition
component
conference
consul
container
contents
contest
couchbase
COVID-19
cpp
Data
DB
deep-learning
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
go
graphdb
graphql
growth
ha
hadoop
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
json
kafka
kakao
kakao-commerce
kakao-games
kakaoarena
kakaocon
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KCDC
khaiii
kubernetes
l3dsr
l4
links
load-balancing
machine-learning
marathon
meetup
melon
mesos
Messaging
microservice
mobil
monad
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
open
opensource
openstack
OpenWork
page
parallel
PBA
planning poker
programming-contest
pycon
python
quagga
react
reactive-programming
reactor
recommendation
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
support
System
talk
talkchannel
tcp
tech
test
Thread-Debugging
time-wait
tmux
typescript
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly

위로