IT -취업 DB

[넥토리얼, 채용의나라] - 게임 프로그래머가 되려면?

pearl.k 2023. 10. 17. 10:53

 

23.10.14 - 넥토리얼(채용의 나라) : 게임 프로그래머가 되려면?

해당 세션의 내용을 듣고 제 나름대로 이해하여 정리한 내용을 업로드했습니다.

먼저, 해당 세션의 연사분께서 넥슨 전체의 의견이 아니라 본인의 기준이라고 언급하셨으므로 참고 부탁드립니다!


 

1. 게임 프로그래머의 마음가짐

  •  기획 설계, 아트 디자인에 맞춰서 기존에 계획된 것을 만든다.
  • 조직의 규모가 커질수록 프로그래머의 역할이 제한된다.(원하는 것을 하지 못해서 상처입거나, 적응 어려울 수 있다)
  • (위 항목과 연결) 내가 원하는 게임을 만들 수 없다는 생각이 들 수 있다.
  • 프로그래머는 다른 직군의 꿈을 (기술을 통해) 현실로 만들어주는 사람이다.

 

2. 신입 프로그래머에게 기대하는 것

  • 새싹 두뇌 : 배운 것을 잘 흡수 할 수 있는 능력을 원한다.
  • (구체적으로) 2~3년 정도 지난 후에 1명의 역할을 할 수 있는 사람을 원한다. (발전 가능성, 처음부터 잘하는게 이상한거!)
  • 신입 프로그래머 적응을 위한 과정이 따로 있다. (3~6 개월은 최소한의 업무를 하며 공부하는 시간)
  • 신입의 덕목이라고 생각하는 요소 : CS 지식, 컴퓨팅적 사고, 열린 마음, 열정 (시간 투자)

 



3. 신입의 덕목, 항목 별로 자세히 살펴보기!

 

(1) 열린 마음

  • 모든 것에는 이유가 있다. (이전의 코드나 환경들이 그렇게 운영되고 있는 이유가 있음)
  • 내가 이미 알고 있던 것과 충돌 경험이 생길 수 있다.
  • 기존 코드를 통해 누군가의 경험을 내 것으로 만들자. (시니어의 것을 내 것으로!)
  • 내가 알고있는 것이 틀렸을 수도 있다. 열린 마음으로 받아들이는 태도 장착하기

 

(2) 열정 == 시간 투자

  • 누군가의 경험을 배우고 내 것으로 만들려면 시간이 소요 된다.
  • 작업 시간이 부족한게 체감될 수 있다.
  • 부족한 것을 채울 때 근무 시간만으로는 부족하다. >> 따로 개인 공부시간 필요
  • 공부 내용은 내 주변(팀, 업무) 이슈를 파악하면서 점점 넓혀야 한다.

++ 질문 잘하는 방법 (아래 3가지를 필수로 포함하기)

  1. 궁금한 부분을 짧고 간결하게 묻기
  2. 그 부분이 왜 궁금한지(어떤 작업 때문인지) 설명하기
  3. 본인이 이 문제를 해결하기 위해서 어떤 노력을 했는지 같이 설명하기

>> 동료에게 최소한의 예의를 지키면서 질문하는 방법 & 본인이 이를 해결하기 위해 노력했다는 것을 어필해야 한다. 넥슨은 수평적인 문화로, 서로 알려주기 위해 노력한다. 이런 질문의 자세가 매우 중요하다.

 

(3) 컴퓨팅적 사고 == 논리적 사고

  • 문제를 알고리즘으로 해결하기
  • 업무 요청을 받았을 때 어떻게 만들지 그려내는 능력 >> 구현 능력, 아키텍쳐 짜보기
  • 스스로 만들어보는 연습 필요

 

(4) CS 기초 지식

  • 컴구, 운체, 언어론 등 기본 지식 함양하기
  • 이러한 CS 지식은 (로직의 버그가 아니라) 제약이 있는 상황에서 발생하는 버그에 대응할 수 있게 만든다.
  • 예를 들어, HW 제약 상황에서, CS 지식의 차이로 해결 능력이 달라진다.
  • 개발할 때 성능적 한계를 미리 설정해보기, 시스템 설계 기반 지식 고려하기

 

(5) 자료구조 & 알고리즘

  • C++ STL에 대한 충분한 이해가 필요하다. << 매우 중요
  • C#의 컨테이너에 대한 충분한 이해 등
  • 자료구조, 알고리즘, 언어론에 대해서 충분히 공부하고 깊게 파고든 사람을 원한다. (가볍게 아는 것은 면접으로 걸러냄)

 

(6) 기초 그래픽스 지식

  • 신입에게 심도 있는 그래픽스 지식을 요구하지 않는다.
  • 기본적인 학습 수준, 사용해본 경험으로 충분하다. 업무 하면서 공부하면 된다.
  • But 행렬, 벡터 등 기초 수학 지식이 있어야 한다.

 

