백엔드 개발자

현직 백엔드 개발자가 신입 개발자에게 기대하는 "진짜" 역량
by 7년 차 현직 백엔드 개발자 김은호

#백엔드 #프로젝트 #기술스택 #취업


면접관의 눈에 띄려면, 어떤 프로젝트로 포트폴리오를 채워야 할까?

백엔드 개발직 취업을 준비하고 있다면, 무조건 하게 되는 이 고민!
현직자가 신입 개발자에게 기대하는 스킬&마인드셋, 그리고 프로젝트는 무엇인지
7년차 현직 백엔드 개발자, 김은호 개발자님께 들어보았습니다.

김은호 개발자님! 자기 소개 부탁드립니다 :)

안녕하세요, 김은호입니다.
주로 자바 스프링 부트를 사용하여 백엔드 웹애플리케이션을 개발하고, 서비스 도메인을 설계하거나 쓸만한 제품을 고객에게 효과적으로 전달하는 기술적인 고민을 해결하는 일을 맡고 있습니다. 올해로 7년차이고, NHN / 카카오페이/ 카카오커머스와 스타트업을 거쳐 지금은 패키지 여행 상품을 제공하는 스타트업에서, 웹서비스 개발을 이어가고 있습니다.

Q. 개발자님은 NHN에서 개발자로서 첫 커리어를 시작하셨는데, 어떻게 준비하셨나요?

정보통신공학부를 전공하였지만, 소프트웨어와 관련 있는 전공 과목들 위주로 공부하였습니다. 학부 시절동안 컴퓨터 동아리에 가입해 활동하고 다양한 학술회와 해커톤, 알고리즘 대회에 참가하여 프로그래밍에 관련한 경험을 쌓으려고 노력했어요. 이러한 경험들이 실력이 되고, 면접에서도 진정성 있는 스토리 텔링을 하는데 도움이 되었습니다.

아무래도 주니어가 면접을 볼 때, 면접관들은 경력을 기대하지는 않는다고 생각해요. 뻔한 이야기일 수도 있지만, 경력보다는 기본 지식, 컴퓨터 사이언스를 얼마나 진정성 있게 공부했는가 인 것 같습니다. 따라서 학부 시절에 전공 과목을 선택할 때 자료 구조나 네트워크 운영체제와 같은 과목들을 수강하고, 좋은 성적을 받는 것이 자신의 커리어에 대한 진정성을 어필하는 데 큰 도움이 된다고 생각해요.

그 다음으로는 새로운 것을 배우고자 하는 열의, 어떤 문제를 만났을 때 해결하고자 하는 의지와 호기심, 없는 문제도 찾아내서 해결하려고 하는 관심도 이런 것들을 선호하는 것 같습니다. 이런 점들을 염두하여 학창시절을 보내고, 프로젝트들을 다양하게 하면서 준비한다면 분명 도움이 될 거예요. 정리하면, 탄탄한 기본기와 알고리즘 풀이 능력, 프로그래밍 커리어를 대하는 진정성과 배우고자 하는 열의를 어필하는 것에 집중하여 면접에 임했던 것 같습니다.

Q. NHN, 카카오페이, 카카오커머스 등의 굵직한 IT대기업에서 어떤 업무를 맡으셨나요?

NHN 에서는 굉장히 다양한 도메인에서 업무를 수행했습니다. 검색 서비스를 맡기도 하고, 클라우드 플랫폼에서 일하기도 하고, 사주 운세를 봐주는 O2O 서비스를 담당하기도 했습니다.

카카오페이와 카카오커머스에서는 주로 정산 도메인에서 업무를 담당하였고, 정산 시스템을 새로 설계하거나 기능을 고도화하는 등의 일들을 하였습니다.

