12 Rules to Learn to Code

출처

https://www.udemy.com/course/the-complete-web-development-bootcamp/?couponCode=JUST4U02223

유데미에서 개발실력을 늘리는 법에 대해 조언해주는 자료를 읽게 되었습니다. 해당 자료를 읽은 후에 요약한 내용입니다.

 

1 매일 작게라도 꾸준히 하자

코딩은 운동과 같다. 몰아서 할 수 있는 게 아니라 꾸준히 해야 실력이 좋아진다. 경험에 비례해서 실력이 상승하기도 한다. 따라서 매일이라도 꾸준히 해야한다.

첫째로 꾸준히 할 수 있는 습관을 들여야한다. 사람이 습관을 형성하기 위해서는 최소한 30일은 반복을 해야한다고 한다. 따라서 30일동안 동일한 규칙을 지켜야한다.

두번째로 사람은 컨텍스트 스위치에 많은 에너지를 쓴다. 집에 들어오자마자 침대에 눕거나 소파에 앉는다면 그 날 하루는 이미 끝난거다. 그러니 바로 시작하자.

2 만들고 싶은 것을 정하고 코딩하기

만들고 싶은 것을 정하지 않고 코딩을 하게 된다면 코딩만을 위한 코딩을 하게 된다. 코딩테스트를 위한 공부가 그런 종류의 코딩이다. 그런 것보다는 내가 실제로 만들고 싶은 것, 내가 재밌게 갖고 놀 수 있는 것들을 만들어보자.

백준 풀 때 되돌아보자. 주어진 수의 홀짝 판단 프로그램 짜기, 이건 재미가 없고 구글링 하는게 훠얼씬 빠르고 에너지도 덜 든다. 그런 것 보다는 친구들이나 가족들이 필요한 것들, 내가 필요한 것들을 만들어보자. 거창할 필요가 없다.

무언가 떠오르지 않고 튜토리얼을 듣겠다면 적어도 결과물이 있는 튜토리얼을 듣자.

3 완벽한 언어는 없다

언어는 도구에 불과하다. 내가 만들고 싶은 것이 나에게 맞는 언어를 고르게 한다. IOS 앱을 만들거면 스위프트를 배워라. 웹 서비스를 만들거면 자바스크립트를 배워라. 내가 뭘 만들지 결정한 다음에 언어를 고르는 것이다.

4 제대로 이해하고 쓰자

프로그래밍은 내가 이해한 것들을 바탕으로 쌓는 작업의 연속이다. 요즘 나오는 튜토리얼들 대다수는 그렇게 도움이 되지 않는다. 초보자들을 위한 튜토리얼이라는 미명하에 중간까지 가다가 강연자가 지쳐서 갑자기 급발진해서 설명을 생략하는 경우도 있고 초보자가 단순히 자기가 소화할 수 없는 것들을 다룰 때가 있다.

어느 것이든 이해하지 않고 코드를 사용하고 있다면 즉시 멈추고 기초를 쌓는 데에 시간을 써라. 공부한 것들을 제대로 이해하고 활용할 수 있는 후에 다음 단계로 넘어가자.

배속을 사용하는 것도 방법이다. 쉬운 개념들은 배속으로 넘기고 어려운 개념들은 시간을 들이고 이해해라.

5 몰라도 괜찮다

암기의 가치는 점점 떨어지고 있다. 지식은 검색으로 찾을 수 있다. 하지만 사고하는 법의 가치는 계속 증가하고 있다. 내가 생각할 수 있는 사람임을 보여줘야한다.

질문하는 기술과 답을 이해하는 기술들을 키워라. ‘기술’이다!! 코드를 이해하지도 않은 채 복사 붙이기하는 것은 아무런 의미가 없다.

막힐 때 처음에는 고민을 하자. 코드를 입력한 후에 프로그램이 의도대로 작동하지 않는다. 그렇다면 입력 전후에 어떤 차이가 발생했는가? 이런 식으로 추적을 해야한다.

고민을 해도 답이 나오지 않는다면 구글링부터 하자. 버그라면 에러코드와 메세지를 첨부해서 검색해라.

6 따라해라

I read. I highlighted. I forgot. I fell asleep.

책을 많이 읽는다고 해서 코딩을 잘하는 것은 아니다. 나도 코딩과 관련해서 책을 많이 샀고 많이 읽어보기도 했지만 나를 더 혼란스럽게 만든 것 외에는 어떤 영향도 있지 않았다.

그렇다고 책이 나쁘다는 것은 아니다. 보안과 프로토콜과 같이 특정 주제에 대해 딥다이브를 하려면그와 관련 된 문헌들을 읽는 게 좋다. 하지만 배우고 싶다면, 만들어라.

하지만 무엇을 만들어하지?

아이디어가 없다면 따라해라. 너만의 노트패드, 너만의 피아노, 너만의 지뢰찾기, 테트리스 등을 만들어라. 만드는 법과 도움을 찾는 법을 배우기에 좋은 기회가 될 것이다. 오히려 최신기술을 활용해서 무엇을 만드는 것은 도움을 받기에는 어렵다.

7 피드백받기

period.

8 계속 배워라

9 쓰는 것보다 고민을 더해라

코딩을 하다보면 버그를 마주칠 때가 있다. 쓰기보다는 고민해라. 그리고 답이 안나오면 좀 쉬어라. 코드 더 친다고 해결되는 건 아니다. 오히려 그런 코드들이 나중에 디버깅하느라 시간을 소모한다.

10 멘토 찾기

좋은 멘토부터 정의하자. 좋은 멘토란 답을 알려주는 사람이 아니다. 위에서 언급한 것처럼 사고하는 방법을 알려주는 사람이 좋은 멘토다. 지식의 가치는 그 어느 때보다 싸다. 지식 그 자체에 얽매이기 보다는 어떻게 생각하는지를 배워라. 그리고 항상 교환을 해라. 내가 갖고 있는 가치와 상대방이 주는 가치를 교환해라.

11 문제를 청킹해라

문제가 현재 기술력에 비해 너무 복잡하다면 청킹해라. 문제를 청킹한다는 것은 큰 문제를 작은 문제로 나누는 것이다. 모듈화라고도 한다. 모듈을 나눴다면 문제들을 더욱 구체화해라.

12 코드를 망가뜨려라(a.k.a 코드 브레이킹)

학습자에서 좋은 개발자가 되기 위한 가장 큰 장벽은 도움을 얻는 법을 배우는 것이다. 하지만 도움을 어떻게 활용할지가 개발자로서의 성장 속도를 결정한다.

프로그래밍 세계에서는 이해하지 못한 코드를 복퉅하지 말라는 격언이 있다. 만약에 문제를 해결하지만 아직 이해를 하지 못한 코드를 마주쳤다면 어떻게 해야하는가? 쪼개라.

  1. 프로그램에 코드를 복붙하기
  2. 코드가 프로그램 내에서 의도대로 동작하는 지 확인하기(즉, 문제를 해결하는 지 확인하기)
  3. 복붙한 코드를 한줄씩 지워라
  4. 한줄을 지울 때마다 프로그램이 어떻게 망가지는 지 확인하기. 프로그램이 여전히 동작하는가? 코드에서 일어난 에러가 무엇인가? 코드 한줄을 삭제했을 때 프로그램에 어떤 영향을 미치는가?
  5. 코드가 어떤 동작을 할 지 알고 있음에도 삭제해라. 내 예상대로 코드가 동작하는 지 확인하는 것도 중요한 작업이다.
  6. 주변의 코드들을 바꿔라. 다른 코드로도 동일한 기능을 하는 지 확인하기. 반드시 순서를 지켜야하는 지 확인하기

스택오버플로우에서 코드 브레이킹을 익혔다면 깃헙으로 가자. 인스타그램을 클론한다고 가정하자. 하지만 당연히도 우리는 인스타를 만들 줄 모른다. 그러면 깃헙으로 가서 “instagram”이나 “photo app”을 검색해라. 프로젝트를 다운 받아서 확인해라. 구조, 클래스, 상수 등 모두 확인해라. 코드를 바꿔봐라. 여전히 작동하는지 아니면 망가지는 지 확인해라. 어떻게 구성되는 지 이해할 때 까지 망가뜨려라.

코드브레이킹을 잘하기 시작한다면 이제는 역공학을 하자. 유명한 프로그래머가 만든 프로젝트를 찾아보자. 프로젝트의 규모가 작을수록 좋다. 애플리케이션을 설치해서 모든 기능들을 확인하자. 갖고 놀자. 그리고 바닥부터 만든 후에 비교해보자. 동일한 성능을 내는지, 혹은 놓친 부분은 없는 지 확인하자.