2010년 7월 28일 수요일

게임개발자 북미취업 가이드 3편: 취업을 위한 필수/선택요건 - 면접절차

    안녕하세요.  포프입니다. 이제서야 좀 본격적인 내용으로 들어가게 되서 다행이고 그동안 기다려 주셔서 고맙습니다. ^^ 이번 편을 읽으실 때 아래의 교훈(?)을 반드시 기억하시기 바랍니다. 이것이 이 편의 중심 주제입니다.

    성공하는 유일한 방법은 중요한 소수의 것에 한정된 자원(시간, 돈, 노력 등)을 집중적으로 쏟아붇는 것입니다.

    누구 말을 인용한 것이 아니라 제 스스로의 생각을 담은 것입니다. 북미에 게임개발자로서 취업을 하기위해 갖춰야 할 요건들이 꽤 됩니다. 하지만 그 많은 요건들이 모두 다 동일하게 중요하진 않습니다. 따라서 정말 중요한 것에 집중하는 대신, 모든 요건 전부를 대충 수박 겉핥듯이 갖추려고 하면 절대 성공하지 못합니다. 언제나 중요한 요건을 갖추기 위해 최대한의 노력/시간/돈/인생을 투자하시고 나머지 것은 대충 중간정도만 맞추시길 바랍니다.

    그렇다면 북미에서 취업을 할 수 있을 정도의 훌륭한 개발자가 되려면 어떤 요건들을 갖춰야 할까요? 우선 북미의 면접(interview) 절차에 대해 알아보도록 하죠. 각 면접 단계에서 어떤 요건/자질 등이 중요한지를 알면 전체적으로 어떤 요건들을 준비해야하는지가 보이거든요. ^^

    (일반적인)북미 게임개발자 면접절차
    위에서도 말씀드렸듯이 면접절차를 알면 뭘 준비해야할지가 보입니다. 일반적이라고 써드린 이유는 회사따라 기술면접 및 대인면접의 횟수나 시간이 조금씩 다르기 때문인데 뭐 그래도 아주 큰 차이는 없습니다. 그럼, 더이상 딱히 뭔가 멋지게 소개를 드릴 방법이 없으니 곧바로 본론으로 들어가죠. -_-;;;;

    1. 구인공고를 읽은 뒤 지원
    간단합니다. 일단 구인공고를 찾습니다. 구인공고가 한군데에 전부 나오는 곳은 가마수트라 구인공고란 외에는 딱히 아는 바가 없고 여기에 올라오지 않는 구인공고도 많습니다. 보통은 각 회사의 웹사이트에 직접 가시면 구인공고가 거기에 올라있습니다. (참고로 대규모 공채따윈 없습니다. 실력따라 뽑는 시스템에선 대규모 공채가 존재하기 어렵습니다.) 따라서 각 회사의 웹사이트를 방문하시고 거기서 일자리를 찾아서 지원하시면 됩니다. 북미 게임회사의 목록은 "2편: 북미 게임개발 근무환경/취업시장"에서 이미 소개드렸습니다. 지원은 보통 이메일이나 웹폼으로 합니다.

    이 단계에서 요구되는 자질은 '끈기'와 '노력'밖에 없습니다.

    2. 인사부(HR)의 추리기(Screening) 절차
    대규모 공채가 아니라 특정한 위치 하나에 지원을 하는거라 그만큼 경쟁률도 언제나 높습니다. 따라서 제일 첫번째 절차는 인사부 직원이 지원자들의 이력서를 읽으면서 그 중 면접을 할 사람을 골라내는 것입니다. 참고로 인사부 직원은 게임개발에 대해서는 쥐뿔도 모르는 사람들이므로(-_-) 그 사람들이 봤을때 '오! 이 지원자는 실력이 있어보이는데?'라는 느낌이 들 정도의 이력서를 내야 합니다. (참고로 여기의 이력서는 한국처럼 정형화된 서식이 아닙니다. 자세한건 '4편: 실전 가이드'에서 다룹니다.)

    따라서 이 절차를 통과하려면 옆집 아주머니 같은 분들에게 실력을 뽑낼만한 무언가가 필요합니다. 즉 '실력을 보여줄 방법'이 필요합니다. 경력자시라면 '경력' 및 '출시한 게임목록'이 당연히 도움이 되겠고, 딱히 경력이 없다면 '개인 프로젝트로 만든 게임'도 도움이 됩니다. 또한 '컴퓨터학과를 나왔다는 증명'도 도움이 될 수도 있습니다. (될 수도 있다고 한건 워낙 아시아권의 대학교육이 개판인게 많이 뽀록이 난 판이라... 별로 신뢰를 안두는 회사들이 꽤 생겼습니다.)

    만약에 실력을 증명할 방법이 아무것도 없다면... 여기서 걸려나가실 겁니다. 최소한 개인 프로젝트라도 하셔서 포트폴리오라도 구축하세요. (이에 대한 자세한 사항은 다시한번 '4편: 실전 가이드'에서 다룹니다.)

    3. 인사부 직원과의 전화면접
    인사부직원과의 추리기 절차를 통과하셨다면 가장 큰 골칫거리를 통과하신 겁니다. 사실 인사부 직원들은 게임개발에 대해 아는 게 별로 없으므로 이 사람들 통과하는게 가장 난해합니다.  힘든게 아니라 난해하죠. -_-;;; 본인이 가진 실력을 직접 보여줄 방법이 없으니까요. 어쨌든 추리기 절차를 통과하셨다면 아마 요 밑의 단계들을 거의 전부다 거치는 경우가 더 많을 겁니다. (중간에 엄청 개판치시지 않는한 말이죠..-_-;;;)

    인사부 직원이 이메일을 보내서 언제언제 전화면접을 하자고 약속을 잡고, 그 시간되면 지네들이 전화합니다.(국제전화비 걱정마시길 -_-;;) 시간은 15분에서 30분 정도 걸립겁니다. 인사부 직원들이 전화면접에서 보는건 두가지입니다.

    a) 이력서를 다 진실되게 썼는가? - 이력서에 열거한 내용들을 하나씩 물어보며 그 때 한 일(혹은 공부한 것)에 대해 좀 더 자세히 물어봅니다. 그냥 솔직하게 말씀하시면 됩니다. (여기선 거짓말 했다가 들키면 매장이라고 생각하셔도 됩니다. -_-)

    b) 인성이 어떤가? - 몇가지 질문을 통해 지원자의 인성이 어떤지 대충 알아보려 합니다. 완전히 지 혼자 잘나고 매우 거만한 사람들만 아니면 무사할 겁니다. 이 때 보통 묻는 질문들은 "전에 있던 프로젝트에서 어떤 문제가 있었냐? 그럴 땐 어떻게 해결했냐? 다음엔 어떻게 해결할 거냐?", "본인의 장점이 무엇이라 생각하나?", "본인의 단점이 무엇인라 생각하나?" 등입니다. 역시 별로 크게 문제될 질문 내용은 아닐듯 합니다.

    따라서 이 과정에서 정말 중요한 자질은 '인성'외에는 없습니다. 저는 인성도 실력(skills)중에 하나라고 생각합니다. 게임개발자가 되려면 프로그래머라면 기술적인 실력(technical skills), 기획자라면 창의적인 실력(creative skills), 그리고 아티스트라면 예술적인 실력(artistic skills)이 있어야 하지만 이 외에도 모든 개발자들은 대인관계 실력(people skills)가 필요합니다.  따라서 '인성'도 '실력'으로 보겠습니다.

    4. 개발자들과의 전화면접
    인사부와의 전화면접이 큰 무리 없이 끝났다면 또 다른 날에 전화면접 예약을 잡고, 그 날에 그 회사에 근무하는 개발자 2명 정도가 전화를 줄 것입니다. 이 면접에서도 역시 이력서에 쓴 내용을 중심으로 이전 경력(또는 학교공부)에 대해 짧게 논한 뒤에,  주로 기술적인 내용들을 많이 물어보지만 전화상으로 면접을 보는지라 아주 구체적인 내용을 묻기보다는 전반적인 이해도를 묻습니다. 일반적으로 묻는 질문들은 "추상 함수가 무엇인가?", "행렬의 용도는 무엇인가?", "쿼터니언을 왜 쓰는가?" 등의 질문입니다. 이 면접은 보통 1시간 정도 될 겁니다.

    이 단계에서 중요한 것은 무엇일까요? 당연 '실력'이죠. 다른 것 없습니다.

    5. 개발자들과의 대인면접
    개발자와의 전화면접까지 통과하셨다면 이제 대인면접을 봅니다. 비행기값 100~200만원 별거 아니니까 그냥 내시고 날라오시면 됩니다. -_-;;;;..........는 농담이고 ^^.... 해외에 있는 개발자들을 구인할려고 맘 먹은 회사정도 되면 비행기값/숙박비 정도는 다 제공합니다. 그리고 회사 입장에서도 이 정도 돈을 내고 사람불러다 면접 볼 정도면 이미 채용할 생각을 많이 하고 있단거죠. 따라서 그냥 떨지 마시고 담담하게 면접 보시면 됩니다.

    보통 하루에 개발자들 2명씩 2번이나 3번(총 4명~6명) 면접을 볼 텐데요. 각 면접은 1시간 정도 됩니다(총 2~3시간). 당연히 처음에 다시 이력서에 쓴 내용들에 대해 좀 더 자세히 짧게 물어보고, 곧바로 화이트보드 테스트(칠판 테스트요 -_-)를 합니다. 즉 면접관들이 "이런~ 이런~ 코딩을 해봐라." 라고 하면 화이트보드에 마커로 코딩을 합니다. 따라서 좀 어설픈 프로그래머들은 이거 통과하기 어렵습니다. ^^ 주로 물어보는 주제는 다음과 같죠.

    • C관련
      • 포인터
      • 비트 연산자
    • C++관련
      • virtual 키워드의 의미
      • 다형성(polymorphism)
      • 상속
      • 추상 클래스(abstract class)
      • static 키워드의 의미
      • const 키워드의 의미
      • 포인터와  reference의 차이
      • malloc/free와 new/delete의 차이
    • 일반
      • 2진수 다루기
      • 일반적인 논리력
    • 기타 해당직에 관련된 질문들

    한마디로 C/C++ 프로그래머라면 반드시 기초로 집고 넘어가야한다고 무수히 강조하는 내용들입니다. 기초가 안되면 좀 프로그래머 하시기 어렵습니다. ^^

    아, 참고로 모르시는 질문이 나오더라도 당황하지 마세요. 이 면접관들이 보는 것은 문제를 푸는 과정입니다. 따라서 면접관들에게 힌트를 좀 달라고 해도 되고, 확실하지 않은게 있다면 면접관들에게 물어보면서 문제를 풀면 됩니다. 그리고 문제를 푼 뒤에도 면접관들과 대화를 하면서 좀더 최적화된 방법을 찾거나 하게 됩니다.

    실제 질문 예들은 이 글의 마지막에 실고 보시는 분들 풀어보라고 시키겠습니다 -_-+;

    6. (추천인 체크)와 채용
    대인면접도 무사히 끝났다면 추천인(reference)들 목록을 달라 하기도 할 수도 있고 안할수도 있습니다. 매우 형식적인 절차라고 보셔도 되는데요. 그냥 현재나 과거직장동료, 친한 친구, 선생님 등등을 한 3명정도 보내면 됩니다. 그냥 '이 인간 믿을만한 인간이요?', '당신이 나라면 이 인간 채용하겠소?'라는 정도 질문입니다. 따라서 철천지 원수나, 예전에 칼부림 내고 헤어진 애인 등은 절대 추천인으로 쓰지 마시길 -_-;

    뭐 추천인 체크도 끝났다면(아니면 아예 체크조차 안했다면 곧바로) 채용계약서가 이메일로 날라올겁니다. 연봉 얼마에 언제부터 시작하고 등등, 여기에 적힌 모든 내용은 협상이 가능합니다. 시작날짜는 매우 유동적일거고, 연봉은 그보단 덜하겠지만 협상하면 더 받으실 수도 있습니다. 뭐 협상 안하셔도 한국에서 받는것보단 훨씬 많을 테지만 그래도 시작 연봉에 따라 나중에 연봉인상도 좌우되니 적당히 협상하세요. ^^

    7. 그 외 잡다한 것들
    이제는 오셔서 일하시기 위해 한국정리좀 하시고, 회사에서는 주는 서류 받아다 취업비자 신청하고 기타 등등 입니다. 뭐든간에 궁금한게 있으시면 회사나 미영사관/캐나다 영사관 등에 물어보면 다 하실 수 있을 겁니다. 저는 대학졸업한 뒤에야 먼저 와있던 가족따라 이민온 뒤에 취업한 뒤라 이 부분에 대해서는 잘 모릅니다. 그냥 그렇게 취업비자 받아서 온 한국, 영국, 콜럼비아 분들 몇 분 알 뿐입니다.

    비자 문제는 면접 통과하는 거에 비하면 그다지 어려운 일이 아닙니다.

    취업을 위해 갖춰야할 필수요건 / 선택요건
    위에서 면접절차를 설명드리면서 갖춰야할 이런 저런 자질들을 말씀드렸습니다. 그럼 이 자질들을 중요한 순서대로 나열해보겠습니다. 목록의 위에 있을수록 필수요건이고 아래쪽에 있을수록 선택요건입니다. 처음에도 말씀드렸듯이 중요한 요건(즉 위에 있는 것들)에 집중적으로 자원을 투자하셔야 합니다!!

    1. 실력
    실력이 없으면 운좋게 인사부 면접 통과해도 채용까지 가지 못합니다. 쓸데없이 인사부랑 면접보느라 시간만 낭비하실 겁니다. 따라서 실력이 우선입니다. 며칠전에 실력이 어느정도나 되야 하냐고 물어오신 분이 계셨습니다. 제가 위에서 열거한 대인면접 질문주제들을 빠삭하게 아실 정도면 아무 문제 없습니다. 그리고 아래에 제가 나열할 프로그래밍 질문들을 (어디서 배껴오지 않으시고) 풀 실력정도 되시면 역시 걱정 없습니다. ^^

    위에서도 잠시 말씀드렸듯이 경력이 없으신 분들은 인사부직원을 설득시킬 수 있을 방도를 준비해두시기 바랍니다. 개인 프로젝트를 통한 포트폴리오 구축이 와따입니다.

    이 외에도 대인관계 실력(people skill)이 있습니다. 일반 개발자로서는 중요한건 다른 개발자분들 존중하고 그 분들과 팀을 구축해서 일하기에 모나지 않은 사람입니다.즉 팀플레이어죠. 근데 누구나 개나소나 팀플레이어라고 우깁니다. 진정한 팀플레이어는 남을 존중해야만 가능합니다. 다른 사람들이 하는 일에 마찰을 일으키지 않기 위해서 뒤찜지고 있는 사람은 팀플레이어가 아니고, 다른 사람 하자는대로 아무 말없이 좇아가는 사람도 팀플레이어 아닙니다. '너는 나이가 어리니까', '넌 아는게 없으니까'라면서 무시하고 자기맘대로 하는 인간도 팀플레이어는 아닙니다. 팀플레이어는 건설적은 토론을 통해 게임개발과정을 수월하게 만드는 사람입니다. 언제나 너무 추상적인 개념이라 개나소나 팀플레이어라고 우기긴 하지만요. -_-

    2. 경력
    경력만큼 인사부에게 실력을 증명하기 간편한 수단이 없습니다. 다른 회사에서 근무할 정도면 그만큼 실력이 있을거라고 믿어주는 거죠. (결과적으로 문제는 인사부 직원들이 훌륭한 인재를 알아볼 실력이 없으니 대충 다른 회사의 인사부 직원들을 믿어보자는 속셈이죠 -_- 뭐 그래도 이 사람들을 통과해야 취업도 되니 저희가 굽히는 수밖에 ^^;;) 따라서 경력이 있으시면 훨씬 편할 겁니다. 제가 여러분들에게 권해드리는 방법도 한국에서 최소한 1~2년정도 경력을 쌓으시라는 거죠. 그리고 한국 게임회사에 취직이 안될정도의 실력이시라면 여기서는 더 어려울 거라고 생각합니다.

    또한 경력이 단순히 인사부를 속이기(?)에만 유용한게 아닙니다. 하지만 단지 게임을 오래 만들었다고 존경을 받아야 한다는 말은 아닙니다. (그런 거라면 저 게임계 당장 떠납니다.) 경력을 통해 쌓은 지혜(wisdom)는 정말 귀중합니다. 예를 들어 PS2 개발을 하셨던 분들이라면 PS3에서 하지 말아야 할 일 등 따위를 대략 느낌만으로도 아십니다. 따라서 쓸데없는데 시간 낭비하면서 소중한 개발비 날릴 가능성을 줄인다는거죠. 매우 값진 신내림이죠 -_-. 저만해도 Character Customization만 이미 3번 만들었는데, 실시간으로 DXT 텍스처를 생성하려면 어떤 짓을 하면 안되는지.. 아니면 어떤짓을 해야 하는지 등을 빠삭히 알고있죠. 그것도 PC, 엑박360, PS3등에서요. ^^

    3. 학력
    이거 학벌로 읽지 마시길 바랍니다. 사실 그놈의 학벌주의 때문에 한국대학교육 완전히 파탄났고, 그 때문에 졸업생들 자기들 전공에 전문가가 되기보다는 토익/토플에 전문가가 되는 상황이다보니... 아시아쪽 대학이름을 별로 믿어주지 않는 분위기입니다. -_-;;; 물론 전공에 대해서도 그런 편이고요. 그래도 없는 것보단 있는게 인사부를 통과하기가 조금은 편합니다. 학교이름보다는 전공이 중요합니다. 그리고 경력이 없으시다면 반드시 포트폴리오 준비하세요.

    4. 영어
    영어... 뒤에서 두번째에 나열했습니다. 놀라셨나요? 제가 1편, 2편 쓰고 가장 많이 들은 반응은 '전 영어를 못해서 힘들겠죠?'였습니다. 제발 좀... 깨어납시다. 한국분들 사실 영어 참 잘하십니다. 근데 영어 문법 하나만 틀려도 주변에서 '넌 영어를 왜그리 못하니?' 등등의 태클이 들어옵니다. 따라서 괜히 영어못하면 바보라는 자괴감만 들고 따라서 영어 잘못할까봐 피하게만 되고 무서워하고... 그래서 결국에 모든 일이 안되면 영어탓입니다.

    세상에 게임프로그래밍 하는데 영어쓸일이 얼마나 있습니까? 하루 8시간 일하면서 30분 영어쓰면 많이 쓰는 걸꺼 같은데요? 그 30분 영어하는거 아주 유창하게 못한다고 초천재 프로그래머 채용 안하겠습니까? 영어 몸짓발짓으로 그림그리면서 의사소통만 할 정도면 취직은 됩니다. 취직되면 살면서 자연히 늡니다. 저 고등학교때 수학성적은 올렸어도 영어성적은 올리는데 2년간 실패한 인간입니다. 대학때는 영어수업시간에서 선생이 발표준비하라는거 싫다고 했다가 대판 싸운 뒤 한번도 영어수업 안들어간 놈이구요. 고시준비하면서도 영어가 너무 싫어서 독어 했던 놈입니다. -_-;;; (그 뒤에 영어를 어떻게 했는지는 '5편: 실제 취업사례 - 포프'에서 말씀드리지요.) 영어는 닥치면 합니다.

    좀 더 현실적으로 말씀드리겠습니다. 이왕이면 다홍치마란 말이 있습니다. 만약 2명이 같은 자리에 지원을 했는데 2명의 실력/경력/학력(즉 위에서 1,2,3번)이 똑같으면 당연히 영어실력이 좋은 인간이 취업을 합니다. 이건 인종차별이 아닙니다. 본인이 한 회사의 사장이시더라도 똑같지 않으시겠어요? 따라서 언어의 벽을 넘어서 취업을 하시려면 영어는 몸짓발짓을 섞어가면서라도 의사소통이 될 정도로만 하시고 실력을 다른 지원자보다 높이기 위해 노력하셔야 합니다. 만약 2명이 지원을 했는데 한명은 실력/경력/학력이 훨 출중한데 영어가 딸리고 다른 한명은 실력/경력/학력이 딸리는데 영어가 출중하면 당연 실력/경력/학력이 출중하신 분이 취업합니다. 이건 정말 상식아닌가요?

    '나는 한국인이라 취업이 안돼.', '나는 본토인만큼 영어가 안되서 취업이 안돼.'라고 자위를 하면서 동정심이나 사고자 하시는 분들 많이 봤습니다. (특히 한인 이민자사회에 쌔고 쌨습니다.) 그리고 어쩌다 누가 한 명 백인회사(이렇게 표현하시더라구요?)에 취업하면 무슨 영웅보듯이 합니다. 아니, 베트남, 영국, 일본, 중국, 러시아, 폴란드, 콜럼비아 등  세계 모든 나라 사람들이 여기와서 취직하는데 왜 한국인은 안된다는게 말이나 됩니까? 저런 말들하시는 분들은 말그대로 자기가 못난거 인정할 자신조차 없고, 자기 발전시킬 노력도 하기 싫어하시는 게으르신 분들이니 제발 저런 분들이 하시는 말씀 무시하시기 바랍니다. 부탁드립니다.

    영어에 공포심을 느끼시는 분들이 너무 많고, 그것때문에 발목 잡히시는분들도 많으신거 같아서 별로 중요하지도 않은 영어에 대한 내용만 길어지고 있습니다. 하지만 이 내용을 더 길게 하기 위해(-_-;;;)제가 아는 다른 두 분의 이야기를 들려드리겠습니다.

    a) 캐나다에 놀러왔던 제 대학 후배: 여행을 매우 좋아하는 제 대학후배가 있습니다. 하지만 영어권보다는 이상한 개발도상국들을 많이 놀러다니는 친구입니다. 따라서 어느 한 언어를 딱히 공부하거나 연습할 기회가 없던 친구인데 제가 여기 온지 1년정도 되었을 때 놀러왔었습니다. 그 당시 저 스스로도 영어때문에 매우 주눅이 들어있었을 땐데 이친구... 사실 저를 매우 놀래켰죠. 이 친구 영어 정말 못하더군요. -_- 아주 심각할 정도로.... -_-;;;어디가서 물건 사는 것조차 힘든 친구였습니다. 근데 웃긴건 어딜 가든 길도 잘 물어서 척척 가고. 물건 찾는것도 물어봐서 척척 삽니다. 저보다 100배는 낳았습니다. 어떻게 하냐구요? 한영 전자사전을 들고다니면서 자기가 원하는 단어를 치고 그걸 발음합니다. 상대방이 못알아들으면 아예 보여줍니다. 이 친구 어느나라 가도 그렇게 살아남고 절대 부끄러워하지도 않습니다. "당연히 내 나라 언어가 아닌데 못하는게 당연한게 아냐?", "내가 돈주고 물건사겠다는데 내가 왕이지." (이걸 개발자에게 맞춰 바꾸면..."내가 지네 게임 만들어 주겠다는데 내가 왕이지."입니다.)  이런 자세 갖추시길 바랍니다. 가끔은 얼굴에 철판까셔도 됩니다. ^^

    b) EA에 취직하신 한국에서 오신분: 한국에서 고등학교 졸업하시자마자 경력 6년쯤 쌓으시고 EA 스포츠(캐나다에 있음)에 취직하신 분을 뵌적이 있습니다. 이 분도 영어 잘 못하셨습니다. 머물던 호텔에서도 영어 잘못이해해서 맨날 룸서비스시켜 드셔서 돈도 많이 내시고, 어디가서 뭐하실 때도 영어때문에 좀 시행착오를 거치시는거 많이 봤습니다. (심지어는 호텔에서 나갈 때도 영어를 이해를 못하셔서 여러번 물어보면 시간 꽤 끌었다는...^^) 그래도 몇년 째 일 잘하고 계십니다. 그리고 한동안 못뵈었지만 지금은 영어도 잘하시리라 생각합니다. (동료들 하고 어울리면서 늘어요.) 

    위의 이야기들이 힘이 되길 바래 봅니다. ^^ 영어는 그냥 쓰고 사셔야 늡니다.(한마디로 '영어공부 절대로 하지마라'라는 책에서 정찬용씨가 소개한 공부법이랄까요..) 그전엔 대충 못하셔도 상관없습니다. 영어에 쪽팔려하지 않고 대충이나마 연습하시고 싶으신분들은 저에게 영어로 트윗을 주시거나 답글을 영어로 남기셔도 됩니다. 저도 곧바로 영어로 답글합니다. -_-

    5. 인종
    뭐라 할말이 없습니다. -_-;;; 이걸 거론해야 하는 것 조차 참 어이없습니다. 하도 쓸데없이 '인종이 백인이 아니면 취업이 안된다.'라는 이야길 하면 자신의 허접함을 숨기시려는 분들이 많아서인데요 그런거 없습니다. 설사 있어도 한국의 인종차별에 비하면 아예 없다고 보셔도 됩니다. 무시합시다.


    마지막 몇마디
    이정도면 대충 이해하셨으리라 생각합니다. 실력 > 경력 > 학력 > 언어 > 인종 이라는 것을... 

    운이란 것은 없습니다. "운이 좋다"라는 말은 실력과 노력으로 뭔가를 이룬 멋진 사람들이 겸손한 척을 하기 위해 쓰는 말일 뿐입니다. 운이란 것은 없습니다. 단지 기회가 왔을 때 이미 준비가 되어있었던 사람들이 운을 만난 것처럼 보일 뿐입니다.


    그럼 프로그래머 면접문제 예제들을 드리면서 이 글을 마무리 짓겠습니다.

    프로그래머 면접문제들 예제
    당장 머리속에서 생각나는 면접문제들입니다. 친구분들하고 화이트보드 테스트를 흉내내며 서로 질문을 해봐도 재밌겠네요. ^^ 문제를 푸셔서 댓글로 답을 달아보시는 건 어떨까요? 제 맘대로 평가해드릴 수도 있습니다. ^^

    1. C의 atoi 함수를 구현해 볼 것
    2. C의 strlen 함수를 구현해 볼 것
    3. virtual void foo() = 0; 의 의미는 무엇인가 (클래스 선언 안에서)
    4. virtual 함수란 무엇인가
    5. polymorphism이란 무엇인가
    6. virtual 함수를 이용하는 간단한 클래스들을 구현해 볼 것
    7. bool isPowerOfTwo(unsigned int num) - num이 2의 승수인지를 판단하는 함수를 구현할 것
    8. void ReveseWordByWord(char* str) - str로 전달된 문장의 단어순서를 뒤집는 함수를 구현할 것. 예: "Dog is Cute"가 입력값이면 "Cute is Dog"이 반환값이어야 함
    9. void swap(unsigned char a, unsigned char b) - a와 b가 8bit 숫자일때 a와 b의 값을 바꾸는 함수를 구현할것. 단 새로운 변수를 사용하면 안됨.
    10. void foo() const; 에서 const의 의미는 무엇인가 (클래스 선언안에서)



    p.s.
    • 글 즐겁게 보셨고 다른 사람들에게도 도움이 되겠다 싶으시면 View On(Daum)이나 좀 눌러주세요. ^^
    • 3주동안 한번도 안거르고 썼어요.. 칭찬해주세요 ^_^
    • 질문은 답글로 남겨주세요.
    • 면접문제 다른거 생각나면 본글 에디트 한뒤 답글에 달겠습니다

    - 캐나다 버나비에서 Pope 올림.

    2010년 7월 24일 토요일

    이것 저것: 컴퓨터 게임 그래픽의 미래


    CryEngine 3Image via Wikipedia

    지난 몇주간 보고 들은 게임에 관련된 흥미로운 뉴스들:



    Enhanced by Zemanta

    2010년 7월 23일 금요일

    포토샵 블렌딩 수학공식

    게임업계에서 일하는 그래픽 프로그래머라면 아티스트들이 가끔 이런 요청을 해올 것입니다.

    "포토샵에서 오버레이 블렌딩 옵션이 있는데 이거 게임에서 쓸 수 있어요?"

    이럴 때 "꺼져 -_-!" 라고 한마디 하는 것보다... "네 그러지요 ^^" 라고 하면 아티스트들에게 좀더 사랑을 받을 수 있겠죠? 저도 최근에 포토샵 블렌딩 옵션중에 Overlay하고 Screen을 쉐이더에서 지원할 일이 있었답니다. 그 때 도움이 된 웹사이트 링크들을 아래 나열했습니다. (코드만 보셔도 됩니다 ^^)


    2010년 7월 14일 수요일

    게임개발자 북미취업 가이드 1편: 소개 및 저술방침


    드디어 전자책이 나왔습니다. 전자책 구매 방법은 연두미디어의 홈피를 참조해주세요.




    게임개발자 북미취업 가이드 시리즈 목차



    안녕하세요. 현재 캐나다 Relic Entertainment에서 그래픽스 프로그래머로 재직중인 포프입니다. 얼마전에 제 트위터 계정을 통해 북미취업에 관심이 있으신 게임개발자들이 얼마나 계신지 여쭤봤었는데 꽤 많은 분들이 답글을 남기셨더라구요. 여기에 힘을 얻어서 그동안 써볼까 말까 고민만 하던 '게임개발자 북미취업 가이드' 시리즈를 통해 제가 그동안 축적한 지식을 공유하겠습니다.

    짤막한 포프소개
    일단 '도대체 포프가 어떤 놈이길래 북미취업 운운이야?'라고 하시는 분이 계실거 같아 아주 짤막하게 제 소개를 하겠습니다. (저에 대한 보다 자세한 소개는 '5편: 실제 취업사례 - 포프'에서 더 자세히 다루겠습니다.)
    • 2008년 ~ 현재: 캐나다 Relic Entertainment에서 렌더링/그래픽스 프로그래머로 재직중. Xbox 360, PS3용으로 Warhammer 40,000 : Space Marine 제작 중. (링크 클릭하시면 E3비디오 보실 수 있습니다. 위 메인 메뉴에서 제 소개를 누르셔도 보실 수 있습니다.)
    • 2006년 ~ 2008년: Blue Castle Games에서 역시 렌더링 프로그래머로 재직하며 Xbox 360, PS3, PC, PS2, PSP, Wii 용으로 MLB 게임을 10개 정도 출시. (The Bigs, Major League Baseball MLB 2K8 등)
    • 2007년 ~ 2010년: 캐나다 소재 The Art Institute of Vancouver 대학에서 HLSL 쉐이더 언어를 가르침. 학생들이 최고의 선생으로 인정.
    • 2003년 ~ 2005년: 캐나다 소재 British Columbia Institute of Technology 대학에서 컴퓨터 학과 - Digital Processing을 전공하고 수석 졸업.
    • 1996년 ~ 2001년: 연세대 법학과를 다니고, 고시준비하다가 매우 형편없는 학점(2점대)으로 졸업. -_-;;;
    • 1993년 ~ 1996년: 한국에서 게임개발을 했으나 별다른 빛을 보지 못함 -_-;;;
    위에서 보실 수 있듯이 전:
    1. 제 실력하나로 북미에서 취직한 사람입니다.  아는 분 통하지도 않았고, 학교 선배를 통하지도 않았고, 한국회사의 북미지점에 취업하지도 않았습니다.
    2. 이미 몇  년 동안이나 북미에서 게임프로그래머로 일해 왔고 현재도 일류 개발사에서 그래픽스 프로그래밍을 하고 있습니다. 따라서 북미쪽의 개발환경에 친숙합니다. 참고로 북미는 캐나다와 미국을 포함하는데 미국과 캐나다의 게임시장은 거의 하나라고 보셔도 됩니다. (이에 대한 자세한 내용은 '2편: 북미 게임개발 근무환경/취업시장'에서 다루겠습니다.)  실제 저도 한달에 한두번씩 미국에 있는 게임개발사들의 러브콜을 받곤 합니다.
    3. 대학에서 강의를 3년동안 했습니다. 따라서 제 스스로의 경험 뿐만이 아니라 제가 가르친 학생들을 통해서도 게임회사에 취업하는 방법을 잘 알고 있습니다.
    이 정도면 대충 제가 이 시리즈를 쓰기에 부족하지 않다는 것을 보여드린 듯 하니 이제 제가 '게임개발자 북미취업 가이드' 시리즈를 써나갈 방향에 대해 귀뜸해드리겠습니다. 꼭 시간을 내어서 찬찬히 읽어보시면서 자신에게 도움이 될 글인지를 생각해보시길 바랍니다. (가능하면 많은 분들에게 도움이 되었으면 좋겠습니다.)

    게임개발자 북미취업 가이드의 저술방침

    1. 직접체험 위주: 제가 낯설기만 한 나라에 와서 가장 힘들었던 것은 정보의 부족이 아니었습니다. 제대로 알지도 못하면서 어디서 잘못 주워들은 허위정보를 사실인양 전해주면서 의시대는 한국분들이 저에게 가장 큰 고난이었습니다. 시행착오, 돈낭비... 무엇보다 시간낭비 장난 아니었죠. 이런 분들에게 몇 번 데인 뒤에는 스스로 보고 들은 정보가 아니면 믿지 않게 되었습니다. 다른 분들이 저처럼 시행착오를 겪지 않기를 바라는 마음에서 이 시리즈에서 다룰 내용도 제가 직접 경험한 일들을 중심으로 하겠습니다. 나중에 '7편: 실제 취업사례'에서 다른 분들의 경험담도 조금 실을 생각인데 이럴 때에는 제 직접 경험이 아님을 분명히 밝히고 사실만을 정확히 전달하도록 노력하겠습니다.
    2. 스스로도 척척 잘해요~ -_-: 저는 모든 일을 스스로 처리하는 것을 좋아합니다. 그리고 여기서 직장잡고 일하는 것도 한번도 다른 회사나 개인에게 돈주고 맡긴 적 없습니다. 따라서 제가 쓰는 모든 내용도 스스로 척척교의 교리를 실천하는 것을 목적으로 합니다. 여기서 주의사항 하나... 자기 통제력 없으신 분들, 항상 세상탓만 하다가 결국 기회가 와도 아무짓도 안하시는(못하시는게 아닙니다) 분들은 제 글 별로 도움 안될 겁니다. 그냥 보지 마세요.
    3. 실력 위주: 순수 실력으로 취업하는 방법을 다룰 겁니다. 줄 잘서서 어떻게 해보시려는 분들에게 해당사항 없습니다. 물론 아는 사람 통해 어떻게 취업하는 사람들도 소수 봤지만 능력위주인 이 쪽 문화에서 오래 버티기 어렵더군요.
    4. 최소비용 최대효과: 돈 이야기가 아닙니다. 시간 이야기입니다. 각 개인에게 주어진 시간은 매우 적고, 게임회사가 원하는 훌륭한 인재가 되기에는 상당히 많은 노력과 시간이 필요합니다. 따라서 정말 중요한 것에 시간과 노력을 투자하고, 별로 중요하지 않은 것은 아예 무시하거나 대충 중간만 가도 됩니다. 이거 안되시는 분들... 언제나 수만가지 일을 벌이고 하나 제대로 못끝내시는 분들.. 역시 제 글 도움 안됩니다. 웹브라우저 닫으세요 -_-
    5. 프로그래머 위주: 전 프로그래머입니다. 따라서 제가 제일 제대로 알고 제대로 말씀드릴 수 있는 것도 프로그래머로서 취업하는 겁니다. 물론 제가 다루는 내용 중에 꽤 많은 부분이 아티스트나, 기획자에게도 해당이 될 것입니다. 하지만 제 글은 프로그래머 분들에게 가장 큰 도움이 될 거라고 생각합니다. 물론 나중에 '4편: 실전 가이드'에서 아티스트와 기획자들에게만 해당하는 내용을 짤막하게 다룰 계획이긴 합니다.

    이번 주 글은 이렇게 서론으로만 마칠 계획입니다. 여기까지 읽고 '나를 위한 글이 아니다.'라고 생각하시는 분들이 계시면 시간낭비 시켜드리지 않고 싶기 때문입니다. 이 글은 어디까지나 제 스스로의 경험을 바탕으로 하는지라 모든 분들의 가려운 욕구를 충족시켜드릴 수는 없을 것입니다. 제 글이 본인에게 맞지 않는다고 생각하시는 분들은 죄송하지만 다른 글/길을 찾아보시길 바랍니다.

    이 글이 유용하다고 생각하시는 분들은 1 ~ 2주 안에 새 글로 뵙겠습니다. ^^

    p.s.

    • 글 즐겁게 보셨고 다른 사람들에게도 도움이 되겠다 싶으시면 View On(Daum)이나 좀 눌러주세요. ^^
    • 질문이나 피드백은 아래에 답글로 달아주세요.

    - 캐나다 버나비에서 Pope 올림.


    2010년 7월 7일 수요일

    이것 저것: 비디오 게임 최적화

    • NVIDIA Texture tool 2.0.8 이 릴리즈되었습니다: 특별히 변한 것은 없습니다. 제가 정말 원햇던 feature는 텍스처 툴 1에서 지원했던 sharpen 필터인데요.. 2.2 버전에서야 지원할 예정이랍니다.. 대체 몇년이 걸릴지... 참고로 NVIDIA 텍스처 툴은 오프라인 DXT 압축에서 매우 쓸만한 놈입니다.
    • GPU Pro 가 출시되었습니다. 그 유명했던 ShaderX의 뒤를 잇는 책입니다. 이름이 좀... 거만해졌죠? ... -_-
    • 리얼타임 렌더링의 저자 Eric이 Video Game Optimization이란 책을 추천했군요. 비디오 게임 최적화를 다룬 책이 별로 없었던듯 한데 한번 읽어봐야겠습니다.
    • Python 2.7도 릴리즈 되었습니다.  C#의 점점 위세를 넓혀가고 있지만 여전히 파이썬 많이 쓰죠?