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


안녕하세요. 저는 멜론상품개발셀의 Bob(밥)입니다. 작년 신입 공채로 입사하여 어느덧 만 1년이 지났네요. 2019년도 입사할 때부터 지금까지 카카오의 서버 개발자로 1년간 배우고 느꼈던 저의 경험에 대해 이야기해보려 합니다.


입사 전 – 2018년 12월

당시 카카오에서는 신입 공채로 입사할 예정인 신입 개발자들을 대상으로 해커톤을 진행했었는데요, 주제는 챗봇 오픈빌더를 활용하여 일상 생활에 필요한 챗봇을 만드는 것이었습니다.

그런데 입사 전 저의 상황은 이러했습니다.

* 웹개발 경험은 고작 수업 하나(웹 프로그래밍 수업)
* 서버 to 서버 통신은 해본 적도 없음
* 졸업작품은 임베디드
* 회사 경험 0

이렇게 서버 개발 경험도 없고 해당 해커톤(챗봇 개발)과 무관한 공부를 해왔던 저는 행사 당일에 무엇을 했을까요?

좌절중…

당연히 할 줄 아는게 없었기 때문에 그냥 스마트폰만 쳐다보며 해커톤이 끝나기만을 기다렸습니다.

그야말로 멘붕 상태

당시에 저는 이런 생각까지 했어요.

* 내가 왜 뽑혔을까? 난 아는게 없는데..
* 카카오에 잘 적응할 수 있을까? 신입이라 적응하기 힘들 것 같은데..

이렇게 걱정스러운 마음 반, 혼란스러운 마음 반을 갖고 2019년 1월 2일, 저는 카카오에 입사하게 됩니다.


입사 그리고 온보딩 프로그램(1월)

다행스럽게도(?) 저의 걱정과는 달리 바로 실제 업무를 수행하게 되지는 않았습니다.
카카오에는 카카오 크루들이 잘 적응 할 수 있게 해주는 ‘온보딩 프로그램’ 이 있었습니다. 공채 신입 개발자의 경우에는 무려 2달 간의 온보딩 과정이 진행되는데요, 온보딩 프로그램의 첫 2주 동안에는 카카오가 어떤 곳인지 이해하고 카카오 크루로써 알아야할 카카오의 문화와 업무 방식 등을 학습하면서 회사에 적응할 수 있는 시간을 가지게 됩니다.

카카오의 협업 도구로 사용되는 ‘아지트’ 에 자기소개 글도 남겨 보았구요.

카카오의 공동대표이신 ‘메이슨’ 과 ‘션’ 도 만나뵐 수 있었습니다.

온보딩 프로그램 2주차에는 제주도 본사에서 교육 및 오피스 투어가 진행되었는데요, 이 사진을 보니 맑고 푸른 제주 바다를 보면서 당시 저의 혼란스럽고 걱정스러운 마음을 잠깐이나마 잊을 수 있었던 기억이 떠오르는군요.

온보딩 프로그램 기간 동안 저와 같이 카카오에 입사한 동기들과 많은 얘기를 나누었는데요, 이때 느낀 점이 하나 있었습니다. 바로 제가 입사 시점에 느꼈던 ‘혼란스러움과 걱정’ 이 저만의 것이 아니었다는 것이었어요. 누군가는 전공이 컴퓨터 공학이 아니어서, 누군가는 나이가 많아서, 또한 누군가는 저처럼 웹 개발 경험이 없어서 저와 비슷한 고민을 하고 있었던 것이었죠.

이러한 혼란과 걱정이 나 혼자만의 감정이 아닌 것을 알게 된 저는 마음가짐을 바꾸기로 합니다.

“성장할 수 있는 카카오에서, 성장하는 개발자가 되자”


온보딩 프로젝트(2월)

카카오 크루로써 알아야할 기본적인 것들을 익히고 난 뒤에는 2월 한달간 3-4명으로 구성된 조원들과 함께 프로젝트를 진행했습니다. 우리 조의 프로젝트 주제는 ‘사내 인프라를 이용한 안드로이드 애플리케이션 개발’ 이었습니다.

저는 프로젝트 조에서 백엔드 개발을 맡게 되었는데요, 처음으로 백엔드를 개발하는 프로젝트였던 만큼 이 프로젝트는 제게 좋은 성장의 기회가 될 것이라고 생각했습니다. 그래서 코딩테스트 때 잠깐 봤던 REST API, 그리고 백엔드에서 사용하는 스프링과 자바를 집중적으로 공부하기로 했습니다.

단순히 혼자 공부만 한 것은 아니었구요, 본격적으로 프로젝트가 진행되면서부터는 같은 조원들과 회의도 진행하고, 필요하면 멘토분의 조언를 구하기도 했습니다. 회의에서 나온 내용을 사내 위키에 정리도 해보았구요. (위 사진을 다시 보니 AS-IS 와 TO-BE 정리도 했었네요. 뿌듯)

중간 중간 개발을 하다가 생기는 문제점도 정리를 해보았습니다. (참고로 위 사진에 나오는 앤드류도 저와 같은 고민을 하고 있었습니다. 서버 개발 경험이 없는데 어떻하지..)

이 동영상은 저희가 만들었던 ‘막차알림이 – 커소본능’ 입니다(with Andrew, Dorothy, Joah)

