F-Lab
🚀
깊이 있는 개발자 커뮤니티, 데브클럽에 함께 하세요

“진짜 개발자는 어떻게 일하는지 궁금했어요.” | 수료생 Habi님

writer_thumbnail

F-Lab : 상위 1% 개발자들의 멘토링

 

어떤 분야에 대해 이미 충분히 알고 있는 것 같아 공부할 필요성을 느끼지 못한다면 성장을 할 수 있을까요? Habi님은 멘토링 전에도 개발자로 커리어를 쌓고 계셨지만 학습의 필요성을 느끼지 못하셨다고 하는데요. 어떤 계기로 성장에 갈증을 느끼셨고, 그 갈증은 어떻게 해소하셨는지 인터뷰해 봤습니다.

 
 
 

🔎 성장에 대한 갈증

“기술에 대한 깊이를 고민하기보다는 구현에 초점을 맞춰서 개발을 하다 보니까 일의 방향성에 대한 고민이 많이 들더라고요. 그래서 진짜 개발자는 어떻게 일하는지 궁금했어요.”

 

안녕하세요 Habi님, 간단한 자기소개 부탁드립니다.

안녕하세요. 에프랩에서 백엔드 개발자로 일하고 있는 이한빈이라고 합니다. 저희 회사는 영어 이름을 써서 일할 때는 Habi라는 이름을 사용하고 있어요.

 

 

멘토링 하기 전에는 어떤 일을 하셨나요?

이전에는 보안 관제 플랫폼을 개발하는 솔루션 회사에서 일을 했어요. 디도스 공격이라든지 웹 취약점과 같이 사이버상에서 발생할 수 있는 침해 사고를 손쉽게 처리할 수 있는 플랫폼을 만드는 회사인데 저는 웹 서버를 만들었고 스프링 기반의 애플리케이션을 만드는 일을 했습니다.

 

 

현재는 어떤 일을 하고 계신가요?

현재는 백엔드와 프론트를 다 맡고 있어요. 프론트 디자인부터 시작해서 백엔드 API 구성을 처음부터 끝까지 만드는 작업을 하고 있습니다. 또 화면 UI 디자인을 만들고 그 UI에서 필요한 API를 개발하는 작업까지 맡아서 하고 있어요.

 

 

멘토링 참여를 결심하신 계기가 궁금해요.

일을 하면서도 성장을 하지 못한다는 느낌을 많이 받았어요. 신입으로 입사했을 때 엘라스틱서치라는 기술을 사용했었는데 이 기술을 사용하는 회사가 거의 없었어요. 그래서 그 기술을 사용한다는 것 자체만으로도 경쟁력이 된다고 생각을 했던 거죠. 근데 기술에 대한 깊이를 고민하기보다는 구현에 초점을 맞춰서 개발을 하다 보니까 일의 방향성에 대한 고민이 많이 들더라고요. 그래서 진짜 개발자는 어떻게 일하는지 궁금했어요. 쉽게 말해 네이버나 카카오 개발자들의 학습 방향과 일하는 방식을 알고 싶었던 거죠. 관련해서 여러 정보를 찾아보다가 에프랩 홈페이지를 보게 되었는데 대표님이 직접 멘토링을 진행하면서 강의 방식이 아닌 방향성을 알려주고 스스로 할 수 있게 만들어준다는 대목들이 눈에 띄더라고요. 그걸 보면서 스스로 방향성을 알고 학습하면 효능감을 느낄 수 있겠다는 생각이 많이 들었던 것 같아요. 그래서 이러한 생각을 가지고 에프랩 멘토링을 신청하게 됐습니다.

 

 

다른 선택지도 고려하셨나요?

다른 부트 캠프도 알아보긴 했죠. 근데 대게 제가 원하는 교육 방식은 아니었어요. 제가 원했던 건 단순히 강의만 제공하는 게 아니라 방향성을 알려주는 거였는데, 이런 니즈를 충족시켜 주는 부트 캠프는 그때 당시에는 거의 없었어요. 근데 유일하게 에프랩에서만 밥상을 차려주는 게 아닌 밥상 차리는 방법을 알려준다는 대목이 있었고, 이런 가치관이나 방향성이 저한테 크게 와닿아서 에프랩에 지원하게 되었어요.

 

 

