일은 배신하지 않는다.
이 책은 이런 분들에게 추천드려요!
- 개발자로서의 진로가 고민이신 분들
- 멘토분이 안계시거나 직장 내 사수분이 안계시는 분들
- 개발자로서의 동기 부여가 필요하신 분들
- 힘든 취준으로 잠시 머리를 식히고 싶으신 분들
읽게된 계기
이 책을 접하기 전 진로에 대한 고민이 많았고 개발 직군 중 웹을 이용해 사람들과의 상호작용을하며 소통하는 것이 흥미롭게 생각되어 프론트엔드 개발쪽으로 진로를 고민하고 있었습니다. 그러던 중 우연히 유튜브의 알고리즘을 통해 알게된 `Interactive Developer` 김종민님의 영상을 보게 되었습니다. 김종민님의 프로젝트를 보고 "나도 언젠가 이런 멋진 작품을 하나 만들어보고 싶다."라는 생각이 들었습니다.
제가 프로젝트를 "작품"이라고 표현했죠? 종민님의 영상을 보면 하나같이 예술 작품처럼 보입니다. 디지털 아티스트 같은 느낌이죠. 작년(2022) 초 쯤에 처음 책을 읽었는데 당시만해도 저의 자바스크립트 실력은 형편 없었고 자바에 익숙했던 저에게 자바스크립트 언어는 굉장히 부정적이었습니다. 하지만 순수 자바스크립트로 3D 애니메이션부터 타이포 그래픽 등과 같은 그래픽적인 요소까지 전부 구현하는 종민님의 모습에 반했고 자바스크립트로 혹은 자바스크립트의 라이브러리나 프레임워크를 이용해 웹, 데스크탑앱, 크롬앱, 모바일 앱까지 자바스크립트 하나로 여러 플랫폼을 개발할 수 있는 점이 정말 매력적으로 다가와 "프론트엔드 개발자"로 진로를 결정짓게 된 계기가 되었습니다.
이 책은 종민님이 처음 코딩을 접하는 시기부터 구글의 개발자가 되기까지의 과정을 이야기 하고 있습니다. 종민님께서 전하고자하는 다양한 메시지들이 있는데 그 중 저에게 가장 인상깊었던 내용만 포스팅으로 남기겠습니다.
그리고 개발자로서의 진로에 대한 고민이 많으신 분들은 한 번쯤 읽어보시면 정말 좋을 것 같습니다. 종민님의 경우 비전공자 출신으로 지금처럼 개발자의 붐이 일어나기 전 싸피(SSAFY), 우아한테크코스, 부스트캠프 등과 같은 좋은 부트캠프도 없던 시절 국비 교육으로 웹 개발을 시작해서 지금 구글의 개발자로 계시는 분입니다. 개인적으로 책을 읽으면서 정말 많은 생각을 하게 되었고 힘을 얻었습니다. 또한 종민님께서 가지고 있는 개발자로서의 자세(?), 철학에 대해 알 수 있어서 정말 좋았던 기억이 남은 책입니다.
줄거리...
새로운 것을 배울 때 즐겨 쓰는 방법
새로운 것을 배울 때 즐겨 쓰는 방법인데 책을 한 권만 읽는 것이 아니라 여러 권의 다른 작가가 쓴 책을 읽어보는 것이다. 어떤 책이든지 중요한 부분은 자주 나오기 때문에 중요한 내용일수록 중복되어 읽히므로 기억에 더 잘 남고 이해가 안 가는 부분은 여러 작가의 다양한 설명으로 읽으니 이해하기 쉽다. 그동안 프로젝트를 진행하며 실무에서 느꼈던 부분과 여러 권의 책을 읽으며 이해했던 부분이 더해지면서 실력이 월등하게 늘었다.
👉 이 부분은 정말 공감 많이되는데요, 특히 요즘 한국의 블로그들은 대부분 양산형 블로그처럼 내용이 다 비슷비슷하거나 잘못된 정보를 전달하는 경우가 종종 있습니다. 블로그의 글을 보며 개발을 하는 것을 "블로그 주도 개발(Blog-Driven Development, BDD) 라는 말이 있을 정도입니다. 이러한 현상은 개인적인 생각이지만 한국의 채용 시스템의 문제라고 생각합니다. 몇몇의 기업은 지원자의 성실함과 노력을 증명하기 위해 꾸준한 블로깅을 하는 습관을 중요하게 본다는 거죠.
양질의 포스트를 작성해주시는 블로거분들도 많이 계시겠지만 대부분 하루 1개 이상의 포스트라도 작성하려고 내용을 엄청 요약하거나 다른 블로그의 글들을 참고하며 비슷하게 작성하는 사람들이 많을 것 같습니다. 그렇지 않고서는 검색을 했는데 같은 내용 혹은 비슷한 글들이 검색되지 않아야 겠죠.
또 이러한 기업의 채용 시스템이 여타 많은 부트캠프에서 블로깅을 강조하며 수강생들에게 블로깅을 하라고 많이 권유합니다. 수업 과정에 일부로 포함될 정도로요. 그래서 정말 많은 글들을 찾아볼 수 있지만 정작 내용은 다 비슷비슷하고 원하는 내용을 찾기가 힘들며 양질의 내용을 찾는데 시간을 많이 소비합니다.
그래서 저는 요즘 영어로 검색을 하거나 개발 문서를 보는 습관을 기르고 있습니다. 그리고 점점 검색보다는 책을 더 의존하게 되었습니다. 물론 책도 정확한 정보를 전달한다는 보장은 없지만 대부분의 책은 많은 전문가들의 서평을 통해서 검증된 책들도 많이 있습니다.
종민님의 말씀처럼 하나의 책을 보는게 아니라 여러권의 다른 작가가 쓴 책을 읽으니 확실히 조각조각으로 나눠져 있던 개념들이 책을 읽으면서 이해하는데 도움이 정말 많이 되더라고요.
예를 들어 저 같은 경우 자바스크립트 언어를 공부할 때 모던자바스크립트 책, 코어 자바스크립트와 이펙티브 자바스크립트 이 3권의 책을 번갈아 읽어가며 개념을 학습하였습니다. 특히 모던자바스크립트에서 설명하는 원시형과 참조형이 변수에 할당될 때 메모리에 어떻게 할당되는지, 실행 컨텍스트, 클로저 등의 개념을 코어 자바스크립트 책을 읽으면서 더 명확하게 이해가 되는 경험을 하였습니다.
지나친 겸손은 자신감 부족이다.
“나는 별로 잘하는 것도 없는데 그냥 열심히 한다고 해서 뽑혔다.”라고 했던 적이 있다. 그런데 누군가 많은 사람이 모인 자리에서 나에 관해 “우리 회사에 최근에 오신 분이 있는데 그냥 열심히 하겠다고 해서 합격했다.”라고 이야기한 것을 나중에 알게 됐다. 그 말을 듣고 처음엔 그동안의 나의 노력과 과정이 한 번에 부정당하는 듯한 기분이었지만, 가만히 생각해보면 내가 뿌린 말이었기에 그 일을 교훈 삼아 좀 더 자신감 있게 표현하기로 마음먹었다. 겸손은 분명 세계 어느 나라에서나 통하는 미덕이지만, ‘지나친 겸손’은 미국에선 자신감 부족으로 비칠 수 있다.
👉저 또한 평소 자신감이 없었는데 최근 들어 내성적인 성격을 외향적으로 바꾸려고 노력하고있습니다. 확실히 자신있게 자신을 표현해야 다른 사람들이 저를 기억해주더라고요. 애매모호하게 말을 흐리는 것보다 확실하게 상대방에게 의사를 전달하려고 노력하고 내가 잘하는 것이 무엇이고 못하는 것이 무엇인지 회고를 통해 메타인지를 하고 있습니다.
자신의 생각을 말하지 못하는 사람은 "생각이 없는 사람이다"
한국에서 일할 땐 몇 안 되는 직원들끼리도 직급을 나누고 존칭을 사용한다. 그리고 자신보다 높은 사람의 의견에 반대의견을 냈다간 건방지다는 말을 듣는 경우도 있다. 즉 옳고 그름에 따라 의사결정을 하는 것이 아닌 개인의 친분이나 상하관계에 따라 의사결정을 하는 경우가 있다는 것이다.
이것은 미국에서는 조금 다른데, 모두들 자기 의견을 내세우는 데 거리낌이 없다. 예를 들어 내가 낸 의견에 격렬하게 반대하다가도 회의가 끝나면 뒤끝 없이 웃으면서 이야기하는 것이 이들의 일상이다. 그리고 내가 싫어하는 사람이 낸 의견일지라도 본인의 호불호가 아닌 의견 자체를 기준으로 의사결정을 하는 경우가 많이 있다.
거기에 막 입사한 인턴이 전체 회의에서 자신의 의견을 당당학 이야기하는 모습을 볼 때면, 한국에서 시키는 대로 묵묵히 일했던 내 모습과 비교되어 많은 생각을 하게 한다. 특히 미국에선 회의를 할 때 의견을 내지 않으면 ‘내 의견에 동조하는 내 편’이 아니라 자신의 생각을 말하지 못하는 ‘생각이 없는 사람’으로 보일 수 있으니 조심해야 한다.
👉개인적으로 "생각 있는 사람"이 되기란 정말 쉽지 않습니다. 강의 혹은 강연을 들을 때,스터디나 발표 시간에 질문을 안하고 싶어서 안하는게 아닙니다... 어떤 질문을 해야할 지 몰랐던 경우가 대부분이었기 때문입니다. 그런데 막상 다른 사람이 질문을 하면 "오 맞아 저거 궁금한데?"라고 생각합니다... 보통 제가 발표를 하는 시간을 갖게 되거나 스터디 등에서 회의를 하게 되면 다른 사람이 의견이나 질문을 하지 않으며 궁금한 것이 없거나 현재 상황이 만족스러운 것으로 생각하였습니다. 하지만 이렇듯 어떤 사람들은 질문이나 의견을 내지 않는 사람을 "생각이 없는 사람"으로도 생각할 수도 있겠구나 싶어서 흥미로웠습니다.
작업 철학
라이브러리는 ‘개발에 필요한 특정 기능을 미리 구현해둔 소스 파일’로 잘 사용하면 개발 시간을 단축할 수 있는 유용한 도구다. 하지만 코드에 대한 이해 없이 라이브러리에만 의존하는 것은 피해야 한다. 하지 않는 것과 할 수 없는 것엔 큰 차이가 있다.
라이브러리르 사용하는 것이 문제가 되진 않는다. 문제는 라이브러리를 사용해 만들어진 결과물이 자신의 실력이라고 생각하는 경우다. 그때 본인의 실력에 대해 거짓말을 하게 되는데, 컬렉터(Collector)가 되기 쉽다. 컬렉터란, 실력을 쌓는 데 시간을 쓰기보단 라이브러리를 수집하는 데 더 많은 시간을 보내는 사람들을 말한다. 이런 습관은 처음엔 괜찮을지 몰라도 시간이 지날수록 자신을 옭아매는 덫이 된다.
👉 `하지 않는 것과 할 수 없는 것엔 큰 차이가 있다.` 이 문구를 봤을 때 정말 가슴에 많이 와닿았습니다. 특히 요즘들어 라이브러리 사용 빈도가 많이 늘어났습니다. 무한 스크롤, 캐러셀 슬라이드 등 정말 편리한 기능들이 많이 있죠. "굳이 직접 구현해야되? 그냥 라이브러리 쓰지..."라는 생각을 많이 가졌었습니다.
하지만 결국 고객의 요구 사항에 맞게 라이브러리를 튜닝을 한다던지 혹은 급작스럽게 기술 스택을 변경해야되어 라이브러리를 사용할 수 없는 경우라면 직접 코드를 짜야되는 경우가 있을 수도 있습니다. 모든 기능을 구현할 줄 아는 사람이라면 큰 문제가 될일이 없지만 라이브러리에 의존했던 "컬렉터"라면 굉장히 당혹스러운 상황이 되겠죠. 그래서 많은 언어, 툴을 잘 다루는 것보다 로직을 스스로 짜는 연습을 하는 것이 중요하다고 생각합니다.
인터뷰 준비가 힘든 이유
많은 사람이 인터뷰 준비를 어떻게 해야 하는지 궁금해한다. 시중에 나와 있는 인터뷰 관련 책만 해도 여러 권이다. 나의 경우엔 특별한 준비를 하지 않았고 다른 사람이 어떻게 했는지도 관심이 없었다. 심지어 리크루터가 보내준 인터뷰 관련 링크조차 읽어보지 않았다. 모두 영어로 되어 있어서 쉽게 읽기가 어려웠고 막상 읽어도 한 달 안에 내가 달라질 것 같지 않아서였다. 그냥 솔직한 내 얘기를 했다.
지금 내가 가진 것을 그대로 부여주는게 가장 중요하다고 생각했다. 나를 과장해서 보여줘 봤자 같이 일해보면 다 들통나기 마련이다. 준비해간 프레젠테이션도 대단하게 아니었다. 내가 어떤 생각, 어떤 의도로 작업을 했는지 설명했다. 그래서 인터뷰 준비에 시간이 많이 필요하지 않았고 힘들지도 않았다. 인터뷰 준비가 힘든 이유는 내가 가진 것보다 더 이야기하려고 하기 때문이다.
👉 이 부분도 정말 공감 많이 되었습니다... 내가 가진 것보다 더 이야기하려고 하기 때문에 준비하는데 시간도 많이 투자하고 기술 면접때 이게 나오면 어떡하지, 저게 나오면 어떡하지의 고민으로 점점 두려움만 커졌기 때문입니다. 그래서 저는 "이해한 내용을 그대로 말하자."라고 생각했더니 두려움이 조금 사라지더라고요. 여기서 말한 이해는 "다른 사람에게 그 개념을 설명해 그 사람을 설득시킬 수 있는지?"입니다. 저는 이 기준으로 말하기 연습을 하며 기술 면접을 준비하고 있습니다. 좋은 소식이 있었으면 좋겠네요...!
회사가 원하는 인재로 성장해라
이 세상에 완벽한 회사는 없다. 밖에서 보기에 굉장히 좋아 보이는 회사도 막상 들어가서 일해보면 단점이 보이기도 한다. 구글도 마찬가지다. 나에게 구글은 너무나 좋은 회사지만 모든 사람에게 그렇다고 말하긴 힘들다. 전 세계 구글 직원은 약 5만 명이나 되는데 이들과 경쟁하는 것이 쉽지만은 않다.
구글이라는 회사에 올 정도면 본인도 어디서 잘한다는 얘기만 들었을 텐데 막상 와서 하는 일은 눈에 띄지 않는 일인 경우도 있다. 내가 좋은 팀, 좋은 프로젝트 그리고 좋은 매니저와 함께 일한다고 해서 다른 5만 명의 직원 모두가 그렇게 일한다고 단정 지을 순 없다.
그래서 목표를 달리 해야 한다. 내가 구글에 입사하는 것이 아니라 구글 같은 회사가 나를 원하도록 하는 것이 목표가 되어야 한다. 다시 말해서 자신의 성장에 더 초점을 맞추라는 얘기다. 내 실력이 구글에 갈 정도로 충분해지면 구글 입사 여부는 더는 중요한 것이 아니게 된다.
굳이 구글이 아니더라도 다른 기회가 얼마든지 생길 수 있다. 회사는 성장의 도구이지 삶의 목표가 아니다. 특정 회사에 입사한다고 성공한 인생이 아니고 그 회사에 불합격하거나 해고된다고 해서 실패한 인생이 아니라는 것이다.
👉 회사가 원하는 인재로 성장해라... 메..모..