brunch

You can make anything
by writing

C.S.Lewis

비전공자의 프로그래밍 공부법

한 줄의 코딩이라도 실생활에 사용될 수 있는 것을 만든다.

많은 사람들이 프로그래밍을 공부한다고 학원에 가거나 두꺼운 책들을 사놓고 결심을 불태운다. 나는 프로그래밍의 고수가 되겠노라고. 그리고 책을 산다. 책을 사고, 책의 사진을 찍고 SNS에 이렇게 올린다. "개발의 신이 되겠어!" 본격적으로 개발도구를 설치하고 몇 개의 예제를 따라 하다 보면 어느새 큰 맘먹고 샀던 책들은 비싼 냄비받침이 되어 있다(심지어 두꺼워서 꽤 좋음). 기억에 남는 건 그놈의 "Hello world!" 뿐.


프로그래밍좀 해보겠다고 스스로를 고문할 필요는 없다


왜 실패하는가? 왜 우리는 코딩을 지속해서 할 수 없는가? 가장 큰 이유는 프로그래밍을 위한 프로그래밍을 '공부'하기 때문이다. 코딩을 공부의 대상으로 간주하는 순간 이건 제 4외국어 공부하는 셈이나 마찬가지다. 고등학교 교과서는 국어로라도 되어있지 코딩은 비전공자 입장에서 아랍어나 마찬가지기 때문이다. 맹목적인 공부를 위한 공부는 비전공자의 코딩 학습법에서 최대한 지양되어야 한다.


나 역시 컴퓨터 비전공자다. 물론 산업공학과를 졸업하긴 했지만 컴퓨터 관련된 교육을 받은 적은 거의 없다. 컴퓨터 관련된 수업은 학부 1학년 때 '컴퓨터의 원리'라는 교양수업이 유일했는데 뭔 그깟 검은 화면에 흰 글씨 띄우는 게 뭔 대수라고 딱히 하고자 하는 의욕도 없어서 과제를 포기하고 탕수육 시켜먹고 결국 C+ 를 받았다. 아무튼 불과 몇 년 전만 해도 개발은 나에게 먼 나라 이야기였고, 프로그래밍은 오타쿠? 들이나 하는 그런 나와  상관없는 대상이었으며 그 이후로 프로그래밍 수업이나 학원은 한 번도 경험한 적이 없다. 


하지만 과거에는 프로그래밍과 관련이 코빼기도 없었던 그랬던 내가 지금은 이런 것들을 할 줄 안다.


애니팡을 자동으로  플레이해서 1등을 할 줄 알고

금융공학을 전공했으니까 관련 소프트웨어를 만들고

회사에서 컴퓨터가 나 대신 일을 하게 한다.

(클릭)


나만의 방식으로 꾸준하게 코딩하다 보니 적어도 나의 생각을 고스란히 구현할 수 있는 개발자가 될 수 있었다. 나는 어떻게 꾸준하게 코딩을 할 수 있었을까에 대해서 고민해봤다. 게임도 한 3년 하면  지겨워지는데 어떻게 코딩을 꾸준하게 어쩌면 집요하게 지속할 수 있었던 걸까? 생각해보면 나의 프로그래밍 시작은 항상 아주 단순한 규칙으로부터 출발했다. 


'한 줄의 코딩을 하더라도 실제로 사용할 수 있는 것을 만들자.'


나의 가장 첫 번째 프로그램은 아주 간단한 기능을 수행하는 것이었다. "매일 저녁에 오늘 사용한 돈의 액수를 입력받아서 텍스트로 저장하고 월별로 얼마나 사용했는지 보여주자." 나는 실제로 몇 줄의 프로그램을 만들고 매일 사용을 했다. 코드 라인 수가 50줄을 넘지 않았던 아주  보잘것없는 것인데도 불구하고 난 내가 만든 첫 번째 프로그램에 애착을 갖기 시작했다. 왜냐하면 내가 스스로 만든 것이니까. 심지어 이름도 '박 비서'라고 붙여주었고 윈도우 스케쥴러에 등록해서 매일 밤이면 나의 컴퓨터 화면에 노출되었으며 나의 입력을 기다려주었다. 인사말도 덧붙였다. "안녕하세요 주인님? 오늘은 얼마를 쓰셨나요?" 하지만 프로그램을 계속해서 쓰다 보니 불만사항이 생기기 시작했다. 월별로 사용한 것을 이쁜 차트로 보여주면 더 좋을 것 같다는 생각이 들었다. 그러나 내가 그 때까지 아는 코딩 지식으로는 어림도 없었다. 자연스럽게 콘솔 방식의 C 프로그램에서 C++  MFC를 알게 되는 계기가 되었다. 


보잘 것 없지만 매일 사용할 수 있었던 박비서


항상 이런 식이었다. 지금은 다양한 프로그래밍 언어를 다룰 수 있게 되었지만, 단 한 번도 새로운 언어를 그 언어 자체를 위해서 공부한 적은 없었다. 항상 내가 만들어 놓은 프로그램에서 개선점이나, 한계점에 부딪혔을 때 그것을 극복할 수 있을 경우 새로운 기술을 습득했다. 왜냐하면 현재까지 나온 프로그래밍 기술 그리고 그 기술의 진보는 결국 사람들의 고민에서 나온 결과물 들이기 때문이다.


(* 필자가 금융 프로그래밍을 발전해 나갔던 과정)

어떻게 하면 더 빠르게 개발할 수 있을까?
유지보수를 어떻게 하면 저 잘할 수 있을까?
어떻게 하면 더 소스를 짧게 할 수 있을까?


프로그래밍을 공부한다는 의미는 결국 개발 도중에 나온 수많은 고민들에 대해서 고마운 누군가의 해답을 알아가는 과정이다. 따라서 이를 자연스럽게 학습하려면 나 먼저 현재의 문제에 대해서 고민하는 것이 가장 먼저 선행되어야 한다. 그리고 고민은 백지에서 시작되는 것이 아니라 내가 개발해 놓은 아주 작은  프로그램에서부터 시작된다. 그럼 고민에 대한 답은 누가 찾아주는가? 바로  Google이다. 개발의 9할은 구글링이다.


요약하자면, 만약에 코딩을 잘하고 싶은데 당최 오랫동안 할 수가 없다면, 그리고 매번 하다가 자기 길이 아닌 것 같아서 포기했다면 다음과 같은 방식으로 코딩 공부를 해보기 바란다.


0. 당장 두꺼운 책을 살 필요가 없다.

1. 정말로 매일 쓸 수 있는 아주 간단한 프로그램을 만들자.

 - 본인이 코딩으로 할 수 있는 기본적인 리스트업을 하자. (예: 텍스트 파일 읽기, 사용자 입력값 받기 기능들을  - 조합해서 어떤 유용한(실제로 사용 가능한) 프로그램을 만들 수 있는지 고민한다.

 - 당장 코딩을 시작한다. 유용함이고 나발 이고는 추후에 생각하고 일단 만들고 본다.

 - 하루에 한 줄이라도 코딩한다.

2. 억지로라도 스스로 매일 사용한다.

 - 프로그램에 이름을 지어주는 등 애착을 갖도록 노력한다.

3. 사용하면서 추가할 기능이나 개선점을 찾아본다.

4. 필요한 기능을 공부한다. 얇은 책을 한 권 사거나 대체로 구글에 다 나와있다.


위 0번 부터 4번 까지를 몇 차례 순환하다 보면 자신의 조악했던 프로그램이 어느 순간 남에게 자랑할 수 있는 멋진 프로그램이 되어 있는 것을 확인할 수 있다. 그리고 이렇게 되면 프로그래밍이  즐거워진다. 발전하는 기쁨과, 남에게 인정받는 기쁨, 무엇보다 내의 생각들이 공유할 수 있는 온전한 결과물이 나온다는 점에서 남들은 모르는 짜릿함을 느낄 수 있을 것이다. 프로그래밍 학습에서 제일 중요한 것은 꾸준함이다. 그러나 꾸준함은 저절로 오는 것이 아니라 스스로 생활속에 녹아내리게 하는 방법과 노력에서 비롯된다.

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari