레이블이 소프트웨어인 게시물을 표시합니다. 모든 게시물 표시
레이블이 소프트웨어인 게시물을 표시합니다. 모든 게시물 표시

2019년 12월 10일 화요일

컬리지 프로그램 자문위원회 활동 (Program Advisory Committee)

안녕하세요 둥이아빠입니다.

보통 컬리지에서 오는 이메일들은 동문들에게 기금모금을 하는 연락이거나, 동문파티 등등 별로 관심이 없는 내용들이라 읽어보지도 않고 휴지통으로 직행하는 편입니다. 얼마 전에도 센테니얼 컬리지에서 이메일이 한 통 왔습니다.

'Invitation for PAC member'


메일 제목도 뭔지 알 수 없는 단어인 PAC이라는 말이 적혀있어서 바로 삭제를 했었죠.

그 사실을 잊고 며칠이 지난 후 얼마 전 주문한 TV가 아직 배송이 되고있지 않아서 혹시나 스팸함이나 휴지통에 메일이 들어있지 않을까 싶어 스팸함과 휴지통을 뒤져보는데, 의도치않게 그 메일의 본문이 열렸습니다. 떡 본 김에 제사지낸다고 열린김에 잠시 읽어보는데 메일의 시작이 제가 아는 교수의 이름으로 시작하더군요.

 'XXX 가 추천을 해주어서 너를 Mobile Applications Development 학과의 PAC 멤버로 초대하고싶다.'

PAC이 뭔지도 모르겠지만, 일단 학교다닐 때 만났던 교수의 이름이 들어있기에 구글에서 PAC이 무엇인지 찾아봤습니다. 찾아보니 Program Advisory Committee의 약자로 학과 프로그램 구성 및 설계, 방향성에 대해 자문을 하는 외부 자문위원 활동이더군요.

발신인도 찾아보니 그 학과의 full-time faculty 중 한 명인데, 교수를 하고있는 사람이 메일을 보내면서 아무도 알지 못 할 PAC이라는 약어를 제목으로 쓰고, 메일 본문에 PAC이 무엇을 하는 것인지도 쓰지 않아서 이 교수가 이상한 것인지, 저를 초대 할 의욕이 전혀 없는건지, 제가 상식이 부족한 것인지 잠시 생각하게 되었네요

여하튼, 구글링을 통해 PAC이 무엇인지는 알게 되었고, 참석을 여부에 대해 고민을 시작했습니다. 모바일 어플리케이션 개발쪽을 하긴 했지만 이미 손을 놓은지 거진 3년이 다 되었고, 제가 했던 모바일은 일반적인 시장에서의 그것과는 사뭇 다르기에 잠시 고민을 하다가 모바일 분야를 떠난지 약 3년가까이 되었고, 지금은 DevOps관련 일을 주로 하는데 그래도 괜찮은 것인지와, 구체적으로 어떤 활동을 하게되는 것인지 소개를 해 달라고 답장을 보냈죠.

메일을 보내고 잠시 후 곧바로 답장이 왔는데, 한 번 시작하면 3년간 임기이며, 일년에 2회 정기회의 외에 필수적으로 참여해야하는 별도의 활동은 없는 일종의 봉사활동이라는 답이 왔습니다.

일단 안그래도 바쁜 상황인데 저를 더 힘들게 만들만큼 일이 큰 것은 아니라는 점에 마음이 놓였지만, 반대로 학과 프로그램  설계에 참여하는데 연간 2회 미팅만으로 무엇이 가능할까 싶어 형식상 존재하는 위원회일 수도 있다는 생각에 다시 한 번 망설였습니다.

그래도 언젠가 제가 충분한 실력과 자질을 쌓은 후에는 컬리지 강사를 한 번 쯤은 해보고 싶다는 생각이 항상 있었기에 일단 한 번 참석을 해 보기로 결정을 하였고, 이번 주 월요일에 첫 프로그램 자문위원회 회의에 참석을 했습니다. 졸업 후 4년간 단 한 번도 학교에 갈 일이 없었는데, 지난달 지식 더하기 정보 나누기 행사에 스피커 참석 건으로 가고 다시 한 달 만에 학교에 오니 왠지 학생때로 돌아간 것 같아 이상하더군요. 제 신분이나 일자리 등등 모든 것이 불명확하던 시절이라 그 시절이 그리운 것은 아니였고, 자주오니 많이 바뀐 캠퍼스가 다시 눈에 익기 시작하더라고요.