신청하기 전, 어떤 점이 가장 우려되셨나요?

초창기 때 신청을 했던 터라 홈페이지가 고급스럽다는 느낌이 없었어요. 이런 부분에서는 믿음직스럽지가 않아서, 사기당하는 거면 어떡하지라는 생각도 들었어요. 불안감이랄까요? (웃음) 근데 멘토링을 시작하면서 이런 걱정은 다 사라졌던 것 같아요.

 

 

 

🚀 성장으로의 도약

“어떻게 그렇게 깔끔한 코드를 짤 수 있는지도 궁금했고 코드를 짜는 방식에 대한 고민이 조금씩 들기 시작하면서 성장 욕구가 생겼던 것 같아요.”

 

멘토링을 처음 시작했을 때 기분이 어떠셨나요?

그때 기분은 정말 다시 태어난 느낌이었어요. 저는 자바라는 프로그래밍 언어를 사용했지만 왜 사용하는지에 대한 고민을 한 번도 해본 적이 없었거든요. 근데 처음 멘토링을 받으면서 근본적인 질문을 많이 받았어요. 질문을 받으니까 그동안 기술을 제대로 사용하고 있지 않았다는 것을 깨닫게 되더라고요. 깨달음이 생기니까 막연한 불안감이 사라지고 제가 원했던 방향성을 알 수 있게 될 것 같다는 믿음이 생겼던 것 같아요.

 

 

사용의 이유에 대한 고민을 왜 한 번도 해보지 않은 것 같나요?

신입 때라서 그런지 일을 하면서 회사 생활을 익힐 수 있다는 것 자체만으로도 성장한다고 느꼈어요. 사실 지금 생각해 보면 큰 착각이고 개발자로서 제대로 성장하지 못하고 있던 거죠. 그리고 이전 직장에서는 자체 코드 리뷰를 안 해서 코드가 동작은 하는데 저의 방식이 최선의 방법인지를 확인받지 못하는 구조였어요. 그래서 제가 코드를 짜더라도 확신이 안 생겼고, 왜 사용하는지에 대한 고민을 할 생각조차 못 했던 것 같아요.

 

 

개발자가 되기 위해 공부하는 과정에서는 이런 고민을 하지 않으신 이유가 있을까요?

그때 당시에는 어디까지 고민을 해야 되는지를 몰랐어요. 주변에서도 알려주는 사람이 없었고 스스로도 고민을 많이 안 했어요. 주위에서 잘한다고 칭찬을 해주니까 이제 더 이상 할 게 없는 것처럼 느껴져서 개발자라는 직업을 준비하는 과정에서도 깊이 있는 고민을 해보지 않았던 것 같아요. 그런데 우연히 카카오 개발자를 배출했다는 에프랩 광고를 보게 되었어요. 그때 카카오 개발자의 코딩 방식에 대한 궁금증이 처음 생겼고, 클릭을 해서 깃허브 코드를 봤어요. 근데 제가 회사에서 짜던 코드랑 완전히 다른 스타일이라 한 번에 이해를 못 하겠더라고요. 어떻게 그렇게 깔끔한 코드를 짤 수 있는지도 궁금했고 코드를 짜는 방식에 대한 고민이 조금씩 들기 시작하면서 성장 욕구가 생겼던 것 같아요.

 

 

 

🧭 성장에 함께 탑승한 사람들

“멘토님을 생각하면 나침반 같은 존재라는 생각이 많이 들어요.”

 

Habi님에게 멘토는 어떤 존재였나요?

나침반이었던 것 같아요. 공부 방향성을 알려주시고 그 방향에 맞게 걸어가는 건 제가 스스로 할 수 있도록 도와주시는 분이었거든요. 그래서 멘토님을 생각하면 나침반 같은 존재라는 생각이 많이 들어요.

 

 

멘토와의 소통은 어떠셨나요?

원활했다고 느꼈는데 지금 생각해 보면 멘토님에 대한 위압감이 있었던 것 같아요. 질문 하나를 해도 쉽게 하지 못하고 질문 전에 많은 고민을 하면서 어려워했던 게 기억에 남네요. 그때 당시에는 어려워한다는 것을 스스로 인지하지 못하고 당연하게 받아들였던 것 같아요. 어떻게 말씀드려야 할지에 대한 생각을 많이 하긴 했지만 고민을 말하는 것 자체를 어려워하는 성격은 아니거든요. 그래서 어려운 상황에 대해 멘토님한테 얘기하는 거는 문제가 되지 않았던 것 같아요.

 

 

가장 기억에 남는 멘토링 에피소드가 있으신가요?

모든 순간이 좋았어요. 특히 멘토님이 기술적으로 질문해 주신 게 기억에 남아요. 전혀 생각해 보지 못했던 부분을 질문을 해 주시니까 생각의 깊이도 달라지고, 인사이트도 많이 얻었어요. 그래서 모든 순간이 기억에 남았다고 말씀드릴 수 있을 것 같아요.

 

Habi님 만의 페어 멘티와의 소통 방식이 있으셨나요?

제 의견을 먼저 주장하기 전에 무조건 상대 멘티의 생각을 들으려고 노력했어요. 예를 들어 주제가 있다면 그거 대해서 상대 멘티분은 어떻게 생각하는지 먼저 여쭤보고 공감을 한 뒤 제 생각에 대해 이야기하면서 해결책도 같이 제시를 했죠. 계속 이런 식으로 계속 배려하면서 소통했던 것 같아요.

 

 

 

📲 성장의 궤도, Project

진행하신 프로젝트에 대해 소개 부탁드립니다.

캠핑 용품을 셰어하는 공유 플랫폼 프로젝트였어요. 당근 마켓처럼 사람들이 캠핑 용품을 제시 가격과 함께 올리면 사용자는 그걸 보고 빌림 요청을 해요. 그리고 직접 만나서 결제 후 공유를 받고 특정 기간이 지나게 되면 반납을 하는 프로세스를 가진 프로젝트였어요.

 

 

프로젝트에서 가장 좋았던 포인트는 무엇이었나요?

구조적으로 전혀 생각해 보지 못한 프로젝트 아키텍처를 경험을 해봤어요. 이전 직장에서는 하나의 컨트롤러에 모든 요청을 처리하는 로직들이 다 녹아져 있었거든요. 반면 프로젝트에서는 여러 레이어로 나눠서 각자의 책임에 맞게 구성했어요. 사용자로부터 들어오는 요청을 처리하는 레이어, 애플리케이션 비즈니스 로직 처리만 담당하는 레이어 그리고 내부적으로 도메인에 관한 로직만 가지고 있는 도메인 레이어 등으로 나눴어요. 이렇게 프로젝트를 구성해 보니까 코드의 재사용성 부분이 좋아지는 게 느껴지더라고요. 그래서 이 부분이 가장 좋았던 것 같아요.

 

 

그렇다면 어떤 점이 가장 어려웠나요?

어려웠던 점은 없었던 것 같아요. 어려움이 생기려고 하면 멘토님이랑 많이 얘기를 했어요. 멘토님의 문제 접근 방식에 대해서 많이 물어보고 들은 답변을 토대로 또 저만의 방식을 접목해서 시도를 했어요. 그럼 대부분의 문제가 풀렸는데 멘토님한테 얘기를 하는 시간보다 스스로 고민하는 시간이 더 많긴 했죠. 하루 동안 고민을 했는데도 도저히 못 풀겠다는 생각이 들 때 처한 어려움에 대해서 얘기를 하고 도움을 구했어요.

 

 

기술적으로 가장 인상적이었던 부분은 무엇이었나요?

기술적으로 가장 인상적이었던 부분은 “서비스가 성장하여 서버에 많은 트래픽이 들어온다면?“이라는 가정을 하고 발생할 수 있는 문제를 풀어나가는 과정이었어요.

 

 

어느 날 멘토님이 저에게 그러더라고요. 만약에 Habi님의 서비스가 많이 성장해서 한 개의 서버로는 처리 불가능한 트래픽이 발생한다면 어떻게 하실 거냐고. 그때부터 저는 고난의 연속이었어요. (웃음)

 

 

Scale-out과 Scale-up 서버 확장 방법 중 합리적인 것을 선택해야 했는데, 선택한 방법이 꼬리에 꼬리를 물고 또 다른 기술적인 문제를 발생시키더라고요. 이러한 과정에서 개발자로서 갖춰야 할 문제 해결 능력을 키울 수 있었어요. 서비스를 운영하면서 발생할 수 있는 문제에 대한 대처 능력이 생긴 거죠. 아마 혼자 공부했다면 전혀 생각하지 못했을 거예요. 이력서에도 관련 내용을 적었는데 기술 면접에서 가장 많이 물어봤어요. 그래서 이 부분이 가장 기억에 남는 것 같습니다.

 
 
 

