이번 면접은 과제 면접 이후에 기술 면접을 보게 되었다.
처음 보는 면접이다 보니 과제 면접부터 모든 것이 다 알쏭 달쏭했다. 처음에 jquery를 이용해서 프론트 앤드를 만들라고 했을때, 바로 질문이 하나 생겼다.
이 회사는 jquery를 계속 사용할껀가?
이전 회사에서도 햄버거 메뉴를 만들라길래 바닐라 자바스크립트로 짰더니, jquery 복사해서 붙여 넣으면 될것을... 이라는 핀잔을 들은 터라 뭔가 더 거부감이 들었다. jquery를 가져다 붙여 넣으면서 입이 대자로 나왔었다. jquery를 사용하는 것에 대한 거부감이 아니라 복사 붙여넣기를 하라는 말이 너무 싫었다. 대학교에서 시험 볼 때도 항상 말미에 내 생각을 쓰곤 했는데...(편지도 내 생각이다. 물론 D를 맞았다.) 그래서 한번도 사용해보지 않은 vue를 부랴부랴 펼쳐놓고 최대한 바닐라로 작성하려고 했다. 하지만 pug와 scss를 사용해서 html과 css를 관리했다. 어쨌든 부랴부랴 과제를 제출하고 드디어 기술면접을 보게 되었다. 머리가 터질듯 아파왔다. 도데체 뭘 어떻게 어디서부터 시작해야하는걸까?
구글을 바로 시작했다. 일단 프론트 앤드 면접을 검색해서 무엇을 물어볼지 예상 질문을 찾는 것부터 시작해야했다. 예상 질문을 보고 좀 멍했다. 내가 지금까지 배웠던 자바스크립트의 지식을 대부분 물어봤다. 그런데 문제는 제대로 설명할 수 있는게 몇 개 없었다.
질문들을 보고나니까 머리가 하얗게 질렸다고 해야하나. 나 그래도 개발자가 알아야하는 33가지 자바스크립트 개념이라는걸 보면서 열심히 공부했다고 생각했는데 생각보다 설명할 수 있는거나 자신있게 대답할 수 있는게 없었다. 휴... 나 뭐하는거지?
이것도 구글해야한다. 보통 한개의 개념을 설명하기 위해서 아티클 3-4개정도 보고 유튜브 동영상도 2-3개씩 봤다. 덜 완성된 모자이크 창문에 다시 반짝이는 유리들을 붙여서 아름다운 스테인 글라스 창문을 만드는 과정이었다. 공부하면서 한숨만 나올줄 알았는데, 막상 한개씩까서 이해한 것들을 정리하는 과정이 재미있었다.
예를 들어서 this를 공부하면 자바스크립트의 this가 다른 언어와 다르다는 것을 알게 되고, this의 동작 원리를 이해할 수 있게 되었다. 당장 this를 쓰고싶은 충동이 들었다.(ㅋㅋ) 그리고 화살표 함수에 this와 일반 함수에서 this와 다르게 동작 하는 것을 알았지만 왜 그런지는 잘 몰랐다. 사실 지금도 그냥 화살표 함수에는 this가 없다정도만 알 뿐이다. 그래서 스코프 체인 안에서 화살 표함수의 this는 항상 달라지는 정도만 안다. 뭐 어쨌든 예전부터 bind, apply, call도 궁금했는데 세트로 공부할 수 있었다. this를 아직 활용해본적은 없지만 어쨌든 this를 쓰면 그래도 엉망으로 급급하게 작동하는 것에 맞춰서 쓰지는 않을 것 같다.
실재로 했던 질문과 준비는 했지만 물어보지 않은 질문이 있다. 물어본 질문은 그냥 모두가 생각할법도 하고 평이한 질문이라고 생각한다. 생각은 했지만 안한 질문은 회사 면접에서 탈락한다고 하더라도 뭔가 힌트를 얻거나 지금 내가 개발자로 고민하고 있는 부분이라 물어보고는 싶었다. 하지만 거기까지...
이거 말고도 물어볼께 정말 많았지만 물어봐도 되는건지 좀 말설여진 질문들도 있다. 그리고 그렇게 많이 질문을 해도 되는건가 싶기도 했다. 사실 그렇게 되면 고민 공유하는 것 같은 느낌이 되기 때문이다. 또 다른 질문은 정말 그냥 내가 홈페이지를 만들다가 들었던 질문이라 어떻게 해결할 수 있을지 궁금했지만 물어보면 '그건 지원자님이 고민해야하는 문제인것같은데...'라거나 '아니 프론트앤드 개발자가 백앤드 지식을 더 물어보네?'라고 생각할 수도 있을 것같아서 걍 접었다.
순간 너무 당황했다. 수동적으로 질문해주는 것을 단순하게 답변하는 자리일 줄 알았기 때문이다. 노트북을 꺼내서 airplay에 연결하는 동안 어떻게 설명할지 고민했다. 결과는 횡설수설...
집에 오면서 크리티컬한 질문들이 마음에 걸렸다. 사실 다른건 준비한것을 그냥 대답한 수준이었고, 실재로 사용해본 여부는 별로 궁금해하지 않으시는 것 같았다. 물론 중간에 내가 '그냥 궁금해하지 않았었지만 면접 준비하면서 새롭게 알게된 사실인데요...'라고 열면서 질문에 답해서 그랬을 수도 있다. 생각해보면 왜 그렇게 솔직하게 이야기했는지 모르겠다.
그밖에 회사 문화에 적응 가능한지 파악하는 질문을 몇개 하셨는데, 이 부분을 잘 대답하지 못했다. 이건 마인드 문제였다. 면접 끝나고 배웅을 받으며 걸어가는데 '100% 떨어졌구나'라는 생각이 들었다. 집에 오면서도 계속 생각났다. 그래도 내가 어떻게 어떤 거짓말로 포장해서 둘러댔어도 횡설 수설 했을 것이라고 생각한다. 크리티컬한 질문은 항상 준비가 필요하다. 그렇다고 합격해도 가고 싶은지도 불명확했다. 회사가 내 질문에 대답한 것들이 좀 의외의 대답들이 많았기 때문이다.
하지만 만족한다. 조금 더 나를 점검할 수 있는 시간이었다. 생각해보면 웹 서비스를 만들면서 '이랬으면 좋겠어'하는 것들을 만들지도 못한채 그냥 이렇게 하는게 맞지 않을까? 했는데 면접을 준비하면서 적용해보고싶은 것들이 생겨났다. 또 개념을 명확히 모르고 쓰는 것들이 너무 많았다. 지금까지 에러를 만나면 구글하거나 stackoverflow에서 보고 적용하기 바빴다. 하지만 작동 원리에 대해서 고민한것과 하지 않은 것은 명확한 차이가 있다. 고민해보고 찬찬히 뜯어본건 어느정도 내 것이 됐다.
앞으로 좀 막막하긴 하다. 대부분 경력자를 뽑거나, 회사가 개발하고 있는 서비스에 많은 흥미가 없거나, 진짜 들어가고싶다 하는 곳은 요구 사항이 높다. 예전에 멘토링 하면서 들었던말이 '좋은 개발자가 많이 없다.'는 말을 들었다. 양산형 프론트 앤드 개발자가 아니라 내가 작성하는 코드를 고민하고 앞으로 좋은 코드를 작성하는, 회사 생태계 교란종이 되지 않는 그런 개발자가 되고싶다. 그런데 내가 그런 개발자인지는 잘 모르겠다. 하지만 면접에서 떨어졌다고 좋은 개발자가 아닌것도 아니다.