지난번 행사는 학교 행사라기보다는 아리랑 TV의 행사에 학교와 같이 주관을 한 것이고, 학교 전체라기 보다는 국제학생 학부에서 주관한 행사라 딱히 학교 관계자들을 만나보지 못했는데, 이번에는 컬리지 학부에서 하는 행사인지라 오래간만에 몇몇 반가운 교수들과 학과장을 만나볼 수 있었습니다.

저를 추천해 준 교수 사무실에서 10분 가량 이야기를 나눈 후, 회의실로 들어가니 저에게 메일을 보냈던 교수가 테이블 세팅을 하고 있더군요.


이번 회의 아젠다, 위원회 활동에 대한 가이드 문서 등을 읽어 볼 때만 하더라도 형식적으로 하는 활동이라는 생각이 들었는데, 지난 회의록을 읽어보니 그래도 무언가 의미있는 활동이 가능할 수도 있다는 생각이 들었습니다. 자세한 행간의 내용은 제가 알 수 없지만, 현재 학과의 커리큘럼을 읽어보면 지난 회의록에서 제안한 몇몇 사항들을과 연관된 키워드들이 보였습니다.

저를 포함한 신입 위원 3인과 기존 위원들간 자기소개를 시작으로 본격적으로 회의를 시작하였습니다.

처음에는 어떤 회의인지 몰라 적당히 눈치를 보고 있었는데, 위원들 각자 자신이 생각하는 의견들을 가감없이 내던지고 있고, 학교에서도 이를 진지하게 받아들이는 모습이 포착되어 저도 제 생각을 이야기 하기 시작했습니다. 새로운 화두를 던지거나 이야기 전환할 만큼의 영어실력은 안되기에 제 생각과 어느정도 일치하는 이야기가 나올 때, 기회를 봐서 하나씩 생각들을 던졌죠.

"1년 2학기라는 시간은 그리 긴 시간이 아니다. 학기마다 배우는 전공 5과목 중에 서로 연관성이 아주 낮은 코스가 3-4개 정도로 학생들은 매 학기마다 전혀 다른 것 3-4개 이상 배우는 것인데, 차라리 1학기에는 mobile관련 다양한 것들을 general하게 배우고, 2학기에는 몇가지 스트림을 선택할 수 있게 하여 선택적으로 특정 스킬셋에 대해 깊이있게 배우는 것이 더 좋을 것 같다."

"개인적 경험상 컬리지 졸업자들이 대졸자 대비하여 인터뷰 뿐 아니라 실무에 있어서도 상대적으로 크게 취약한 것 3가지가 있는데, 디자인패턴/설계, 테스팅, 안드로이드 activity/fragment/service 라이프사이클 관리 등과 같은 기본지식이다. 4년간 배운 학생들만큼 성취를 할 수는 없을지 몰라도 어찌보면 현업에서 가장 기본이되고 중요한 지식을 전혀 배우지 않는 것은 문제가 될 수 있다."

회의가 진행되면서 여러 이야기들이 오갔고, 현재 프로그램에서 백엔드, iOS, Android, Mobile Web 등 너무나 다양한 기술들을 배우는 것이 문제라는 것은 학교에서도 동의를 했고, 학생들 설문조사를 거쳐 두번째 학기에는 2개 혹은 3개의 스트림으로 나누는 방향에 대해 학교에서 좀 더 고민을 하기로 했습니다.
현재 파트타임 교수를 하는 일부 위원회 멤버들이 우려하는 것은 비용/난이도 등의 문제로 학생들이 스트림을 선택할 경우 90%이상 Android로 가서 스트림 운영이 불가능할 수 있다는 것인데 (과목 개설을 위한 최소 학생 수 확보가 안될 수 있기에) 그래서 학생들의 의견 수렴이 필요하다는 것이였죠.

또, 학생들에게 너무 과부하가 걸린다는 것에 학교도 동의를 하여 2020년 가을학기 부터는 프로젝트 과목에서 모든 과목에서 배운 내용을 모두 총망라한 integrated capstone project를 하고, 각 과목에서는 학기말에 별도의 프로젝트를 하지 않기로 했습니다. 여러 과목의 교수들이 같이 협동해서 코스 커리큘럼과 프로젝트를 진행해야 하기에 학교 입장에서는 좀 더 일이 많아졌겠지만, 이전에 비해서는 학생들의 로드가 줄어들 수 있기에 좋아진 것 같아요.

