우리나라에도 훌륭한 IT 기업들이 많이 있지만, 많은 개발자들은 이른바 FAANG 이라고 언급되는 Facebook, Apple, Amazon, Netflix, Google 에서 한번쯤 일하고 싶은 꿈을 갖고 있을 것이라고 생각합니다.


본 포스팅을 보면서 혹시 외국계 기업의 취업을 목표로 하고 계신 분이라면 많은 도움을 받을 수 있었으면 좋겠습니다.



1. GlassDoor


해외기업 중 탑급으로 일컬어지는 FAANG 의 경우 너무나도 유명하지만 들어가기도 쉽지 않을 뿐더러 좋은 외국계 회사가 FAANG 만 있는 것도 아닙니다.


실제로, FAANG 급의 연봉을 주면서 좋은 워라밸(Work And Life Balance)을 보장해주는 알짜기업들이 상당히 많습니다. ^^


혹시 제의를 받거나, 관심있는 공고가 떴다면 기본조사는 해봐야겠죠? 





GlassDoor : https://www.glassdoor.com/index.htm


아시는 분들은 아시는 유명한 기업 평점 사이트인 GlassDoor 입니다.


우리나라에는 잡플래닛과 같은 사이트들이 있지만, 해외에서 가장 인지도 높은 사이트 중 하나는 GlassDoor 입니다.


기업의 이름을 검색하는 것만으로도 연봉정보나, 실무자들의 리뷰들을 얻을 수 있기 때문에 구직시 아주 유용하게 사용되는 정보입니다.



2. MOOC 웹사이트


MOOC( Massive Open Online Course) 는 새롭게 떠오르고 있는 온라인 교육 플랫폼입니다.


그 중에서도 개인적으로 이용해본 2가지 사이트를 추천드립니다.



Udacity : https://www.udacity.com/


먼저 Udacity 는 실무 중심의 교육 플랫폼입니다. "Google 사의 XX 엔지니어가 알려주는 안드로이드 강좌" 와 같은 컨셉으로

강의가 진행되며, 상당히 실무에 밀접한 강좌가 진행됩니다. 


장점이라면, 학부강의나 인터넷, 서적 등에서 알기 어려운 실무들에 대해 염두하고 강의가 진행된다는 점입니다.


하지만 아쉬운 점은 대부분 유료강의인 데다가, 입문 강의 이상을 배우긴 쉽지 않습니다.





Coursera : https://www.coursera.org/


Udacity 가 실무중심이라면 Coursera 는 다분히 Academic 합니다. 


주로 대학교 교수님들의 강의가 많으며, 배우기 어려운 대학과정의 원론을 배우기에 적합합니다. 


특히 비전공자로써 소프트웨어 개발자를 목표로 하고 계시다면, 이곳에서 컴공 관련 기초 과목들을 들으시는 것을 추천합니다.


개인적으로는 기술먼저 배우는 것보다 교과과정의 기본을 통해서 숙달하는 것이 좋아보이기 때문입니다.



그 외에도 최근에 많은 MOOC 들이 있고, 대부분의 필요한 수업들을 들을 수 있습니다.


대부분 영어로 수업이 진행되기 때문에 영어로 기술적인 내용을 이해하고 학습하는 능력을 기르는데 큰 도움이 될 것입니다.


해외 취업을 목표로 하신다면 엔지니어라도, 수업을 따라가고 수료할 수 있을 정도로 영어 능력을 기르시는 게 좋습니다.




3. LeetCode


우리나라에는 아직 모르시는 분들이 많이 있으신 것 같아서 포스팅해보았습니다.


실제로 이미 외국계 직장인 포털등에서는 Bible 로 통하고 있는 LeetCode 입니다.


구글에서 시작되어 이제는 많은 외국계 기업에서 대세인 인터뷰 방식인 화이트보드 코딩 테스트와 동일한 형태의 연습을 해볼 수 있습니다.


문제 수도 정말 많고, 지속적으로 업데이트 중인 곳이라 잘 알아두시고, 꾸준히 문제를 풀며 연습하면 큰 도움이 될 듯 합니다.




https://leetcode.com/


당연히 모든 알고리즘 문제는 영어로 설명되어있고, 문제에 대한 토론도 영어로 이루어집니다. 


좋은 점은 어려운 문제들의 경우 솔루션을 직접 제공해주기 때문에 솔루션을 분석하며 준비하기가 아주 좋습니다.


또한 저는 개인적으로 가장 좋게 보고있는 점인데... 다른 알고리즘 사이트들과는 다르게 "알고리즘" 만 다루지 않습니다.


