[번역] Always Be Coding

2019-10-07

ABC: Always Be Coding

원문 : https://medium.com/always-be-coding/abc-always-be-coding-d5f8051afce2

Technical Tips

  1. ABC (Always Be Coding). 간단히 말해. 코드를 작성함으로써 연습이 된다. 최선의 연습은 연습에 집중하는 것이다. 목표를 가져라, 새로운 영역을 찾아 도전하라. 시간이 지나면 만들어진 포트폴리오가 생기고 자신만의 프로젝트가 생길 것이다. 깃허브는 포트폴리오를 보여주기에 좋은 공간이다.
  2. 적어도 한가지 이상의 언어를 마스터하라. 언어하나를 마스터하는 것은 좋은 센스와 관점을 갖게 한다. 이를 위해서는 정말 많은 코드를 작성하고 읽고 배우는 것이 좋은 연습이 될 것이다. 이상적이게도 각 언어들은 활성화된 커뮤니티를 가지고 있고 많은 코드를 생산해내며 운영되고 있다. 좋은 후보로는 C#, C++, Java, PHP, Python, Ruby 등이 있다.
    C++ 면접관들이 면접자들에게 자주하는 질문 중에 "1점부터 10점까지 자신의 C++ 지식이 몇점이라고 생각하는가?" 라는 질문이 있다. 나는 이 질문을 싫어한다. 신은 9~10점으로 대답하는 사람을 돕는다. 비야네 스트롭스트룹(C++창시자)도 자신을 8로 평가한다고 대답한 적이 있기 때문이다. 언어는 복잡하고 방대하며 시간이 지남에 따라 많이 진화했다.
  3. 복잡도를 공부하라.이표를 참고하라 복잡도를 이해하면 어떻게 동작하는지 확신할 수 있다. 그리고 Dijkstra’s, Floyd-Warshall, Traveling Salesman, A*, bloom filter, breadth-first iterative search, binary search, k-way merge, bubble/selection/insertion sort, in-place quick sort, bucket/radix sort, closest pair 과 같은 일반적인 알고리즘을 구현해봐라. 다시말하지만 ABC.
  4. 바퀴를 재발명하라. 당신이 선택한 언어로 일반적인 자료구조를 구현하라. 라이브러리에 의존하지말고 vector (dynamic array), linked list, stack, queue, circular queue, hash map, set, priority queue, binary search tree 등을 구현하고 테스트하라. 빠르게 구현할 수 있어야 한다.
  5. 문제 풀기. 구글에서 인터뷰 문제를 검색하지마라. 어차피 기본적인 프로그래밍 개념으로 귀결된다. 다양한 유형의 문제에 대해 40시간 이상 고민하라. 탑코더가 좋은 참고자료다. 읽어보기 . 문제를 풀어봐라 recursive, pattern-matching, greedy, dynamic programming, and graph problems 등을 푸는 능력을 테스트하라. 이것이 아마도 내가 구글에 고용된 첫번째 이유일 것이다. 나는 2주동안 TopCoder에 사로잡혀 보냈다. 그 후 나는 눈감고도 다익스트라 알고리즘을 구현할 수 있었다. 그리고 하늘아래 거의 모든 종류의 그래프 문제를 풀 수 있었다. 그것은 문제풀이의 반복이었다. 에릭슈미트의 말대로 "반복은 배신하지 않는다."
  6. 코드를 쉽게 만들어라. 적어도 쉽게 보이도록 만들어라. 시간이 지나면서 나는 프로그래밍이 엔지니어가 되는 가장 간단한 방법이라는 것을 알게 되었다. 나는 종종 "프로그래밍의 단순한 문제"라는 문구를 사용한다. 왜냐하면 나는 인제니어가 되는 것이 대부분 코딩이 일어나기 전과 후라고 믿기 때문이다. 예를 들어, 코딩하려는 것을 설계하고 이미 코딩된 것을 확실히 하는 것은 전송이 가능하고 출시 준비가 되어 있다. 프로그래밍은 목적을 위한 수단일뿐이라는 것을 면접관이 이해하도록 하라. 참고, 다른 사람들 앞에서 코딩하는 것은 부담스러울 수 있다. 화이트보딩과 페어프로그래밍을 모두 연습할 수 잇는 방법을 찾아보라. 구글은 기본적으로 화이트보드에서 코딩하고, 스퀘어는 IDE 에서 페어코딩하는 것이다.

General Tips

비기술적인 조언들

  1. 니가 왜 거기 있는지 알아라. 만약 여러분이 어떤 회사에서 인터뷰를 하고 있는데 왜 그들이 존재하는지, 그들이 누구인지, 무엇을 하는지 완전히 이해하지 못한다면 좋은 평가를 받기 어려울 것이다. 대기업에서는 이 문제를 벗어날 수 있을지 모르지만, 작은 기업에서는 성공하지 못할 것이다.
  2. 열정적으로 행동하라. 무언가에 열정을 가져라. 프로그래밍일 수도 있지만, 여가시간에 컴파일러를 만드는 것을 즐기나? RC헬기를 만들고 조종하나? 그것은 별로 중요하지 않다. 왜냐하면 만약 당신이 그것에 대해 열정적이면, 당신은 그것을 흥미롭게 만들 수 있기 때문이다.
  3. 추측하지 마라. 잘 모르겠으면 질문해. 만약 질문을 받고 문제가 무엇인지 100% 확신하지 못한다면, 질문하라. 후보자가 어떤 길을 가고, 절대로 질문을 하지 않고 결국 잘못된 문제를 해결하는데 시간을 낭비하는 것을 본 적이 여러 번 있다.
  4. 웃어라. 흥분하고, 행복하고, 긍정적이어야 한다. 하지만 오버하지는 말고. 첫인상이 좋은 인상인지 확인하라. 웃음은 전염성이 있다, 나는 종종 기분이 안좋고 스트레스를 받으며 면접관으로 들어가서, 면접자의 미소를 보고 잊어버리기도 한다.