그리고, 원래는 2학기에만 capstone project를 했는데, 이것을 1학기부터 하는 대신에 1학기 중반정도 까지는 진짜 프로젝트를 하기 보다는 실제 현업에서 필요로 하는 지식인 테스팅, CI/CD, 디자인 패턴/설계 등등에 대한 내용들을 조금씩이라도 훑어보도록 과목 설계를 하기로 했습니다.

이와 관련해서는 회의 중 세부적으로 정하지는 않았고, 추후에 shared document를 통해 서로의 의견을 주고받은 후 결정하기로 했습니다.

다음 미팅은 거의 반년 뒤에 다시 있을텐데, 이번에 제안된 내용들 만이라도 다 반영이 된다면 확실히 이전보다는 나아질 수 있을 것 같다는 생각이 듭니다.

하지만 결국... 수업을 어떻게 설계하건, 그 누가 와서 강의를 하건, 교육에서 가장 중요한 마지막 단추는 학생인데, 과연 학생들이 얼마나 열정적으로 수업에 참여를 하고 스스로 노력을 할 것인지가 의문이긴 합니다. 공자/맹자가 와서 가르친다 한들, 학생이 아무런 의지가 없다면 무엇 하나 깨우칠 수 없으니까요.
위원회 회원들 중 컬리지를 다녀본 경험이 있는 사람은 저 뿐이라, 대학생들을 생각하고 의견들을 제시한 것일텐데, 컬리지를 다녀본 저로서는 궁극적으로 마지막에 허무해지는 것이... 

'아무리 낮게 잡아도 절반 이상의 학생들은 공부 안하고 그냥 대충 학교만 다니고 졸업장만 받을텐데... 우리가 이렇게 목에 핏대 세워가며 토론하는 열정의 절반이라도 가진 학생은 아주 드물텐데...' 

이 생각이 드는 것이죠.

그래도, 이 학과는 다른 IT분야 학과와는 달리 관련 전공 기 졸업자들이 mobile 특화된 개발을 배우기 위해 듣는 프로그램이라 하니, 제가 경험했던 컬리지 학생들과는 사뭇 다른 열정이 있으리라 믿어보고 위원회 활동에 열심히 참여 할 생각입니다.

최소한 학교측에서 위원회의 의견을 경청하고 제안을 받아들일만큼 충분히 개방적이고, 커미티 멤버들 역시 이 봉사활동을 한낱 지나가는 일 정도로 생각하지 않고 열정적으로 참여하는 만큼 열심히 활동하다보면 무언가 발전이 있을 수 있을테니까요.

2015년 1월 16일 금요일

소프트웨어 개발자 / 프로그래머 캐나다 기술면접 및 취업 후기

북미 지역에서 엔지니어 취업에 관련하여 예상 질문 내용은 구글에서 영문으로 검색하면 수도 없이 많이 나오지만, 행여나 아직 영어가 익숙하지 못하신 개발자 분들을 위해 저의 수기를 남깁니다.

결론적으로 완전 엉망진창인 Resume와 Cover letter였지만, 제 기존 경력과 현 직장간에 어느정도 연결고리가 있었기에 회사에서 제 지원서에 관심을 가져주었고, 한국 경력에 대해 어느 정도는 인정도 받았고 몇 번의 기술면접을 통해 취업이 되었습니다.

캐나다에 온 이후 이곳 저곳에서 들리는 이야기에 의하면 이곳에서 취업을 하기 위해 가장 필요한 것 중에 하나는 스펙도 아니고, 실력도 아니고 훌륭한 resume와 cover letter라고 합니다.
하지만 북미 문화권에서 살아온 것도 아니고, 네이티브 수준의 언어를 구사하거나 작문 할 실력도 아니고(이 글에서 느껴지듯, 한국어 작문 실력도 우수하지 못합니다) Software developer에 대한 열망과 열의는 있지만 그간의 경력은 이미 한물 간 기술에 불과하며, 그간 쌓아온 지식 역시 최근 5년간 단절된 경력으로 인해 많이 잊혀진 상태인 저 였습니다.
한국인 개발자 모임에서 조만간 Cover letter와 Resumer관련 워크샵을 개최 할 예정이였고, 졸업을 위해 들어야 하는 마지막 한 과목에서 역시 이에 관련된 내용을 배우겠지만, 기왕 취업하기로 마음을 먹은 상태에서 저는 단 한 번이라도 인터뷰 기회를 잡아 실제 직업 인터뷰가 어떻게 진행되고 무엇을 물어보는지 경험을 하고 싶었습니다.

