Book_누워서읽는알고리즘
시간을 담는 공간
나는 알고리즘을 대단히 어렵게만 생각했었다.
그리고, 비전공자이기에 나는 아직 이른감이있다고 생각해서 안하려고했지만,
비전공자이기 때문에 오히려 더 공부를해야된다는 정보를 얻고,
뇌에 프로그래머의구조화를위하여 공부를 하여야 된다고 생각했고,
이에 나의 인생에 첫 알고리즘관련 도서로써 임백준 저서의 ‘누워서 읽는
알고리즘’을 골랐다.
우선 5pg에 나오는 말 부터가 인상적이였다.
대학은 학생들에게 코딩 능력이 아니라,
문제를 해결할 수 있는 능력, 즉 알고리즘 능력을 길러주는 방법을 고민해야
된다.
라는 말과, 요즘처럼 기술 변화의 속도가 빠른 시대에는
특정 기술, 플랫폼, 언어, API에 종속되는 코딩 기술의 기치가 전보다 크지
않기때문에
오히려 낡은 기술을 버리고 새로운 기술을 재빨리 익히는 능력이 중요하다.
예를들어 전투기의 생명이 빠르게 방향을 전환하는 기동성(maneuverability)에 달려
있는 것처럼, 프로그래머의 생명도 방향전환 능력에 달려있다고 할 수 있다.
알고리즘은 그러한 방향 전환을 가능하게 만들어주는 일종의 “메타-능력”이다.
수학의 천재 가우스 (생략..) 62pg
이런 알고리즘은 실제 상황에서 아무나 쉽게 떠올릴 수 없다.
그렇지만 이렇게 절묘한 알고리즘을 떠올리는 능력이 순간적인 기지와
타고난 순발력으로만 이루어지는 것이 아니다.
바로 주어진 문제의 본질을 깊이 이해하는 관찰력과 고정관념에 얽매이지 않는
발랄한 상상력을 갖추고 있을 때 비로소 가능한 것이다.
그런데 이러한 관찰력과 상상력 역시 하루 아침에 얻을 수 있는 능력이 아니다.
사물을 깊이 관찰하는 능력과 자유분방한 상상력을 발휘하는 능력은 평소에
꾸준히 훈련해야만 얻을 수 있다.
또한 꼭 컴퓨터 프로그래밍이나 수학적 논리에 대한 훈련만이 아니라 다른
분야를 다양하게 포함할 때 더 큰 힘을 발휘하게 된다.
그래서 진짜 훌륭한 프로그래머는 방에 앉아서 컴퓨터 화면만 뚫어지게
바라보는 사람이 아니다. 좋은 프로그래머는 소설도 읽고, 영화도 보고, 농구도
하고, 기타도 치고, 정치 토론에도 참여하고, 연애도 하고, 술도 마시는
열정적인 사람이다.
진정한 상상력은 삶의 속살을 이해할 때 비로소 풍부해지기 떄문이다.
실력이 부족하면?
66pg
분업이 불가피하기때문에 실전 프로젝트에서는 개개인의 개인기 못지않게 팀워크가
중요하다. 아무리 뛰어난 실력을 갖추고 있는 프로그래머라도 해도 다른 동료들을
무시하면서 혼자 독주하는 사람은 전체 프로젝트에 득이 되기보다는 실이 될 확률이
더 높다.
반면에 실력이 좀 부족한 듯한 프로그래머라도 해도 남들보다 뛰어난 점이 하나쯤은
반드시
존재하기 마련이므로 성실한 자세만 갖추고 있다면 프로젝트에서 꼭 필요한 빛나는
존재가 될 수 있다.
(필자가 지향하는 것은 바로 그런 사람이 되는것이라한다.)
축구 선수들이 그런 것처럼 프로그래머들도 팀 내부에서 자기 자신만의 독특한
포지션을 갖는 것이다. 그래서 훌륭한 프로그래머는 스스로의 능력에 취해서
팀워크를 해치는 사람이 아니라 자신의 능력을 깊게 고찰해서 부족한 점은 꾸준히
보강하면서도 강점은 신중하게 살려가는 사람이다. 그런사람은 성실하기 때문에
다른 사람에 대한 존경심을 잃는 법이 없다.
프로젝트에서 정말 필요한 사람은 바로 그런사람이다.
한편 사람에 대한 예의를 잃은 프로그래머는 아무리 실력이 뛰어나다고 해도 도움이
되지 않는다.
그렇기 때문에 이런 종류의 문제를 얼마나 ‘빨리’ 푸는가 하는 것은 사실 크게
중요한게 아니다. 앞에서는 문제를 빨리 풀수록 좋은 것처럼 말했지만,
실제로 중요한 것은 문제를 푸는 속도가 아니라 끝까지 포기하지않고 문제를
해결하려고하는 ‘프로’근성이다.
그런 정신이 투철한 사람은 일단 답을 구해놓고도 쉽게 안심하지 않는다.
자기가 작성한 알고리즘이 과연 최선인지 여부를 끝까지 신중하게 고민하기
때문이다.
‘재능’은 각자 타고나는 일이므로 어쩔 수 없지만, 이러한 ‘프로’정신은 본인의
노력에 달려 있으므로 후천적이다.
‘재능과’ ‘노력’ 중에서 더 중요한 것은 ‘재능’이 아니라 ‘노력’이라는 사실은 귀에
못이 박이도록 들어왔을것이다..
그렇다.
나는 이 책을 읽으며, 진짜 프로그래머는 코딩을 하는 사람이 아닌
‘문제를 해결하는 사람’이라는 말이 더 많이 와닿았다.
이 책에는 정말 많은 알고리즘 문제들이 나오고있는데, 학원 과정이 끝나면,
한개씩 깊이있게 풀어봐야겠다. 화이팅!