주니어 때, 한 가지 도메인을 꾸준히 하는 사람도 있고, 다양한 도메인에서 일 해보는 것을 선호하는 사람도 있어요.
그런데 큰 규모의 회사일수록, 그리고 조직이 복잡할수록 한 도메인에만 집중하는 환경일 가능성이 높은 것 같아요. 인력도 많고, 해야 할 일도 다각화되어 있으니, 특정 분야에 사람을 심어 놓고 스페셜리스트로 키우려고 하는 성향이 있습니다.

지금은 상대적으로 작은 스타트업에서 일을 하고 있는데, 여기서는 하나의 서비스를 큰 도메인으로 보고, 서비스를 완성하기 위해 필요한 제반 기술들, 서브 도메인들을 두루 봅니다. 때로는 결제가, 때로는 예약이, 때로는 광고가 될 수 있어요. 하나만을 보는 게 아니라, 유저의 니즈에 따라서 즉각 다양한 부분에 대응하고 있습니다. 따라서 다양한 일들에 적극적으로 임하는 자세가 필요한 것 같아요.

Q. NHN에서 다양한 도메인을 경험하셨던 것이, 카카오로 이직하실 때 도움이 되었을까요?

그 자체가 결정적인 요소는 아니고, 참고 정도 되었을 것 같아요. 그보다는 어떤 업무를 왜 했는지, 그 과정이 어땠는지를 진정성 있게 설명하는 것이 중요하다고 생각합니다. 진정성이라는 말이 혹시 너무 어렵거나 모호하다면, 구체적으로 진정성이 없는 대답과 진정성이 있는 대답은 이런 차이가 있어요.

업무 내용: 검색 기술을 개발할 때 동시성 처리를 염두하면서 설계를 했다.
Q. 왜 이 업무를 하셨나요?

여기서 "시켜서 했어요."라고 답변한다면, 진정성 없다고 느껴지는 답변이죠. 진정성 있는 답변으로 만든다면 이런 식입니다.

A. 일단은 평범하게, 빠르게 만들어봤습니다. 만들고 나서 실제 QA 테스트를 진행했더니, 예상보다 퍼포먼스가 안 나왔습니다. 조직 내에서는 조금 느려도 상관없다고 했지만, 저는 이것이 고객 만족에 닿는데 부족하다는 느낌이 들었습니다. 그래서 조금 더 시간을 내서, 제가 할 수 있는 범위 안에서 퍼포먼스를 향상시킬 수 있는 방안을 찾았고, 그것이 동시성 처리였습니다. 조직장과의 논의를 거쳐 적용하기로 결정이 되었고, 프로젝트를 고도화시킬 수 있었습니다.

이렇게 말한다면 좀 더 진정성 있어 보일 수 있겠죠.

Q. 지금까지 수많은 후배 개발자를 만나고 함께 일해보셨을 거라 생각합니다. 실무자로서 어떤 신입 개발자와 함께 일하고 싶으신가요?

궁금증에 진정성 있는 답을 내기 위해 생각하기를 멈추지 않고, 답을 찾는 과정을 즐기고, 편리와 타협하지 않으려 애쓰고, 끊임없이 새로 배우려 하며 활발하게 소통하는 개발자와 함께 일할 수 있다면 무척 좋을 것 같습니다.
제가 주니어 시절에, 기억에 남는 동료 개발자 분이 있어요. 어떤 문제를 해결하다가 막힌 적이 있었습니다. 그 문제를 가지고 가서 그 분께 질문을 했는데, 그 때 들었던 대답은 아직도 기억에 남아요.

"원래 안되는 거예요."

저는 납득할 수가 없었어요. 왜냐하면 메뉴얼에는 된다고 나와 있었거든요. 시키는 대로 했는데 안 되길래, 같이 봐줄 수 있냐고 물어본 건데 저런 대답을 듣게 되어 매우 아쉬웠습니다. 진정성이 없어 보였고, 그렇다고 그 태도를 무조건 싫어하는 건 또 그 분을 존중하지 않는 자세인 것 같아서 고민했던 기억이 있어요.
고민하기보다 빨리 답을 찾고 싶은 사람이라면 물론 그렇게 대답하고, 새로운 방법을 찾을 수 있습니다. 그것이 무조건 틀렸다고 하는 건 섣부른 태도인 것 같아요. 그러나 취업 과정에서는 일반적인 상황을 가정해야 하기 때문에, 면접관들이 마음에 들어하는 지원자는 아무래도 진정성 있는 태도를 가진 사람일 거예요


Q. 그렇다면 포트폴리오는 어떻게 하면 진정성 있게 짤 수 있을까요?
어떤 프로젝트들을 넣으면 좋을까요?

이 질문은 굉장히 막연하기 때문에 나오는 질문이라고 생각하거든요. 그럴 때일수록 지금 내가 고민하는 문제를 해결하는 주제를 프로젝트 주제로 선정하는 게 좋다고 생각합니다.

사소한 거라도 상관 없어요. 이를테면
"나는 영화를 좋아하는데, 개봉을 앞두고 있는 영화가 언제쯤 개봉할지, 몇 시에 예매할 수 있는지 편하게 알아내서 나한테 알림을 주는 시스템은 없을까"라는 아이디어가 있을 수 있겠죠. 물론 영화관 앱에 있을 것 같은 기능이지만 찾아보면 없을 수도 있어요. 그렇게 문제를 정의한 다음, 직접 해결을 하면 됩니다. 더 어려워질 수도 있어요. "게임을 하는데 너무 속도가 느리다. 게임 속도를, 퍼포먼스를 향상시킬 수 없을까?"라는 문제는 어렵겠죠. 하지만 실패해도 상관 없어요.

중요한 건, 풀고 싶은 문제를 프로젝트 주제로 잡고 공부를 시작하는 겁니다. 필요한 게 무엇인지 구글링하고, 가능성을 발견하면 바로 프로젝트를 시작하여 만들어보고. 그런 과정 자체가 포트폴리오로도 괜찮다고 생각해요.

Q. 그런 문제가 떠오르지 않으면 어떡하죠?

그래도 있는 게 좋아요. 개발자는 지독하게 불편함을 느끼고, 개선하고 싶어해야 합니다. 끊임없이 고민을 해야, 일을 알아서 찾아서 하죠. 회사가 딱 좋아하는 스타일입니다.
그렇기 때문에 "취업을 위해 무조건 큰 프로젝트를 해야 되겠다"라는 압박감을 느낄 필요는 없고, 그저 단순히 자신의 작은 고통이나 고민을 해결해 나가는 과정을 포트폴리오에 담으면 돼요.

지금 그런 고민이 없고, 시간은 급해서 얼른 뭔가 해보고 싶다라고 한다면, 그런 문제를 찾으러 떠나는 것도 괜찮습니다. 대표적인 방법이 기술 세미나나 컨퍼런스에 참석하는 거죠. 컨퍼런스에 가게 되면, 최근 기술 동향이나 요즘 사람들이 서비스를 개발할 때 무엇을 고민할까? 나는 불편함을 느끼지 못했는데 사람들은 어디서 불편함을 느꼈을까?를 알 수 있어요. '나도 저 부분을 파보아야 겠다'라는 생각이 들 수도 있죠. 그래서 아이디어나 자극이 없다면, 이런 자리에 참석해보는 것을 권유해 드려요.

Q. 백엔드 학습이 막막한 취준생을 위한 팁도 주실 수 있을까요?

이것도 마찬가지로, 지금 갖고 있는 고민이나 문제를 해결할 수 있는 기술, 도구들을 위주로 찾아나가는 게 제일 자연스러운 순서라고 봅니다.

그러나 나에게 그런 고민이 없을 경우, 어떤 기술을 선택해야 할지 막막할 땐 남들 하는 걸 따라 하는 것도 괜찮아요. '많은 사람들, 회사들이 자바를 쓰니까 나도 자바를 공부해야지!' 처럼요.
아니면 가고 싶은 기업이 어떤 기술을 가진 지원자를 원하는지 확인하고, 거기서부터 시작하는 것도 나쁘지 않아요. 다만 '이 기술들을 내가 습득한다면 어떤 프로젝트, 어떤 서비스를 만들 수 있을까?' 또는 이것을 역으로 고민하는 정도의 노력은 필요하겠죠.

조금 더 추진력 있게 어떤 목표를 설정하고 싶다고 하면, 내가 어떤 영역에서 전문성을 가지고 싶은가? 어떤 일을 하고 싶은가? 즉 테마를 정하는 게 좋을 수 있어요.
예를 들어, '나는 대용량 처리를 하고 싶어', '나는 알고리즘 전문가가 되고 싶어', '나는 인공지능 쪽으로 커리어를 쌓고 싶어'. '나는 블록체인을 연구해보고 싶어'. 이런 식으로 테마를 정하면, 상당히 스코프가 좁아집니다. 그리고 해당 영역에 적합한 도구들이 대략 정해져 있고, 알려져 있죠. 그러면 막연함이 많이 줄어들 수 있을 거예요. '나는 대용량 서비스를 분산한 아키텍처를 설계해보고 싶어'라고 하면, Hadoop과 Spark와 같은 것들이 떠오를 수 있고, 결국 공부 과목이 정해지는 거죠.

[10개 프로젝트로 완성하는 백엔드 웹 개발 초격차 패키지 Online.]에서 강의하시는 김은호 개발자님

[10개 프로젝트로 완성하는 백엔드 웹 개발 초격차 패키지]에서 세 가지 프로젝트를 준비해 주셨는데, 프로젝트에 대해 소개 부탁드립니다.

게시판 만들기, 게시판 고도화, 게시판 어드민 만들기 프로젝트를 보여드릴 예정입니다.

게시판 만들기 프로젝트에는, 하나의 온전한 서비스를 기획하여 개발을 거쳐 고객에게 전달하기까지 필요로 하는 각종 고민과 과정을 보다 라이브한 느낌을 살려서 담았어요. 거기에 협업하는 환경을 가정하여 더 매끄러운 협업을 할 수 있도록 하는 실무적인 요령, 그리고 최근 개발 트렌드를 함께 담았습니다.

게시판 고도화 프로젝트는 1차적으로 완성된 서비스를 더욱 발전시켜가는 과정을 담았는데, 거기서 만날 수 있는 어려운 상황과 해결 과정을 집중적으로 다룹니다.

게시판 어드민 프로젝트는 서비스를 보다 효율적으로 운영하기 위한 도구를 만들고, 서비스를 운영하는 과정을 담았습니다. 하나의 온전한 서비스는 개발 이후에도 지속적인 운영을 필요로 합니다. 그 과정에서 만날 수 있는 고민과 해결 과정을 함께 만나보는 것이 강의의 핵심입니다.

백엔드 개발자로서 커리어를 쌓기로 결심한 수강생분들에게 응원의 한 마디를 부탁드려요!

'더 나은 개발', '더 완성도 높은 개발' 이라는 목표는 참 모호하게 다가옵니다.

그저 만들어내는 것이라면 비교적 간단히 끝났을 문제가, 더 잘하려고 노력할 수록 끝나지 않는 경우가 많습니다. 욕심을 낼 수록 모호한 문제, 모르는 문제가 많아지고, 완성은 멀게만 느껴집니다. 이 강의는 그러한 고민을 하던 학생과 개발자 분들을 위해 만들어졌습니다.

실무적인 접근을 통해 '더 큰 조직에서, 더 먼저 고민해 본 사람은 어떻게 이 문제를 풀어나갔을까?'라는 질문에 이 강의가 나름대로 의미있는 대답을 들려드릴 수 있길 바랍니다.


김은호 개발자님의 강의 보러가기

지금 패캐머들이 읽고있는 BEST 아티클이 궁금하다면