정확한 근거 데이터는 없지만 영어권 국가에서 경력이 없다면, 인터뷰 기회를 잡으려면 수십 곳에 job apply를 해야 할 것이라고 알고있었고, 그렇게 인터뷰를 십여 곳 이상 보아야 취업이 될것이라고 들은 바가 있었습니다. 그래서 Cover Letter와 Resume는 나중에 하나 씩 교정을 한다고 생각하고, 미리 이 나라에서 Job 인터뷰가 어떻게 진행되는지 경험을 해보고 싶은 마음에, 영주권을 받은 그 날부터 바로 monster, indeed 등 취업 포탈과 LinkedIn을 통해 관심업종/분야 의 구인광고를 필터링 걸어두고 매일매일 지원서를 넣기 시작했습니다.

처음에는 말 그대로 한번 정도는 인터뷰를 해보고 정말 마음에 드는 포지션만 지원을 해 보았는데, 벽에대고 말을 하듯 아무런 응답이 없었습니다. 
수십 곳에 지원을 하면 한 번 인터뷰를 본다고 했는데... 좀 과장이라고 생각했는데... 총 지원한 회사가 30 곳이 넘어가도 아무런 연락이 오지 않더군요.
그러자 오기도 생기고 욕심도 생겨나  하루에 3-4곳 씩 비슷한 분야가 나오면 지원을 하기 시작했죠.

제 Cover Letter가 워낙 부실했기 때문이기도 하겠고, 에이전시를 통해 지원된 것도 아니고 임직원 추천에 의해 전달된 것도 아니니 회사 HR에 제 지원서가 전달될 때 그다지 큰 영향력을 가지지 못했기 때문일 수도 있고, 제 경력에 최근 5년 정도는 Development 실무와 거리가 있었기 때문이기도 하겠지만, 누적 지원 포지션이 70-80 곳이 넘어도 아무런 연락이 없으니 점점 초조해지기 시작했습니다.

분명 처음에는 큰 기대를 하지도 않고, 어짜피 지금 학교 과정이 한 학기 남았지만 그냥 경험삼아 해보기로 한 일이였는데, 이제는 졸업을 해도 같은 상황이 반복될 것만 같고, 앞으로 이렇게 방 구석에  앉아서 "구인/구직 포털 자동 필터링 확인 - 포지션 확인 - 요구사항 키워드 체킹 - 커버레터 수정 - 발송" 이 생활만 반복할 것만 같아 불안하고 초조한 마음까지 들기도 했습니다.

크리스마스 때 지원 포지션들을 정리해 두었던 엑셀 파일에 100번째 줄이 채워지자, 쓸데없는 불안감이 스스로를 괴롭히는 것 같아 결국 학교에서 취업 관련 과목 수업과 개발자 모임에서 Resume 세미나를 통해 가다듬은 이후에 지원을 하기로 마음을 정리하게 되었습니다.

그리고 박싱데이 다음 날, 가족들과 차를 타고 근처 몰에 가던 중, 모르는 번호에서 전화가 왔습니다. 광고 전화 외에는 딱히 전화 오는 곳도 없어 보통 모르는 번호는 보이스 메일로 넘어갈 때 까지 안받는 편이지만, 요즘 이력서를 넣고있는 중이라 이건 꼭 받아야한다는 생각에 급히 골목길로 들어와 차를 정차시키고 전화를 받았습니다.

"안녕 나는 XX회사 인사팀의 OO이라고 해. 너 ㅁㅁㅁ 맞지?"

이 말을 듣는 순간 모든 안면근육들은 제 마음 속의 환희와 기쁨을 표현하기위해 노력했고, 제 아내는 그런 제 표정을 보자마자 눈치를 채서 아이들을 조용히 시켰습니다.

그런데 그 직후 전화에서 들려오는 소리는 곧바로 저를 경직되게 만들었습니다.

"네가 지원한 Senior C++ engineer 포지션에 대해 이야기 해보려고"

잉? 시니어? 이건 아닐텐데... 분명 아닐텐데...
포탈에 자동 잡 서치 필터링에 초급/중급으로 필터링을 걸어두기도 했고, 사실 제 경력상 최근 5년간은 실무 Development를 한 적이 없었고, 모든 경력을 합쳐도 실무 개발자로는 4년이 조금 안되게 근무한 것이 전부였기 때문이죠.

"자...잠깐. 포지션이 뭐라고?"
"Senior C++ engineer 포지션. 네가 지원한거. 나 XX 회사라고."

헉... 시니어? 뭔소리?
어느 정도 시니어로 덤벼 볼 만한 깜냠이 있다면 그냥 그러려니 했겠지만, 지금 제 상황이 전혀 그렇지 못하기에 그냥 넘어갈 수 없었습니다. 아... 처음으로 받는 회사 연락이 하필이면 기계적으로 이력서 넣다가 잘못 넣은 곳에서 온 연락이라니... 제 얼굴은 점점 흙빛으로 변해가면서 이렇게 이야기 할 수 밖에 없었죠.

"어... 난 Senior는 아닌것 같은데, 계속 C++를 해왔다면 시니어가 되었겠지만, 09년을 마지막으로 커리어 변경도 있었고, 내가 C++를 하긴 했었지만, WinCE나 Windows가 아니라 임베디드 폰에서 자체 OS였어. Windows/WinCE 플랫폼이나 프로그래밍은 아카데믹 수준 이상이 아니라 시니어는 아니야" 

주변에 자동차 경적 소리 등 여러 소음 때문인지, 제가 밖에 있다는 것을 알아 채고는 "혹시 밖에 있으면 다음에 통화하자"고 하면서 며칠 이내에 전화를 주겠다며, 서둘러 전화를 끊더군요.

내가 왜 지금 밖에 나와 운전을 하고 있었는지도 속상하고, 처음으로 연락이 온 것이 무언가 지원 포지션에 착오가 있는 것도 화가나고, 요즘 기계적으로 지원서를 작성했던 제 자신에게도 화가나서 제 낯빛은 점점 더 흙빛으로 변해가고 있었습니다.

곧바로 무언가 눈치를 챈 아내는 저 혼자만의 시간을 주기 위해 "전화해" 라는 한 마디를 남기며 서둘러 아이들을 챙겨 몰 어디론가 사라졌고, 저는 분통함에 스마트 폰을 꺼내어 그간 지원한 회사들을 정리한 엑셀 파일을 열어서 그 회사 포지션 링크를 열어보았습니다.

포지션 타이틀. 'C++ Software Developer'
다행히 시니어가 아니더군요. 그냥 인사과에서 제 경력이 05년 시작되었기에 그렇게 붙여준건가 싶어서 조금 안심을 하기 시작했는데, 세부사항을 읽다보니 "Senior or Lead role"이라는 말을 찾게 되었습니다.

헉... 입사 지원을 시작하고 두어 주 정도 지나자 점점 저도 모르게 기계적으로 움직이기 시작했고, 그 덕분에 회사 쟙 타이틀만 확인했지 세부 description에 언급 되었던 senior라는 말을 미처 인지하지 못하고 상향지원??? 을 하게 된 것입니다.

제가 지원을 잘못했다는 것을 확실히 확인하자 마음이 편해졌고, 고맙게도 저를 배려해 준 아내와 아이들을 찾아갔습니다.

그래도 혹시 몰라 그날 밤 잠들기 직전 연락이 왔던 번호를 폰북에 저장을 해 두었죠.

그리고 며칠 후 저장이 되었던 번호에서 연락이 왔습니다.

그 때에도 동네 YMCA에 갔다가 걸어도 돌아오는 길이였는데, 지난 번 처럼 주변 소음이 들려 전화가 중단되는 것이 싫어 바로 옆 콘도 현관으로 뛰어들어가 전화를 받았습니다. 
정말 다행히도 제 경력사항과 제가 가진 기술에 대해 이것 저것 상세하기 질문을 하기 시작했고, 결국 일단 기술시험을 한번 보자는 것으로 결론이 났습니다.

저의 경우 다음과 같은 순서로 채용 프로세스가 진행 되었습니다.
  1. 인사과 직원과 전화 인터뷰
    • 백그라운드 확인
    • 경력 확인
    • 개략적인 조건 확인(희망 포지션, 연봉, 복지 등등)
  2. 온라인 기술 시험
    • 1시간 내 2개의 C function 디버깅
  3. 인사과 전화 인터뷰
    • 경력사항 세부 확인
    • 근무 조건 추가 확인
    • 기술면접 일정 arrange
  4. 기술 면접
    • Senior Engineer 인터뷰 (Java, Android, C++ 3번)
    • Group Head 인터뷰 (WinCE / Android 2번)
    • Software VP(CTO) 인터뷰

