멀고 먼 수련의 길
연주회를 앞둔 피아니스트는 더욱 더 완벽한 연주를 위해 같은 곡을 수없이 다시 연습하고 기술을 연마합니다. 축구 선수는 날마다 체육관에서 체력을 단련하고 운동장을 달리고 과거 경기 영상을 돌려보면서 자신의 장단점을 분석합니다.
소프트웨어 개발자들도 이와 비슷한 방식으로 자신의 코딩 능력을 키웁니다. 거듭해서 코드를 짜고 좀 더 간단하게 만들기 위해 고민하고 다른 접근법은 없을까 생각해 보는 거죠. 고수가 되는 길은 이리도 멀고 험합니다~!
스스로 생각하는 프로그래밍
이 책은 초급 프로그래머에게 문제를 코드로 만드는 방법을 알려주고 문제를 제시합니다.
많은 초급 프로그래머가 비슷비슷한 책으로 프로그래밍을 배우기 시작합니다. 약간의 코드를 직접 타이핑해보면서 따라하는 방식이죠. 물론 좋은 학습법입니다. 하지만 이런 방식으로만 공부하면 실제 현장에서 맞닥뜨리는, 해결 방법이 나와 있지 않은 문제를 만나면 당황하게 됩니다. 『코딩 트레이닝: 새로운 언어를 배울 때 다시 풀어보는 57개 연습문제』는 실전 경험이 부족한 초보자의 문제 해결 능력을 키워줍니다. 저자인 브라이언 호건은 대학 강의에서 이 문제들을 활용하고 있다고 합니다. 스스로 생각해서 문제 해결 방법을 찾아가도록 훈련시켜주기 때문에 새로운 문제를 만났을 때 그 문제에 맞설 자신감을 심어줄 것입니다.
새로운 언어를 배울 때마다 다시 풀어보자
숙련된 프로그래머라면 이 책을 더 잘 활용할 수 있습니다.
하루가 다르게 기술이 발전하고 그와 함께 새로운 언어가 쏟아져 나오는 지금의 개발환경에서 새로운 언어들을 익히는 것은 선택이 아니라 필수가 되었습니다. 그뿐 아니라 새로운 언어를 익히면 문제에 접근하는 새로운 시각을 배울 수 있고 사고의 지평을 넓힐 수 있기 때문에 프로그래머에게 꼭 필요한 공부법이라고 할 수 있죠. 저자는 숙련된 프로그래머들이 새로운 언어를 공부할 때 이 책의 문제를 거듭해서 다시 풀어보기를 권하고 있습니다. 저자 자신도 Go와 Elixir를 공부할 때 이 책의 프로그램을 작성해보았다고 합니다. 또 자신이 이미 잘 안다고 생각한 자바스크립트와 루비로 이 책의 연습문제를 풀어보니 지금까지 제대로 이해하지 못한 부분이 어디인지 발견할 수 있었다고 하네요.
매년 새로운 언어를 최소 하나는 배워라.
다른 언어는 동일한 문제를 다르게 푼다. 몇 개의 서로 다른 접근법을 알면 사고를 확장하고 판에 박힌 사고에 갇히는 걸 예방하는 데에 도움이 된다.
– 『실용주의 프로그래머』 중에서
앞으로 프로그래머는 어느 하나의 언어에 안주할 수 없다. 패러다임을 달리 하는 여러 언어를 자유롭게 구사하지 않으면 살아남을 수 없는 폴리글랏 프로그래밍의 시대가 되었기 때문이다. 자신의 포트폴리오를 어떤 언어로 구성하는지는 각자의 몫이다. 하지만 앞으로는 프로그래머가 어떤 언어에 대해서 얼마나 많이 알고 있는가 하는 것이 아니라 어떤 언어를 얼마나 빠르게 학습할 수 있는가 하는 것이 더 중요하다는 점을 기억하기 바란다.
– 『임백준의 대살개문』 중에서
아는 만큼 보이는 문제! 초급자도 숙련된 프로그래머도 도전해보자!
이 책의 연습문제는 프로그램 작성 시 따라야 하는 몇 가지 제약 조건과 프로그램을 작성한 다음 추가로 진행할 수 있는 도전 과제를 포함하고 있습니다. 초보 프로그래머라면 우선 도전 과제는 건너뛰고 진행해도 되고, “이정도의 문제는 너무 쉽지~”라고 생각하는, 경험이 많은 프로그래머라면 도전 과제와 제약 조건들을 적용해서 문제를 풀어보시면 됩니다. 어떤 언어를 선택하느냐에 따라 연습문제 중 일부는 굉장히 어려울 수도 있으니 너무 만만하게 보지는 마세요!
이 책에서 만들어보는 연습문제에는 다음과 같은 것들이 있습니다.
- 단어 빈도 탐색
- 카드 대금 상환 기간 계산
- 웹 서비스를 이용한 날씨 안내
- Todo List
- 혈중 알코올 농도 계산
- 천장에 바를 페인트 양 계산
연습, 연습, 또 연습
반복된 훈련은 코딩 기술을 높이는 가장 효율적인 방법입니다. 실생활의 문제 해결을 위해 어떤 언어로 어떻게 코딩할 것인가를 고민하고, 여러 프로그래밍 언어로 같은 문제를 거듭 풀어보면 지금까지의 생각의 틀에서 벗어나 더 넓게, 더 멀리 볼 수 있는 고수 프로그래머가 될 수 있을 거예요!
또 한 가지! 주변 동료나 친구들과 서로 문제 풀이를 공유해 보세요. 프로그래밍의 가장 큰 매력은 사람마다 문제 해결 방법이 다르고 개발자마다 각자의 스타일이 있다는 점이니까요!
이 책은 원래 문제를 스스로 풀어보도록 하기 위해 해답을 제공하지 않지만 한국어판에서는 2장과 3장의 문제풀이를 일부 제공하고 있습니다.
인사이트 깃허브에서 문제 풀이를 살펴보실 수 있습니다.
『코딩 트레이닝: 새로운 언어를 배울 때 다시 풀어보는 57개 연습문제』는 다음 서점에서 구입하실 수 있습니다.