제목에서 알 수 있듯이 저는 Google의 소프트웨어 엔지니어 면접을 준비하기 위해 수천 시간을 읽고, 코드를 작성하고, 컴퓨터 과학 강의를 시청하는 데 보냈습니다.
제 인터뷰 계획이 궁금하시다면 제 github 프로젝트에서 그 계획을 보실 수 있습니다.
丨이 계획은 어떻게 이루어졌나요?
중학교 때 프로그래밍을 시작했지만 대학에서는 경제학을 선택했어요. 제가 졸업하면 취업을 원하는 프로그래머가 너무 많아질까 봐 걱정되기 때문입니다. 지금 생각해보면 나는 대법에 대해 틀렸다.
나중에 프로그래머가 되기 위해 군대에 입대했는데, 모집 담당자가 대신 국정원으로 보내주어서 1년 동안 중국어를 배우고 한국에서 2년 동안 복무했습니다.
은퇴하기 전에 다시 키보드를 집어들었는데, 상황이 변했고 사람도 변했다는 걸 깨달았다. 저는 중학교와 고등학교 때까지 BASIC을 사용했습니다. 그런데 복귀하고 나서는 C++을 사용했어요. 둘의 차이가 너무 커서 한동안 적응이 안 됐어요.
하지만 저는 웹사이트 만드는 걸 좋아했고, 그 당시에는 여전히 워드프레스(WordPress)를 사용하고 있었습니다. 처음부터 웹사이트를 구축하는 방법을 모르겠습니다.
은퇴 후 한국에 1년 더 머물면서 영어를 가르치기로 결정했습니다. 동시에 그는 자신의 원래 의도를 결코 잊지 않고 Perl, HTML, CSS(당시 새로운 창조물), JavaScript 및 SQL을 사용하여 웹 개발을 배우며 저녁과 주말을 보냈습니다.
1년간의 집중적인 공부 끝에 저는 시애틀에서 프로그래밍 직업을 얻었고 그 이후로 계속 시애틀에 있었습니다.
저는 이후 15년 동안 웹 개발자로 일했습니다. 저는 세 개의 회사를 시작했는데 그 중 두 개는 오늘날에도 여전히 수익을 내고 있습니다. 수년 동안 저는 대기업과 중소기업을 막론하고 일하며 스타트업의 스타트업과 성장을 목격하고 지원했으며, 팀을 모집하고 관리했으며, 제품 관리자, 디자이너, 마케터, CEO로 일했습니다.
이 과정에서 얻은 것도 많고 비교적 성공적이었다고 볼 수 있다. 하지만 아직은 충분하지 않습니다.
丨진로 변경
제가 실수로 경제학과를 선택해 컴퓨터공학 학위를 받지 못한 부분을 아직도 기억하시나요? 결국 뭔가 바뀌었습니다.
몇 년을 일하다 보니 어느 회사든 갈 수 있을 만큼 성숙해졌다는 생각이 든다.
그런데 2013년 취업 준비를 하면서 내가 얼마나 형편없었는지 깨달았다.
지난 몇 년간 돈을 쫓는 데 너무 많은 시간을 쏟았고, 남는 시간에는 회사를 운영하는 것까지 하다 보니 실력이 정체됐다. 내 기술 스택이 약간 구식입니다.
지난 몇 년간 내 실력은 언제나 충분했다. 기술 분야는 비교적 광범위하지만 어느 분야에서든 전문가라고 할 수는 없습니다.
오해하지 마세요. 취업해도 괜찮을 것 같은데 제가 가고 싶은 기술이나 분야가 아니거든요. 나는 여전히 기술 스택이 그다지 새롭지 않은 회사에 고용될 수 있고 급여도 나쁘지 않을 것이지만 그 전망에 대해 흥분할 수는 없었습니다.
나의 '훨씬 더 나쁜' 자아인식은 작년에 일자리를 구할 때 최고조에 달했다. 저는 지역 벤처 지원 스타트업에서 일하는 데 관심이 있습니다. 하지만 저는 컴퓨터 학위도 없었고, 이 학위를 취득할 수 있는 기술과 지식도 없었기 때문에 결국 기회를 얻지 못했습니다.
당시 저는 회사에서 정규직으로 일하고 있었습니다.
2016년 초, 저는 웹 개발자에서 소프트웨어 엔지니어로 변화해야 할 때라고 결심했습니다. 몇 달 안에 컴퓨터 과학 학위에 대한 지식을 습득하려면 열심히 공부하고 연습해야 합니다. 비록 갈 길이 멀지만 일단 성공하면 새로운 직업을 갖게 될 것이라고 믿습니다.
어떤 사람들은 웹 개발자와 소프트웨어 엔지니어 사이에 차이가 없다고 생각할 수도 있습니다. 둘 다 프로그래밍과 기술이 필요하지만 소프트웨어 엔지니어링에는 데이터 구조 및 알고리즘, 컴파일된 언어, 메모리에 대한 관심, 실행되는 기계에 대한 다양한 코드 및 아키텍처의 영향 이해와 같은 더 많은 지식이 필요합니다.
대기업이 소프트웨어 엔지니어를 채용할 때 지원자가 이러한 지식을 갖기를 기대합니다.
구글에서 일하는 친구에게 구글에서 일하는 것에 대해 물어본 적도 있다. '구글은 어떻게 일하는가'를 읽고 구글에 대해 어느 정도 이해하게 됐다.
우연히 구글 면접 응시자 가이던스 사본도 얻었고, 그것이 내 학습 계획의 기초가 됐다.
구글은 훌륭한 회사이고, 내가 알기도 전에 이미 내 목표였습니다.
丨내 목표가 Google인 이유
목표를 달로 설정하세요. 실패하더라도 별 사이에 떨어질 수 있습니다.
구글의 문턱은 매우 높다. 최고의 인재만을 모집하기 때문에 결국 구글에 가지 않더라도 목표를 더 높게 잡는다. 다른 회사.
그리고 Google에 대해 알면 알수록 Google에 대한 열망은 더욱 강해졌습니다.
Google은 '채용, 교육 및 유지' 분위기가 매우 좋습니다. 간단히 말해서 Google은 똑똑하고 창의적인 사람들을 고용하고 잘 보살펴줍니다. Google은 가치를 창출하는 사람들에게 보상하고, 과감한 혁신을 장려하며, 직원들이 사용자를 위해 올바른 결정을 내릴 수 있는 자유를 제공합니다.
Google의 채용 프로세스는 지성과 열정을 바탕으로 채용할 수 있도록 수년에 걸쳐 세밀하게 조정되었습니다. 두뇌 테스트는 더 이상 필요하지 않습니다. 후보자의 프로그래밍 능력, 기술 지식 및 "Google 충분히"인지 여부(이 단어에는 너무 많은 내용이 포함되어 있습니다...)
구글의 경영 방식도 남다르다. 그들의 경영진은 매우 편안하며 엔지니어가 올바른 결정을 내릴 것이라고 믿습니다. 직원에 대한 신뢰는 Google의 관리 역할이 일반 회사의 관리 역할과 다른 점입니다. 또한 경영진은 직원의 고용, 해고, 승진을 일방적으로 결정할 수 없습니다. 가장 중요한 결정은 위원회 투표를 통해 결정해야 위험을 줄일 수 있습니다.
Google의 인사 부서는 채용, 승진, 보상 등을 포함한 평가 시스템을 개선하기 위해 데이터와 직원 피드백을 활용해 왔습니다.
맙소사, Google에는 좋은 점이 너무 많습니다. 구글 사무실에 한 번 가보고 기대가 컸는데, 생각보다 훨씬 좋았어요!
丨구글 면접 아카데미 소개
무엇을 배워야 할지 알려준 면접 안내 노트를 아직도 기억하시나요? 위의 내용을 많이 이해하지는 못하더라도 적어도 목표는 제공됩니다.
노트에 적힌 주제를 개요로 바꿔서 유튜브로 MIT, UC Berkeley 강의를 보면서 하나씩 공부했어요. 각 링크에는 여러 학습 콘텐츠가 있을 수 있으며, 많은 동영상이 기본적으로 다음 동영상으로 연결됩니다. 이런 식으로 계속 학습했고, 학습 개요가 점차 풍부해졌습니다.
이전에 작성한 업무 코드와 업무 코드는 모두 기밀이어서 Github은 기본적으로 비어 있고 코드를 전혀 입력하지 않는 것처럼 보이므로 이 연구 개요를 업로드했습니다. Google이 1998년 9월 4일에 설립되었기 때문에 처음에는 "Project 9894"라고 불렀던 프로젝트를 만들어야 했습니다. 나중에 이름을 'Google 인터뷰 아카데미'로 바꿨습니다.
학습 과정에서 발견한 주제들을 하나씩 추가해 나갔습니다.
예전에는 “알면 충분하다”고 늘 생각했어요. 수년간의 경력 동안 저는 CPU가 프로그램을 어떻게 처리하는지, 메모리가 어떻게 작동하는지 또는 기타 지식을 전혀 알지 못했습니다.
나의 작은 Github 프로젝트가 점차 주목을 받기 시작했고, 별 20개를 받은 프로젝트를 축하하는 글까지 썼습니다.
어느 날 아침 내 프로젝트에 별이 120개 있다는 것을 알게 되었어요! 업계의 유명 인사가 전날 밤 내 프로젝트를 트위터에 공유했는데, 내 프로젝트가 많은 관심을 받아 당일 Github 트렌딩 목록에 진입하기도 했습니다. 저는 며칠 동안 Github 트렌드 목록에서 1위를 차지했습니다. 하하.
많은 친절한 사람들이 먼저 저를 격려하고 감사해 주었습니다. 그 결과 저와 같이 Google에서 일하고 싶어할 뿐만 아니라 소프트웨어 엔지니어가 되고 싶어하는 사람들이 수천 명 있다는 것을 알게 되었습니다. . 내가 나열한 학습 내용은 바로 그들이 배워야 할 내용입니다.
지금까지 별이 21,000개가 넘는데, 정말 놀랍습니다.
丨Google에서 일할 수 없으면 어떻게 되나요?
하늘이 무너지지 않는 한 상관없습니다.
저는 구글에서 소프트웨어 엔지니어가 되기 위해 많은 시간과 노력을 쏟았고, 불행하게도 실패하더라도 다른 회사에 취업할 만큼 충분한 지식과 기술을 배웠습니다.
어떻게 끝나든 적어도 나는 초보 소프트웨어 엔지니어가 될 것이다. 저는 소프트웨어 엔지니어로서 15년의 경험이 없다고 생각합니다. 과거에는 그런 능력이 없었고 갓 졸업한 CS 학생만큼이나 초보이기 때문입니다.
이것은 저에게 새로운 여정입니다. 실수를 많이 하게 되더라도 새로운 콘텐츠를 배우려는 열정이 있고 모든 것을 배우고 싶기 때문에 두렵지 않습니다. 나에게 필요한 지식을 갖고 팀의 훌륭한 일원이 되십시오.
丨팁: 나처럼 너무 공부하지 마세요
면접을 준비하는데 8개월을 투자했는데 사실 시간을 많이 단축할 수도 있었어요. 여느 복잡한 일을 하듯 처음에는 시행착오를 거치고 우회하고 싶은 일이 늘 있습니다.
필요하지 않은 내용도 많이 배웠어요. 면접에 필요하다고 생각해서이기도 하고, 업무에 활용하면 될 것 같아서이기도 했고요. 팀에 부담이 되고 싶지 않다. 그런데 알고 보니 걱정이 너무 많았고, 내용을 많이 배울 필요는 없었습니다.
1,000페이지 정도 되는 C++에 관한 책을 3주 동안 읽었는데 내용은 많이 기억나지 않지만 적어도 C++에 대해 조금 더 배웠습니다. 원래는 C나 C++, Java를 쓸 줄 알았는데, 면접을 보니까 Python을 쓰게 됐어요. 이 교훈을 기억하세요. 추측하지 말고 물어보세요! 가서 확인해 보세요!
너무 많이 읽어서 3~4권만 읽어도 된다는 걸 나중에 깨달았다.
제가 반복해서 검토한 알고리즘을 요약 정리했는데, 그 안에 인터뷰에서 마주치고 싶지 않은 질문들이 많이 기록되어 있었습니다. 이것은 실제로 노력의 낭비이며 그렇게 할 필요가 없습니다.
영상을 보는 데 많은 시간을 보냈지만, 보는 시간을 줄이고 시간이 지나면서 천천히 콘텐츠를 추가했어야 했습니다.
빨리 책 읽기를 멈추고, 영상 시청으로 전환하고, 프로그래밍 검증과 문제 해결을 하루빨리 시작해야겠습니다. 내가 배우고 있는 내용을 직접 실습해 보세요.
간헐적으로 지식을 복습하는 것은 기억의 핵심 방법이다. 한 가지 지식을 한꺼번에 배우지 말고 그대로 두십시오. 그렇지 않으면 그것을 진정으로 마스터할 수 없습니다. 가끔씩 복습해 보세요. 반복할 때마다 이해가 깊어지고, 세세한 부분까지 모두 이해하게 되어 진정한 전문가가 될 것입니다.
지식 복습을 돕기 위해 휴대폰 지식포인트 플래시카드를 만들었어요. 내용이 1792개나 들어있어서 좀 과한 것 같아요. 나는 크리스마스 쇼핑이나 버스 줄을 기다리는 등 시간이 날 때마다 위의 지식 포인트를 복습한다. 플래시카드의 질문에 올바르게 답할 수 있으면 "이해함"으로 표시됩니다. 그렇지 않으면 플래시카드의 답을 보고 다음 번에 질문에 올바르게 답할 때까지 기다렸다가 표시할 수 있습니다.
내 안의 두려움으로 인해 '적흑나무에서 나를 시험하면 어떡하지?'와 같은 불필요한 지식을 너무 많이 배웠습니다.
그런데 면접 공부는 하기 싫고, 구글에서 일하면서 막중한 문제를 해결하기 위해 공부하고 싶다. 이는 학습 알고리즘이 여전히 유용하며 컴퓨터의 시간 및 공간 효율성을 향상시킬 수 있음을 의미합니다.
Ford-Fulkerson 알고리즘(네트워크 흐름의 최대 흐름을 계산하는 그리디 알고리즘의 일종)은 절대 사용하지 않을 수도 있지만, 공부하고 나면 적어도 유사한 문제가 발생하면 어떻게 해결할 수 있는지 알 수 있습니다. .
丨요약
이제 나는 컴퓨터의 역사, 프로그래밍의 가장 큰 부분인 데이터 구조와 알고리즘, 그리고 기본 컴퓨터 시스템이 작동하는 방식을 이해했습니다.
구글 인터뷰 준비를 시작하기 전, 모든 준비 단계를 건너뛰고 직접 지원한 뒤 직장에서 사용하는 언어와 도구를 배워보고 싶다는 생각이 늘 있었다.
하지만 이 과정에서 이 지식이 얼마나 중요한지 깨달았습니다. 비록 일상적인 발전에는 적용되지 않을 수도 있지만, 저의 노력이 제 내면의 발전을 가져올 것이라고 믿습니다.
거의 1년 동안 준비해 온 지원서를 바로 제출했습니다(1월에 시작했는데 4월이 되어서야 풀타임 공부에 전념할 수 있었습니다).
이제 거의 준비가 되었다고 생각합니다. 이 기간 동안 지원서를 제출하고 공부를 테스트해야 합니다.
이것은 내 인생의 도약이 될 것입니다. 나는 앞으로 밝은 미래를 봅니다.
시간을 내어 제 이야기를 읽어주셔서 감사합니다. 텍스트 | John Washam 작성