🪐 성장의 시작

“멘토링 끝날 때쯤에 하나 느낀 게 있었는데 좋은 개발자는 문제를 해결하는 데 있어서 특정 프로그래밍에 의존하지 않는 개발자라고 생각해요.”

 

멘토링 전과 후, 어떤 변화가 있으신가요?

가장 큰 변화는 개발자의 공부 방향성을 제대로 알게 됐다는 거예요. 그리고 두 번째로는 기술을 선택을 하고 적용을 할 때 각 기술들 별로 장단점을 구분을 하고 최적의 솔루션은 어떤 것인지 트레이드오프를 통해서 선택하는 힘이 길러졌어요. 아무래도 이 두 개가 가장 큰 변화인 것 같아요.

 

멘토링이 종료된 이후에는 어떻게 공부를 하고 계신가요?

저만의 공부 방법이 확실하게 생겼어요. 저는 기본적으로 책을 보면서 공부를 하거든요. 근데 책을 아무 생각 없이 읽게 되면 아무것도 기억에 남지 않잖아요. 그래서 책을 읽을 때는 꼭 메모를 하면서 정리를 해요. 그뿐만 아니라 책을 읽고 난 뒤에는 면접관 입장에서 질문을 해봐요. 계속 스스로 고민하고 질문하면서 공부를 하고 있어요.

 

‘좋은’ 개발자를 한 문장으로 정의하자면?

멘토링 끝날 때쯤에 하나 느낀 게 있었는데 좋은 개발자는 문제를 해결하는 데 있어서 특정 프로그래밍에 의존하지 않는 개발자라고 생각해요. 회사에 소속이 되고 문제를 풀 때 본인이 할 수 있는 언어로만 문제를 해결하는 개발자는 좋은 개발자라고 생각하지 않아요. 예를 들어 자바만 할 수 있기 때문에 자바로만 문제를 풀어야 된다고 생각하는 경우가 있겠죠. 문제를 해결함에 있어서 사용할 적절한 언어가 무엇인지를 스스로 생각하고 거기에 맞는 언어를 선택해 문제를 풀어나갈 수 있는 개발자가 좋은 개발자라고 생각을 합니다.

 

 

말씀해 주신 개발자가 되려면 어떻게 해야 할까요?

하나의 언어를 깊이 아는 것도 중요하지만 사실 그 이면에 깔려 있는 컴퓨터 사이언스를 이해하는 게 더 좋다고 생각해요. 왜냐하면 특정 언어에만 종속이 되면 문제를 풀 때 그 언어를 사용을 했을 경우의 해결책만 떠오르거든요. 그렇지 않고 cs라든지 컴퓨터에 대한 근본 지식이 탄탄하면 어떠한 기술을 사용하더라도 쉽게 이해할 수 있는 상태가 돼요. 예를 들어 문제를 풀 때 a라는 언어가 최적화되어 있다면 그 언어를 모르는 상황에서도 공부할 수 있는 자신감이 생겨요.

 

 

어떤 개발자가 되고 싶으신가요?

지금은 교육산업에 몸을 담고 있지만 추후에 다른 환경에서도 충분히 능력을 발휘할 수 있는 개발자가 되고 싶죠. 또 다른 도메인에 대해서 문제를 풀어나갈 역량을 갖추고 싶어요. 문제를 정의를 하고 개발자로서 잘 풀어나갈 수 있는 근본적인 힘이라고 해야 될까요. 그런 걸 갖추고 있는 개발자가 되고 싶습니다.

 

 

어떤 사람이 멘토링을 받으면 좋을까요?