프로젝트를 진행하는 약 6주의 기간은 서버 개발 경험이 없던 저로서는 어렵기만한 도전이였습니다. 그렇지만 열심히 공부하고, 고민하고, 노력한 끝에 꽤 의미있는 결과물을 내면서 프로젝트를 마칠 수 있었구요, 이 과정에서 보람도 많이 느끼고 자신감도 생기게 되었습니다. 1년 전 많은 시간을 함께 했던 동기들, 그리고 힘들었지만 즐거웠던 시간들이 그립기도 하네요.


부서 배치 – 적응 기간(3월 ~ 6월)

두 달 간의 온보딩이 끝나고 난 후, 드디어 부서 배치를 받게 됩니다. 배치된 부서에서도 처음 입사한 뒤 온보딩 프로그램 때와 마찬가지로 적응의 시간이 필요했습니다.

3월부터 약 2달 정도는 팀에 기여할 수 있는 개발자로 성장하기 위해 스터디를 통해 부족한 부분을 채워나갔습니다. 팀에서 스프링과 자바를 사용하고 있어서 프로젝트 때와 마찬가지로 해당 기술에 대한 공부를 업무와 병행하였고, 최근 팀에 도입하기로 결정한 도커에 대해서도 집중적으로 공부하였습니다.

이렇게 기술을 학습하는 것 이외에도, 팀원들이 직접 업무와 관련한 지식이나 경험을 설명해 주셨던 시간도 많은 도움이 되었습니다. 그리고 카카오 내외에서 진행되는 다양한 기술 교육을 통해서 최신 기술이나 트렌드를 익히기도 했구요. 이러한 과정을 통해서 배웠던 내용은 다른 개발자들에게도 도움이 될 수 있도록 사내 위키에 정리하였습니다. (위 사진 참고)

그리고 5월부터 두 달간은 팀에서 사용하거나 팀원들에게 도움이 되는 간단한 토이 프로젝트를 진행하게 되었습니다.

위 사진에서 보시는 것 처럼 그 기간동안에는 어드민의 로그인 페이지 개발이나 배치 스케줄링용 젠킨스를 새로 구성하는 등 비교적 간단하지만 꼭 필요한 기능들을 구현하였습니다.

이러한 업무를 진행하면서 젠킨스나 코틀린, 쿠버네티스 등 향후 제가 팀의 업무를 진행할 때 필요한 기술들도 함께 익혀나갔습니다.


첫 상용 프로젝트(7~12월)

그렇게 7월이 되었고, 저는 첫 상용 서비스 개발 프로젝트를 맡게 됩니다.

그 프로젝트는 당시 첫 업데이트 예정이었던 카카오콘과 멜론 정기결제 연동이었습니다. 당연히 저 혼자 진행할 수는 없었구요, 당시 팀의 시니어 개발자인 재스퍼와 함께 프로젝트를 진행하게 됩니다.

이 프로젝트를 진행하면서 만들었던 Jira 태스크들입니다. 핵심 API 의 개발은 재스퍼가 맡았고, 저는 API 를 사용할 수 있는 모듈을 개발하고 해당 모듈을 멜론 서비스에 적용하는 역할을 맡았습니다.

그리고 제가 작성한 코드는 항상 재스퍼가 코드 리뷰를 해주셨는데요, 궁금한 내용이나 헷갈리는 점들을 잘 짚어 주셨고, 때로는 필요한 레퍼런스를 찾아주시기도 했습니다. 학생 때는 알 수 없었던 많은 것들을 알게 되었구요, 특히 혼자 개발하는 동안에는 알 수 없었던 나의 실수들을 코드 리뷰를 통해 많이 개선할 수 있었습니다.

그렇게 두 달 동안 프로젝트를 위해 쉼없이 달리고 보니 어느덧 오픈 일자가 다가왔고, 정기결제를 하면 카카오콘을 받을 수 있는 프로젝트는 무사히 오픈하게 되었습니다. 나의 첫 배포. 잘 돌아갈까, 혹시나 장애가 나면 어떻할까, 떨리고 걱정하던 그 순간. 그리고 문제 없이 배포됐다는 걸 알게 되었을 때의 그 안도감과 성취감 등 그때의 감정들이 아직도 생생합니다.

오픈 초기에는 함께 개발한 재스퍼와 같이 운영을 하였고, 10월부터는 혼자 운영을 담당하게 됩니다.

그리고 약 두 달 후인 12월 31일을 마지막으로 정기결제 카카오콘 지급이 성공적(?)으로 진행되고, 저의 첫 프로젝트는 이렇게 마무리 됩니다.


마치며

누군가는 제가 1년 간 크게 한 일이 없다고 할 수도 있을 것 같습니다. 실제로도 어려운 기술이 아니였고, 힘들게 개발을 하진 않았으니까요. 하지만 적어도 저 스스로에게는 크게 성장한 1년이었다고 생각합니다.

특히 1년 전으로 돌아가서 저기 앉아있는 주눅든 저에게, 제가 지난 1년 동안 한 것을 자신 있게 자랑할 수 있을 것 같아요. 결론적으로, 제가 저 자신에게 하고 싶은 말은 이겁니다.

“겪어보지도 못한 것에 대해 큰 걱정을 하지말자.
나는 생각보다 더 잘 적응하고 성장할 수 있는 사람이다.”

이 글을 읽는 분들 중 저와 비슷한 고민을 하고 계신 분들께도 위와 같은 이야기를 전해드리고 싶습니다. 긴 글 읽어주셔서 감사합니다.

함께 해요!

bob full
bob full 멜론상품개발셀에서 일하는, 밥을 좋아하는 밥입니다.
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

위로