다시 시작하는 프로그래밍(Learning to programming, Steven Foote)

처음부터 제대로 배웠다면!
다시하면 잘 할 수 있을 텐데…

이런 생각을 한 적이 있는가?

그렇다면 안심하시라. 아주 평범하고 정상적인 사람이라는 의미니까. 나를 포함한 수많은 사람들이 무언가를 조금 배우고 나서 늘 떠올리는 말일 것이다. 평범한 우리는 처음부터 제대로 할 수 없기 때문이다. 아니라면 당신은 천재이다. (우리는 숨쉬기에 천재적인 능력을 가지고 있다!) 천재가 아닌 우리들은 늘 후회하게 마련이고, 과거의 내가 저지른 삽질들을 되돌아보면서 다음 성장점을 향해 조금씩 더듬거리며 앞으로 나아간다. 따라서 제대로 후회하는 것은 매우 중요하다. 애자일에서는 이를 회고라고 부르는데, 애자일 프로세스를 적용할 때 가장 먼저 하도록 추천한다.

이 책은 이미 프로그래머가 된 저자가 제대로 후회하는 내용이다. 그 후회의 지점들을 되짚어 보면서 처음 프로그래밍을 하는 독자들은 시행착오를 줄이고, 조금은 쉽게 견문을 넓힐 수 있다.

저자인 스티븐 푸트(Steven Foote)는 링크드인(Linkedin)의 웹 개발자이다. 전공은 회계학(학사, 석사)으로 프로그래밍과 거리가 먼 사람이었다. 그러나 석사 과정 중 잘못된(?) 선택을 함으로써 프로그래밍의 재미에 푹빠져 웹 개발자로 전업했다. 그는 다음과 같이 이 책을 쓴 이유를 밝히고 있다.

나의 프로그래밍 입문 경험은 사실 상당히 잘못된 부분이 많았다. 그리고 스스로 공부했던 많은 사람도 비슷한 경험을 한다는 것을 깨달았다. (…) 프로그래밍을 배우는 것은 너무 어렵다. 게다가 경험 많은 개발자는 아는게 너무 많아서 질문하기도 부담스럽다. (…) 필자가 개발을 시작했을 때 이런 책이 있었으면 하는 바람이 있었기 때문에 이 책을 집필했다.

저자는 펄(Perl) 언어로 프로그래밍을 시작했을 때 MS워드 프로그램에 “Hello world.”를 적으며 좌절했던 이야기를 소개하며 도입부를 시작한다. 그리고 간단한 구글 크롬 확장 프로그램을 만드는 것에서 시작하여, 점차 범위를 넓혀가며 프로그래머라면 누구나 한 번쯤은 들어봤을 주제들이지만, 혼자 독학했다면 존재조차 몰랐을 것 같은 주제들을 짚어가며 예제 프로그램을 완성해 간다. 편집기와 언어의 선택부터, 빌드툴, 데이터 타입과 구조, 테스팅과 디버깅 등을 친절하고 세세하게 설명해주면서 초보자들이 걸음마를 포기 하지 않도록 잘 도와주고 있다.

책을 읽다보니 처음 프로그래밍을 했던 기억이 떠올랐다. 초등학교 시절 아버지께서 어느날 밤 갑자기 들고 오신 286AT에 GW-BASIC 편집기를 열고, 컴퓨터 잡지에 나온 볼링 게임 코드를 쳐본 것이 시작이었다. 한땀 한땀 줄 수에 맞춰 그대로 옮겨적고 실행해 보면서 몇 번씩 좌절했다. 분명 그대로 쳤는데 안되니까. 디버깅이라는 개념조차 없었다. 그리고 나서 난 프로그래밍을 접었고, 문과생이 되었다가 사범대에서 공부를 하고 갑자기 프로그래머가 되었다. (회사는 위대하다.) 같이 공부할 친구나, 좋은 책을 찾을 수 있었다면 더 일찍 이길을 택하지 않았을까.

재작년에 처음으로 웹 프로젝트를 하게 되었는데, 그 때 이 책을 만났었다면 얼마나 좋았을까 하는 생각이 든다. 수없이 쏟아지는 무수히 많은 용어들이 목성에 딸린 수많은 위성처럼 멀고 아득하게 느껴지던 시절(지금도 마찬가지긴 하지만)에는 무엇을 해야할지 몰라 매일 매일 시간만 보냈다. 옆에서 이렇게 친절하게 다음 스텝을 알려주는 사람이나, 책이 있었다면 조금은 시간을 아낄 수 있었을 것이다.

이 책은 시작하는 사람들을 위한 친구같은 책이다. 해드퍼스트와 유사한 접근 방법 같지만, 프로젝트 하나를 완성할 수 있는 주제를 다루기 때문에 조금 더 내용이 방대하고 실무적인 부분이 강화되어 있다. 책에 대한 자세한 내용은 생략하고 목차로 대신하겠다. 다만 4장에서 CLI에 익숙하지 않은 초보자라면 조금은 주변 사람들의 도움이 필요할 것 같다.

01장 “Hello, World!” 프로그래밍 시작하기 
02장 소프트웨어는 어떻게 동작하는가?
03장 컴퓨터와 친해지기
04장 빌드 툴
05장 데이터 — 데이터 타입, 데이터 구조, 데이터 베이스
06장 정규 표현식
07장 if, for, while 그리고 When
08장 함수와 메서드
09장 프로그래밍 표준
10장 문서화
11장 계획
12장 테스트와 디버깅
13장 물고기 잡는 법 배우기 : 프로그래밍 평생 교육
14장 스킬 기르기
15장 고급 주제 — 버전관리, 객체지향, 디자인 패턴
더 읽어보면 좋은 글들
초보에서 고급까지, 웹으로 프로그래밍 배우자 http://www.bloter.net/archives/176582
프로그래밍 언어 배우기의 달인 http://agile.egloos.com/5664879
가장 좋은 학습법 http://blog.weirdx.io/가장-좋은-학습법/
이상한모임 2015 연말 Advent Calendar 에 참여한 글입니다.
http://1225.weirdx.io
이상한사람들의 이상한모임으로 오세요.
http://weirdx.io
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.