1차 전화 인터뷰 이후 온라인 기술 시험을 치뤘습니다.
매우 어려운 문제는 아니였지만, Entry Level의 개발자의 기본적인 소양을 판단하기에는 적합한 문제로 생각되는데, C언어의 Syntax기반으로 짜여진 2개의 코드가 주어졌고, 각 코드의 작성 의도가 제시 되었습니다. 그리고 1 시간 내에 각 코드를 디버깅 하여 수정하고, 필요시 퍼포먼스를 향상시키는 것이였습니다. 최근 5년간 상용화 제품 레벨에서 직접 코딩을 한 경험이 없기에 바짝 긴장했지만, 막상 코드를 받아보니 Array length와 memory allocation관련 오류나, array의 값 read/write시 잘못된 루프 카운팅 혹은 O(n)으로 가능한 알고리즘이 불필요하게 O(n2)로 되어있는 등 예상보다는 쉬운 문제들 이였습니다.

시험을 치루고 약 1주 정도가 지난 뒤 다시한번 인사과 직원으로부터 연락이 왔고 엔지니어 팀에서 이력사항과 인터뷰 내용 그래고 온라인 시험 결과를 확인 해 본 결과 C++와 Android Engineer 양쪽 포지션을 제안해 보고 싶다고 했습니다.
여기서도 다시한번 문제가 있었죠. 이력서 상에 Technical Manager로 되어있는 4년 반 정도 경력에 Android 플랫폼으로 진행한 여러 프로젝트들이 있었지만, 실제 코딩은 전혀 하지 않았기에 혼자 이것저것 재미삼아 개발해본 Android 실력으로는 문제가 있을 것 같았습니다. 그래서 결국 다시한번 고해성사를 하게 되죠.
"Android 플랫폼의 몇몇 프로젝트에 Tech manager로 참여했지 실제 코딩 경험은 academic purpose 수준을 넘지 않는다. Android 개발은 해보고 싶은 분야이긴 하지만 너희 기대치와 다를 수 있는데 괜찮은가?"
결국 회사에서 검토해 보겠다고 하고 다시 몇일이 지난 뒤, 기왕 C++ 엔지니어로 면접을 보는거 Android 팀도 같이 한번에 면접을 보자고 하더군요. 이런 고마운 일이 ㅠㅠ

그렇게 면접 날짜와 시간을 정하고, 아래와 같은 순서로 약 2시간 반 정도에 걸쳐 face 2 face 기술면접을 치루게 되었습니다. 
  1. Core JAVA 기술 면접 (Android팀 Senior Engineer)
  2. C++ and WinCE UI 기술 면접( WinCE/Win Mobile Senior Engineer)
  3. Android Architecture (Android팀 Senior Engineer)
  4. Android  헤드 면접
  5. WinCE 헤드 면접
  6. CTO 면접
