백엔드 개발자 인터뷰
새로운 걸 받아들일 수 있는 자세가 ‘더’ 중요합니다. [개발자 인터뷰]
백엔드 스쿨이 만난 사람들 #4
넥슨 백엔드 개발자 최효석님
8분 분량
<백엔드 스쿨이 만난 사람들> 인터뷰는 현직에 계신 개발자의 이야기를 통해 개발자 취준생에게 인사이트를 드리고자 만든 콘텐츠입니다.
성장하는 개발자, 더 좋은 개발자가 되기 위한 개발자의 이야기를 확인해 보세요.
01 프로게이머에서 밴드 드러머, 그리고 넥슨 개발자가 되기까지
안녕하세요 효석님. 간단하게 자기 소개 부탁드릴게요~
반갑습니다. 저는 넥슨코리아 인텔리전스랩스 미디어 개발팀에서 백엔드 개발자로 일하고 있는 최효석입니다. 10대 때는 프로게이머로 활동했고, 20대에는 밴드 ‘스트레이’의 드러머 활동을 하였습니다. 이러한 다양한 경험 이후 개발자로 전향하게 되었고, 지금은 개발자로서의 경력을 열심히 쌓아가고 있습니다. 현재까지 경력은 2년 반 정도 되었고, 어제보다 더 나은 개발자가 되고자 노력하면서 얻은 저의 경험들을 인터뷰를 통해 공유하고자 합니다 :)
프로게이머에서 밴드 드러머까지! 정말 특이한 이력을 가지고 계시네요.
갑자기 개발자로 이직을 결심하시게 된 계기가 궁금해요!
음악 분야에서 연주자로 성공하기 위해서는 ‘상위 1%’에 들어야 순수하게 그 목표를 달성할 수 있다고 생각했는데요. 반면 개발자의 경우 제가 컴퓨터를 좋아하기도 했고, 내가 지금 당장 최고가 되지 않아도 계속 성장하면서 금전적인 보상을 받을 수 있는 건강한 환경이라고 생각했어요. 저는 ‘최고가 되려는 마음’보다 ‘어제보다 더 나은 내가 되려는 마음’이 더 중요하다고 생각하는데요. 개발자들의 생태계는 이러한 가치관에 맞는 선순환의 생태계가 형성되어 있는 것 같아서 개발을 시작하게 되었습니다.
제가 만난 다른 개발자 분들도 지속적인 성장을 원해서 개발을 시작하는 분들이 많더라고요~
그럼 비전공자로서 개발 공부는 어떻게 시작하셨는지 들어볼 수 있을까요?
저는 국비교육을 통해 코딩을 시작했어요. 처음에는 6개월 간 배워보고 재밌으면 전문적으로 해보자는 생각으로 시작했죠. 몇 달 뒤 하루에 15시간을 해도 여전히 재미있더라고요. 끊임없이 성장하려는 사람이 많고 서로의 경험과 기술을 공유하는 개발자 문화에 매력을 느껴, 결국 이 길을 선택하게 되었습니다.
이건 저의 첫 코딩 수업에서 만든 결과물인데요. 강사님이 'Hello World'를 출력하라고 하셨는데, 저는 좀 더 재밌게 해보려고 이렇게 캐릭터를 그려보았어요. 비록 하드 코딩이었지만, 처음 접한 코딩의 모든 것이 흥미로웠었죠!
처음 공부를 했던 방법에 대해 더 자세히 설명해주실 수 있나요?
처음에는 커리큘럼의 메인 언어인 Java를 이해하려고 노력했어요. 학원 강의에만 의존하지 않았고 새로운 챕터를 나가기 전에는 항상 미리 공부를 해뒀어요. 그리고 각 챕터마다 가장 효과적인 학습 방법이 있을 것이라고 생각하여, 다양한 강의, 책, 블로그를 찾아가며 꼼꼼히 학습하는 것을 추구했어요. 재미있는 점은, 실제로 각 챕터마다 제게 효과적인 학습 수단이 달랐다는 점입니다. 이러한 방식으로 학습한 결과, A 강의에서 부족한 부분은 B 강의에서 보완하고, 둘 다 설명되지 않은 내용은 블로그나 책에서 찾아 학습할 수 있었습니다.
그리고 문제를 풀 때는 며칠 동안 고민하더라도, 힌트나 검색 없이 풀려고 노력했어요. 처음 배우는 만큼 코딩에 필요한 사고력이 부족했다고 생각했거든요. 저는 팔굽혀 펴기를 0개에서 1개를 해내는 과정이 19개에서 20개를 하는 과정보다 훨씬 더 어렵다고 생각해요. 코딩 사고에 필요한 근육을 만들 때도 마찬가지라고 생각하고 임했죠.
답을 안 보고 공부하면 시간이 더 오래 걸렸을 것 같은데, 그렇지는 않으셨나요?
초반에는 시간이 정말 오래 걸렸는데, 이건 정말 초반의 얘기고요. 실무의 경우에는 답을 찾아보기도 합니다ㅎㅎ 빨리 확인해야 할 상황이 있거나 빠르게 결과를 만들어내야 하면 그런 상황에는 검색해서 빠르게 진행하고 있어요.
하지만 배우는 과정에서는 결과를 빨리 확인하는 것보다 근육을 키우는 것이 중요하다고 생각해요. 결과를 검색하고 코드를 복붙하는 것 혹은 다른 사람이 작성한 코드를 찾아 빠르게 이해하려고 하는 것보다 프로그래밍적인 사고를 발전시키는 게 더 중요하기 때문에, 제가 직접 시행착오를 겪어가면서 이해하는게 더 저의 근육을 발달시킬 수 있다고 생각해 답을 안 보고 문제를 해결하려고 했었습니다.
이 방식으로 공부하면서 힘들 때 이겨낸 방법도 따로 있었을 것 같은데, 어땠나요?
정말 오랫동안 해결할 수 없는 문제가 있다면 저 나름대로 선을 정하긴 했어요. ‘진짜 이 정도면 검색해도 되겠다’, ‘이건 내 사고로 찾을 수 없다’, 예를 들어 3일 정도 고민해서 교재에 있는 문제나 코딩테스트를 푸는데 안 풀리면 그땐 결과를 찾아봤어요.
제가 예상할 수 있는 경우의 수로 해봤는데도 안 되면 그때 비로소 어떻게 해야 하나 찾아봤죠. 그 다음에 충격을 한 번 받고 ‘아, 이렇게 할 수 있구나!’ 이걸 바탕으로 학습이 되었죠.
만약 3일 동안 고민하는 고생을 안 했다면 충격이 아니었을 수도 있어요. 그래서 제가 힘들 때 이겨낸 방법이 검색이었다고 볼 수 있겠네요.ㅎㅎ
이직을 하며 넥슨 개발자가 되기까지, 정말 진득한 공부 방법이 아닐 수 없네요!
그럼 현재 근무하고 계신 넥슨에서의 주 업무에 대해 소개해주실 수 있으실까요?
저는 현재 넥슨에서 광고와 비광고, 그리고 사내 알림 등을 포함하는 모든 문자, 이메일 등의 메시지 발송 및 관리 시스템들의 개발과 운영을 담당하고 있어요. 트래픽 변동 폭이 큰 시스템들이에요. 광고 메일의 경우에는 약 800만 건을 발송해야 하고, 프로모션 기간이 겹치거나 신규 게임이 오픈될 때에는 시스템이 평소보다 더 높은 처리량을 가집니다.
모두가 아는 유명한 게임 회사이다 보니 접속량이 큰 이벤트 때에는
서버가 터지는 등의 에러가 발생할 수도 있을 것 같은데요.
이와 관련해서 최근 기억에 남는 에피소드가 있는지 궁금해요!
일단 두 가지가 기억나는데요. 첫 번째는 얼마 전 서버에 디도스 공격으로 인해 맡고 있던 레거시 시스템의 서버가 다운되는 일이 있었어요. 알림을 받을 때가 밤 12시쯤이었는데 사수분께 전화를 걸어 깨우고 인프라 담당자분들과 함께 작업해 문제를 해결할 수 있었습니다.
두 번째는 저희 시스템을 통해 인증 문자를 발송하는 모바일 게임 인증 기능의 오픈이었어요. 오픈 날 긴장하며 대기하고 있었는데, 다행히도 문제없이 잘 지나갔던 기억이 있네요.
디도스 공격이라니!
서버가 다운되는 등 예상치 못한 경우가 있으면 정말 긴장될 것 같은데 효석님은 어떠셨나요?
여행을 가거나 자고 있거나, 지인들과 술한잔 하고 있었다면 에러가 발생할 때 빠르게 대응하지 못했을텐데 집에서 빠르게 대응할 수 있어 다행이라고 생각했어요. 하하하.
대응하는 방법에 대해서는 이미 알고 있었기 때문에 엄청나게 당황하지는 않았고, 관련 담당자분들에게 연락을 돌리고 빠르게 조치해야겠다는 생각밖에 없었어요. 그 뒤로는 거의 매일 어딜 다닐 때마다 노트북을 가지고 다닙니다.
반드시 노트북을 들고 다니는 건 일종의 직업병이라고도 볼 수 있겠네요?
네. 서비스를 운영하고 있다면 자연스럽게 그렇게 되는 것 같아요.
이렇게 늘 노트북을 들고 다녀야 할 수도 있겠지만 반대로 넥슨의 장점도 많을 것 같아요.
회사의 장점을 꼽자면 어떤 것이 있나요?
회사의 가장 큰 장점은 다양한 복지라고 생각해요. 연 250만 원 복지 포인트, 사내 어린이집, 어학 교육 지원, 스터디 활동비 지원, 다양한 동호회비 지원, 비포괄임금제, 넥슨 다방, 셔틀버스, 구내식당, 쾌적한 헬스장 등 너무 많아요. 이런 복지들 덕분에 일과 삶의 균형을 잘 유지하면서 업무에 집중할 수 있는 환경을 가질 수 있다고 생각해요. 다 말씀드리지 못했지만 특정 회사 상품에 대한 직원 할인, 심리 상담 등 그 외에도 제가 다 경험해보지 못한 수많은 복지가 있습니다.
와~ 같은 직장인으로서 탐나는 복지들이 정말 많아 보여요!
그럼 효석님이 커리어를 쌓아 넥슨으로 이직 또는 취업을 준비했던 비결을 들어볼 수 있을까요?
저는 나쁜 습관을 들이지 않으려고 노력했어요. 그리고 시니어 개발자분들의 코드를 읽고 분석하려고 노력한 것이에요. 경험이 짧은 주니어는 사고할 수 있는 범위가 한정되고 내 습관이 잘못된 건지도 모른 채 개발할 수도 있다고 생각해요. 반면 시니어분들은 오랜 경력과 경험을 가지고 있기 때문에 이분들이 당연하다고 여기는 것들이 주니어로서는 배울 점이 될 수 있다고 생각해요.
다만 '나도 무조건 따라 해야지'라는 마음으로 접근하는 것 보다는 '이렇게 구현하신 이유가 있을 텐데?'라는 생각으로 접근하며 코드를 읽었습니다. 무작정 질문부터 하지 않고 스스로 최대한 이유를 찾은 후 ‘~이유로 이렇게 하신 건가요?’ 하며 질문했어요. 이러한 노력 덕분에 많은 성장을 이룰 수 있었고, 넥슨코리아에 입사했을 때 좋은 코딩 습관을 갖고 있다는 이야기를 들을 수 있었습니다.
그럼 처음 언급해주신 ‘나쁜 습관’이라는 게 어떤 건지도 궁금해요.
가장 나쁜 습관은 ‘나 자신을 의심하지 않는 것’이라고 생각해요. 무언가를 받아들일 때 비판적 사고, 예를 들어 ‘이 기술을 공부해야 하는 이유가 뭘까?’, ‘이 코드는 왜 이렇게 동작할까?’, ‘이렇게 코드를 구성했는데 더 좋은 방법은 없을까?’ 등의 질문을 나 자신에게 던지는 거예요. 그렇지 않고 당연하게 받아들이고 에러가 발생했을 경우 나쁜 습관 때문에 에러 발생 지점 또한 꼼꼼히 찾지 않고 넘어가 버릴 수 있다고 생각하거든요.
개발자는 문제를 해결하기 위해 있는 사람이에요. 모든 부분에서 빈틈없는 것은 굉장히 어려운 일이지만 최대한 이유 있는 액션이 나왔으면 좋겠다는 생각을 가지고 있어요. 그렇기 때문에 시니어분들이 어떤 생각을 하시는지 관심을 가졌던 거였어요. 만약 그런 관심을 가지지 않았다면 시니어가 봤을 때는 이건 꼭 짚고 넘어가야 하는 부분인데 ‘그냥 저는 구글 찾아보니까 이렇게 되어 있어서 했어요’ 라고 당연하게 받아들였을 수도 있잖아요. 끊임없이 내 판단을 의심하는 건 좋은 습관인 것 같아요.
02 개발자 취업에 대해 듣다
효석님이 보기에 현재 개발자 취업 시장은 어떤 것 같나요?
만약 지금 다시 신입 개발자 취업 준비를 한다면 어느 부분에 시간을 더 투자하실 건가요?
확실히 채용 공고가 과거에 비해 많이 줄어든 것 같아요. 신입의 경우 첫 회사가 유명 IT 회사라면 물론 좋겠지만, 이를 위해 실무 경험을 늦추는 것은 큰 리스크라고 생각해요. 팀 프로젝트를 더 해보거나 채용 공고에서 요구하는 기술을 습득하는 것도 중요하지만, 실무에서의 경험들이 개발자의 성장에 훨씬 도움이 된다고 생각해요. 당연히 내가 성장할 수 있는 환경을 갖춘 회사인지, 개발 문화가 어떤지 확인하는 것도 중요하죠. 이건 많은 경험을 가져봐야 알 수 있는 부분인 것 같아요.
효석님 말처럼 빠른 실무 경험이 중요하긴 한데,
만약 회사에서 뽑지 않는다면 실무 경험을 어떻게 채워볼 수 있을까요?
취준생이 혼자서 100% 실무에 준하는 경험을 채운다는 것은 쉽지 않아요. 왜냐면 진짜 실무에서는 내가 만든 소프트웨어의 사용자가 있고 여러 유관부서들과 의사소통을 하는 다양한 상황들이 존재 하는데, 취업을 위한 프로젝트로는 그게 잘 이루어지지 않는 게 당연하죠.
보통 취업 준비를 위해 프로젝트를 만들면 포트폴리오에 링크만 걸어놓고 ‘제가 만든겁니다’하고 끝내거든요. 그런데 거기서 끝내는 게 아니라 최대한 사용자가 발생될 수 있는 그런 상황을 가정해보고 만들어 보는 거죠. 사용자가 실제로 관심을 가지고 방문할 수 있을 정도의 무언가를 만든다는 게 어떻게 보면 개발자 만의 역량이 아니라 기획력도 필요한 부분인데요. 사람들이 내가 만든 웹사이트나 앱을 사용해본다라는 생각 자체가 개발 외의 영역도 필요한 부분이기 때문에 실천하기가 쉽지 않을 수는 있어요.
그래서 저는 최대한 제가 할 수 있는 상황에서 상상력을 동원하는 편이에요. ‘내가 만든 게 1초에 5만 명씩 접속하려면 어떻게 해야 하지?’ 이런 상상도 해보고, ‘현재 상태에서 추가 메뉴가 생겨야 한다면 얼마나 코드 수정이 필요할까?’, ‘지금 이 추가 기능을 위해 코드를 수정하면 다른 코드에도 영향을 끼칠까?’와 같은 생각들을 해보는 거예요. 확장성을 고려하는 것이 모든 상황에서 이상적인 것은 아니지만 상상력은 확장성을 고려한 설계에 도움이 된다고 생각해요.
그리고 실제 사용자가 없더라도 진짜 사용자가 언제든 들어올 수 있도록 구성을 한다든지 해볼 수도 있죠. 요즘에는 AWS에다가 바로 서버도 올리고 화면도 올릴 수 있기 때문에 본인의 프로젝트를 어필하기 훨씬 쉬워졌다고 생각하거든요. 팀 프로젝트든 개인 프로젝트든 실제로 AWS 환경에 올려서 마치 진짜 사용자가 언제든지 들어와도 돌아가게끔 구성을 해두는거죠. 거기다가 상상력을 발휘해서 나중에 확장 또는 트래픽이 많아질 것을 고려해서 아키텍처도 설계 해보고 그런 것들이 중요하다고 봅니다.
마지막으로 당연한 내용이지만 기본기가 가장 중요합니다. 언어나 프레임워크에 대한 이해가 없는 코드로 그런 구성을 했다면 면접관들이 오히려 안 좋게 볼 수 있기 때문에 내가 지금 작성하는 이 코드 자체가 기본기가 뒷받침 되고 있는가 체크를 한 다음에 구성하는 게 더 좋을 것 같아요.
기본기를 말씀해주셨는데, 백엔드 개발자가 되기 위해 가장 먼저 어떤 것을 공부하면 좋을까요?
가장 먼저 동작하는 코드를 작성할 줄 아는 것이 가장 중요하다고 생각해요. 별 그리기, 학점 계산기와 같은 작은 콘솔 애플리케이션부터 시작해보세요. 중요한 것은 일단 동작하는 코드이며, 초기에는 코드가 스파게티 코드일지라도 걱정하지 마세요. 점진적으로 코드를 개선해 나갈 수 있습니다. 이는 마치 근육을 키우는 것과 비슷한 과정이에요. 처음에는 작은 규모의 프로젝트로 시작해서 동작하는 코드를 작성해 조금씩 규모가 큰 프로젝트를 해보는 거예요.
다음으로는 작성한 코드를 개선하는 방법에 대해 고민해보는 과정이 필요해요.실무에서는 코드가 작성되는 시간보다 코드가 동작하고 읽히는 시간이 더 많다고 생각하거든요. 개발자가 회사에서 작성하는 코드는 나의 소유물이 아니라 회사의 재산이어야 해요. 언젠가는 다른 개발자가 나의 프로젝트를 맡을 수도 있기 때문에 누구나 잘 이해할 수 있는 코드를 지향하는 것이 중요합니다. 그러는 과정에서 막히는 부분이 있다면 책을 읽거나 문서를 찾아보는 것도 좋은 방법이에요.
위에 말씀드린 과정이 기쁘고 즐겁다면 개발자로서의 자질을 갖춘 것이라고 생각해요. 그 다음으로는 취업에서 승부를 가를 수 있는 CS 기초 지식, 알고리즘, 포트폴리오 등을 준비해 더욱 전문적인 개발자로 성장하는 것입니다.
또 신입 개발자에게 필요한 역량이나 가지면 좋을 경험 같은 것들이 있을까요?
신입 개발자가 되기 위해 필요한 역량은 ‘성장하려는 자세’를 가진 사람임을 증명하는 것이라고 생각해요. 개발자로 일을 시작하는 것은 ‘진짜 공부의 시작’을 의미합니다. 앞으로 마주할 문제를 끊임없는 학습을 통해 해결해 나가야 하거든요. 경력자여도 끊임없는 학습은 마찬가지이기 때문에 경력자들과 함께 문제를 해결해 나갈 사람이 되려면 성장하려는 자세를 가진 사람임을 증명하는 것이 중요하다고 생각합니다.
제 취준생 시절을 얘기해볼게요. 저는 팀 프로젝트를 시작할 때 초기 데이터를 어떻게 쉽게 확보할 수 있을까 고민을 했어요. 크롤링이란 것을 알게 되고 며칠 동안 프로젝트와 크롤링 학습을 병행해 800여 건의 초기 데이터를 확보했어요. 당시엔 일주일 통틀어 수면시간이 10시간도 되지 않았던 것 같아요.
여기서 ‘크롤링 했다’만 생각한다면 작은 것일 수 있지만 현재보다 더 나은 상황이 무엇인지를 스스로 고민하는 과정에서 ‘크롤링’이 무엇인지도 모르던 제가 크롤링이란 것을 알게 되고, 이를 학습해 결과물까지 만들었다는 점을 어필할 수 있었어요.
종합해본다면 어제보다 더 나은 개발자가 되려고 끊임없이 노력하는 경험, 스스로 문제를 정의하고 해결하는 경험, 숙련자의 철학과 의견에 귀를 기울이고 ‘왜?’라고 생각하며 받아들이는 경험을 갖는 것이 중요하다고 생각해요. 취준생이고 주변에 숙련자가 없다면 책이나 세미나 등을 통해 숙련자의 생각을 읽을 수 있을 거예요.
신입 개발자 뿐만 아니라 주니어 개발자가 알고 있어도 좋을 자세인 것 같아요!
또 다양한 에피소드를 미리 알고 있으면 더 좋은 경험이 될 것 같은데,
효석님이 개발을 하면서 오류를 대처하는 방법이나 자주 발생하는 오류 때문에 일어난 에피소드가 있을까요?
세 가지가 생각났어요. 첫 번째는 실패할 수 있는 환경에서 직접 경험하고 배우는 것이라고 생각해요. 넥슨이 아닌 다른 회사에서 신입 때 있었던 일이에요. 프로토타입으로 개발한 서버를 배포하기 위해 AWS 인프라를 구성하는 과정에서 EC2 인스턴스의 방화벽 IP와 포트를 모두 오픈해 악성 코드가 심어진 인스턴스를 경험한 적이 있어요. 이 문제를 발견하자마자 저는 급하게 인스턴스를 삭제하고, 다른 인스턴스에는 문제가 없음을 확인했습니다. 만약 실제 프로덕트가 동작하는 라이브 환경이었다면 큰일 났을 거예요. 당시 시니어 개발자 분들께서 저에게 넘어지고 부딪혀 볼 수 있는 환경을 제공해주신 덕분에, 안전하고 효율적인 인프라 구성에 대한 중요성을 깨달을 수 있었습니다. 만약 이러한 환경을 당장 경험할 수 없다면 토이 프로젝트를 하며 직접 하나씩 알아가는 것도 방법이에요.
두 번째는 테스트 코드를 꼼꼼히 작성하는 습관을 들여 오류를 사전에 대처하는 것이에요. 정상적인 케이스, 실패해야 하는 케이스를 잘 생각해가며 꼼꼼히 테스트코드를 작성하는 습관을 들여야 해요. 수정된 코드를 배포할 때도 테스트코드를 믿고 배포할 수 있게 되고 코드 수정으로 인한 사이드 이펙트를 방지할 수 있어요. 하지만, 코딩에 처음 입문하신 분들은 배운 문법을 구현하기 바쁠 거예요. 일단 동작하는 코드를 먼저 작성하는 것에 집중하고, 그다음에 테스트 코드를 작성하는 습관을 들이는 것을 추천해 드립니다.
세 번째는 빠르게 대처할 수 있는 환경을 갖추는 것이 오류에 이상적으로 대응할 수 있는 방법 중 하나라고 생각해요. 이것이 세 번째인 이유는 첫 번째, 두 번째를 다 경험하더라도 완벽한 소프트웨어란 없고 나의 코드와 인프라는 모든 에러를 예상해 방어할 수 없기 때문이에요. 완벽한 소프트웨어를 지향하며 빅뱅 오픈을 하기보단, 빠른 배포를 통해 작은 문제부터 해결하고 여러 방면의 피드백을 통해 학습한 내용을 기반으로 기민하게 개선해 나가는 것이 중요하다고 생각합니다.
저는 이 그림을 좋아해요. 소프트웨어 개발은 스케이트보드로 시작해 자동차까지 도달시킬 수 있는 분야라고 생각해요. 만약 빅뱅 오픈을 한다면 몇 개의 에러가 저를 기다리고 있을지 가늠조차 할 수 없을 거예요.
소프트웨어 개발에 비유하니 정말 잘 어울리는 그림인 것 같아요!
그렇다면 한 가지 궁금한 것이 있는데요. 개발을 하는데 있어 산업군의 특징이 있는지 궁금해요!
제가 담당하고 있는 백엔드 개발 업무의 경우 다른 산업군의 백엔드 개발에서 다루는 주제와 크게 다르지 않다고 생각해요. 메시지 발송 및 발송 이력 관리 관점에서 보면, 메시지가 두 번 이상 발송되지 않도록 시스템을 설계하는 것이 중요해요. 또한 민감한 발송 이력이 조회 권한이 없는 직원에게 노출되지 않아야 해요. 이를 위해 암호화, 네트워크 분리, 범위 기반 권한 체계 구현 등을 통해 철저하게 관리하고 있습니다.
그렇다면 효석님은 다른 직군 개발자를 만나서 대화할 때
도메인이나 산업군의 차이점을 느꼈던 적은 없으신가요?
플랫폼 성향의 웹이나 앱 서비스들은 안정적인 운영이 비즈니스의 핵심인 경우가 많고, 게임이 주요 비즈니스인 넥슨은 게임의 출시, 운영, 유저 분석, 프로모션 등에 중점을 두곤 해요. 그렇지만 백엔드 개발자의 관점에서 볼 때, 어떤 도메인이든 안정적인 시스템을 구축하는 것은 항상 중요하다고 생각합니다.
03 넥슨 백엔드 개발자의 하루일과는 어떨까?
취업에 필요한 내용들을 정말 많이 말씀해 주신 것 같아요!
이 글을 읽으며 효석님처럼 넥슨 개발자가 되고 싶은 분들도 많을 것 같은데요.
넥슨 개발자로 취업하기 위해 어떤 점에 관심을 가지고 있다면 좋을까요?
백엔드 개발이라면 일반 IT 회사와 동일한 부분의 역량을 본다고 생각해요. 그러니 백엔드 개발자로서의 역량에 관심을 갖고 키워 나가는 것이 중요한 것 같아요. 기술 블로그, 컨퍼런스 발표 등을 보면서 항상 ‘왜?’ 라고 생각하며 이유를 찾는 습관을 들이는 것도 중요하고, 상상을 멈추지 않는 습관도 중요한 것 같아요. 예를 들면 ‘RDB에 너무 많은 데이터가 적재되어 느려지면 어떻게 해야 할까?’, ‘글로벌 서비스를 구성하기 위해서는 어떻게 설계해야 할까?’, ‘큰 회사들이 대용량 트래픽을 처리하는 기법에는 무엇이 있을까?’, ‘스프링 컴포넌트는 왜 싱글톤일까?’와 같이 상상하는 거예요. 그리고 상상에 그치지 않고 이 궁금증이 해소될 때까지 찾아보는 거예요.
일반 IT 회사와 동일한 부분의 역량에 대해 더 자세히 설명해주실 수 있나요?
보통 제로베이스에 신입이 되기 위해 수강하는 분들이 많이 오실 것 같은데, 신입일수록 CS 기초 지식이라거나 네트워크 지식, 본인이 주력 언어로 공부하는 언어가 어떻게 동작하는지 이해하고 있는가 등의 것들을 알고 있어야 한다고 봐요.
여기서 중요한 것은 ‘내가 이미 이걸 알고 있어요’가 아니라 ‘지금도 끊임없이 학습하고 있어요’를 어필하는 게 중요해요. 어차피 시니어의 관점에서 신입 개발자들의 현재 실력은 크게 중요하지 않다고 생각하시는 분들이 많으실 거고, 신입 개발자를 실무에 투입시키기까지 시간이 걸리거든요. 많은 리소스가 투입되어야 해요. 그래서 제가 생각하기에는 ‘이 사람이 새로운 걸 끊임없이 받아들일 준비가 되어있는 사람인가’를 가장 중요하게 볼 것 같아요.
제가 첫 회사 면접을 보았을 때, 제가 국비학원에서 배운 기술 스택과 회사가 요구하는 기술 스택에서 하나 정도만 맞고 거의 대부분 맞지 않았어요. 면접에서 마지막으로 하고 싶은 말이 있냐고 물어봤을 때 저는 이렇게 답변을 했었어요. ‘저는 교육기관에서 좀 예전의 기술 스택을 배워서 현재 지원한 회사와 맞지 않을 수 있지만, 끊임없이 새로운 걸 받아 들이기를 멈추지 않고 있기 때문에 그 점을 잘 봐주셨으면 좋겠습니다’라고 말씀을 드렸거든요. 그래서 이 부분을 좋게 봐주셔서 뽑힌 것 같다는 생각을 해요.
‘취업하려면 이걸 공부해야 한다고 해서 했어요’라고 하면 면접관 분들에게 좋지 않은 이미지를 심어줄 수 있어요. 예시로 보여드린 저의 경험과 같이 ‘저는 진짜 개발을 잘하는 개발자가 되고 싶어서 이런 것들을 공부하고 있고, 끊임없이 학습할 준비가 되었다’라는 것과 더불어 취업 준비 기간동안 어떤 이유로 무엇을 학습하고 준비했는지를 말씀드리면 더 좋을 것 같다는 생각이 듭니다.
‘배우려는 자세’가 중요하다는 것이군요!
그럼 효석님이 지금 새롭게 배우고 있거나 관심을 가지고 계신 개발 기술 스택 혹은 언어는 어떤 것인지 궁금해요!
최근 Kotlin에 관심을 가지고 있어요. 첫 번째 회사에서는 Java와 Python을 주로 사용했었고, 넥슨에서 맡은 첫 프로젝트는 C# 기반었습니다. 그러다 Kotlin이 C#의 유연하고 성숙한 문법을 닮았다는 사실을 알게 되었고 이를 Spring 생태계에 적용해보고 싶어서 Kotlin을 학습하게 되었어요. 또 현재 개발 중인 신규 프로젝트에도 Kotlin을 적용하고 있고, 매우 만족스럽게 사용하고 있습니다.
효석님 말처럼 끊임없이 받아들이려는 모습이 정말 인상깊어요.
마지막으로 넥슨 개발자로서의 효석님의 하루일과는 어떤지 말씀해주실 수 있나요?
넥슨은 자율 출근이라 7시~11시 사이에 출근이 가능한데요. 아침에 일어나 출근하면 넥슨다방에 가서 커피, 빵 또는 김밥 등과 함께 아침을 식사를 합니다ㅎㅎ 이후에는 자리에 앉아 메일이나 사내 업무 요청 시스템을 통해 처리해야 할 업무가 있는지 확인, 처리를 한 이후에 개발을 합니다. 그리고 점심 식사 후 오후 업무 및 개발을 합니다. 회의가 있는 경우도 있고요. 그날 마무리 하고 싶은 일이 있다면 야근을 할 때도 있습니다. 퇴근 이후에 약속이 없으면 집에서 공부를 하거나 스터디 카페에서 공부를 합니다. 최근에는 Kotlin을 공부하거나 CS 기초 지식을 공부하고 있어요.
저도 완벽하게 갖춘 다음에 신입으로 취업을 한 게 아니라고 생각해요. 취직을 한 다음에 빈 공간을 메워 가는 형식으로 하고 있어요. 지금도 부족한 점이 한없이 많고 그걸 계속해서 채워나가고 있는 중이에요. 그래서 퇴근하고는 빈 부분을 채우기 위해 노력하고 있습니다.
마치며,
정말 개발자는 끊임없이 공부를 해야 한다던데 사실이군요!ㅎㅎ
효석님처럼 지금도 열심히 개발 공부를 하고 있을 개발자 취준생들에게 한 마디 해주세요!
코딩하고, 코드를 읽고, 동작시키는 과정이 즐겁다면 여러분들은 개발자라는 직업에 도전해볼만 하다고 생각합니다. 즐거운 일을 하며 나를 성장시키고 좋은 내용을 서로 공유하는 건강한 개발자 세상에 여러분도 함께했으면 좋겠습니다.
제로베이스에서는 취업이라는 목표를 달성해 볼 여러분을 기다립니다.
제로베이스에서 시작해 보세요.
취업은 제로베이스
추천 컨텐츠