GDG Campus Korea에서 개최한 'Daily 만년 Junior들의 이야기 : 델리만주' 밋업에서 발표했던 내용으로 대학원 석사 입학 후부터 오늘날까지 어떤 활동들을 했는지 정리했습니다. 대학원생 분들과 게임 프로그래머 취업을 준비하시는 분들께 많은 도움이 되었으면 합니다.
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
[델리만주] 대학원 캐슬 - 석사에서 게임 프로그래머까지
1.
2. • 옥찬호 (Chris Ohk)
• Nexon Korea Game Programmer
• Microsoft Development Technologies MVP
• 페이스북 그룹 C++ Korea 대표
• IT 전문서 집필 및 번역 다수
• 게임샐러드로 코드 한 줄 없이 게임 만들기 (2013)
• 유니티 Shader와 Effect 제작 (2014)
• 2D 게임 프로그래밍 (2014)
• 러스트 핵심 노트 (2017)
• 모던 C++ 입문 (2017)
4. • 석사 또는 박사 생활의 전반을 결정한다.
• 내가 무엇을 연구하고 싶은지 잘 생각해야 한다.
• 보통 대학원에 지원할 때 원하는 연구실의 교수님과
이메일로 연락해 미리 컨택하는 경우가 많다.
• 일부 대학원은 입학한 뒤 연구실을 컨택하기도 한다.
5. 논문 석사
• 연구실 소속 O
• 졸업 이수 학점 : 33학점
• 졸업 논문 필수
• 평점 제한 : 없음
• 개인 시간이 적음 / 방학 없음
(강의 시간 + 연구실)
교과 석사
• 연구실 소속 X
• 졸업 이수 학점 : 33학점
• 졸업 논문 필수 아님
• 평점 제한 : 3.0 이상
• 개인 시간이 많음 / 방학 있음
(강의 시간 빼고는 자유)
6. • 수업만 들으면 된다. → 남는 시간이 많다.
• 과제가 쉽지 않다. → 시간이 많으니 할 만하다.
• 하지만 고민이 많아졌다.
• 남는 시간에 무엇을 해야 할까?
• 논문 석사를 선택한 학생들만큼 열심히 해야되는데…
• 교과 석사라서 할 수 있는게 무엇일까?
• 시간을 어떻게 효율적으로 사용할 수 있을까?
7. • 개발자 커뮤니티 활동해보기
• 직접 커뮤니티를 만들어 보면 어떨까?
• 발표를 통해 많은 사람들에게 도움을 줄 수 있으면 좋겠다.
• IT 서적 번역해보기
• 공부도 할 수 있고, 돈도 벌 수 있다.
8. • C++ Korea
• 2013년 10월 8일 개설
• 초기 회원 수 2명
• 현재 회원 수 4,555명
• 세미나 4회 진행
• 스터디 8회 진행
• ‘C++ 핵심 가이드라인’ 번역
• 오늘의 저를 있게 해 준
소중한 커뮤니티!
15. • 다양한 곳에서 발표
• 첫 발표는 C++ Korea 1회 세미나 (흑역사…, 영상 있는데 보지 마세요)
• 발표도 경험치가 필요합니다. 자꾸 해봐야 익숙해집니다.
• 그래서 기회가 있으면 되도록 발표하려고 했습니다.
• 그래서 어디에서 발표했나요?
• 격변하는 프로그래밍 언어, 이제는 Let it go (KSIA 세미나)
• 게임 프로그래밍 기초 공부법 (KSIA 세미나)
• C++11 Key Features Summary (C++ Korea 1회 세미나)
• C++17 Key Features Summary (C++ Korea 2회 세미나)
16. • 첫 IT 도서 번역은 2012년에 시작
• 20대 버킷리스트를 달성하기 위해 (돈을 벌기 위한 목적 X)
• 처음에는 그림이 많고 페이지 수가 적은 도서 선택
• 대학원 진학 후 2013년 7월 31일 출간
• 대학원을 다니면서 남는 시간을 IT 도서를 번역하는데 써보기로 했다.
• 번역을 하면서 게임 개발 공부도 하고 돈도 벌 수 있는 기회
• 시간을 좀 더 효율적으로 쓰기 위한 방법
• 대학원을 다니는 동안 총 2권의 IT 도서를 번역
18. • 첫 학기 중간고사 결과를 보고 충격을 받아 자퇴할 생각을 했다.
• 각 학교에서 잘하는 학생들이 모인 대학원. 정말 잘하는 학생이 많다.
• 시험 결과가 좋지 않자 극도로 낮아진 자존감. 수업을 1주일 정도 가지 못했다.
• 부모님과 함께 오랜 시간동안 이야기한 뒤 마음을 다잡고 계속 다니게 되었다.
• 머신러닝 수업에서 ‘D+’을 받아 졸업하는데 어려움이 많았다.
• 수업의 체감 난도가 높았고 스스로 공부에 소홀히 했던 시기였다.
(p.s. Murphy 책은 너무 어렵습니다. 그리고 저만 ‘D+’을 받은게 아니에요. T_T;)
• 한 학기 더 다녀서 겨우겨우 3.0을 넘겨서 졸업할 수 있었다.
19. • 대학원생들이 보통 전문연구요원으로 가는 곳
• 연구소 : 국방과학연구소(ADD), KIST, ETRI, …
• 대기업 : 넥슨, NC소프트, 카카오, 네이버, 티맥스소프트, …
• 나의 생각
• 대학생때부터 게임 회사를 가고 싶었다.
• 넥슨, NC소프트 등 게임 회사를 우선적으로 지원하되,
불합격할 경우를 대비해 다른 분야의 회사도 준비하자.
• 우선 회사에 제출할 포트폴리오를 만들자.
21. 입사지원서 제출
자기소개서 제출
포트폴리오 제출
코딩 테스트
알고리즘 문제 풀기
코딩 스타일
기술 면접
컴퓨터 공학 관련 지식
문제 해결 과정
팀/임원 면접
팀에 어울리는 사람인가?
회사에 어울리는 사람인가?
최종 합격
연봉 협상
입사일 협의
22. • 첫번째로 냈던 게임 회사에서 서류 합격해 면접을 보게 되었다.
그리고 면접을 통과하지 못하고 불합격하게 되었다.
• 왜 불합격했을까? 스스로 생각해보았다.
• 이 때까지만 해도 면접을 너무 안일하게 생각했었다.
• 면접에서 묻는 건 대학교 때 배웠던 컴퓨터 공학의 기본 지식들인데,
공부를 한 지 오래되어 기억이 흐릿하게 남아있던 게 문제였다.
• 대학원 면접 때 준비했던 자료를 다시 꺼내서 공부해야겠다는 생각이 들었다.
• 탈락 이후 다음 회사에서 면접을 보기 전까지 매일 공부하며 정리했다.
23. • 대학교 때 배우는 주요 과목의 핵심 내용을 정리해서 노트로 만들었다.
• 1순위 : 자료구조, 알고리즘, 운영체제, 컴퓨터 구조, 객체 지향 설계,
컴퓨터 그래픽스, 계산기하학, 선형대수, 확률과 통계
• 2순위 : 이산수학, 오토마타, 컴파일러, 컴퓨터 네트워킹, 인공지능 및 기계학습
• 주로 사용하는 언어도 다시 한 번 정리했다.
• C++ : OOP를 중심으로 원리와 사용법을 다시 공부, 모던 C++ 문법도 살펴보기
• C# : 유니티 엔진을 사용하면서 봤던 코드들을 다시 한 번 살펴보기
• 시간이 남을 때는 알고리즘 문제를 조금씩 풀어보기도 했다.
24. • 이후 여러 회사에서 서류는 합격했으나 면접은 불합격하게 되었다.
• 일할 분야가 나와 맞지 않는 경우가 있었다.
• 주로 사용하는 언어가 맞지 않는 경우가 있었다.
• 외부 활동을 많이 하는 것을 좋게 보지 않는 경우가 있었다.
• 그러다가 넥슨 면접에 운좋게 합격할 수 있었다.
• 주로 사용했던 언어가 C++인데 면접에서 많이 어필할 수 있었다.
• 대학원 때 들었던 ‘계산기하학’ 수업이 면접에서 많은 도움이 되었다.
• 어려운 문제는 힌트를 들으면서 풀기 위한 여러 방법을 생각했다.
25.
26. • 대규모 프로젝트를 처음 경험해서 어려운 점이 많았다.
• 코드 라인 수가 수십만 줄이고 구조가 복잡하다.
• 프로젝트 빌드 자동화, 버전 관리 도구, 코드 리뷰, QA 등
대학생이나 대학원생 때는 경험해 보지 못했던 시스템이었다.
• 미리 경험해봤다면 좀 더 쉽게 적응할 수 있지 않았을까 하는 아쉬움이 남았다.
• 다행히 정직원이 되었지만 익숙해지는데 약 1년의 시간이 걸렸다.
• 어려운 점이 있을 때마다 멘토님과 팀원분들이 많은 도움을 주셨다.
• 프로젝트가 어떻게 진행되는지 알고 싶다면 다음을 참고!
(https://www.slideshare.net/utilforever/ss-114169070)
27.
28. • 입사했으니 끝? 새로운 시작이다.
• 회사에 계신 분들도 개인 시간을 활용해 공부하고 발전한다.
• 물론 사내 교육, 스터디 및 내부 발표를 통해 공부할 수 있다.
• 하지만 뭔가 아쉽다. 내가 하고 싶었던 공부를 해보고 싶다.
퇴근 후에 남는 시간을 잘 활용해 볼 수 있지 않을까?
• 대학원 때 했던 일들은 계속 이어서 하고 싶고,
전과 다른 새로운 무언가를 해보고 싶다.
• 더 넓은 세계에서, 더 많은 사람들과, 더 많은 지식을 나눠보자!
29. • 대학원생 때 했던 활동들을 여전히 하고 있다.
• C++ Korea : 세미나 및 스터디 진행, C++ 핵심 가이드라인 번역 작업
• 외부 활동 : Microsoft Techdays Korea 2015 발표, PyCon Korea 2018 스프린트,
16회/17회 해킹캠프 발표, 멜팅콘 2018 발표
KSCY 4회 ~ 11회 컴퓨터공학 세션 멘토
선린인터넷고등학교 특강, 한국디지털미디어고등학교 특강,
대덕소프트웨어마이스터고 특강, 한국애니메이션고등학교 특강,
• 도서 번역 : 러스트 핵심 노트 (2017), 모던 C++ 입문 (2017), C++ 최적화 (2019)
32. • 오픈소스 프로젝트를 활발히 진행해보기로 했다.
• game-developer-roadmap : 게임 개발자 로드맵
• CubbyFlow-v0 : 유체 시뮬레이터 + 머신러닝을 통해 실시간 유체 구현
• Hearthstone++ : 하스스톤 시뮬레이터 + 강화학습을 통해 승률 높은 덱 만들기
• Civilization++ : 문명 시뮬레이터 + 강화학습을 통해 승리 시나리오 예측
• CubbyDNN : C++17 기반 딥러닝 프레임워크
• CubbyRender : C++ 기반 크로스 플랫폼 렌더링 프레임워크
• CubbyCity : 도시 공학적 현상을 예측하기 위한 시뮬레이터
• 같이 하실 분이 있다면 언제라도 연락주세요! 환영합니다.
39. • 내가 하고 싶은 일이 무엇인지 생각해 보자.
• 나에게 주어진 시간을 어떻게 사용할지 생각해 보자.
• 다양한 활동을 하다 보면 기회가 찾아올 수 있다.
하지만 기회를 잡으려면 노력이 뒷받침되어야 한다.
• 입사했다고 해서 끝이 아니다. 계속 공부하고 성장해야 한다.
• 처음부터 잘 할 수 없다. 실수할 수 있다. 계속 부딪혀보자.
실제로 한걸음씩 나아가고 있는데 스스로 느끼지 못할 뿐이니까!