2023 넥토리얼에 대해 소개해주는 채용 설명회가 판교에 있는 넥슨에서 열렸다.
비도 오는데 아침에 판교까지 가느라 힘들었던 기억이 있다.
비록 넥토리얼 결과는 탈락이었지만, 채용의 나라에서 현직 인사 담당자분들과 개발자 분들의 이야기를 듣고, 좋은 얘기들이 많아 이렇게 기록으로 남기게 되었다.
"1994홀"이라고 하는 넓은 홀에서 진행된 세션도 있었고, 동시에 각 직무마다 작은 공간에서 Q&A가 이루어졌다.
나는 게임 프로그래밍쪽을 희망하였기 때문에 오전에 "2023넥토리얼 시작하기", "게임 프로그래밍 직무 그룹 Q&A"에 참여했다. 그리고 오후에는 "인텔리전스랩스"와 "거기 학생, 게임 프로그래머를 꿈꾸시나?에 참여하며 일정을 마쳤다.
이 세션에서는 대부분 넥슨의 성장 과정과 비전, 그리고 넥토리얼에 대한 설명이 주를 이루었다.
넥슨에서는 크게 4가지에 집중하고 있다고 한다.
넥슨 복지에 대한 소개 중 가장 눈의 띄는 것은 1년에 넥슨에서 사용할 수 있는 복지 포인트를 3~400만원이나 제공한다는 것이였다. 역시 대기업은 대기업인가 싶었다.
전체 세션 내용 중에서 게임 프로그래머, 개발자에 대한 이번 Q&A에서 가장 기억에 남은 것이 많았고, 좋은 내용들이 많았다.
세션은 오윤호 개발자님이 진행해주셨다. 오윤호 개발자님은 넥슨의 18년차 개발자로써, 여러 개발자를 봐왔고, 채용 과정에도 참여한다고 소개해주셨다.
한 회사에서 18년동안 근무하면 어떤 느낌일까... 상상조차 되지 않는다.
직무 그룹 Q&A는 세션을 진행하지 않고, 곧바로 참여 학생들의 질문에 답하는 형식으로 진행되었다. 오후에 진행된 세션 또한 오윤호 개발자님이 해주셨는데, 두개를 종합하여 도움이 되었던, 인상 깊은 답변을 정리하고자 한다.
"우리는 다른 직군의 꿈을 현실로 만드는 사람들"
이 문구는 아직도 기억에서 잊히지 않는다. 아마 모든 개발자가 듣는다면, 뭉클하지 않을까 싶다. 다른 직군의 꿈을 현실로 만들다니..ㅎㅎ
아마 대부분이 학생일 우리들에게, "학교에서는 여러명이 모여 게임을 만든다면, 프로그래머들이 많은 의견을 내고, 만들고 싶은대로 만들었을테지만, 회사에서는 그렇지 않다는 것"을 강조하였다. 회사에서는 전문 기획자가 따로 있고, 디자이너가 따로 있다. 결국 프로그래머도 다른 직군과 마찬가지로 "게임을 만드는 사람들" 중 하나라는 것이다.
입사하고 바로 업무가 가능한 신입 프로그래머는 극소수이다. 대부분의 조직에서는 신입 프로그래머를 위한 과정이 있으며, 입사 후 최소 3개월에서 일반적으로 6개월동안은 최소한의 간단한 업무를 맡긴다.
당연히 경력자만큼의 경험을 요구하지 않는다.
회사가 신입 개발자에게 기대하는 것
"2~3년 후에는 온전한 1명의 역할을 하는 것"
누군가의 경험을 배운다는 것에는 굉장히 많은 시간이 소요된다.
처음에는 작업 시간이 부족하게 느껴지고, 부족함을 채우는데에는 근무 시간만으로는 부족하기 마련이다.
따라서 자신이 부족한 부분을 계속 스스로 공부하는 자세가 되어있어야 한다.
코드를 짤때, 어떤 새로운 지식을 배울 때, 열린 마음으로 시작하는 것이 중요하다.
"모든 것에는 이유가 있다"
회사에 입사하고 나서 레거시 코드를 보면, 리팩토링하고 싶은 욕구가 강하게 들 것이다. 레거시 코드를 보면 많은 개발자의 손을 거쳐간 흔적이 그대로 보이게된다. 어떤 이의 절규에 가까운 주석이 보이기도 하고, 이해하기 힘든 코드들도 존재한다. 이전 개발자들도 코드를 그렇게 짤 수 밖에 없었던 이유가 분명 있을 것이다. 섣불리 기존의 코드를 변경하는 것을 굉장히 위험한 일이 될 수 있다. 확실히 이해한 것이 아니라면 섣부른 수정은 몇번을 고심해도 부족하지 않다.
중요한 것은 짧게는 3개월, 길게는 1년동안 기존의 코드를 통해서 과거에 있던 수많은 사람들의 경험을 내 것으로 만드는 것이 중요하다.
논리적 사고를 중요시하고, 문제를 알고리즘으로 해결하려는 노력이 필요하다.
업무 요청을 받았을 때, 어떻게 만들지 그려내는 능력이 중요하다.
신입 개발자에게 요구하는 기초 지식은 다음과 같은 개념을 의미한다.
CS 기본지식에 대한 개념을 확실히 이해하고, 다른 분야의 사람들과 원활한 소통을 할 수 있는 능력이 중요하다.
자세한 내용은 신입 개발자에게 필요한 기초 지식 문서를 참조하면 된다.
WHY? / HOW? / WHEN?
왜 그렇죠? / 어떻게 그렇게 작동하죠? / 언제 사용햐죠?
이 3가지를 계속 생각하며 공부를 해나간다면, 중요한 내용을 깊게 들어가며 공부할 수 있을 것
넓게 그리고 중요한 내용은 깊게
넓게 공부하고, 여러 분야를 알고 있는 것은, 무언가 공부할 때, 나중에 그것을 찾는데 걸리는 시간을 굉장히 많이 줄여준다.
특히, 자료구조와 사용 언어에 대해서는 밑바닥 끝까지 깊게 들어가서 공부하는 것을 추천한다.
포트폴리오를 꾸밀 시간에 사용언어와 자료구조를 더 깊게 공부하는 것이 도움된다.
면접관은 기본적으로 지원자의 포트폴리오를 크게 신뢰하지 않는다.
보통 자신이 참여한 팀프로젝트에 대해 소개하는데, 모두가 알다시피 팀프로젝트에서 자신이 한 역할을 딱 짤라 말하기는 어렵지 않은가?
따라서 면접관은 지원자가 포트폴리오에 명시되어 있는 프로젝트에서의 어떤 것을 구현하고 어떤 경험을 했는지 질문할 수는 있다.
Q1 : 32비트와 64비트의 차이는?
Q2 : STL List의 주요 특성은? 왜 그렇게 작동한나요?(WHY)
Q3 : 어떻게 그렇게 작동하나요?(HOW)
Q4 : 언제 사용하면 좋을까요?(WHEN)
당연히 알고 있어야하는 것 아니예요? 하는 반응이 많지만, 이렇게 간단한 것부터 개념을 확실히 알고 있는 것이 중요하다.
처음에 넥슨에 지원해야겠다고 결심한 순간, 게임을 많이 해보지 않아 걱정이 앞섰었다. 하지만 강연을 들으며 느낀 것을 면접관이 지원자를 판단할 때, 게임에 대한 흥미와 관심도를 보기 전에, CS지식이 얼마나 많은지 였던 것 같다.
서류로 지원자를 판단할 때, 우선순위가 코딩테스트 > 포트폴리오 > 이력서 라고 하는데, 처음부터 떨어지지 않기 위해서는 기본적인 코테 구현 능력과 알고리즘에 대한 이해가 필수라고 생각된다.
이번 강연을 참여가 "코딩테스트를 더 완벽하게 공부해야겠다고 결심"하는 계기가 되었다.