12_rules_to_learn_to_code
title: “12 Rules to Learn to Code. Part 2” date: 2020-06-11 08:26:28 -0400 categories: Development
1. Trick your brain with the 20min rule
-
코딩을 익히는 것은 헬스장에 가는 것과 같다. 주말에 하루종일 헬스장에서 운동을 한다고 해도 눈에 띄는 몸의 변화는 볼 수 없을 것이다. 코딩도 마찬가지다. 하지만 더 정기적으로 코딩을 익히기 시작한다면 눈에 띄는 변화를 발견할 수 있을 것이다.
하지만 문제는 시간이 없다는 것이다. 하루 종일 일하고, 가족과 시간을 보내고 하루 일과를 하고 나면 언제 진득히 앉아서 ‘정기적인 코딩’을 할 수 있을까?
퇴근하고 집에 와서 이런 저런 일들을 하고 2시간 정도의 짬이 있다고 하자. 가장 어려운 것은 일에 쩌들어 있는 뇌에게 편하게 앉아서 맥주 한잔하며 드라마를 볼 수 있는 이 2시간을 앉아서 무언가를 공부하도록 설득하는 일이다. 하지만 여기서 사용할 수 있는 꼼수가 있다.
사람은 많은 관성을 가지고 있다. 이 관성은 안좋은 쪽으로 작용할 수도 있다. 습관적으로 들여다보는 가쉽거리들, 유투브, 수많은 웹사이트 등등에 시간을 보낼 수도 있을 것이다. 하지만 반대로 이 것을 긍정적으로 사용할 수도 있다. 일단 공부하는 것에 관성을 들이면 이러한 인간의 관성을 긍정적으로 사용할 수 있다.
그렇다면 이 긍정적인 관성을 어떻게 만들어낼 수 있을까?
첫째로 당신은 이러한 변화를 만들어 내는게 엄청나게 힘든 일임을 이해하고 있어야 한다. 이 것은 많은 동기부여를 필요로 한다. 만약 집에 오자마자 소파에 앉아서 TV를 켜는 순간 당신의 그날 저녁은 이미 날린 셈이다. 유혹에 넘어가기는 쉽다. 이 때문에 이러한 유혹에 넘어가지 않고 변화를 만들어내는 것에 많은 동기부여가 필요한 것이다.
이 것이 왜 집에 들어서는 순간이 새로운 환경을 만들기 위해 가장 중요한 순간이 되는 이유다. 만약 이 순간에 당신이 스스로에게 딱 20분만 코딩을 하자고 다짐한다면 당신은 대부분 성공할 것이고, 이렇게 만들어진 관성은 결국 한시간 혹은 그 이상을 코딩하게 만들 것이다. 뇌가 받아들이기에 20분 정도의 작업은 큰 노력이 필요하다고 인식되지 않을 것이고 당신은 결국 뇌를 속여서 당신의 저녁에 긍정적인 변화를 가져올 수 있을 것이다.
다음 단계는 이 것을 습관으로 만드는 것이다. 연구에 따르면 새로운 습관을 만들기 위해선 반드시 습관을 들이고자 하는 일을 매일매일 한달동안 이어나가야 한다고 한다.
여기에도 코딩을 연습하던 것처럼 꼼수가 있다.
한달을 나타내는 달력이 있다고 생각해보자. 만약 당신이 습관을 들이고자 하는 일을 한 날에는 달력에 줄을 긋는다. 다음 날에도 일을 해내면 그 줄을 연장한다. 그렇게 계속 줄을 연장하다보면 그 줄이 끊기지 않게 하고 싶어 하는 마음이 대부분의 사람들에게 습관을 이어나갈 동기를 부여한다. 이상하게 들리겠지만 여러 번 그만두고 싶을 때마다 여태까지 이어온 그 끊김없는 긴 줄이 당신이 이 습관을 이어나가도록 강요할 것이다.
이 방법을 한 번 시도해봐도 좋지 않을까?
2. Code for a Purpose
-
내가 처음 코딩을 배울 때, 시작 했다 포기했다를 셀 수 없이 반복했다. 이건 독학으로 공부하는 프로그래머 사이에선 흔한 이야기이다. 많은 초보자들이 고민없이 언어를 선택하고, 그저 수많은 예제들을 따라하면서 코딩을 배우기 시작한다. 한 줄 한 줄 일일히 코드를 따라치고, 때로는 소수를 구하는 코드를 작성하고, 때로는 짝수를 구하는 코드를 작성한다. 그런데 알고 있는가? 소수는 그냥 구글링하면 훨씬 더 빨리 구할 수 있다. 짝수를 구하는 코딩은 하나도 재밌지 않다.
진실이 여기에 있다. 만약 당신이 그저 코딩이란 행위를 하기 위해 코딩을 배운다면, 당신의 실력이 나아지기란 매우 어려울 것이다. 프로그래밍 같이 수없이 갈고 닦을 필요가 있는 기술은 당신의 내적 동기부여를 조금씩 갉아 먹을 것이다. 그 안에서 나온 무언가가 당신을 먹고 자는 것까지 잊게 만들 것이다. 솔직하게 말하자면 내 자신의 프로젝트를 위해 코딩하는 것은 내가 가장 즐기는 것 중 하나이다. 이건 창의성과 함께 논리적 생각을 결합시키며, 결국 당신은 무언가를 만들게 될 것이다. 대부분의 경우 세상에서 누구도 보지 못한 것이다. 그것은 당신의 삶을 편리하게 만들어주거나 더 즐겁게 만들어 줄 수 있다. 나아가 많은 사람들의 삶을 편리하게 만들어주거나 더 즐겁게 만들어 줄 수도 있다. 그건 마치 당신의 차고에서 만드는 완전 미치게 멋진 커스텀 오토바이 같은 것이다. 물론 차고가 필요하지도, 부품을 위해 1센트도 쓸 필요가 없다.
이것은 많은 사람들에게 동기를 부여한다. 창의적인 부분, 창작하는 부분. 그래서 나는 빨리 당신이 예제를 따라서 코딩을 배우고 무언가를 만들기를 재촉하는 것이다. 물론 그것이 처음부터 클래시 오브 클랜이나 리그 오브 레전드 같은 것을 만들 수 있게 하진 않는다. 하지만 당신은 뭔가 흥미로운 것을 만들 수 있게 될 것이다. 그건 주사위 게임이나 플래시 카드 게임이 될 수도 있다. 하지만 예제의 끝에 당신은 무언가 실제로 가지고 놀 수 있는 것을 만들어 낼 것이고, 그건 결국 더 많은 동기를 부여하게 될 것이다.
이 코스를 진행하는 도중에 우린 지속해서 당신에게 당신이 만들고 싶은 간단한 앱에 대해 구상하라고 말할 것이다. 강의를 진행하면서 배운 기술들을 사용할 수 있는 무언가의 앱. 하지만 그 뿐만 아니라 새로운 기능을 더 추가하는 방법을 찾기 위해 당신의 기술을 조금 더 확장하게 될 것이다.
우리 학생 중 하나는 기상시간을 앞당기기 쉽도록 매일 1분씩 더 일찍 깨워주는 앱을 만들었다. 또 어떤 학생은 어버이 날 선물로 자신만의 슬라이드쇼 앱을 만들었다. 다른 학생은 두께와 중량에 따라 완벽한 스테이크를 만들게 해주는 타이머 앱을 만들었다.
당신의 상상력에는 한계가 없다. 당신만의 앱을 만드는 것은 꽤나 어려운 일이 될 것이다. 단계별 지침같은 건 없기 때문이다. 하지만 당신의 코딩 실력은 아주 큰 발전을 가져다 줄 것이다.
3. There is No “Perfect Langauge to Learn”
-
내가 논쟁이 될만 한 얘기를 할 때면, 언제나 “어떤 프로그래밍 언어부터 배워야 하나요?”라고 묻는 사람이 꼭 있다. 초보 프로그래머에게 꼭 맞는 완벽한 언어가 있다는 일반적인 인식들이 있다. 누군가는 그게 파이썬이라고 하고, 누군가는 그게 스위프트라고 한다.
하지만 그건 완전히 틀렸다.
프로그래밍 언어는 단순히 말해서 그냥 도구다. 당신의 공구상자 안에 있는 도구들이랑 하나 다를 게 없다. 당신이 못질을 하고 싶으면 망치를 쓰면 된다. 만약 배관을 고치고 싶으면 스패너가 필요할 것이다. 물론 스패너를 가지고 못질을 할 수도 있고 같은 프로그래밍 언어로 다른 종류의 문제들을 해결할 수도 있다. 목수는 당신에게 가장 즐겨쓰는 도구가 망치라고 할 것이고, 배관공은 스패너라고 할 것이다. 하지만 여전히 어떤 도구가 물건을 고치기에 최고의 도구인가를 정해주진 않는다.
웹개발자는 자바스크립트가 초보자가 배우기 가장 좋은 언어라고 할 것이다. 통계학자는 R언어가 가장 좋다고 조언할 것이다. 하지만 결국 가장 중요한 것은 당신의 도구를 가지고 무엇을 할 것인가이다. 당신이 iOS앱을 만들고 싶다면 스위프트를 배워라. 당신이 웹사이트를 만들고 싶다면 자바스크립트가 필요할 것이다. 하지만 좋은 소식은 반복문, 조건문, 함수 같은 핵심 프로그래밍 개념은 모두 같다는 것이다. 다른 점은 대부분 문법이다. 영어로 werewolves는 한국어로 늑대인간이다. 발음과 표기법만 다를 뿐 보름달이 뜨면 셔츠를 뜯으며 늑대로 변하는 인간을 말한다는 것은 똑같다.
그러니 당신이 이루고 싶은 일을 먼저 정하고, 그것에 맞는 최고의 도구를 골라라.