회사마다, 그리고 지원 포지션에 따라 기술면접 내용은 상이하겠지만, 그래도 혹시나 캐나다에서 기술면접 경험이 없으신 분들께서 참고하실 수 있도록 기억나는 질문 내용들을 적어봅니다.
  • 화이트 보드에 Pseudo code로  Merge Sort의 코어로직 메소트를 작성하라
  • Quick sort의 pseudo code를 작성해 보아라
  • Java에서 Interface/Abstract class를 비교 설명하고 언제 어떠한 class를 쓰는지 예를 들어라
  • 상속받은 2개의 Interface에 동일한 이름과 signature인 Method가 있고 상속한 class에서 동일한 이름을 가진 method를 구현하였을 때 어떠한 인터페이스의 method가 구현된 것일까?
  • 오버라이딩과 오버로딩에 대해 설명하라
  • 왜/언제 오버라이딩과 오버로딩을 사용하는가?
  • 각각 오버라이딩과 오버로딩된 두 메소드는 언제 어떤 메소드로 링크될까?(컴파일/런타임)
  • 사용해 본 디자인 패턴은 무었인가? 그 디자인 패턴에 대해 설명해 보아라
  • 유닛 테스트란 무엇인가? 유닛 테스트의 장점과 제약사항은?
  • Integration teset란 무엇인가? 언제 어떻게 해봤냐?
  • 네가 작성하지 않은 코드나 라이브러리를 테스트하거나 거기에서 무언가 문제가 있다고 보일때 넌 어떻게 디버깅 할꺼냐?
  • Android의 recovery mode란 무었인가? 언제 어떻게 사용하는가?
  • ANR은 무엇인가? ANR 회피를 위해 어떻게 하는 것이 좋은가? ANR 발생 시 디버깅 방법은 무엇인가?
  • Android에서 핸들러와 루퍼는 무엇인가?
  • 핸들러와 루퍼는 각각 어떻게 사용하는가?
  • Android에서 injection framework란 무엇인가? 언제 사용하는가?
  • Android에서 signing이란 무었인가? 왜 중요한가? 시스템 내부에서 어떻게 동작하는가?
  • Content Provider란?
  • Content Provider는 어떻게 사용하는가?
  • Broadcast Receiver란?
  • Broadcast Receiver 사용해보았나? 어느 경우였나?
  • Broadcast Receiver사용 방법에 대해 순차적으로 말하라
  • Android의 Inter Process communication 방법은 무엇인가? 어떻게 사용하는가?
  • Android Activity와 Fragment에 대해 설명해 보아라
  • Fragment를 사용해 보았다면 언제 사용해 보았는가? 왜 Fragment 가 필요할까?
  • Activity와 Fragment의 life cycle을 설명해 보아라
  • Thread간 동기화 방법들에 대해 설명해 보아라
  • 왜 캐나다로 오게 되었는가?
  • 향후 장기적 커리어 플랜은?
  • 개발자로서 가장 보람된 순간/가장 어려웠던 순간은?
  • 멀티 쓰레딩에서 가장 중요하고 많이 사용되는 메소드 3개는?
  • 프로젝트에서 사용했던 개발 방법론과 디자인 패턴은 무었이였는가?
  • 왜 다시 Developer가 되려고 하는가?
  • 새로운 기술이나 언어를 배워야 할 필요가 있을때 너는 어떤 방법으로 접근 하는가?
  • 왜 University재학 기간이 6년이나 되는가? (병역의무를 모르기에 2년간 낙제한 걸로 생각 했던듯)
  • 주어진 form에서 가능한 test case들을 뽑아 보아라
  • 다음과 같은 n x n의 비트 2차 배열이 4개가 있다. 1사분면에 데이터가 있는데, 오직 copy(sourceRectangular, destinationRectangular) 함수만 사용해서 1사분면에 있는 데이터를 좌우로 flip 시켜라
  • 192.168.xx.xx의 IP Address를 가지는 서버가 10.xx.xx.xx 주소를 가지는 firewall을 통해 인터넷에 연결되어있고 핸드폰 단말이 하나 모바일 데이터로 연결되어 있다. 핸드폰에서 서버로 접속할때 어떤 주소로 접근하나?
  • 접속한 firewall주소에는 여러 서버가 있을 수 있는데, 어떻게 각 서버로 포워딩하나?
  • 반대로 서버에서 핸드폰으로 연결을 하려고 할 때에는 어떻게 해야 하는가?
  • Java와 C++에서 Constructor와 Destructor를 설명하라
  • 왕실 와인셀러에 1,000병의 와인이 있다. 그 중 한 병에 단 한 방울이라도 마시면 24시간 이내에 사람이 죽을 수 있는 치명적인 독이 들어있는 것이 확실하다. 그리고 내일 처형될 예정인 10명의 사형수가 있다. 10명의 사형수를 통해 24시간 이내에 1,000병의 와인 중 정확히 어떤 병에 독이 들어있는지 확인할 방법을 제시해라.
  • 기타 제 경력사항에 있는 프로젝트들에 대한 문의와 당시 Software 디자인을 어떻게 했는지에 대한 질문들, 그리고 포트폴리오로 올린 웹에 있는 여러 App에 대한 질문과 각 App에서 특정 기능 프로시져와 구현방법 등에 대한 질문들이 있었습니다.
