Tuna

[Life Hack] 학습에 관한 고찰 1 : 시행착오가 없는 학습이 있을까?

tunapark 2021. 7. 23. 15:31
728x90

우선 지금 당장 일요일 아침에 컴활 1급 필기 시험을 앞두고 공부를 하지 않고 이 글을 쓰고 있는다는 게 어떻게 보면 웃기다.
하지만 계절학기 C언어 시험과, 컴활 시험준비를 하면서 깨달은 바에 대해서 스스로 고찰을 한 시간을 가진 김에 글로도 남겨놔서 다음번의 중요한 시험을 잘 준비할 수 있게 해야할 것 같아 글을 쓰고 있다. 오늘은 최근에 내가 생각하고 실천한 학습에 대한 이야기를 해볼까한다.


“바로 그 에러가 당신을 유능한 개발자로 만들어줄 녀석이야”


이번에 프로그래밍 공부를 하면서 가지게 된 학습과 관련된 태도가 있는데, 그것은 바로 “틀리는 것이 나쁜 게 아니다” 였다. 열혈 C언어 책의 저자 윤성우님은 “바로 그 에러가 당신을 유능한 개발자로 만들어줄 녀석이야” 라고 말한다. 책을 읽으며 약간 충격을 받은 부분이기도 하고, 굉장히 도움을 받은 문장이기도 하다. 그 덕에 나는 처음으로 C프로그래밍이라는 과목을 공부하면서 “어려워도 포기하지 않는다.”, “틀리는 것이 나쁜 게 아니다.”라는 마음가짐을 가지고 공부할 수 있었다. 물론 “A 학점을 받는다.”라는 목표도 세워뒀었지만, 이 목표만 세웠다면 나는 풀리지 않는 문제들 앞에 좌절해서 최종적으로 A 학점을 받을 수 없었을 것이다.

나에겐 시행착오에 대한 부정적인 생각을 깨는 것부터가 더 나은 학습성취를 이루는 첫번째 단계였다.


대학생이 되기 전까지는 나는 실패를 통해서 학습한 경험이 적었다. (사실 ‘실패’라는 워딩이 실패라는 경험을 부정적으로 이미 만들고 있다고 생각해서 실패라기보다는 ‘시행착오’라는 워딩이 더 좋을 것 같다.) 시행착오를 겪지 않고 원하는 것을 바로 쟁취했거나, 시행착오를 겪기 전에 원하던 것을 포기한 경우가 많았다. 무의식중에 내가 시행착오에 대한 불안감이나 부정적인 태도가 있었거나, 시행착오 없이 원하는 것을 쟁취할 수 있었던 이유에 대한 성찰 없이 그냥 얻어진 것에 대해서 너무 당연하게 생각해와서 그랬지 않았을까..

시행착오는 “왜 이건 되고, 왜 이건 안 되는지”에 대한 고찰을 하게 해준다.


이번 C언어 학습을 통해서 나는 결과 자체가 의미있기도 하지만, “왜” 그런 결과를 받았는지에 대한 성찰이 필요하다는 것을 깨달았다. 그런데 이게 중요하다는 것을 이전엔 왜 몰랐을까? 깊게 생각하지 않고 바로 답을 말하자면, 약간의 타고난 지적 능력과 약간의 부족한 나 자신에 대한 믿음 때문이었던 것 같다. 중고등학교때 시험을 회상해보면 어느정도 지적 능력이 있었기에 적은 노력으로도 원하는 것을 이룰 수 있었고, 그 덕에 별다른 시행착오를 겪지 않아서 학습에 대한 피드백을 별다르게 하지 않았던 것 같다. 그냥 성적이 잘 나오면 뿌듯하고, 성적이 못 나오면 기분이 안 좋았다. 저번 분기의 성적과 이번 분기의 성적을 비교하거나, 저번 분기의 컨디션과 이번 분기의 컨디션을 비교하거나 시험 난도를 비교하거나 등의 분석작업을 하지 않고 그냥 최선을 다해서 시험을 치고 결과에 대해서도 별 생각이 없었던 것 같다.

고등학교 때는 정말 신기하게도 (지금 생각하면 참 믿기지가 않는데), 나가게 된 전국대회 공모전마다 다 통과가 되고, 2번은 1등 장관상을 받고 1번은 장려상을 받았고, 교내 상 역시도 나름 결과가 좋았던 것 같다. 뭐 누군가에겐 이게 자랑처럼 들릴 수도 있겠지만, 나는 이런 시절 때문에 대학에 와서 너무 고생을 했기에 그닥 그 시절을 좋게 회상하진 않는다. 한번이라도 고꾸라졌다면, 어쩔 땐 되었고, 어쩔 땐 안 되는 경험을 통해서 “내가 왜 잘 될 수 있었는지”에 대한 분석을 했을텐데. 그럴 기회를 못 가졌던 것 같다. 그와 동시에 어떤 부분에서 부진한 내 자신이 보인다면 그것을 피드백을 통해서 개선할 방안을 생각하지 않고 “나는 원래 이건 못해”라고 생각을 했기 때문에 더 이상 파고들지 않았던 것 같다.

