도전일기 (2019년 이후)/프로그래밍 도전일기

내가 프로그래밍에 실패했던 이유-중년남의 프로그래밍 도전기

manwon 2021. 2. 28. 11:17
반응형

[알림] 본 글은 어느덧 중년이 된 제가 컴퓨터 프로그래밍 기초부터 배워가는 과정을 담은 도전기입니다. 아주 간단한 2D 게임을 만드는 게 올해 목표입니다. 과연 중도 포기하지 않고 성공할 수 있을까요? 이름하여 '중년남의 프로그래밍 도전기'는 매주 일요일에 연재됩니다. 해당 도전기 전체 목록을 보시려면 [여기]를 클릭하세요!

 

프로그래밍을 시작한 지는 15년이 지났습니다만... 

대충 15년? 하여튼 아주 오래전에 '열혈강의 C 프로그래밍'이란 책으로 프로그래밍 공부를 시작했습니다. 그리고 대충 10년? 하여튼 오래전에 '이것이 자바다'라는 책을 공부했습니다. 그리고 대충 3년 전에 '이것이 C#이다'라는 책을 공부했습니다.

15년 전 '열혈강의 C프로그래밍'을 본 이유: 프로그래밍을 배우려면 C언어는 해야지라는 막연한 추측으로.
10년 전 '이것이 자바다'를 본 이유: 이걸 배워야 취업도 되고 하여튼 자바가 대세라고 하는 소리를 듣고.
3년 전 '이것이 C#이다'를 본 이유: 윈도에서 돌아가는 프로그램을 만들려면 이걸 알아야 한다길래.

 

구구단 이상의 프로그램은 만들지 못합니다 

프로그래밍을 좀 아시는 분들은 눈치 채셨겠지만 제가 본 책들은 모두 기본서입니다. 원래는 기본서를 보고 그걸 활용하는 배움의 과정이 있어야 하는데 저는 기본서를 4~5개월에 걸쳐 천천히 1번 보고 5년 정도 놀다가 또 다른 기본서를 또 천천히 취미 삼아 보다가 또 몇 년 놀고, 또 몇 년 후에 전혀 다른 분야의 기본서를 선택해서 공부하는 걸 반복한 셈입니다. 그래서 오직 만들 수 있는 건 구구단 프로그램 정도입니다. 

 

제가 프로그래밍 공부에 실패했던 이유를 추측해 봅니다 

지금은 또 간단한 2D 게임이라도 만들고 싶다는 생각에 또 프로그래밍 공부를 시작했습니다. 곰곰히 생각해 보니 지난 15년 동안 저지른 실수를 반복하면 안 되겠다는 생각이 들더군요. 그래서 저의 문제점이 뭔지 생각을 좀 해 봤습니다.

1. 프로그래밍 공부에 투자한 시간이 너무 적었습니다.
2. 프로그래밍을 암기를 통해서 배우려고 했습니다.
3. 수동적으로 배우려고 했습니다.

일단 제가 잘못 생각했던 것이 하루에 1시간 정도 혹은 그 이하의 시간이라도 꾸준히 배우면 실력이 늘 것이라고 판단한 점입니다. 즉 본업은 따로 있고 재미로, 취미로 프로그래밍을 배워도 뭔가 그럴싸한 걸작을 만들 수 있을 거라 착각했다는 점이죠. 물론 머리가 아주 좋다면 그게 가능하겠지만 저는 그냥 평범한 사람이고 일반적인 기준으로 볼 때 프로그래밍을 배우기엔 매우 늦은 나이기도 하죠. 제가 느긋하게 배우는 동안 빠르게 새로운 언어와 기술이 생긴다는 건 미쳐 몰랐던 거죠.

그리고 프로그래밍을 배우다 보면 어떠한 문법적인 형식을 익혀야 하는데, 저는 이 형식을 머리 속에 무조건 집어넣어야 한다고 생각했습니다. 수 천 개의 문법적 형식을 모두 암기하고 있어서 책이나 인터넷을 참조하지 않고도 그냥 술술술 코딩할 줄 알아야 한다고 생각했던 거죠. 이러니 프로그래밍이 고통스럽게 느껴지고 진도 나가기가 쉽지 않았던 거죠. 저는 이 암기해야 한다는 강박을 꽤 오랫동안 고집했는데 최근에서야 그게 정말로 어리석은 생각이란 걸 깨닫게 됐습니다. 프로그래밍 동작 원리를 이해한 후 문법 형식은 정확히 떠오르지 않으면 인터넷을 참조해서 얻어오는 방법이 가장 현실적이고 가장 효율적이라는 걸 최근에서야 받아들이게 된 겁니다. 자주 쓰는 문법 형식은 외우지 않으려고 해도 자동으로 외워지는 건데, 저는 그런 중요도 개념을 버린 채, 백과사전 식으로 모든 걸 암기하려 했으니 진도 나가기가 도통 힘들었던 거죠. 여하튼 암기해야 한다는 고정관념이 완전히 잘못된 거라는 걸 깨우친 계기는 사실 좀 엉뚱한 데 있었습니다. 배민 커넥트로 지리를 잘 모르는 지역에서 자전거 배달 알바를 한 적이 있었는데 그때 그걸 깨우치게 됐습니다. 거기에 대한 사연과 생각은 나중에 기회가 되면 언급할 예정입니다.

마지막으로 저는 프로그래밍을 배울 때 꽤 수동적이었다는 생각이 들더군요. 그게 뭔소리냐면, 책에 나온 예제를 그대로 이해하는 것에만 초점을 맞췄고 그걸 자르고 붙이고 하면서 장난감 가지고 놀 듯이 변형하고 응용하려는 시도는 전무했다는 겁니다. 제 성격이 뭔가가 잘못되는 걸 굉장히 꺼리는 성격이 있는데요, 완성된 소스 코드를 내가 다른 의도로 손을 대서 그냥 에러만 출력하는 상태가 되는 걸 좀 두려워하는 경향이 있지 않았나 생각해 봅니다. 뭔가를 망가뜨리는 행위를 수도 없이 하고, 그걸 원하는 방향으로 복구하려는 시도를 수도 없이 해야, 뭔가를 제대로 창작할 수 있는 실력에 도달하는 게 아닐까.... 최근엔 그렇게 생각하고 있습니다.  

일단 제가 프로그래밍에 실패했던 원인 중 2번과 3번은 개선의 여지가 충분한데요, 1번은 현재로서는 뾰족한 답이 없습니다. 당장 생계와 상관없는 '공부'를 집중해서 꽤 장시간 할 수 없는 게 제 개인적인 현실이거든요. 뭔가 답이 나오겠지요. 오늘은 글이 길어져서 이만 줄입니다. 다음 편에서는 현재 수강 중인 패스트 캠퍼스 온라인 강의에 대해서 좀 실망스러운 부분을 언급해 보려 합니다. 중년남의 프로그래밍 도전기! 다음 편도 기대해주세요!

[다음 편 계속 보기 -->]

 

반응형