알고리즘, 그 때는 틀리고 지금은 맞다.
‘그 때는 틀리고 지금은 맞다.’
지극히 주관적인 이야기로 시작해보자. 난 내가 느끼기에 필요하다고 생각되지 않는 것은 잘하지 않는다. 하지만 내게 꼭 필요한다면 곧 잘한다. 예를 들면, 필요하지 않다고 생각되는 것이 있는데 그것을 해야 하는 이유가 학점이라면 하지 않는다. 그래서 내 성적표에는 D도 있고 F도 있다. 하지만 내게 필요한 건 몰두해서 한다. 그래서 내 성적표에는 A도 있고 S도 있다. 나에게 D와 F를 준 교수님이 말했다.
‘이 과목은 정말 중요해, 공부 안하면 나중에 후회한다.’
그 때 생각은 그랬다. 후회가 들 때 쯤, 다시 공부하면 되겠지. 그러다 학점 때문이 아닌 정말 그 과목에 대한 내용을 학습해야하는 순간이 왔고 시작했다. 그리고 그 때의 내 생각이 맞았다. 그 때는 너무 어렵기만 했던 것이, 지금은 어느 정도 이해가 된다. 심지어 재미도 있다. 정말 이상했다.
이 과목의 이름은 ‘알고리즘’이다.
내가 이걸 왜 해야 하지?
모든 학습에는 어떠한 것을 학습해야 겠다는 동기와 그 이유가 명확히 자리 잡아야 한다. 그래야 효과적이며 더 나아가 진정한 학습이라고 할 수 있다. 단순히 성적을 잘 받기 위해서, 다른 사람이 중요하다고 해서 공부한 것은 쉽게 잊혀진다. 실제로 자신이 학습한 내용으로 무엇을 해보지 않았기 때문이고, 학습해야 하는 ‘이유’가 없으니 그만큼 정도껏 공부했을 것이다. 하지만 이 바닥은 그리 만만치 않아서 글로 배운 지식은 쉽게 사라지고 쉽게 익숙해지지 않는다.
개발 공부를 시작하는 입장에서 가장 중요한 것은 자신이 현재 무엇을 모르는지 알아야 한다는 것이다. 이 단계까지 도달하는 것조차 힘들다. 자신이 무엇을 모르는지 알기 위해서는 자신이 학습하고자 하는 분야에 대해 겉핥기 식으로라도 한 바퀴 경험해봐야 한다.
장애물 달리기 경주를 예로 들어보자. 어떠한 장애물이 등장할지 모르는 상태에서 무조건 달리는 연습만 한다면, 그 사람의 기록은 쉽게 단축되지 않는다. 또한 쉽게 지겨워 지고, 포기하게 된다. 노력에 대한 지속적인 피드백이 있어야 계속해서 노력할 맛이 나는데, 이건 뭐 밑빠진 독에 물 붓는 격이다.
일단 첫 기록이 낮더라도 어떠한 장애물들이 존재하는지 알기 위해 한 바퀴 뛰어보고 단계별로 그 장애물들에 대한 학습을 해나가는 것이 기록을 단축시키는데 있어서 보다 빠른 길이라고 생각한다. 장애물 달리기로 비유하니 당연한 것처럼 느껴지는데, 학습에 있어서는 그렇게 하는 사람을 많이 보지 못했다.
‘나는 아직 이 부분, 저 부분이 부족하니까 이것 저것을 완벽하게 공부한 다음 시작할 거야.’
혹시라도 이렇게 생각한 다면 이 바닥을 너무 쉽게 봤다. 이 바닥은 한 분야에 대해서만 완벽하게 공부하는 것도 쉽지 않다. 내가 존경하는 교수님은 이러한 학습 방법을 ‘양파 껍질 학습법’이라고 한다.
일전에 알고리즘과 디자인 패턴 두 분야를 두고 논쟁이 벌어졌다. 나 또한 교육에 관심이 많고 늘 고민을 하고 있던 부분이여서 논쟁을 흥미롭게 보았다. 아쉽게도 몇몇 분들이 무엇을 선행해야 하는가보다는 무엇이 더 중요하다에 집중한 것 같아 아쉬웠다. 무엇하나 덜 중요한 것은 없다. 하지만 이 분야는 이미 공부할 것이 굉장히 많으며 학습해야하는 새로운 기술은 계속해서 등장한다.
갑자기 우아한 형제들 굿즈 중 때밀이 수건에 적힌 문구가 생각난다.
‘다 때가 있다.’
끝.
cf) 미디엄에는 평소에 개발을 하면서 해왔던 생각들을 정리하는 용도로 시작했다. 그리고 첫 미디엄 글로 어떤 글을 써볼까 많은 고민을 했다. 그리고 가볍게 지극히 주관적인 글을 썼다.
개인적으로 알고리즘 논란에 대해 민감한 이유 — fender