변명 좀 하자면, 뭘 아는지 모르는지를 아는 게 시험 성적보다 중요하다고 말해준 어른도 선생님도 없었다. 참나. 이것만 알았어도^^


단적으로 더 예를 들자면, 고등학교 때 생각해보면 선생님한테 왜 이 문제가 틀렸는지를 굉장히 꼬치꼬치 캐묻거나 잘 물어보는 친구들이 있지 않았나? 나는 그런 친구들을 보며 왜 그렇게까지 하냐. 이미 지나간 시험인데. 최선을 다했으면 그만 진인사대천명이니라. 이런 마인드로 자라왔다. 지금 생각해보면 그러한 학습 태도들이 성적에 대한 스트레스는 없게 했을 수도 있으나, 나 자신의 성장을 방해하는 제 1요인이라는 생각이 든다.

열심히 해서 90점을 받았지만 왜 90점을 받았는지에 대해 피드백이 없는 친구랑, 열심히 해서 80점을 받았지만 왜 자신이 80점을 받았는지를 꼼꼼하게 파고들어 피드백을 하는 친구가 있다고 해보자. 이 둘의 머릿속에 남는 것, 학습된 것은 다르다는 생각이 들지 않는가? 알고보니 90점을 받은 친구는 10점이나 찍어서 맞춰서 원래 80점 받을 학습을 했지만 90점을 받은 것이고, 80점을 받은 친구는 90점의 학습 능력을 갖췄지만 시험에 있어서 어떤 실수를 했거나 시간관리를 못해서 였을 수도 있다. 학창 시절 나는 그런 생각까진 하지 못했다.

하지만 이번 C언어를 공부하면서는 시행착오 자체가 학습의 방법이었다. ”안 되는 코드”가 학습의 재료가 되어주었다.


하지만 이번 C언어를 공부하면서는 시행착오 자체가 학습의 방법이었다. 처음 실행을 했을 때는 아무것도 나오지 않아 너무 답답하더라도 내가 코딩을 못해서 그런 것이라고 생각하지 않았다. 애초에 목표 자체를 “포기하지 않고 계속 될때까지 해보기” 이런 걸로 세우고 들어갔기 때문에 처음에 안 되더라도 안 된다는 그 사실에 절망하지 않고, 왜 된다고 생각했는데 안 되지?에 대한 해답을 찾으려 노력했다. 그덕에 코드를 한 줄 한 줄 위치를 바꿔가면서 아주 조금씩 논리 에러의 형태가 변하는 과정을 지켜볼 수 있었다. 처음엔 무한루프였지만, for 문 위치를 바꿔보니 출력이 되기는 하게 되고, 또 그 안에 변수를 초기화를 해주니, 여러번 출력되던 것이 제대로 출력이 되는 방식으로, 정확히 어떤 지역이 어떻게 문제인지를 파악해나갈 수 있었다. 당연히 개념을 보자마자 이해를 해버리는 완전한 이해 천재라면 시행착오 없이 가능하겠지만, 나는 그런 사람이 아니었기에 개념 자체보다 실습을 통해서 많은 것을 학습할 수 있었다.
또 다른 학습 방법 예를 들자면, 비슷한 두 가지 개념 A,B가 있다. 그걸 공부할 때 나는 B에 관한 문제를 A의 방식으로도 풀어보면서 잘 되지 않는다면 어떤 점이 달라서 잘 되지 않았는지를 파악하는 등, 왜 안되는지에 대해 생각하면서 그 개념에 대해 깊게 알아가는 것이 공부 방식을 택했다.


당장에 눈에 보이는 도약이 없음에도,
현재 열심히 하는 모습을 근거로 미래의 나를 상상하여 학습을 포기하지 않는 태도를 갖는 것.

시행착오를 겪으면 성장할 것이라는 건 누구나 한번씩은 들었기에 식상할지도 모른다. 하지만 “시행착오를 긍정적으로 느끼는 것”을 체화하는 것은 또 다른 말이라고 생각한다. 그것을 체화하는데 도움이 되었던 글을 소개하면서 글을 마무리하려한다.

