brunch

You can make anything
by writing

C.S.Lewis

by 윤청하 Nov 26. 2015

손코딩 뇌컴파일 눈디버깅

구글  코딩 인터뷰에 도움이 되는 것들

구글에 오기 전에 다녔던 회사에는 '코딩 전문가'라는 제도가 있었다.

난 동료들의 추천으로 코딩 전문가 1기 후보가 되었고 코딩 경연과 전문가 면접을 통해 최종 선발되었다.

코딩 전문가 1기 인증식


우리는 회사의 배려로 미국 기업 탐방을 다녀올 수 있었다.

거기서 서로 마음이 맞는... 정확히 말하면 술을 잘 마시는 코딩 꾼들이 모여 '꽐라 모임'을 만들었는데..

데낄라를 유난히 좋아했던 꽐라 멤버들

그중에 유난히 모난 친구가 한 명 있었는데 이 친구가 구글 입사에 결정적인 역할을 했다. 바로 구글에 이력서를 써보라고 권했던 그 친구다! 하. 광. 성ㅋ


광성이는 손 코딩 스터디 그룹을 만들고 싶어 했고 우리는 뜻을 모아 모임을 결성했다.


손코딩. 뇌컴파일. 눈디버깅

손으로 코딩하고 뇌로  컴파일하고 눈으로 디버깅한다. 어찌 보면 바보 같아 보일 수 있지만 우리는 이 훈련이 문제 해결 및 Computational Thinking 능력을 키우는데 큰 도움이 된다고 믿었었다.

주어진 문제를 화이트보드에 코딩하고 서로의 코드를 보며 토론했다

우리는 서로 질문을 통해 문제를 정의했고 조를 나누어서 솔루션 토론을 진행했다.


"제 생각에는 이건 모든 경우의 수를 찾아봐야 할 것 같아요."

"음.. 모든 경우의 수를 찾으면 계산 복잡도가 어떻게 될까요?"

"계산 복잡도는 제법 크지만 이 방법이 일단 가장 심플할 것 같아요."

"어떻게 모든 경우의 수를 찾을까요? 중복되는 경우는 빼고 해야겠죠?"


코딩을 하기 전에는 테스트 케이스를 만들어서 결정된 솔루션을 검증했다.


"N이 1일 때는 결과가 3이어야 합니다. 맞나요?"

"N이 100일 때 결과가 틀리네요. 이 부분을 고려해야 할 것 같아요."


코딩은 각자 연습장에 하기도 하고 한 사람이 화이트보드에 하기도 했다.

중요한 것은 우리가 설계한 내용을 코드로 옮겨 적는 것이었다.

복잡한 계산이 필요하면 함수로 추상화하였고 나중에 추가로 코딩하였다.


"우리가 생각하지 못한 부분이 있었네요. N이 0이면 어떻게 하죠?"


코딩을 한 후에 틀린 부분이 발견되면 설계 부분부터 다시 리뷰하였다.


"이제 모여서 같이 검증해 볼까요?"

"이렇게 구현할 수도 있군요! 쿨한데요?"

"이 부분은 이 함수를 이용하면 더 간단해 질겁니다."


코딩한 결과를 모두에게 공유하며 정확하게 동작하는 코드인지 검증하며 서로의 피드백을 공유하였다.


우리는 시간이 부족해서 일이 많아서 혹은 생산성이 떨어질 것 같아서 요구사항이 전달되기 무섭게 바로 코딩하고 언제 끝날지 모르는 디버깅에 익숙했었다. 그리고 다른 사람의 참견을 멀리했었다. 슬프게도...


사실 이 과정은 실리콘밸리의 일반적인 온사이트 코딩 인터뷰와 동일하다! 심지어 구글의 소프트웨어 엔지니어가 일하는 과정과도 비슷하다!

구글은 소프트웨어 엔지니어를 채용할 때 코딩 인터뷰를 통해 인터뷰어를 평가하며 같이 일하고 싶은 사람을 뽑는다. (구글 기술 면접 재연 영상)





아참..

우리는 절대 이직 준비를 위해서 손. 뇌. 눈 모임을 만들지 않았다.

어쩌다 보니 꽐라 멤버들은 대부분 이직했지만..


* 손코딩 뇌컴파일 눈디버깅에 대한 자세한 내용은 이 슬라이드를 참고하세요.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari