코딩을 배울 때 했던 실수들. 그리고 그 실수들을 피하는 법.

이 글은 원문 Mistakes I Made When Learning to Code — and How to Avoid Them by Fredrik Strand Oseberg를 저자의 동의하에 번역한 글입니다. 흔쾌히 번역에 동의해 주신 저자 Fredrik Strand Oseberg님께 감사의 말씀을 드립니다.

Source.

필자가 프로그래밍을 배우기 시작했던 첫 6개월이 아직도 생생하다. 무슨 일을 하는지 전혀 이해하지 못한 채, 튜토리얼만 따라 하는 카피캣(Copy Cat)이었다.

튜토리얼 영상은 종종 따라가기에 너무 빨랐고, 강사의 코드를 똑같이 따라칠 수 있도록 영상 멈추기와 되감기를 반복해야 했다. 그럼에도 불구하고 코드는 자주 틀렸다.

한 번은 필자가 당연히 알 거라고 생각했던 부분을 강사가 영상에서 빼먹은 바람에, 이틀 동안 스트레스 받으며 디버깅한 적이 있다. 물론 강사의 잘못은 아니었다. 우리가 이미 알고 있는 지식이 누군가에게는 흑마법과 같다는 사실은 잊어버리기 쉽기 때문이다.

이제는 시간이 많이 흘렀고, 배움과 노력의 여정이 결실을 맺었다. 하지만 여전히 궁금하다 — “내가 더 효과적으로 배울 수 있었을까?”

효과적으로 공부하기

필자의 학습 속도를 늦춘 원인으로 다음 세 가지 실수를 고를 수 있다: 집중력 부족, 튜토리얼의 함정, 그리고 추상화.

집중력 부족

처음 프로그래밍 공부를 시작했을 때는 심각하게 집중을 하지 못했다. 마치 길 잃은 양처럼 지식을 찾고는 있지만, 제대로 찾는 방법을 몰랐다. 집중력이 부족했던 건 온전히 나의 잘못은 아니었다 — 코딩을 배우게 된 원인도 한몫했다

일하던 스타트업에서 웹 개발자가 필요해서 프로그래밍을 배우기 시작했다. 외주로 개발하는 과정에서 문제가 있었기 때문에, 회사 내부에서 제품 출시를 도울 수 있는 사람이 필요했다.

필자는 회사의 해외 개발자들을 돕기 위해서 당시 플랫폼에서 사용하던 PHP를 배우기 시작했다. 시간이 지나면서 개발자가 세 번이나 바뀌었고, 자연스레 프로그래밍 언어도 바뀌었다. 결국 코드는 약간의 PHP, 약간의 Python, 그리고 약간의 Ruby로 섞였다.

하지만 이것저것 조금씩 배우게 되면 개념을 완전히 이해하기 어렵다. 프로그래밍은 쉽지 않기 때문에 더더욱 개념을 완전히 파악할 시간이 필요하다. 그리고 자바스크립트를 완벽하게 배우겠다는 다짐을 한 후에야, 시간이 지나며 변화를 느끼기 시작했다.

여러 언어를 배우기보다는 한 프로그래밍 언어에 숙달하는 것을 추천한다. 해당 언어를 핵심까지 완벽하게 이해해야 한다. 물론 한 언어와 결혼하라는 것은 아니다. 원한다면 나중에 다른 언어를 더 공부할 수 있다. 프로그래밍 개념을 잡기 위해 한 프로그래밍 언어를 사용해서 시작하라는 것이다.

튜토리얼의 함정

튜토리얼은 정말 좋다. 솔직히 필자도 얼마나 많은 튜토리얼을 봤는지 기억 못 한다. 전문가의 영상을 따라 하며 작동하는 프로젝트를 만들면 기분도 좋고, 나 자신도 내용을 다 아는 것 같은 느낌을 눈다.

하지만 튜토리얼의 함정에 빠지기 쉽다. 복잡한 프로그래밍 영상을 보는 건 쉽지만, 실제로 하는 건 훨씬 힘들고 어렵다. 그리고 그 힘든 일을 경험해야만 개발자가 될 수 있다.

튜토리얼의 문제는 모든 사고가 이미 강사에 의해 이루어졌다는 점이다. 따라서 영상을 보는 사람은 로직을 짤 필요가 없고, 우리는 무언가 배우고 있다는 착각을 하게 된다.

튜토리얼을 보지 말라는 뜻이 아니다. 혼자 공부할 때에는, 앞으로 나아가기 위해 무엇을 해야 하는지 파악하거나 큰 그림을 그리기 위해 여기저기서 조각을 모을 필요가 있고, 튜토리얼에서 그 조각들을 모을 수 있다.

하지만 튜토리얼을 볼 때마다 연습을 꼭 해야 한다.

쉽지 않지만, 연습하지 않으면 귀중한 시간과 노력을 낭비하게 된다.

필자가 제일 잘한 일 중 하나는 Free Code Camp 프로젝트를 해본 거다. 모든 게 이미 결정되거나 제한되어있지 않은 프로젝트이기 때문에, 코드를 짜는 과정에서 구현할 방법을 스스로 생각할 기회를 준다.

그게 바로 개발자의 일이다. 어떻게 풀어야 할지 감이 잡히지 않는 과제가 주어지고, 배운 기술을 전부 적용해보고 생각해야 한다. 개발자가 된다는 것은 모든 문제의 해답을 가지고 있는 게 아니다. 모든 문제의 해답을 찾는 것이다. 튜토리얼만 본다면 진정한 개발자가 될 수 없다.

연습하고, 연습하고, 연습해야 한다.

추상화에 의존

2020년에 개발자가 되는 건 쉽지 않다. 기술은 항상 빠르게 발전하며 변하기 때문이다. 그리고 어렵고 복잡한 개념을 쉽게 만들어주는 추상화(Abstraction)는 우리도 빠르게 움직일 수 있게 해주는 개념 중 하나다.

추상화를 가스레인지라고 생각하면 된다. 가스레인지가 어떻게 작동하는지는 알 필요가 없고, 버튼을 누르면 불이 켜진다는 것만 알면 충분하다.

코딩도 비슷하다. 머신 코드와 HTTP 서버는 이미 추상화되었기 때문에 직접 쓸 필요가 없다. 우리는 추상화된 코드를 바탕으로 더 새롭고 멋진 것들을 만들어나가면 된다.

하지만 이 역시도 양날의 검이다.

추상화를 사용해 놀라운 일을 할 수 있지만, 개발자로서 성장할 수 있는 중요한 요소도 놓치게 될 수 있다. 바로 그 안에서 작동하는 개념이나 훌륭한 해결책을 만드는데 중요한 개념 말이다. 배우면 더 나은 개발자가 될 수 있지만, 배울 필요가 없기 때문에 놓치는 것들이다. 종종 귀찮고, 어렵고, 지루하기 때문에 배우는 과정에서 건너뛰기 쉬워졌다. 그럼에도 불구하고 사람들이 더 호기심을 가지고 도전했으면 좋겠다.

React 같은 프레임워크를 사용할 수 있다는 점에 만족하면 안 된다 — 바닐라 자바스크립트를 사용해서 SPA(Single Page Application)을 만들 수 있어야 한다. Express를 사용할 수 있다는 점에 만족하면 안 된다 — Nodejs와 TCP를 사용해서 직접 웹 서버를 만들어보고, HTTP도 배워보는 것을 추천한다.

더 나은 개발자가 될 수 있도록 어렵고, 지루하고, 진부한 것들을 배우면 좋다. 적어도 시도해 보아라. 필자의 생각에는 반드시 도움이 될 것 같다.

결론

이 글에서는 개발자가 되는 과정을 늦춘 세 가지 분야를 살펴보았다: 집중력 부족, 튜토리얼의 함정, 그리고 추상화. 필자의 경험을 바탕으로, 실수를 피하며 효과적으로 배울 수 있는 조언을 담았으니 도움이 되었으면 좋겠다.

필자의 컨텐츠를 더 보고 싶다면, React, 웹 기본, 챗봇 등을 다루는 유튜브 채널도 있다. 트위터에서 @foseberg로 팔로우해도 다양한 컨텐츠를 볼 수 있다.

이 글을 끝까지 읽어줘서 고맙고, 다양한 사람들에게 공유되어 도움이 되면 좋겠다.

--

--