성장 욕구가 강한 사람이 받으면 좋을 것 같아요. 방향성을 제시했을 때 그 방향으로 걸어갈 수 있는 힘이 있는 사람은 무조건 신청을 해야 될 것 같아요. 그리고 본인이 하고 있는 일에 대해서 확실히 모르는 사람에게도 추천해요. 예를 들어 사수가 없어서 혼자 모든 개발을 담당하고 있고, 코드를 짜더라도 확신을 못 하는 상황에 처한 사람이 있을 거예요. 이런 상황에 처해 있는 사람이 멘토링을 받게 된다면 아무래도 멘토님들은 최적의 코드를 짜는 방법을 잘 알고 계신 분들이라서 방향을 잡아주실 수 있겠죠. 이건 학습을 할 때도 똑같아요. 멘토님이 올바른 학습 방향에 대해서 계속 확신을 심어주시거든요. 이런 부분들이 열악한 환경에 처한 개발자들에게 가장 메리트가 아닐까 생각합니다. 반대로 수동적인 사람들은 절대 추천하지 않아요. 방향만 알려줘도 스스로 걸어갈 용기가 있는 사람이 신청을 해야 될 것 같아요.

 

 

마지막으로 멘토링을 망설이는 분들께 한 말씀 부탁드려요.

망설이는 이유가 되게 다양할 거라고 생각해요. 비용적인 측면도 있을 거고 멘토링 과정을 제대로 수행할 수 있을지에 대한 확신이 없는 분도 계실 것 같아요. 근데 후자인 경우에는 무작정 멘토링 신청을 권하고 싶지 않아요. 고민을 계속하면서 정말로 이 멘토링을 통해서 제대로 성장할 수 있을 것 같다는 확신과 자신감이 생겼을 때 멘토링을 신청을 하는 게 좋을 것 같아요. 성장하고 싶은 마음이 충분한지에 대한 고민을 계속해보라는 얘기이기도 해요.

 

Published by F-Lab marketer, Jen

ⓒ F-Lab & Company

이 컨텐츠는 F-Lab의 고유 자산으로 상업적인 목적의 복사 및 배포를 금합니다.

조회수

멘토링 코스 선택하기

  • 코스 이미지
    Java Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Node.js Backend

    아키텍처 설계와 대용량 트래픽 처리 능력을 깊이 있게 기르는 백앤드 개발자 성장 과정

  • 코스 이미지
    Python Backend

    대규모 서비스를 지탱할 수 있는 대체 불가능한 백엔드, 데이터 엔지니어, ML엔지니어의 길을 탐구하는 성장 과정

  • 코스 이미지
    Frontend

    기술과 브라우저를 Deep-Dive 하며 성능과 아키텍처, UX에 능한 개발자로 성장하는 과정

  • 코스 이미지
    iOS

    언어와 프레임워크, 모바일 환경에 대한 탄탄한 이해도를 갖추는 iOS 개발자 성장 과정

  • 코스 이미지
    Android

    아키텍처 설계 능력과 성능 튜닝 능력을 향상시키는 안드로이드 Deep-Dive 과정

  • 코스 이미지
    Flutter

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    React Native

    네이티브와 의존성 관리까지 깊이 있는 크로스 플랫폼 개발자로 성장하는 과정

  • 코스 이미지
    Devops

    대규모 서비스를 지탱할 수 있는 데브옵스 엔지니어로 성장하는 과정

  • 코스 이미지
    ML Engineering

    머신러닝과 엔지니어링 자체에 대한 탄탄한 이해도를 갖추는 머신러닝 엔지니어 성장 과정

  • 코스 이미지
    Data Engineering

    확장성 있는 데이터 처리 및 수급이 가능하도록 시스템을 설계 하고 운영할 수 있는 능력을 갖추는 데이터 엔지니어 성장 과정

  • 코스 이미지
    Game Server

    대규모 라이브 게임을 운영할 수 있는 처리 능력과 아키텍처 설계 능력을 갖추는 게임 서버 개발자 성장 과정

  • 코스 이미지
    Game Client

    대규모 라이브 게임 그래픽 처리 성능과 게임 자체 성능을 높힐 수 있는 능력을 갖추는 게임 클라이언트 개발자 성장 과정

F-Lab
소개채용멘토 지원
facebook
linkedIn
youtube
instagram
logo
(주)에프랩앤컴퍼니 | 사업자등록번호 : 534-85-01979 | 대표자명 : 박중수 | 전화번호 : 1600-8776 | 제휴 문의 : info@f-lab.kr | 주소 : 서울특별시 강남구 테헤란로63길 12, 438호 | copyright © F-Lab & Company 2024