최근 Github 의 한 웹 개발자가 올린 몇 장의 웹 개발자 로드맵 슬라이드가 인터넷을 달궜습니다. 그 중 한 장이 바로 위에서 보시는 그림입니다.
이 자료들은 입문자나 전문가들에게 모두 유용합니다. 프론트엔드, 백엔드 개발자나 시스템 관리자 직업을 구하기 위해서 알고 있어야 할 기술들을 잘 나열해 놨죠. 제 생각에는 이 글이 코딩을 처음 배우는 입문자들에게 특히 유용할 것 같습니다.
그 이유는 아래와 같습니다.
저는 8살에 QBASIC 게임을 만드는 것을 시작으로 총 15년 간 프로그래밍을 해왔습니다. 제 스스로를 풀스택 웹 개발자라고 생각하고 있구요. 그렇기에 위 도표에 나온 것들이 모두 제가 아는 도메인에 속합니다.
다시 한번 도표를 살펴볼까요? 정말 많아서 두려우시죠? 하지만 이게 개발자가 되기 위해 모두 알아야 하는 것은 아닙니다. 전혀 그렇지 않죠. 15년 차 개발자인 저나 다른 개발자들은 이걸 다 알고 있을까요?
절. 대. 아닙니다.
당신이 처음 프로그래밍을 시작할 때, 주변에 10 개의 언어로 코드를 짜는 학생들이나 Linux 최고 전문가들에게 상대적 박탈감을 느끼고, 선생님이 가르쳐주는 여러 가지의 컴퓨터 공학 개념을 소화하는 것은 쉽지 않았을 거에요. 대다수의 많은 사람들처럼 아마 프로그래밍 관련한 지식은 모두 알아야 한다고 생각했겠죠.
그건 옳지 않은 방향입니다. 아무도 그런 기대를 하지 않아요.
저같이 경험이 있는 개발자도, 저 위에 있는 도표 중에 매우 일부 기술만 전문가 수준으로 다룰 줄 압니다. 심지어 몇 개는 무엇인지도 전혀 모르겠어요. 아마 도표의 절반 정도는 예전에 사용해본 것 같은데, 그 절반을 사용한 시간이라 해봐야 제 인생에서 아마 총 1시간이나 될 것 같습니다. 하지만, 만약 당신이 어느 특정 기술을 저에게 1 시간 동안 익혀보라고 한다면, 저는 금방 배울 수 있을 거에요. 왜냐면 전 개발자로서의 학습능력이 있기 떄문입니다.
“개발자로서 늘 새로 나오는 신 기술을 배우고 지배하려고 한다면, 이건 지는 싸움을 하는 거에요. 정말 너무나 많은 신 기술이 있고, 그 신 기술들은 매우 빠르게 변합니다.” 최상의 시나리오는 그 중 몇 개를 골라 늘 최신 스펙을 꿰차는 정도죠.
따라서, 모든 프로그래밍 언어와 기술을 배우는 대신에, 개발자에게 필요한 학습 능력을 길러야 합니다.
기술문서 읽는 법 배우기
여기 Input & Output 과 관련된 Python 기술문서의 샘플이 있습니다. 그리고 이와 비슷한 Golang 의 예제가 여깄네요.
혹시 위 두 링크에서 유사한 부분을 발견하셨나요? 코드 예제, 간단한 설명, 그리고 interface 까지 이 내용을 참고하면 아래의 질문들에 쉽게 대답할 수 있을 겁니다.
- “이 라이브러리로 내가 원하는 것을 구현할 수 있을까?”
- “어떻게 내가 원하는 것을 구현할 수 있지?”
- “내가 생각하는 목표를 이룰 더 나은 방법이 있나?”
소스코드 읽는 법 배우기
이 링크 는 Python 에서 JSON 인코더를 구현하는 코드입니다. 만약 이 코드가 예상대로 동작하지 않거나 기술문서의 설명이 부족하다면, 덜 선호되는 방법이지만 구현 코드에서 원하는 답을 찾을 수 있습니다.
코드 읽는 법과 관련해서 몇가지 팁은
디버깅 하는 방법 배우기
코드에 문제가 생겼을 때 디버거, 브레이킹 포인트, 출력문 을 활용하여 코드를 디버깅 하는 방법을 배워보세요. 왜냐면 프로그래밍을 할 떄 대부분 시간은 이렇게 디버깅 작업을 하면서 보내게 됩니다. 디버깅 관련해서 염두에 두어야 할 부분은
- 버그를 마주쳤을 때, 최대한 고정 관념(기존 관점)에서 벗어나 생각합니다. “만약 코드가 아니라 서버 문제일수도 있지 않을까?”, “아니면 데이터 형식이 잘못되었나?” 만약 버그를 바로 잡지 못한다면, 아마 엉뚱한 곳에서 디버깅 하는 것일수도 있습니다.
- 잠시 휴식을 취하세요. 디버깅 할 때, 당신이 버그가 있을 거라고 생각하는 곳으로 계속 파고들게 됩니다. 그리고 나서, 다른 부분은 전혀 생각하지 못하게 되죠. 이렇게 버그가 안잡힐 때, 잠시 휴식을 취합니다. 우리 뇌는 여러개의 선으로 얽혀 있고, 만약 한쪽으로 너무 깊게 들어가면 버그가 있을 수 있는 다른 한쪽으로 나오기가 힘듭니다. 그러니, 일단 일어나서 휴식을 취하며 다른 생각을 하면, 다시 제자리로 돌아올 수 있습니다. 그리고 나서 다시 책상으로 돌아와 디버깅을 하면, “버그가 당신 얼굴을 아마 쳐다보고 있을 거에요.” 제가 보장합니다.
- 코드는 거짓말을 하지 않습니다. 코드는 작성한대로 정확하게 동작합니다. 만약 에러가 있다면, 그 에러를 유발하는 부분만 찾으면 되겠죠!
도움을 요청하는 방법 배우기
이게 조금 허접한 소리로 들릴 수 있지만 그건 아닙니다. 코딩을 하다 막혔을 때 도움 받을 수 있는 곳이 많아요! 제가 일반적으로 사용하는 순서는
- StackOverFlow
- Github 해당 라이브러리의 Issues
다른 사람에게 도움을 요청할 때 염두에 둬야 할 몇 가지는
- 당신을 돕는 사람들은 대개 당신의 문제가 정확히 무엇인지 잘 모릅니다. 도움을 요청할 때 에는 문제가 발생한 정확한 맥락을 제공하는게 좋습니다. 맥락에는 일반적으로 일부 코드, 애플리케이션 로그, 프로그램 설정 등이 포함됩니다.
- 코드를 정리하세요. 오탈자가 많거나, 끝없이 나열된 이슈 설명서나, 형식화가 되어 있지 않은 버그 리포트는 읽기가 어렵습니다.
- 민감한 정보는 올리지 마세요. 올리실 때는 반드시 암호, 토큰, 사용자 정보를 다시 점검하시기 바랍니다. 만약 이로 인해 문제가 발생한다면 책임감을 가지고 빠르게 해결하세요.
결론
개발자에게는 숙달할 것이 너무나 많습니다. 이 모든 것들을 마스터 하려고 하지 말고, 개발자로서의 학습 능력을 기르는데 집중하세요. 정답을 빠르게 찾는 능력을 기르는 것이 중요합니다.
개발을 처음 시작하는 입문자든 기계식 키보드로 코딩하는게 이미 익숙한 개발자든 이 기사가 당신에게 도움이 되었길 바랍니다.
기억하세요. 아무도 당신이 모든 것을 알고 있기를 바라지 않습니다. 과정을 즐기시고, 절대 배우는 걸 멈추지 마세요 Happy Coding! :)
원문
- 원작자의 허가를 얻고 번역하였습니다 - This Picture Will Change the Way You Learn to Code