프로그래밍은 운동이다. 이론이 아니라 몸을 직접 움직이며 익혀야 하는 운동처럼 우선 코드로 먼저 익히고 동작원리를 나중에 습득하는게 훨씬 효과적으로 프로그래밍을 잘할 수 있는 방법이다.
이건 코드관련 책을 읽을 때도 마찬가지다. 원리를 파악하겠다고 무작정 첫 장부터 밑줄 긋고 꼼꼼하게 읽는다면 프로그래밍 실력은 전혀 늘지 않을 것이다. 프로그래밍 실력을 높이고 싶다면 일단 코드를 쳐야 한다. 백문이 불여일타다. 코드를 치고 코드가 익숙해졌다 싶으면 그때 저자의 설명을 읽어보는 게 도움이 된다.
공식문서를 읽을 때는 조금 다를 수 있는데 만약 공식문서를 통해 배운다면 이 공식문서에서 다루는 기술이 어떤 기술인지 원리적인 부분을 설명하는 파트와 퀵스타트 처럼 파트가 나뉘어 있어서 이 부분을 구분해서 읽으면 좋다. 퀵스타트로 빠르게 사용하는 방법을 익히고, 원리를 파악하는 게 도움이된다.
위에서 말한 것처럼 처음 사용하는 프레임워크라면 퀵스타트처럼 튜토리얼을 따라하면서 코드를 익히고 동작원리를 파악하는 설명파트로 넘어가면 좋다.
영어를 잘하는 것 또한 중요하다. 내가 해결하고자 하는 문제가 어려워질수록 우리말로 된 자료에 해결책이 없는 경우가 많아지고 내가 해결하고자 하는 문제를 영어로 잘 표현하고 다시 영어로 정리된 문서를 읽고 내가 해결하고자 하는 문제에 적용 가능한지 읽고 판단할 수 있는 실력이 연차가 쌓일수록 중요해진다.
개발 공부 방법
개발 공부 방법을 정리하면, 우선 일단 만들어 보는 것이다. 여기서 만들어 본다는건 코드를 친다는것만 의미하지 않는다. 데이터베이스를 설계한다면 노트와 펜을 들고 데이터베이스를 설계하거나, 다이어그램 툴을 이용해서 우선 내가 만들고 싶은 테이블을 설계해 보는 것이다. 이론, 개념을 정리하는건 데이터베이스의 설계의 문제를 해결하는 근거지 그 자체로 설계가 되지 않는다.
과학을 공부하던 사람이 엔지니어링으로 넘어왔을 때 가장 어려움을 느끼는 지점이다. 엔지니어링은 단어에서도 ing가 들어가 있듯이 행위를 의미한다는걸 내포하고 있다. 엔지니어링은 행위가 포함되어야한다. 그래서 반듯이 직접 만들어보고 손과 몸에 감각을 익혀야한다.
두 번째로는 직접 만든 내용을 이론과 함께 회고해 보는 시간을 갖는 것이다. 회고를 하며 다른 사람에게 설명할 수 있으면 더 좋다. 행위를 할 때는 의식적으로 행동할 때도 있지만 무의식적으로 행동할 때도 있기 때문에 엔지니어링이라는 행위를 할 때 내가 왜 그런 선택을 했고, 그러한 결정을 내렸는지에 대한 무의식을 의식의 형태로, 언어화하는 과정이 필요하다.
지금까지 데이터베이스 설계를 예를 들어 설명했지만 API 목록 추출, API 설계, 구현과정 등 모든 영역에서 적영되는 이야기다. 목록 추출도 어떻게 하는지 이론을 정리하는게 아니라 직접 목록을 추출해보고, 피드백하고 회고하는 과정을 통해 발전시키면서 내제화하는 과정을 거치면서 성장할 수 있다.