코딩이 뭔지 체험이나 한번 해보자

파이썬은 비교적 쉽다는 말에 속아서 (1)

by 책다람쥐

| 너무 모르면 안 될 것 같은 분야라서 |

IT 관련 책이 모여있는 서가를 서성이고 있었다. 잘 읽지 않던 분야의 책을 읽기로 마음먹은 바, 평소에는 눈길조차 주지 않던 책을 흘깃거리던 중이었다. 일단 아무 책이나 한 권 뽑아보았다. 첫 페이지부터 모르는 어휘가 속출했다. 자기개발을 위해 시작한 일이 자신의 무식함에 진저리 치며 자기혐오로 끝나는 일만은 막아야 하지 않겠나. 황급히 그 책을 덮어버린 뒤, '쉬운', '기초', '상식' 등의 단어가 포함된 책을 골랐다. 물론 그런 책이라고 해도 쉬운 것의 기준은 사람마다 다르다는 사실을 깨닫게 해줄 뿐이었지만.


두어 페이지 읽다가 덮어버린 책, 중간까지는 어찌어찌 읽어나간 책, 뭔 소린지 모르는 부분을 그냥 넘어갔기 때문에 끝까지 읽을 수 있었던 책이 쌓여갔다. 덕분에 프론트엔드front-end와 백엔드back-end가 무엇을 의미하는지, 어디서 들어본 적이 있는 깃허브github의 정체가 무엇인지, 프로그래밍 언어는 종류별로 어떤 특징이 있는지를 대략 알게 되었다. 데이터 마이닝과 머신 러닝이란 단어와도 인사를 나눈 사이 정도(통성명만 했지, 절대 친한 사이는 아님을 밝혀둔다)는 되었다 싶을 무렵, 깜깜하기만 했던 그 분야가 희미하게나마 윤곽을 드러내기 시작했다.



| 시도해볼 만한 게 있을까 찾아보다 |

여기 A라는 사람이 어떤 음악을 듣고 있다. A는 음악에 대해 아는 바가 전혀 없다. 지금 듣고 있는 음악에 어떤 악기가 쓰였는지도 모른다. 그런데 이 곡이 꽤 마음에 들었는지 갑자기 자기도 악기를 배워보면 어떨까 하는 생각이 든 것이다(악기를 배우면 치매 예방이 된다는 소리를 어디서 들었는데 그게 무의식 중에 작용을 한 결과일 수도 있다). 그런데 악기를 배우고 싶다는 생각만 있을 뿐, 악기의 종류에는 어떤 것이 있는지를 모른다면? 그 정도 모르는 사람이라면 자신에게 잘 맞는 악기는 무엇인지, 성인이 시작해서 그나마 들어줄만한 소리를 내는 것이 가능한 악기가 있긴 한 건지, 만약 그런 악기가 존재한다면 악기 구입 비용은 감당할 만한 수준인지, 어떤 방법으로 배울지, 연습 시간은 어느 정도 필요한지에 대한 지식도 없을 가능성이 높다.


IT 관련 책을 뒤적이던 내 상태가 그랬다. 막연히 내가 모르는 분야를 공부해보고 싶은 마음을 품긴 했는데, 무엇을, 어떻게, 어느 정도로 공부해야 할지 전혀 감을 잡을 수 없어서 이런저런 책을 참고한 것이었다. '코딩의 개념을 서술하시오' 따위의 문제를 풀기 위한 목적이 아니었기 때문에 어느 시점이 되면 실습을 해야 하지 않을까 생각이 들긴 했다. 다만 실습까지 가기 위한 준비 과정이 다소 길었다. 내가 시도해봄직한 것을 찾고, 이걸로 결국 무엇을 하고 싶은 것인지에 대한 고민까지 해야 했기 때문이다.



| 내가 너에게 무슨 말을 하면 좋을까 |

코딩하면 무엇이 떠오르나. 까만 화면에 영어로 된 자잘한 글씨가 가득 차 있는 화면? 그 외에는? 아무 것도 아는 바가 없다? 그게 바로 나였다. 뭐가 뭔지 하나도 알 수 없는, 암호와도 같은 그 화면은 나와는 다른 세상에 살고 있는 분들에게나 유의미한 정보를 전달한다고 생각하며 살아왔다. 나는 오로지 사용자 입장에서 그 훌륭하신 분들이 애써주신 결과를 이용하기만 하다가 이번 생을 마칠 예정이었다.


화면상 빼곡하게 적힌 글자들이 컴퓨터와 주고받는 대화라는 건 알고 있었지만, 굳이 나까지 컴퓨터한테 말을 걸진 말자 싶었다. 내가 짠 코드에 컴퓨터가 응답하는 식의 대화에서 별로 기대되는 바가 없었기 때문이리라. 컴퓨터라는 녀석이 계룡산에서 오랜 시간 도를 닦아 어떤 멍청한 질문에도 당황하지 않고 아름다운 결괏값을 내놓는다면 모르겠지만, 나는 아직 산에 들어가 정신수양을 하고 있는 컴퓨터가 있다는 말은 못 들어봤다. 다시 말해 나도 모르는 나의 의도를 (계룡산의 정기를 모아) 파악하고 '사실은 네가 하고 싶은 게 이거지?'를 말해주는 컴퓨터는 없다는 것이다.


컴퓨터와의 대화를 통해 딱히 이루고 싶은 바가 없다면 내가 왜 얘랑 대화를 나누어야 할까 싶었다. 책을 뒤적이며 예상해본 나와 컴퓨터의 대화 장면은 이랬다.


(책 or 인강 or 유튜브 속에 살고 계신 선생님이 내 등 뒤에서 말씀해주시는 중)

선생님: 처음 만났으니까 인사해야지? 우리, 컴퓨터한테 "Hello, world"라고 말해보자.

나: 네, 선생님. (쭈뼛쭈뼛, 하지만 선생님이 시키는 대로) 컴퓨터야, "Hello, world"라고 말해 줘.

컴퓨터: Hello, world

선생님: 음... 그다음은 이걸 말해 볼래? "이거랑 저거랑 더하기 해줘."

나: (시키는 대로 하긴 하겠지만 벌써 재미없어짐) ....


'내가 이런 대화를 얼마나 지속시켜 나갈 수 있을까', '아예 시작을 하지 않는 것이 현명한 판단이 아닐까' 등의 생각이 머릿속을 가득 채웠다.



| 파이썬의 유혹 |

학습자의 동기는 "학습을 위해 기꺼이 바치는 시간의 양(Bransford et al., 2000)"에 영향을 미친다. 코딩이 뭔지 체험이나 한번 해보자는 마음으로는 저렇게 재미없는 대화에 기꺼이 많은 양의 시간을 바칠 것 같진 않았다. 하지만 동기의 수준은 몇 가지 조건에 따라 강화될 수 있지 않은가. 지금 내가 생각해볼 동기 강화 요소는 '학습자의 삶과 어떤 관련성이 있는가'라고 생각했다.


전혀 모르는 분야의 공부도 한번 시도해 보자고 시작한 일이었다. 다만 이것저것 찔러보는 중에는 찔러보는 깊이도 생각해봐야 했다. 어느 정도로 찔러볼 것인가. 깊이는 내가 기꺼이 바치는 시간의 양에 비례할 가능성이 높다. 기꺼이 바치는 시간의 양을 늘이기 위해서는 동기 강화가 필요하지 않을까? 동기 강화라. 내 생활과 관련된 프로젝트를 만드는 방식으로 코딩 학습을 할 수 있다면 동기 강화가 될까? 초보자가 할 수 있는 시시한 프로젝트는 딱히 동기 강화 요인으로 작용할 것 같지가 않은데? 아무래도 코딩 실습은 그냥 물수제비 뜨듯 살짝 스치기만 하는 수준으로 마치는 것이 좋겠다는 결론에 다다를 즈음, 이 문장을 만났다. "다른 사람이 쓴 코드를 가져다 쓸 수 있다. 그 코드가 무슨 뜻인지 알 수만 있다면." 초보자도 배우기 쉽다는 파이썬에 대한 설명을 읽다가 만난 문장이었다.


그러자 조금 더 깊이 찔러볼 마음이 생겼다. 내게 필요한 프로젝트를 만들기 위해서는 어마어마한 시간을 들인 공부를 마친 뒤에나 가능할 것 같았는데, 그렇지 않을 수도 있다니. 다른 사람이 쓴 코드가 무슨 뜻인지 알 수 있을 정도로만 공부한 뒤 그 코드를 가져다 쓰는 것으로 프로젝트를 만들 수 있다면 기꺼이 공부에 바치는 시간의 양을 늘릴 수 있지 않을까. 외부에 풍부한 라이브러리가 있다는 사실은 엄청난 유혹이었다. 결국 나는 66,000원짜리 인터넷 강좌 하나를 결제하고 아나콘다 주피터 노트북을 설치하기 시작했다.





oskar-yildiz-cOkpTiJMGzA-unsplash.jpg Photo by Oskar Yildiz on Unsplash


keyword
매거진의 이전글너와 나는 앞으로 뭐 먹고 살게 될까