실제 면접을 위한 System Design 이나 Database Design 능력 들도 문제로 주어지고 풀 수 있게 되어 있어서 매우 유익한 사이트라고 생각합니다.




4. Github



Github : https://github.com/

말할 필요가 없는 "깃허브" 입니다. 해외 뿐 아니라 국내의 많은 기업들도 깃허브를 포트폴리오의 좋은 척도로 생각하고 있기 때문에 깃 허브 를 관리하는 것은 매우 좋은 선택입니다.


이미 현직에 계신 분들이라면 대부분 사내 버전 관리툴을 이용하기 때문에 개인 Git 에 큰 의미를 둘 필요는 없을 수 있으나,


신입 개발자이거나 개인프로젝트 또는 오픈 소스에 관심이 많다면 Github 를 통한 포트폴리오는 아주 효과적일 수 있습니다.


개인적으로 관심있는 프로젝트가 있다면 Fork 하고, 다른 사람들에게 PR 을 줘보세요. 그리고 하고싶은 프로젝트가 있다면 당장 깃허브에 올려서 시작해보세요. 많은 현업 경험이 쌓일 것 입니다.


5. Linked In



LinkedIn : https://www.linkedin.com/



아마 많이 들어봤지만 (특히 학생분들이라면) 의외로 링크드인을 실제로 쓰는 분은 많지 않을 것입니다.


하지만, 링크드인을 통한 구직은 개발자로써, 특히 주니어라면, 가장 해외이직을 하는 데 있어서 편한 루트를 제공해주는 SNS 입니다.


링크드인은 자신의 포트폴리오와 경력을 관리하고, 이를 바탕으로 구직/구인을 할 수 있는 SNS 입니다.


해외의 많은 Head Hunter 들 및 인사팀(HR)이 링크드인을 전담하고 있으며 채용 시즌마다 많은 우수한 개발자들에게 러브콜을 날립니다.


자격이 된다면 원하는 기업의 원하는 포지션에 도전할 수 있는 최적의 기회를 제공해주는 곳이라고 생각합니다.




블로그를 방문해주시는 분들의 외국계 기업 취직의 꿈을 위해 큰 도움이 되길 바랍니다.





해외 사이트의 좋은 글을 퍼와서 번역한 내용입니다. :)

특히 중요한 부분 위주로 변역하여 올린 내용으로, 이제 막 개발에 흥미를 붙이신 분들이라면 도움이 될 만한 습관들과 방법들을 정리해보았습니다.