(7) 병렬 처리 - 서버 직군

  • CS에 대한 더 확실한 이해를 요구한다.
  • CS 기본 지식을 바탕으로 서버 병렬 처리 경험, 서버를 만들어 본 경험이 있는 것이 좋다.
  • 쓰레드 개수, 쓰레드 관리 등 고민한 경험이 있어야 한다.



(8) 고급 개념

  • 디자인 패턴 등 기존 프로젝트에서 쓰인 고급 지식을 적용하는 것을 신입에게 요구하지 않는다.
  • 신입은 들어와서 배우고, 스스로 공부하기를 원한다.

 

(9) 언어론, 언어의 이해 : CS 기본 지식과 결합하여 언어의 구조를 끝까지 파고드는 것이 좋다

 

(10) 게임 엔진 - Unreal, Unity

  • 엔진 특성을 이해하고, 기본 정도 사용해 본 경험이면 충분하다.
  • 들어와서 충분히 학습할 수 있다.

 

(11) Database

  • 전공 과목에서 들은 DB 지식이면 충분하다.
  • 조직에 DB 관련 특화 프로그래머가 있거나, DBA의 전문적인 도움을 받기 때문에 기본에만 충실하면 된다.

 

(12) 커뮤니케이션 능력

  • 면접 당락에 꽤 영향을 주는 요소이다. (진행자는 +/- 20% 정도라고 생각)
  • 인간의 인터페이스는 말과 글이다.
  • 기술 배경 지식이 없는 동료(타 부서)와 업무 이야기를 자주 해야한다.
  • 개발 문서를 써야하는 경우도 있다.
  • 잘못된 이해를 기반으로(소통 이슈) 개발하면 막대한 시간 손실 발생하므로 주의!
  • 면접 시 중요 평가 요소 : 본인이 알고 있는 것을 얼마나 잘 설명하는지, 질문 의도를 빠르게 파악하는지

++ 면접에서 묻는 내용에 잘 대답하려면 어떻게 공부할까?

Why? / How? / When? -> 3가지 요소를 충분히 고려하고 정리하면서 공부하기

(이게 왜 필요한지 / 어떻게 작동하는지 / 언제 사용하는지)

문제 예시를 찍어놓은게 있어서 가져왔당

넓고 깊게 공부하기 -> 언어와 자료구조는 깊이 공부하는게 중요하다. (단순 문법 X, 원리나 내부 구조까지 뜯어봐야함)

 


 

4. 면접 준비는 어떻게?

포트폴리오 : 포폴 자체의 비중보다, 포폴을 기반으로한 꼬리 질문이 있는데, 여기에 답하는게 더 중요하다.
프로젝트를 진행하면서 얻은 경험을 잘 말할 수 있어야 한다.
경험의 과정에 대해서 주로 질문 -> 사용한 기술, 트러블 슈팅 경험 등

경험 : 하나의 프로젝트를 끝내는 과정에서 얻게되는 것들
 - 목표 수립 했던 것을 이루는 경험
 - 협업 경험
 - 이론으로 알고있던 기술의 실제 사용
 - 과정에서 겪은 시행 착오 및 발전한 내용

코딩테스트
올해 난이도 : 넥토리얼 1회~2회 사이의 수준, 문제 접근할 때 효율성 측면에서 생각하기

면접 과정
직군 면접 : 기술 지식 및 경험에 대한 평가
팀 면접 : 팀에 맞는 인재인지, 제약 없는 평가



자유 Q&A 세션 내용 정리

 

면접 꼬리 질문 - 포트폴리오, 이력서 상의 프로젝트 경험에 대한 꼬리 질문 조심하기, 관심 분야에 대한 꼬리 질문 조심하기

보안 의식 중요(프로젝트 관련) - 함부로 중요한 코드를 포폴에 올리지 마라, 본인 경험을 general 하게 작성해도 된다.

사내 코드 리뷰는 어떻게 진행하나? - 팀바팀이지만, 빔이나 외부 툴 이용하기도 함, 코드 한 줄씩 뜯어보기!
누군가 작업을 끝내면, 파트장 등 다양한 사람들이 코드에 대한 코멘트를 남김, 디버깅도 같은 방법으로 진행

+ 기회가 되면 학생 시절에 코드 리뷰 해보기, 좋은 경험이 될 것이다!

지금까지 보신 것 중에 기억나는 최악의 코드는?
 - 알고리즘 깊이가 없는 단순 조건문 나열 코드 (과도한 조건문)
 - 어이없는 변수명 (무맥락 a, b, c, d 난사)
 - 완전 기본, 프로토타입만 있는 코드

의사소통 능력?
 - 면접하면서 면접관의 질문 의도를 추측, 파악하는 능력도 중요하게 봄
 - 위 내용을 잘 파악하면, 협업하기 좋은 팀원이라는 인식을 준다.