‘학습곡선’이라는 개념이 있다. 여러번 이 개념을 들었지만 내가 좋아하는 브런치 작가님의 글 (“저는 학습 굼벵이가 아니었습니다만 - 자습과 성장곡선”) 에서 한번 더 이 학습곡선에 관한 개념을 보게 되었었다. 이 글에서 학습 심리에 대해서 이야기하시면서 + 측면강화와 - 측면 약화를 말씀하신 것이 가장 도움이 되고 흥미로웠다. + 측면 강화는 “어떻게 즐겁게 배우는가?, 나는 어떨 때 즐거운가?”에 대한 이야기로 3가지를 말씀하셨는데, 궁금하면 저 글을 꼭 읽어보길 ! (다 요약하면 저작권에 문제가 있을 것 같다..)

- 측면 약화는 특히 오늘 글의 주제인 ‘시행착오’와 관련된 내용이라 요약을 조금 하자면 다음과 같다.
1. 고통이나 불편에 대해서 부정적으로 생각할 필요가 없다.
운동이 힘든데 몸에 좋은 것처럼, 지금 느껴지는 어려움이나 불편함을 성장에 동반되는 당연한 성장통으로 인식한다. 이 성장통을 내가 이겨내면 얻게 되는 긍정적인 능력치와 연결해서 생각하면서 오히려 긍정적으로 생각하려고 한다. (앞에서 언급한 윤성우님의 “이 에러가 너를 멋진 개발자로 만들어줄 그놈이야”와 일맥상통하는 부분이지 않는가?)

2. 실패와 나를 분리해서 생각한다.
“나”의 실패가 아니라 나의 판단이나 가설의 실패다. 배우는 과정에서 들어간 실패 비용은 “투자”라고 생각해라. 특히, 아무것도 하지 않는 것이 최악이다. 왜냐면 아무리 뭘 곱해도 0일 것이기에 어떻게든 뭘 한 것이 낫다고 생각하라라고 하신 부분이 공감이 갔다.

3. 학습의 가속 곡선이 조만간 온다는 것을 믿어라.
처음엔 속도가 느린 게 당연하다. 하루에 투자하는 시간이 꾸준히 쌓이면 가속이 붙는다. 이 관성이 생기면 새로 생긴 지식들이 서로 충돌을 일으키며 새로운 아이디어를 분출해내고, 그러면 다시 나만의 가설을 만들 수 있고 고통이 줄어들고 즐거움은 늘어나는 선순환 사이클에 들어가게 되는 때가 있다. 그러니 반드시 처음엔 힘들더라도 언젠간 가속 구간에 진입할 수 있음을 믿고 견뎌야 한다.



처음엔 나도 코딩 과목에 대한 시험을 잘 치룰 수 있을까, 내가 원하는 목표를 이룰 수 있을까에 대한 확신이 없었다. 그러나, 그런 의심보다 긍정적인 믿음을 유지하려고 노력했다. 특히 학습은, 당장에 내가 얼마나 성장했는지 알기란 어렵다. 하지만 꾸준히 저런 마음가짐을 가지고 하다보니, 시험 문제를 예측할 수 있을정도의 수준이 되었고, 목표를 이룰 수 있었다.
프로그래밍에 대한 목표가 “A학점 받기”도 있었지만, “포기하지 않고 될 때까지 하는 사람”, “남들이 어렵다고 하는 것을 해내는 사람”, “프로그래밍에 재미와 자신감이 있는 사람”으로 목표를 세우고 공부를 했기에 가능했던 것 같기도 하다. 지금 당장 내가 A학점을 받기엔 부족하다는 의심이 하루하루 들었지만, 어제보다 오늘 더 포기하지 않았다면 목표에 가까워졌고, 어제보다 오늘 더 프로그래밍에 재미를 느꼈다면 잘 하고 있다는 생각이 들었기 때문이다. 학습과 학습에 관련된 목표는 당장 오늘 하루의 달성률을 측정하기가 어렵다는 점 때문에 포기하기가 쉽지만, 언젠간 가속곡선이 올 것을 믿으면서 하루하루 꾸준히 조금씩 목표를 이루고 있다는 느낌을 갖는 게 중요한 것 같다.


학습뿐만 아니라 시험을 치는 것 자체에 대해서도 정말 할 말이 많은데, (시험이랑 학습은 또 살짝 다른 결이 있는 것 같다) 따로 이야기를 적는 게 좋을 것 같아서 여기서 학습에 관한 글은 마무리해야겠다. 그리고 내 글을 읽고 반박이나 추가하고 싶은 의견이나 피드백이 있다면 언제든지 댓글에 적어주세요 ..