(원 출처 : http://studyorcrytrying.tumblr.com/post/141574889807/general-always-comment-your-code-commenting-your)



좋은 개발자가 되기 위한 습관들


항상 코드에 주석을 달자.

코드를 만들면서 주석을 다는 것은 머릿속으로 생각을 정리하는 것 뿐 아니라, 다른 사람들이 코드를 읽었을 때 의미를 좀 더 분명히 할 수 있는 좋은 방법이 됩니다. 물론 줄마다 주석을 달 필요는 없지만, 특히 복잡한 로직이 포함될 경우에 주석은 코드를 파악하기 위한 좋은 습관입니다.


메소드와 함수들에 대해서는 기록하세요.
당신이 정의하고 만든 메서드에 대해 문서화하는 것은 프로그램 전체 구조를 추적하는데 있어 좋은 방법이 됩니다. 메소드 이름들을 리스팅하고, 어떤 인자를 Argument 로 갖는지, 어떤 동작을 통해 어떤 값을 반환하는 지는 프로그램 구조를 생성할 때, 각 작업 단위를 명확히 하는데 큰 도움을 줍니다.  또한 이는 프로젝트에 새로운 멤버가 프로젝트를 빨리 파악하는 데 큰 도움이 되기도 합니다.


당신만의 코딩 스타일을 확립하세요.

아마 처음 코딩을 시작할 때, 많은 코딩 스타일들이 레퍼런스 등을 통해 당신에게 유입될 것입니다. 괄호는 중구난방일 것이고, 불필요한 공간을 만들거나 변수 네이밍이 제각각일 수 있습니다. 경험을 통해 자신만의 코딩 스타일을 찾게 된다면, 코드를 빨리 파악하고 작성하는데 큰 도움이 될 것입니다.


사용하는 언어에 대한 Official 사이트를 알아두세요.

당신이 사용하는 C++, Android, Java 등등 언어에 대한 공식 웹 사이트를 알고 있다면 꼭 참조해서 알아보는 것이 중요합니다. 새로운 정보를 지속적으로 습득하는 것 뿐 아니라, 학습 자체를 하는 것에 있어서도 공식사이트가 갖는 공신력은 큰 영향을 가집니다.


당신만의 코드를 실험하세요.

이 부분은 코딩 스타일의 확립과도 일치되는 내용입니다. 만약 궁금하거나 실험해보고 싶은 부분이 있다면 얼마든지 도전해보세요! 새로운 기술을 적용하고 당신만의 프로그램을 당신만의 방법으로 최적화 해보는 것은 코딩 실력향상에 있어서 큰 도움을 줍니다. 심지어 당신의 선생님 / 사수가 당신을 최고의 코드를 만들게 인도하는 것보다도 더 큰 향상을 이루어낼 수도 있습니다.


당신이 한 작업을 디버깅하세요.

문제가 생겼을 시, 당신이 만들어낸 코드의 작업을 쭉 따라가면서 디버깅을 해보는 것은 좋은 습관입니다. 중간중간 작업의 단위를 나누어 디버깅을 하는 습관을 들인다면, 디버깅의 단위가 커져서 감당할 수 없게 되거나, 전체 모듈을 다시 코딩하는 불상사를 방지할 수 있습니다.




좋은 개발자가 되기 위한 초보 개발자들의 과제


출력 결과를 읽는 시간을 충분히 가지세요.

중요한 부분이나 중요한 결과가 도출되는 부분에서 만들어내는 프로그램의 출력 결과를 무시하는 경우가 많습니다. 이 부분을 읽는 것을 불필요하다고 여기지 마시고 충분히 관찰해본다면 내부 구동 원리를 파악하고 학습에 도움이 될 수 있습니다.


코드 상단에 당신의 문서라는 걸 명시해보세요. 
많은 IDE 들은 author와 문서의 description 을 기입하는 기능을 제공하고, 이는 프로젝트 협업 시 어떤 파일에서 어떤 의도로 당신이 설계했는지 파악하는데 도움이 될 수 있습니다.

변수 들에 대한 리스트 만들기
당신이 사용하는 중요한 변수들이 있다면 리스트를 만드세요. 프로그래밍은 복잡한 작업이고, 시간이 지날 수록 예전에 사용하던 당신의 코드, 그 중에서도 변수들은 까먹기 쉽습니다. 훌륭하게 네이밍 하는 것은 이를 도와주지만, 훨씬 더 효과적인 방법은 Document 화하여 기록해보는 것입니다. 구식적인 방법이라고 볼 수도 있겠지만 초보 개발자에게는 프로젝트를 진행하는 데 있어서 큰 도움이 될 수 있습니다.

코드를 복잡하게 만들지 마세요.

초보 개발자 티를 조금 벗은 개발자들이 많이 하는 실수입니다. 할당받은 양이 있다면 그 만큼에 대해서만 코드를 작성하세요. 현금 결제 시스템을 만드는 데 있어서 신용카드나 보너스 등까지 고려할 필요는 없습니다. 


좋은 개발자가 있다면 언제든 도움을 구하세요.

Stack Overflow 에 의존하는 것은 좋은 방법이지만, 실제 더 나은 개발자가 있다면 직접 배우는 것이 더 도움이 될 수 있습니다. 문제를 해결해주는 답변에 당신은 좋아요를 누르겠지만 이해했다고 확신할 수 있나요?


페어 프로그래밍은 좋은 코드 향상 방법입니다. 하지만...

페어 프로그래밍은 좋은 협업 방법이지만 당신이 당신의 몫을 충분히 할 때 의미가 있습니다. 그렇지 않고서는 이는 지루한 1대 1 코딩 과외가 될 뿐입니다. 파트너에게 코드 작성을 기대지말고 스스로 독자적인 코드를 만들고 토론할 수 있을 때 페어 프로그래밍은 의의를 갖습니다. 


마지막으로 강조하지만 당신만의 코드를 만들어보세요.

깃허브나 다른 훌륭한 파트너에 의존하지말고, 구글에서 코드를 복사하지말고 당신만의 코드를 만들어보세요.

어려우면 어려운대로 처음부터 코드를 작성해보는 것이 굉장히 중요합니다. 남의 코드를 가져다만 쓰는 것은 결국 한계를 드러내기 마련입니다.



상당히 좋은 내용들이 많습니다. :) 

방문해주시는 분들 읽고 도움이 될 수 있었으면 좋겠습니다.

+ Recent posts