한 달간의 강의를 진행하며 어느덧 2월이 눈 앞으로 다가왔다.
블로그를 시작하면서 첫 번째 글에서 그랬듯, 이 블로그는 기존에 내가 군대에서부터 작성 했던
MyMilitaryServiceLog
에서 짧은 생각을 간간히 작성했던 것을 블로그로 이어 작성하기로 계획했었다.
계획은 그럴싸 했으나, 늘 현실은 그렇지 못 하다.
강의
우선 2022년를 맞이하면서 시작하기로 계획한 디스코드 봇 - 파이썬 프로젝트(였던 것)가 아닌 강의로 바뀌면서 시간 선상 많은 게 뒤틀려졌다.
나쁘다는 의미에서 뒤틀리기보다, 내가 구상한 시간 계획이 많이 뒤틀려졌다.
첫 강의를 시작하기 앞서, 염려는 했지만 누구나 처음에는 그러듯이 ‘초보자’와 ‘중급자’ 사이에 있는 애매한 경계를 두고
다른 사람에게는 겸손인지 아양인지는 모호하지만, 초보자라고 소개하지만 ‘중급자’ 수준으로 대우를 받고 싶은… 그런 모습이 보여서
아예 프로젝트를 강의로 바꿔 홍보해 지금의 강의로 오게 되었다.
강의로 방향을 바꾸면서 전혀 모르는 사람과, 얼마나 아는지 모르는 사람들에게 강의를 준비해야하는 지금까지 사람을 대하면서 겪는 난이도 중 최상의 난이도를 경험할 수 있었다.
신선하고 좋으나, 수반하는 정신적 고통이 마치 신선한 미역 줄기로 맞는 것 같았다. 새롭게 배우는 과정에서 얻는 고통이라고 해야되나?
가장 어려운 점은 아마 이상적인 로드맵을 그려도 실시간으로 피드백이 불가능하다는 점과, 비언어적 수단으로 내가 지도를 하기 어렵다는 점이다.
피드백
피드백은 무척 중요하다.
특히나 일방적으로 영상을 찍고 업로드하는 영상 형태의 강의가 아닌, 라이브로 진행하는 강의의 경우 사치일진 모르지만 나는 중간 중간 질문을 늘 받고 싶었다.
모든 것을 만능으로 답변해주는 백과사전이나, 시니어 개발자가 아니여도 질문하는 수준에 따라서 청자의 수준이나 이해도를 감안할 수 있기 때문이다.
1월 5일 진행한 기념비적인 첫 강의에서는 프로그래밍을 왜 배우는가라는 내용과 디스코드 봇의 시스템 그리고 그 다음 과제에 대해서 이야기를 나누면서
중간 중간 오디오가 빌 정도로 질문을 받는 텀을 10~15 초 간 두곤 했다.
그릭고 그 날 바로 깨달았다.
질문을 유도하는 상황을 만드는 것도 필요하고, 이 사람들이 단순히 구구절절 라이브로 한 사람이 일방적으로 말 하는 걸 듣기를 기대했구나…
디스코드는 라이브를 진행하면서 같은 서버내 채팅 채널을 통해서 채팅으로 질문을 받을 수 있었는데 하나도 받지 못했다는 점에 대해서 많이 실망하기도 했고,
나 혼자 구구절절 떠드는 상황을 전혀 원치 않다는 생각이 계속 떠올랐다.
그래도 그림을 그려오는 과제도 내보고, 직접 코드를 작성하는 과제도 내보면서 참여하는 ‘척’이라도 보이면
바로 내가 파고 들어 이런 점이 어떻고, 저런 점이 어떻고, 1:1로 피드백을 주니깐 이번 주에 진행하는 강의에서 실시간으로 질문하는 것이 자연스럽게 되었다.
나름 스스로 노력을 했다고 자부할 만한 점이었다.
두 번쨰 강의에서는 첫 번째 강의에서 내 준 프로그램을 만들 때 머리 속에 있어야하는 큰 그림이 실제로 어떤 걸 의미하고,
어떤 개선점이 있었으면 하는~ 식으로 슬라이드를 준비했는데 그런 노력을 알아준 것일까.
강의 슬라이드 중 하나 가져온 것
이렇게 스스로 내가 강의를 들으면서 아쉬웠던 점을 스스로 해소했는데
자료를 준비하고, 강의 자체를 하나의 큰 스토리 라인처럼 자연스럽게 유도하는 과정을 이끌어내기란 상당히 어려웠다는 걸 깨달았다.
수능 과목 같은 경우, 자신이 무엇을 가르쳐야 할 지 이미 다 정해진 목차가 나와있고 게다가 스토리 라인 따윈 필요가 없으니
정해진 절차를 잘 포장하고 따라가면 되지만,
내가 주도하는 프로젝트를 빙자한 강의에서는
왜 하는가?, 왜 배우는가?, 왜 그렇게 생각하는가?, 라는 식의
내용을 전달하면서 동시에 질문을 갖게 끔 만드는 효소 같은 물질과 같아서 연쇄작용을 미리 2, 3수 내다 보는 노력을 필요로 했다.
그렇게 강의를 4주까지 이어오면서
나 스스로 이 강의가 파이썬을 위한 강의가 맞는지, 디스코드 봇을 만드려는 대상이 있긴 있는 건지, 이러다가 흐지부지 되는게 아닌지
내가 강의 청자라고 스스로 상황을 생각해봐도 갖을 수 있는 수 많은 의문점과 불만을 해소하려고 애를 쓰고 있다.
피드백이 꼭 필요한 이유는 이런 불만이나 고갈을 직접 그 대상으로부터 들을 수 있고,
귀납적 실험을 통해서 양쪽이 고통 받으며 정답까지 도달하는데 그 비용을 줄일 수 있기 때문이다.
상호간의 피드백은 강의도 당연히 포함되고, 강연이나 세미나나, 사람과 사람 사이에 의사소통이 존재하는 곳이라면 반드시 필요한 것이지만
그 피드백에 대한 절실함은 직접 무대에 서봐야 알 수 있다는 것을 체감했다.
준비하기
언급한 것처럼 프로젝트로 시작해 강의와 혼용된 형태로 바뀐 이 강의는 첫 청자 대상을 잘 못 봤다.
그래도 우여곡절 끝에 모은 소중한 5명의 인원이다보니 안될 걸 알았지만 어떻게든 다 끌고 가고 싶었다.
예를 들어 파이토치(PyTorch) 라이브러리를 소개/설명하는 서적처럼 처음 앞 부분은
독자가 파이썬을 처음 접하는 독자로 상상해 도움 1도 안되는 내용으로 100 페이지를 채운 다음에
사진과 내용도 없는 코드로 300 페이지를 채운 보편적인 책과 같은 전개 방식을 의도했다.
물론 나는 도움도 안되는 파이썬 for, while - loop 설명하기 자료형 등등 검색만 해도 다 나오는 내용을 강의로 채우기 너무 아까웠다.
그래서 개인적으로 이 프로그래밍 교육시장에서 소외되고 있는 추상적이지만, 그래서 본질적인 질문인
프로그래밍을 왜 배우는가?
라는 질문으로 시작을 했다.
첫 번째 질문이자 강의 내용
프로그래밍을 배우면 마치 신으로부터 구원 받고, 취직도 할 수 있는 구세주 같은 인상이 강해서 이 질문을 강의 주제로 꼭 내걸고 싶었다.
취직도 할 수 있지만 목수가 맨 손으로 나무를 다룰 수 없듯이 장비를 쓰는 것처럼 사용하는 거라고,
그리고 돈을 벌기 위해서 사용될 수 있지만, 자신의 필요에 따라서 책상을 만들던 의자를 만들던 자기 자신을 위해서
다른 도구를 만드는 용도로 쓸 수 있다고 진짜 원론적인 질문을 했다.
마치 수능 강사가 수능 강의는 안하고 지 가족 이야기, 인생 훈계한다고 어처구니가 없을 순 있지만
그래도 상대적으로 경험이 쌓여야만 보이는 것들을 미리 알려주는 측면에서 일종의 교육으로 봐줬으면 했다.
CI/CD
강의를 준비하는데 구상과 그 다음 강의, 그리고 봇을 함께 여러명이 개발하기 위해선 어떤 자동화가 필요로한지, 등
타인을 가르치기 위한 준비도 시간이 많이 걸렸지만, 협업을 본격적으로 하는 것은 나도 처음이었기 때문에
생각으로만 알고 있던 CI/CD를 직접 배우고 실습을 했다.
입대하기 전 이미 AWS 계정을 만들어 1년 프리티어 계정이 없어졌지만, 그래도 내 돈을 내서라도(이번 달 청구비용은 아마 6$ 쯤..) 시작했다.
유튜브 영상에는 조회수는 적고, 편집은 잘 안되어 있지만 내용은 좋은 소규모 유튜버들이 많다.
수 만 구독자와 수 십만 뷰를 가지고 있는 영상은 매우 드물고,
또 보편적인 강의보다는 그냥 보고 그렇구나 하는 정도의 짧게 요약된 정보 전달용 영상이지 뭔가 처음 배우는 입장에서 도움이 되는 영상은 1인 소규모 유튜버들이 괜찮은 편이다.
AWS, MS, 등 대기업에서 올리는 영상은 교육이라기 보다는 프로모션에 가깝고 현업자, 또는 유사한 서비스를 경험한 사람들을 대상으로 만들기 때문에 멋은 있는데 정작 도움은 되지 않는 경우가 많다.
조회수야 그런 현업자들이 집에와서 일이랑 관련된 유튜브 영상을 얼마나 보겠냐고 말하고 싶을 수준으로 낮다.
AWS 한국 채널은 그냥 이름만 AWS지, 마치 포트폴리오 용 면접 영상을 AWS에서 찍고 편집해주는 이상한 생태계를 갖추고 있다.
아무튼 CI/CD를 준비하면서 AWS 서비스와 깃허브 액션도 사용하면서 구축은 해놨다.
문제는 구축은 했지만, 디스코드를 분업해서 개발하기 위해선 파일을 분리하고
명령어를 각각 어떻게 전담해서 맡을 수 있도록 즉, 컨플릭트가 발생하지 않도록 파일 구조를 만드는게 현재 목표다.
CI/CD가 급한게 아니라 대형 프로젝트들을 보며 봇의 구조를 어떻게 설계할지가 더 급급한 문제였다.
실행환경
정작 문제는 실행환경 조차 제대로 구축하지 못해 실행을 못하는 일로 인해서 강의를 듣는 분들이 예제로 드린 파이썬 디스코드 봇 코드를 실행해보지도 않은 것이다.
내 눈앞에 있으면 그 날 집에 가기 전까지 무조건 실행은 할 수 있는 환경이 되었는지 확인까지 하고,
코드를 만져보는 과제를 내주고 피드백을 할 예정이었다.
파이썬 버전을 다르게 설치해 나도 모르는 문제점에 봉착해 아무도 경험하지 못 한 상황에 빠져, 나도 혼란에 빠지고 수강자도 빠지고…
마치 우주에 던져져서 위 아래 구분도 못하고 무슨 상황인지 인지도 못 한 채, 에러 상황을 해결헤줬던 일까지 있었다.
물론 파이썬 3.8 버전을 다시 설치하는 것으로 모든게 해결이 되어 싱겁게 끝났지만,
설마 설치하도록 권장한 3.8 버전 대신 3.10, 3.9 버전을 사용해서 문제에 봉착하기란 예상을 못 했다.
나도 예전에 최신 버전이 나오면 설치하고, 새로운 기능을 활용하고 파이썬 2.7 버전을 왜 아직도 쓰는지 한심하게 본 적도 있었다.
최신 버전이 상대적으로 좋은 것은 많지만, 안정성 측면에 있어서 시간이 인증하지 못 한 문제도 있고
이 것도 결국 경험이 해결해주는 문제이긴 한다.
스스로 공부 안 함..?
나는 훌륭한 학생은 아니다.
내가 직접 흥미를 느끼고 관심을 가진 것을 주로 공부하지, 남들이 시키면 더 하기 싫어하는 성격이다.
그러다 경험이 쌓이면서 그 필요성을 나중에 느끼고 다시 공부하게 된다.
그렇다면 결국 손해가 아니냐?
라는 생각이 들 수 있지만, 전혀 손해가 아니다.
자신이 절실하고, 필요로 해서 공부를 하는 것은 더 효율적이고 부재로 인한 지적 공백이 매워지는 과정이기 때문에 더 빨리 아물고 활용하기 쉽기 떄문이다.
그래서 이번 강의를 진행하면서 내가 100% 완벽한 강의가 아니고, 또 디스코드 봇을 (원래는) 만드는 프로젝트 였다 보니
직접 구글링도 하고, 코드를 보기 위해서 깃허브를 찾아볼 줄 알았다.
그런데 웬 걸, 깃허브 아이디도 처음 만든 사람이 한 둘이 아니였다.
문과도 살고 싶다고 프로그래밍을 시작하는 와중에 깃허브를 3학년이 되기까지 안 만드는 사람이 있다니.
여러모로 감정이 복잡 미묘했던 순간이었다.
아니, 프로그래밍 어렵다고 말은 하면서 영어로 구글링도 안 해보고, 깃허브 코드 찾아보면서 공부하는 것도 아니고
맨날 놀고는 싶고, 근데 포트폴리오가 부족해서 취업은 안된다고 하고.
이거 그냥 시대 잘 태어나서 취업 불황시기 탓하기 제일 최적화된 사람이네?라고 분노를 금치 못 한 일이 있었다.
1학년 때, C, Java 언어로 임용교수가 마지못해 하는 강의를 듣느니 파이썬을 직접 스스로 공부해 경지에 이르게 했던
나의 학구적 반발심이 보편적이지 않았던 경우 였던가?
카페가서 머리 쥐어 뜯으면서 일주일 내내 10시간씩 꼴아박으면서 C++과 객체라는 존재를 공부하는 사람이 주변에 흔치 않은건가?
라는 생각을 하면서…
열심히 기존의 강의로부터 벗어난 새로운 형식의 강의를 꿈꾸던 나는 허탈함에 빠졌다.
그렇게 모두 끌고 가고 싶었던 나의 욕심이자 희망이 그렇게 누글어들어만 갔다.
진짜 프로젝트
이틀 전, 수요일 저녁 강의를 마무리하면서 이제는 파이썬 내용보다는 본격적으로 봇을 만드는데 집중하겠다고 선언했다.
파이썬 강의 반 + 디스코드 반 이런식으로 진행하다간 나도 같이 늪에 빠져 익사할 것 같아 확 추진하기로 했다.
강의 자체에 대한 피드백을 주셔서, 그냥 빠르게 나아가기로 결심했다.
정리
강의를 위해 달렸던 한 달이었다.
답답하면서도, 새로운 경험이라 복합적인 감정이 압도했지만 배운 것도 있고 의미있는 경험이었다.
한 달을 강의에 쏟은 것 같다.
AWS도 프로젝트를 계기로 진짜 시작하게 되어 좋았다.
나는 흐름이나, 책임에 몸을 일단 던지고 보는 편이다.
일단 모르겠고, 가즈아~~~
그래서 동아리 회장도 하면서 내가 부족한 것들 알게되고 고치겠지,
스터디 열면 내가 위기감에 극복을 해내겠지…
그래도 어느정도 내가 스스로 할 수 있을 것 같다는 생각이 들면, (반)강제로라도 하게 끔 스스로 환경을 만든다고 해야하나?
배수진을 치는 거랑 비슷한 느낌이다.
설날 마지막 날까지 다시 열심히 달려야겠다.