Replies: 1 comment 2 replies
-
|
우연님 이거 정리 너무 잘 되어 있는데 카페에 올려주시면 안되나요? 저희 게임 팀원의 자랑을 하고 싶습니다. |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
장소: 넥슨 채용의나라 2023
시간: 10월 14일 15:00~15:50
발표자: 오윤호 (넥슨, 신규 개발 본부 root실)
제목: 거기 학생, 게임 프로그래머를 꿈꾸시나?
서론
자기소개
오윤호, 신규 개발 본부 root실, 18년차, 면접 기술평가 담당
발표내용을 고민했는데 까놓고 최대한 도움이 되는 방향으로 해보겠다
다른 개발자에게도 많이 물어봤다
제일 중요한 것은 넥슨 전체를 대변하는 것도, 공식적인 의견도 아니라는 것
개인적인 주장을 많이 담고있는 강연이다.
게임 프로그래머의 마음가짐
게임을 만드는 사람들!인데 게임을 만드는 사람들에 소속되어 있다는 표현이 더 정확할 것이다.
신규 프로그래머들이 입사 후에 상처받는 경우가 있다.
프로젝트를 진행할 때 이런 부분은 구현 못해~라고 기획 휘두르고 아트한테는 빨리줘~ 이러실 수가 있다. (웃음)
근데 조직의 규모가 커질수록 프로그래머의 역할은 제한적이다.
기획은 기획자가, 프로그래밍은 프로그래머가 한다.
물론 기획 단계에서의 의견 제시나 개발 계획 참여는 얼마든지 가능하다.
프로그래머는 다른 직군의 꿈을 현실로 만들어주는 사람들이다.
신입 프로그래머에게 기대하는 것
우리는 슈퍼 천재를 원한다.
는 농담이다 (웃음)
우리가 기대하는 것은 새싹이다.
입사하자 일하는 것은 기대하지 않는다.
여러분이 들어오면 제일 아래로 들어오고, 굉장히 많이 배워야한다.
학습할 수 있는 OJT 같은 것들이 준비되어 있고
3~6개월은 최소한의 간단 업무만 진행한다.
그 업무를 통해 성장하기를 기대한다.
어떤 것을 기대하는가?
이런게 투입되면 저런 아저씨가 될 수 있다 (웃음)
열정 (시간)
모든 것에는 이유가 있다.
기존 코드를 통해서 누군가의 경험을 내 것으로, 수많은 사람들의 경험을 내 것으로 만드는 것이 3~6개월 동안 해야하는 것이다.
배우는 건 생각보다 시간이 오래 걸린다.
참고로 회사에서는 야근을 금지하고 있다. 크런치와 넥토리얼은 관련은 없다. (웃음)
평소에도 관련된 공부를 해야 한다.
질문 잘하는 방법
3개를 딱 정리해서 오전 회의시간이나 멘토, 옆자리에 질문하면 된다.
넥슨은 수평적이고 옆자리 사람이 끊임없이 알려주려고 노력한다.
컴퓨팅적 사고
논리적 사고를 이야기 하는 것이다.
문제를 알고리즘으로 해결하고,
업무 요청을 받았을 때 어떻게 만들지 그려내는 능력, 스스로 만들어낼 수 있는 능력을 기대한다.
기초 지식
CS에서 자료구조/알고리즘은 중요해서 따로 빼놓았다.
삶의 상식
제일 중요한 건 삶의 상식이다. 생각보다 문제가 된다.
모든 지식은 결국 상식 위에서 만들어진 것들이다.
Computer Science 기본 지식
컴퓨터 구조, 운영체제, 언어론 등 개발에 필요한 기반 지식, 여러분들이 학교에서 전공 수업으로 듣는 것들이다.
생각보다 논리적 오류보다 제약적 오류가 생기는 경우가 많다. 특히 하드웨어 수준에서의 지식의 차이가 이거 안돼요 / 이거 왜 안되지? 이런 대응할 수 있는 사람 없는 사람의 차이를 만든다.
개발할 때 성능적 한계를 미리 설정할 수 있고, 시스템을 설계할 때나 주변 사람에게 지식을 제공할 수도 있다.
자료구조와 알고리즘
로직을 설계할 때 자료 저장 및 관리를 위한 기본 지식이다.
C++의 STL에 대한 충분한 이해, C# Container에 대한 충분한 이해가 필요하다. 완벽한이라고 썼다가 충분한이라고 고쳤다 (웃음)
기초 그래픽스 지식
일부 프로그래머들에게만 해당된다. 근데 알고있으면 좋다.
기본적인 학습 수준으로 충분하다. 기초 수학 지식이 있으면 좋다.
일 하면서도 쌓을 수 있는 지식이다.
고급 개념
예를 들면 디자인 패턴 같은 것이다.
기본적인 디자인 패턴 같은 것을 알면 좋지만, 신입은 자세하게 숙지하지 않아도 크게 상관 없다.
신입 프로그래머에게 이것을 적용해야 할 정도의 업무를 시키는 조직은 거의 없다. 우리가 기대하는 것은 성장이다.
언어의 이해(C++, C# 등)
모든 프로젝트에서 기본적으로 요구하는 사항이다.
C++, C# 등 언어에 대한 이해는 거의 완벽을 요구한다.
언어를 공부 할 때 CS 기본 지식이 없다면 높은 수준의 이해를 얻어내기 힘들고
사용 언어의 이해 없이 게임 엔진에서부터 언어를 배워 내려가면 매우 곤란하다.
게임 엔진
기본적인 엔진 특성에 대한 이해와 사용 경험.
프로젝트 OT 기간과 적응 기간 동안 충분히 학습 가능하다.
조직 이동으로 인한 Unreal <-> Unity 사용이 바뀌는 경우도 많다.
C++에서 C#을 배우면 와 쉽다 편하다 하고
C#에서 C++로 가면 뭐야 이거하고 욕한다 (웃음)
근데 충분히 익힐 수 있다. 시간만 조금 걸린다.
DB
전공 과목에 있는 Database에 대한 지식이면 충분하다.
조직에 DB 특화 프로그래머가 있는 경우도
소통 능력
제일 중요한 것은 무엇보다 소통 능력이다.
지원서에 한두줄로 써있는 그 소통능력이 중요 당락에 큰 영향을 미친다.
옆의 사람과 텔레파시로 소통하지 않는다.
글이든 그림이든 요청사항을 말하고 글로 주고 받는다.
사업부와도 의외로 많은 얘기를 한다.
개발 문서를 써야할 때도 동료나 다른 사람을 위해서도
다른 직군과 소통할 수 있는 충분한 능력이 필요하다.
그 사람이 알지 못하는 것까지 알아야한다.
오늘까지 해주세요하고 자기는 퇴근~ 할 수도 있다. 상처받기 전에 미리 연습해둬야 한다. (웃음)
소통능력은 면접 시에 매우 중요한 평가 요소이기도 하다.
알고 있는 것을 얼마나 잘 설명하고, 질문의 의도를 빠르게 파악하는 지가 중요하다.
실제로 +-20퍼센트 정도의 평가 가감 요인이 되는 경우가 많다.
다름에 대한 이해가 있어야한다.
배경 지식도, 생각도 다르기 때문에 불필요한 오해가 생길수도 있다.
이걸요? 제가요? 왜요? 안된다.
프로그래머는 최대한 요청을 구현하는 방향이어야 한다.
그래서 팀프로젝트 경험을 중요하게 생각하고 힘들었던 점 같은 것을 물어본다. 근데 없었다, 괜찮았다 같은 대답을 하면 협업에 관심이 없는 사람이라고 생각할수도 있다.
공부는 어떤 것을, 어떻게 해야 할까?
3가지 요소를 충분히 고려해서 공부하는 것을 추천한다.
넓고, 그리고 중요한 내용은 깊게 공부해야하고
특히 사용 언어와 자료구조는 바닥까지 공부해야 한다.
면접에서는 무엇을 물어볼까?
포트폴리오
직군 면접 단계에서 결과물, 포폴은 그렇게 신경쓰지 않는다.
포폴에 대한 믿음과 신뢰에 조금 문제가 있다 (웃음)
프로젝트를 진행하면서 얻게 되는 경험이 중요하다.
경험에 대해 질문을 할수는 있다.
경험에 대답 못하면 마이너스 요소일 수도 있다.
포트폴리오에 투자하는 시간보다는 아까 3가지를 고려한 공부가 중요하다.
코딩 테스트
코테는 최소한의 선만 넘으면 된다.
코테를 잘한다고 실무를 잘하는 것은 아니기 때문.
(이번 넥토리얼 코테는 쉬웠다고 하는 1회와 어려웠다고 하는 2회 사이 수준을 목표로...)
직군 면접에서 묻는 내용은
개발에 필요로 하는 기본 지식(CS, 언어 등)의 이해,
클라이언트 지망이면 사용 경험에 있는 엔진에 대한 지식,
알고리즘(문제해결) 등이다.
여러분이 어떤 게임을 하고 좋아하는지는 사실 별로 관심 없다 (웃음)
기술 면접은 짧게는 40분, 길게는 1시간이고 매우 재밌는 시간이다 (웃음)
중간에 굉장히 목말라하시니 물 떠놓으시라고 추천한다.
QnA
A1은 강연자, A2는 옆에 계시던 진행자?
자기가 경험했던 프로젝트 코드/자료 첨부하고 싶은데 저작권 나한테 없으면 포폴에 못쓰냐?
A1) 그거는 우리가 판단할 바가 아님. 근데 코드 첨부 안해도 된다. 문제해결 능력에 대해 물어보기 때문
A2) 포트폴리오 첨부할 때 현재 회사에서 개발중인거 같은 거 첨부하는 것은 면접관 입장에서도 보안 의식이 없다고 생각해서 마이너스가 될 수 있다.
전회사 작업물을 포트폴리오에 넣고싶은데 아직 패치가 안됐다
A1) 전무후무한 기능이다 알려지면 큰일난다가 아닌 이상은 뭐..
A2) 경력으로 참여했다 이런건 괜찮은데 개발 코드 노출되면 위험할수도
코드리뷰 진행 방식이 어떻게 되느냐
A1) (전반적으로 가볍게 웃으면서 답변)
신입분들이 제일 싫어한다. 울면서 가신다. (웃음)
코드리뷰를 진행하는 조직이 굉장히 많다.
최악의 경우 빔프로젝트로 쏘면서 6시간 동안 한줄한줄 뜯어보고, 기간 내에 안될 거 같으니 (다른 부서에) 직접 패치일정을 미뤄야한다고 말하게 했다. (웃음)
빔 말고 외부 툴을 이용해서 각자 자기에서 하는 경우도 있다.
작업을 끝내면 파트장이나 멘토에게 넘긴다. 그럼 끊임 없이 구박을 한다. 버그 같은 것도 같은 방식으로 한다.
버그 발생 원인을 어떻게 수정할거다 하면 승인하고 잘 됐는지 확인한다.
보통 학생들은 경험이 없다. 하면 다시 안볼수도 있다. (웃음)
근데 굉장히 중요하다! 해보는 것을 추천한다.
포트폴리오에서 본 최악의 코드는?
A1) 굉장히 많다. 예를 들면 알고리즘에서 인풋데이터와 아웃풋데이터 직접 계산하고 1이면 뭐, 2이면 뭐, 3이면 뭐.. 가독성이 0이다. 변수 이름도 abcdef로 해놓고..
또는 작성했다고 내주신 코드에서 거의 선언문만 있는 프로토타입을 넘겨준 거 같은 건 안낸 것만 못하다.
코테 변수명도 평가에 포함되는지
A1) 솔직하게..?(웃음)
코테 때는 급한 거 아니까 크게 평가 안한다.
옛날에 분명 한 건 맞는데 면접 때 기억이 안난다면?
A1) 기초부터 다시 여쭤본다. 기억이 나도록(웃음)
점진적으로 사람이 추측하는 능력이 있기 때문에 대답을 유도한다. 잘 따라오느냐로 판단한다.
정리하고 보니 속기사?처럼 빠르게 받아적은 감이 없잖아 있네요..
좋은 분위기로 농담 많이하면서 진행됐던 강연입니다.
들으러 오신분들도 엄청 많아서 저는 맨 앞 바닥에 앉아서 봐가지구 보시면 사진이 바닥에서 올려다보는 구도입니다 ㅋㅋ
들으면서 저도 어떤 게임을 만들면서 어떤 경험을 했는지 스스로 정리해보는 기회도 됐고
취준을 어떻게 해야하는지 감도 조금 잡히고 했습니다~
그리고 좋았던 점
예티 가방 주고 카트라이터 인형탈 쓰신 분들이 사진찍어주심
Beta Was this translation helpful? Give feedback.
All reactions