*문제풀이 연습

2010. 8. 30. 11:06 from Tip
반응형

수학을 공부해 본 경험이 있는 사람이라면,
어려운 문제를 자신의 힘으로 풀었을 때에 부쩍 실력이 늘어난 것을 느낀 적이 있을 것이다.
쉽다고 느껴지는 문제를 수 백개씩 풀어도 실력이 늘지 않지만,
아주 난해한 문제를 몇 개 풀고 나면 확실하게 실력이 늘어난다.
이런 현상은 수학에만 나타나는 것이 아니다.
거의 모든 기술 분야에서 나타난다.
 
프로그래밍도 마찬가지이다.
자신의 실력으로 능히 짤 수 있는 프로그램,
이전에 짜 본 경험이 있는 알고리즘으로 된 프로그램은 작성하기 쉽다.
이런 프로그램을 수 백개 작성해 보아도 실력이 늘지 않는다.
자신의 실력으로 풀기 어려운 문제를 힘을 다해 풀어 보았을 때, 실력이 부쩍 부쩍 늘어난 것을 느낄 수 있다.
 
후배 프로그래머들은 나에게 어떻게 하면 실력을 늘릴 수 있느냐고 묻고는 한다.
해답은 여러 가지이다.
전문 지식을 늘릴 것, 전문 분야 외의 교양도 쌓아야 한다는 것,
영어나 수학의 기초를 지닐 것 등도 그런 해답 중의 하나이다.
 
그러나 가장 핵심적이고 확실한 효과를 볼 수 있는 방법은 '난해한 프로그램을 혼자의 힘으로 작성하는 것'이다.
그렇다면 무엇이 난해한 프로그램인가?
'난해하다'는 지극히 추상적인 단어로는 정확히 어떤 대상을 골라낼 수가 없다.
그리고 이 어휘는 매우 주관적인 것이다.
 
어떤 프로그램이 한 사람에게는 난해할 수 있어도, 모든 사람에게 난해한 것은 아니다.
그러므로 난해한 프로그램은 스스로 골라야 한다.
자신의 힘에 부치는 문제를 고를 수 있는 것은 오직 자신뿐이다.
 
자신의 실력은 그 누구보다 자신이 더 잘 안다.
  '이 문제를 해결하기에는 좀 힘들 것 같은데'라든가,
  '이 문제에 대한 알고리즘이 떠오르지 않아' 라든가,
  '내가 다룰 수 없는 분야의 프로그램이야'라는 말을 할 정도의 프로그램이 바로 난해한 프로그램이고,
  이런 판단은 사람마다 다르게 나타난다.
 
일단 난해한 프로그램을 고른 후에는 혼자의 힘으로 작성하는 것이 중요하다.
누군가의 도움을 받는다면 실력이 늘지 않는다.


프로그램을 작성하는 것은 수학 문제를 푸는 것과 비슷해서 답을 알고 풀면 실력이 늘지 않는다.
수학 문제를 과외 선생과 함께 공부할 때에는 다 풀 수 있을 것 같은데,
막상 시험장에 가면 문제에 대한 해법이 전혀 떠오르지 않는다는 점을 경험했을 것이다.
프로그래밍 실력도 마찬가지다.
 
누군가의 도움을 받아서 프로그램을 작성하면,
작성할 당시에는 프로그램이 잘 만들어지지만 혼자의 힘으로 풀려하면 안 된다.
실력이 늘지 않았기 때문이다.

2010년 08월 29일 19시 10분 23초

Posted by Mr.Martin :