사실 위 질문들에 모두 답변을 하지 못했습니다. C/C++ 개발시 제 개발환경이 제한적인 Embedded환경이였기에 Multi-Threading이 안되었고 멀티 타스크들이 라운드로빈 방식으로 운영되었기에 thread관련 코딩은 가능해도 무언가 질문이 날아오면 바로 답변을하고 입으로나 손으로 코딩을 줄줄 할 상태도 아니였죠. 또한 Android역시 개인적으로 몇몇 어플 만들어 보고, 학교 과제나 프로젝트 정도만 했기에 필요에 의해 API doc을 찾아 개발하지 머리속에 그림이 술술술 그려지지는 않아 어떠한 개념에 대해 설명하라 까지는 답변을 해도, 그걸 어떻게 사용하는지 단계별로 설명하라는 질문들에는 청문회 공식 답변인 모른다, 기억이 안난다 라는 말만 해야 했습니다. 결국 로직 관련 질문이나 설계관련 내용들은 다 답변을 했지만 일부 API나 라이브러리 실제 사용 프로시져에 대해서는 반절 정도만 답변을 할 수 밖에 없었죠. 
그래서 Senior Engineer들과 면접이 끝났을 즈음에는 아... 첫 경험은 이렇게 처참하게 끝나는구나 라고 생각을 했습니다. 이후 Head들과 면접 시 경력사항에 언급된 각각의 프로젝트들에 대한 세부 질문과 각 프로젝트와 관련이 있을법한 기술 사항에 대한 질문들이 이어졌고 제가 느끼기에 head들이 제 경력을 인정해주고 그간의 경력에 상당한 관심을 보이며 그나마 약간의 희망이 생겼습니다. 그리고 마지막 CTO와 면접 시 대충 알긴 아는데 실제 코딩 경력이 의심스러웠는지 여러가지 로직과 알고리즘 구현 관련 질문이 이어졌습니다. 제가 생각해도 실제 API사용에 대한 구술에서는 꿀먹은 벙어리가 되었기에 글로 코딩을 공부한 사람으로 보이기 다분했죠. 다행히 특정 라이브러리 사용이나 API관련 문제들이 아니였기에 생각만으로 답변 가능한 문제라 멍때리지 않고 인터뷰가 진행될 수 있었습니다. 마지막 2차 비트배열의 flip에 대한 질문을 마친 후에 CTO가 해 준 말로 모든 걱정이 사라지게 되었죠.
"네 경력과 경험을 높이산다. 인터뷰 하기 전 너에게 기대했던 것들이 있는대 그 기대를 만족시켜서 나도 좋다. 넌 C++쪽을 하고 싶다고 했고 Android나 Java쪽 경력이 없는 것도 알지만, 네가 곧 캐치업 할 수 있을 것이라 생각하고 우리는 너에게 Android expert 포지션을 제안하고 싶다. WinCE도 주요한 우리 사업 영역이지만 Android BYOD 쪽에서 우리는 세계 최고이고 너 역시 Android팀에 합류해서 네 커리어를 더 키우는 것이 너에게도 우리에게도 도움이 될 것 같다. 오늘 오후나 내일 중으로 HR을 통해 세부 내용을 조율하고 싶다."

우왕~!!! 진짜 10년만에 듣는 취업 합격 통지. 립서비스가 강한 문화권임을 알면서도 정말 기분 좋게 해주는 말들이였습니다. C로 시작한 커리어 인지라 로우레벨 랭귀지에 대한 향수와 동경이 있어 그 쪽 커리어를 더 쌓고는 싶었지만, 첫 직장을 구하는 이민자로서 이것 저것 따질 때가 아니였습니다.

그렇게 기대와 실망 자책이 연속되었던 제 첫 캐나다 취업 수기는 해피엔딩이 되었습니다.

최근 5년간 개발 경력이 없다는 것과, 기존 개발하던 개발환경이 현재는 존재하지도 않는다는 것, 엉망진창 레주메/커버레터와, 부족한 영어실력 등 여러가지 단점이 많은 개발자였지만 70-80여 곳을 지원하다보니 이렇게 얻어걸리기도 하는군요.
한국에서 경력을 캐나다에서 이어보기 위해 노력하시는 많은 개발자 분들께서도 쉼없이 찾다보면 분명 기회가 생길 것입니다.

많은 분들께 전해들었던 이야기와 같은데, 온라인 시험과 기술면접을 경험해보니 한국보다 확실시 그 depth가 깊습니다. 면접 시간 역시 한국보다 길고, 면접에서 질문 내용 역시 한국에서의 그것 보다는 더 상세하고 깊게 들어가더군요.
마지막으로 기술 면접 시 모르는 내용이 나와도 당황하지 마시고 모르면 모른다고 답변하는 것도 방법인 것 같습니다. 응시자가 답변을 잘 하면 면접관도 어디까지 아는지 궁금해서 양파처럼 하나씩 계속 까보면서 그 depth를 더 파고들어 보는 경향이 있습니다. 꼭 그 질문에 답을 해야만 하는 것이 아니고 그 사람의 실력과 지식을 좀 더 알고 싶어서 하는 질문들도 많으니 모르는 내용은 담담하게 지나쳐 버리세요.

이제 2월 부터는 직장인으로서 캐나다 삶의 제 3막을 열게 되겠군요.

캐나다의 한인 IT 구직자 여러분 모두 화이팅 하시길...