IT Life

코딩, 인터넷 보다는 책!

2015. 9. 10. 09:30


지난 번에는 어려운 문제에 대해 접근하는 방법에 대해 알아보았습니다. 문제해결도 자연스러워질 때까지 여러 번 반복하는 것이 중요하듯이, 코딩 공부도 마찬가지입니다. 제 경험상 기술 서적들은 10번 정도 정독 했을 때 이해도 잘되고, 오래도록 잊지 않는 것 같습니다. 이번에는 책을 통해 배울 수 있는 프로그래밍 지식과 좋은 프로그래밍 책 몇 권을 추천 드리겠습니다.


정확하고 효율적인 알고리즘을 설계하기 위해 필요한 것은 「기법(techniques)」과 「경험(resources)」입니다. 컴퓨터공학 교수인 스티븐 스키에나(Steven S. Skiena)는 『The Algorithm Design Manual』라는 책에서 기법과 경험의 중요성을 언급했죠. 


여기서 경험은 현업에서 해결했던 프로그래밍 문제들로, 풍부하고 좋은 사례들을 말합니다. 그렇기 때문에 경험은 계속해서 많은 문제를 접하려고 노력하는 것이 중요합니다. 물론 직업이 프로그래머라면 계속해서 마주하게 될 것입니다. 하지만 경험만으로는 부족합니다. 매번 프로그래밍을 하더라도 기법이 없다면 상황 별 대응을 제대로 못할 수도 있습니다. 


그렇다면 기법이란 무엇일까요? 기법은 효과적으로 생각하는 방법이라고 할 수 있습니다. 지난번에 배웠던 온수와 냉수로 욕조를 채우는 문제(http://blog.lgcns.com/872)에서 분수 대신 계산하기 편리한 자연수로 연산하는 방식도 기법 중 하나라고 할 수 있습니다. 

그렇다면 기법은 어디서 얻을 수 있을까요?


저는 책을 통해 기법을 가장 잘 배울 수 있다고 생각합니다. 몇몇 분들은 얘기합니다. 책보다는 실제 프로젝트를 통해 배울 수 있는 것이 더 크고, 또한 인터넷에서 더 많은 정보를 얻을 수 있다고 말이죠. 하지만 프로젝트나 인터넷으로 배울 수 있는 것은 책과는 다르다고 생각합니다. 앞서 얘기했듯이 프로젝트에서 가장 많이 배우는 것은 경험입니다. 다양한 문제, 다양한 경우를 접하는 것이죠. 이런 경우에는 어떻게 대처해야 하는지, 이 방법이 좋을지 저 방법이 좋을지를 판단할 수 있게 되죠. 이런 감각은 프로젝트에서 온전히 배우기 쉽지 않습니다. 납기도 빠듯하고, 학교에서 접했던 문제들보다 훨씬 다루기 까다롭고 맞춰야 할 요구사항들도 어렵기 때문입니다.


책은 한 전문가의 견해와 노하우를 가장 잘 정리하여 보여줍니다. 책에서 주로 얻을 수 있는 것들은 바로 기법입니다. 지면에 한계가 있기 때문에 풍부한 사례를 전달하지는 못하지만 이런 기법, 이런 알고리즘들이 있고 어떻게 구현 한다고 설명하죠. 또한 특정 사례에 적용할 수 있는 기술과 기법을 제시하기도 합니다. 이런 기법들을 다양한 사례에 적용해보고 시행 착오도 거칠 때 프로그래밍 실력이 늘어납니다. 물론 인터넷을 통해서도 좋은 글들을 접할 수도 있습니다. 하지만 검증되지 않은 자료가 더러 있고, 디지털 기기로 많은 글을 읽기에는 집중도가 떨어지는 단점이 있습니다.


이런 이유들로 깊이 있고 훌륭한 기법을 배우는 데는 책이 가장 좋습니다. 물론 상황과 실력에 따라 좋은 책은 달라질 수 있습니다. 이번에는 기본적인 프로그래밍 언어(C, Java 등)에 어느 정도 숙달되어 새로운 언어가 나와도 문법을 독학 할 수 있는 실력을 지닌 분들에게 프로그래밍 관련 책을 추천 드릴까 합니다. 또한 개인적으로 신기하고 재미있게 읽었던 IT 관련 책도 몇 권 소개 하겠습니다.


먼저, 좋은 코드를 작성하는데 도움이 되는 책들을 먼저 추천 드리겠습니다.


 

수학과 알고리즘은 문제를 해결하기 위해 사용됩니다. 패턴과 규칙을 발견하고, 계산식으로 도출해내면 문제의 요구조건이 변경되어도 편리하게 해결할 수 있습니다.



위에서 추천 드린 책 외에도 좋은 책들이 많습니다. 이런 좋은 책들을 읽을 수록 책을 고르는 눈도 달라질 것입니다. 많은 책을 읽으시고 좋은 「기법」과 「경험」을 얻으시기 바랍니다.

LG CNS 페이스북 바로가기 : http://on.fb.me/1KbTbDr

글 ㅣ LG CNS 의료솔루션2팀 


<’초보 프로그래머를 위한 코딩 꿀팁’ 연재 현황 및 향후 계획>


● 사람이 읽기 쉬운 코드 :  http://blog.lgcns.com/841

● 어려운 코딩, 생각하고 관찰하고 쪼개라! : http://blog.lgcns.com/872

● 인터넷 보다 책! : http://blog.lgcns.com/899

● 안드로이드 제대로 알고 코딩 하기 : http://blog.lgcns.com/931

● 웹 맨땅에 헤딩하지 않기 : http://blog.lgcns.com/959








Posted by IT로 만드는 새로운 미래를 열어갑니다 LG CNS

댓글을 달아 주세요

위로