2 코드 뉴비
코드 뉴비로서 여러분의 주된 일은 기본 실력을 쌓는 것입니다. 대학 강의를 듣거나, 유료 온라인 강의를 듣거나, (제가 그랬던 것처럼) 유료 부트캠프에 다니거나, FreeCodeCamp, FrontendMasters, TreeHouse, The Odin Project, Codecademy, 또는 (제가 역시 그랬던 것처럼) “YouTube 대학” 같은 훌륭한 무료 자료를 활용할 수도 있습니다.
코딩 커리어는 매우 다양합니다. 웹 개발을 꼭 해야 하는 것은 아니며, 데이터 과학, 사이버 보안, 클라우드, 데브옵스, 모바일 개발 같은 다른 커리어 경로도 있습니다. 그렇긴 하지만 웹 개발은 단연 가장 인기 있는 분야이며, 무슨 일을 하든 아마 웹 개발을 어느 정도는 배워야 할 것입니다.
여러분이 만들어 낼 주요 결과물은 포트폴리오, 또는 제가 자신을 마케팅하기 장(장 39)에서 부르는 표현으로는 “작업의 증거”(블로그를 포함할 수 있습니다)입니다. 기본적으로 여러분은 선택한 기술에 대한 열정과 몰입을 보여 주고, 끝내주는 것을 만들어야 합니다(Build Cool Shit).
하지만 그곳에 이르는 길에서 할 수 있는 일은 그 밖에도 많습니다.
- 업계 용어를 익히십시오: 당신은 가장 많은 시간을 함께 보내는 다섯 사람의 평균입니다. 그러니 강연과 팟캐스트를 들으며 다른 개발자들과 시간을 보내십시오! 제가 정리해 둔 멋진 개발자 팟캐스트 목록을 활용하셔도 되고, 물론 직접 찾아보셔도 됩니다. 팟캐스트를 좋아하지 않으십니까? 트위터에서 조용히 지켜보는 관찰자가 되어 보십시오! 시니어 개발자들이 서로 나누는 대화를 무료로 지켜볼 수 있고, 구글링하거나 설명을 요청하면서 따라잡을 수 있습니다. 이는 면접에서도 큰 도움이 됩니다. 말을 할 줄 알게 되면 실제로 해낼 수 있게 됩니다. Laurie Barth는 이를 엔지니어처럼 말하기라고 부릅니다! 몰입은 훌륭하지만, 어떤 것에 대한 피상적인 친숙함을 진정한 지식으로 혼동하지 않도록 주의하십시오. 이것은 숙련으로 향하는 긴 여정의 첫걸음일 뿐입니다.
- 스스로 레벨을 만드십시오: 혼자 공부할 때(특히 정규 교육 과정을 마친 뒤에는) 배울 수 있는 것이 끝도 없이 많기 때문에 방향을 잃은 듯한 느낌이 들 수 있습니다. 이에 대한 해결책은 학습의 게임화입니다. 저는 JavaScript를 배울 때 jQuery 클론을 만들고, 그다음에는 React와 Redux에 능숙해지고, 그다음에는 Hacker News 클론을 만들 수 있게 되는 것을 스스로의 목표로 삼았습니다. 여러분도 지금 집중하고 있는 분야에서 똑같이 해 볼 수 있습니다! 어떤 학습 플랫폼은 챌린지를 완수하거나 연속 학습 기록을 이어 가면 포인트와 트로피를 주기도 합니다. 네, 조금 유치하긴 합니다. 그래도 적극적으로 즐기십시오!
- 유료 학습을 살펴보십시오: 무료 콘텐츠가 워낙 많다 보니 완전히 무료로만 배우고 싶은 유혹이 들 수 있습니다. 하지만 제 경험상 유료 콘텐츠는 큐레이션 수준과 품질이 훨씬 뛰어나서 그만한 가치가 있습니다. 여유가 된다면 여러분 커뮤니티의 (평판 좋은!) 유료 학습 강좌를 찾아보십시오. 예를 들어 Egghead, Frontend Masters, Codecademy, ACloudGuru, Pluralsight 등이 있습니다. Udemy의 경우, Udemy는 평판이 매우 엇갈린다는 점을 알아 두십시오. 리뷰가 가장 많은 상위 강사의 강의만 고르십시오.
- 공개적으로 약속하십시오: 공개적으로 약속하면 자신만의 응원단과 커뮤니티를 만드는 데 도움이 됩니다. 이는 여정에서 혼자라고 느끼지 않는 데 필요한 피드백을 얻게 해 주며, 그러지 않았다면 스스로를 포기했을 순간에도 계속 나아가게 만듭니다. Alexander Kallaway의 100 Days of Code는 널리 알려진 약속이며, 제게 효과가 있었던 것은 No Zero Days였습니다. 공개적으로 하는 것이 불편하다면 비공개 학습 일지를 쓸 수도 있습니다. 자신에게 책임을 지울 수만 있다면 자기 바깥에 있는 것은 무엇이든 효과가 있습니다.
- 커뮤니티를 찾으십시오: 커뮤니티를 얻기 위해 반드시 공개 약속을 해야 하는 것은 아닙니다. CodeNewbies, FreeCodeCamp, DEV, CareerKarma, CodingBlocks는 배우는 동안 곁에 있어 주는 훌륭하고 따뜻한 커뮤니티입니다. 부트캠프도 훌륭한 커뮤니티가 될 수 있으며, Codebar 같은 무료 밋업에서 직접 만나 배우거나 Emma Bostian의 CodingCoach를 통해 온라인 멘토를 찾을 수도 있습니다. 기술 업계에서 과소대표된 소수자 집단에 속한다면, 바로 여러분 같은 사람들을 돕기 위해 만들어진 커뮤니티와 단체가 있다는 사실을 잊지 마십시오. 이런 곳에는 지역 지부가 있는 경우가 많으며, 기술 업계에서 자리를 찾는 데 필요한 멘토와 친구를 만날 수 있습니다(그렇습니다, 여러분은 이곳에 있어도 되는 사람이며, 누구도 그렇지 않다고 말하게 두지 마십시오).
- 가르치며 배우기: 동료들의 모임을 찾을 수 있다면, 주제를 하나 골라 그들에게 가르쳐 주겠다고 제안해 보십시오. 어떤 주제에 대해 몰랐던 모든 것들은 그것을 가르칠 준비를 시작하고, 미처 물어볼 생각조차 못 했던 모든 질문에 답해야 할 때가 되어서야 비로소 알게 됩니다. 저는 React를 배우던 아주 초기에 이렇게 했는데, 스트레스는 받았지만 제게 매우 큰 도움이 되었습니다!
- 기본기를 두루 갖추십시오: 개발자의 일이 언제나 100% 새로운 기능을 코딩하는 것만은 아닙니다. 심지어 대부분의 시간은 코딩조차 하지 않는다고 말하는 사람도 있을 것입니다! 개발자가 하는 일 중에는 코딩과 맞닿아 있는 일이 많으며, 이런 일들도 배워 두는 것이 좋습니다. 소스 관리, 코드 리뷰, 테스트를 포함하는 조엘 테스트의 모든 항목에 익숙해지거나, 적어도 각 항목에 대해 자신의 의견을 가지고 있어야 합니다. 테스팅 트로피나 테스팅 허니콤에 어느 정도 익숙해지고, 이를 자신이 쓰는 언어의 도구로 어떻게 구현하는지 이해하십시오. “브라우저에 Google.com을 입력하면 무슨 일이 일어나는가?”라는 질문은 이제 다소 낡은 것이 되었지만, 이를 알고 있다는 것은 인터넷이 어떻게 동작하는지 안다는 것을 보여 주므로 여전히 어느 정도 자세히 알아 두어야 합니다. 이러한 “메타코딩” 역량은 매우 중요해서 MIT에서는 이를 “the Missing Semester”라는 이름으로 가르치기 시작했을 정도입니다. 예를 들어 JavaScript라면 Webpack, ESLint, PostCSS, Prettier 같은 도구에 기본적으로 익숙해지는 것이 좋습니다. 여러분은 대부분 혼자서 코딩을 배우고 있겠지만, 대부분의 개발자는 팀으로 일합니다. “팀” 경험을 무료로 쌓는 한 가지 방법은 오픈 소스에 기여하는 것입니다!
- 오픈 소스에 기여하기 시작하십시오: 많은 오픈 소스 프로젝트는 초보자에게 매우 친절하며, 처음부터 코드를 기여할 필요도 없습니다. 사실 Node나 React 같은 대형 프로젝트에 코드를 기여하는 것으로 시작하는 것은, 그에 따르는 자랑거리가 있다 하더라도 최선의 방법이 아닐 수 있습니다. 여러분이 사용하는 더 작은 라이브러리로 시작하거나, 문서 개선을 돕는 것이 더 나을 수 있습니다. 이렇게 하면 여러분이 모르고 있을 수 있는 많은 맥락을 따라잡지 않아도 오픈 소스의 기본적인 작동 방식에 참여할 수 있습니다. 대부분의 오픈 소스 프로젝트는 좋은 기여자를 절실히 필요로 하므로, 긍정적인 태도와 함께 그들이 무엇을 찾고 있는지 이해하고 있음을 보여 주면 두 팔 벌려 환영받을 것입니다. 처음 기여하는 사람을 위해 이슈를 따로 남겨 두는 프로젝트를 찾으려면 First Timers Only를 확인해 보십시오!
사람들이 무엇을 배울 수 있는지 정리하려고 작성한 이런 로드맵이 많이 있지만, 이런 로드맵은 도움이 되기보다 오히려 가면 증후군을 부추기는 경우가 많습니다. 실제로 필수인 기술은 아주 적으며, 로드맵을 만든 사람조차 자신이 로드맵에 나열한 것을 모두 알지는 못한다는 점을 기억하십시오. 로드맵은 그저 지도일 뿐입니다. 지도에 표시된 모든 지점을 방문할 필요는 없습니다.
독학하는 경우, 일부 사람들은 “하드” 모드를 택해 컴퓨터 과학 전체 커리큘럼을 다 공부해야 한다고 고집합니다. TeachYourSelfCS, Open Source Society University, Scott Young의 MIT 챌린지에서 이를 위한 좋은 학습 경로를 찾을 수 있습니다. 하지만 이 과정은 대다수의 제품 개발자가 실무에서 거의 (혹은 전혀) 사용하지 않는 이론을 많이 다룬다는 점에 유의하십시오(장 1의 코딩 커리어 계층을 기억하신다면, 저희는 제품 개발자와 플랫폼 개발자를 구분합니다. 개발자 유형이 다르면 필요한 지식도 다른 것이 당연합니다!). 학문적인 컴퓨터 과학 지식을 많이 알지 못하더라도 좋은 개발자 일자리를 얻고, 그다음에 일하면서 부족한 부분을 채워 나가는 선택지가 여러분에게는 분명히 있습니다.
배워야 할 것 같은 기술이 너무 많아서 스트레스를 받고 있다면, 여러분만 그런 것이 아닙니다. 프론트엔드 개발자에게는 JavaScript를 배운다는 것은 어떤 느낌인가가 있고, 백엔드 개발자에게는 Docker: 이것이 미래입니다가 있습니다. 가끔은 $FAMOUS_COMPANY에서 우리가 $HYPED_TECHNOLOGY로 전환한 이유 같은 부류의 글을 읽고 나만 뒤처지는 것은 아닌지 불안해질 것입니다. 이는 지극히 정상입니다. 최신 정보를 계속 접하는 것은 좋지만, 배움에 관해서라면 만들고 싶은 것을 만들고 원하는 일자리를 얻는 데 필요한 것에 집중하십시오.