아마추어 프로그래밍 초심자를 위한 조언

2014. 11. 17. 06:30잡담...그 속의 진심


요즘 나의 취미는 프로그래밍이다. 시작한 지 1년이 훌쩍 지났으니까, 이제는 좀 취미라 할만한 수준이 된 거 같다. 처음에는 그냥 내 아이폰에 내가 만든 앱 하나 깔아보자는 단순한 생각에서 시작했다. 아이폰용 앱을 만드는 플랫폼은 애플에서 제공하는 Xcode다. 사실, 나는 이거만 깔면 예전에 나모웹에디터로 홈페이지 흉내 내듯 앱도 만들 수 있는 줄 알았다. 그런데 Xcode로 'Hello world'라도 아이폰 화면에 나오게 하려면, objective C 언어를 배워 코딩이라는 걸 해야 한다

'그래 그까짓 거. 고등학생도 학교 공부하며 앱 만들어 배포하던데, 나라고 못할 건 뭔가.' 

이 생각으로 Objective C 책 한 권을 샀다. 



(바로, 이 책이다. 혹시, Objective C를 처음 공부하려고 책을 고민한다면, 이 책은 사지 마라. 별로 도움 안 된다. 번역 수준도 열악해서 읽다 보면, 영어 원문이 어떤 내용인지 궁금해진다.)



막상 프로그래밍 공부를 Objective C로 시작해보니, C언어 문법을 전혀 모르는 상태에서 objective C를 공부하는 건 덧셈은 건너뛰고 곱셈 배우는 격이더라. 결국, 다시 'C언어'부터 공부를 시작했다. 다행히 C언어 문법은 많이 어렵지 않았다. 자신감이 생겨 몇 주 만에 C와 Objective C까지 일독을 마쳤다. 그런데 다시 Xcode를 열어봐도 내가 할 수 있는 건 아무것도 없었다. 연애를 책으로 배운 남자가 여자를 처음 만난 상황 같았달까. 결국, 실무형 Xcode 강의를 해주는 인터넷사이트에 유료로 가입했다. 강의를 들으니, 이제 좀 눈이 떠지는 느낌이었다. 


(http://www.iphonestudy.co.kr/?_pageVariable=SPECIALCOURSE&cIdx=801

이 사이트다. 강의는 좋다. 그런데 업데이트가 전혀 이루어지지 않는다. 유선상으로 문의해본 결과, 강사가 건강상의 문제로 잠수를 탄 상황이란다.)



이즈음 나는 정말 눈만 떴다.

강의가 워낙 오래된 버전의 Xcode 기반에서 이루어지다 보니, 강의 내용을 따라 해보면, 제대로 구동되지 않는 코드가 대부분이었다. 나는 결국 다시 업데이트가 제대로 이루어지는 외국 사이트의 영문 교과서를 유료로 구매했다. 


(http://www.raywenderlich.com - 업데이트도 빠르고, 이곳에서 정말 많이 배웠다. 워낙 많은 강의가 무료로 오픈되어 있지만, 유료로 판매하는 교과서는 역시 돈값을 하더라.)



이곳에서 몇 달을 놀며 지냈더니, 드디어 나의 아이폰 앱이 완성되었다. 애플 개발자 사이트에 유료 회원으로 가입해서 아이디를 만들고 내 아이폰에 내가 만든 앱을 처음 깔았을 때의 그 감격이란... 그런데 그 감격은 그리 오래가지 않았다. 나의 아이디어는 성층권을 지나 화성을 향해 가는데, objective C언어와 Xcode만으로 만들 수 있는 앱은 게시판도 제대로 없는 개인홈페이지 수준이었다.



결국, 아이폰용 앱 개발 실력만 갖추고는 큰 그림을 그릴 수 없다는 걸 깨달았다. 그리고 '서버'라는 큰 그림이 그제야 보이기 시작했다. 아이폰(클라이언트)들의 구심점이 되는 서버를 이해하지 않고서는 여러 유저와 정보를 주고받으며 작동하는 앱을 만들 수 없다. 나는 울며 겨자 먹기로 서버도 공부해보기로 결정하고, 나의 맥에 일단 가상머신으로 우분투(Ubuntu) 서버를 설치했다. 그리고 이십 년 가까이 잊고 살았던 CLI(command line interface: 검은 바탕화면에 흰색 글씨 그리고 하얀 커서만 깜빡거리는)와 다시 조우했다. 알록달록 예쁜 GUI(graphic user interface)에 완전히 길들었던 내가 Finder(나는 맥 유저다. 파인더는 맥에서 쓰이는 윈도탐색기라고 생각하면 된다.) 없이 명령어로 폴더를 찾아다니며 느꼈던 당혹스러움이란. 여기에 더해 한없이 멍청한 vi editor와 씨름하며 날을 세울 수 있었던 건, 순전히 자기 주도적 학습이었기 때문에 가능했으리라. 만약, 학부 수업이나 먹고 살기 위해 시작한 일이었다면, 이쯤에서 상콤(?)하게 접었을 거다.



어쨌거나, 재미로 시작한 일이니 서두르지 말고 끝까지나 가보자는 마음으로, 우분투 서버에 아파치(apache) 웹서버를 깔았다. 일단은 웹서버와 클라이언트의 관계를 이해해야지 싶었다. 그랬더니, 이번에는 HTML과 CSS가 장벽으로 다가왔다. 나는 평소 웹디자인과 웹 개발에는 전혀 관심이 없었다. 스마트폰이 대세를 이루는 요즘 PC 인터넷 기반 웹 서비스는 언젠가 모두 아이폰앱과 안드로이드앱으로 대체될 거라는 게 나의 생각이었다. 모바일웹페이지는 아무리 봐도 구리니까. 그런데 이건 나의 크나큰 오산이었다. 앱이든 웹이든 인터페이스의 차이일 뿐, 결국 서버로부터의 데이터를 유저에게 전달한다는 의미에서 둘은 공생 관계다. 결국, 처음에는 전혀 관심도 없었던 HTML과 CSS의 문법을 공부하기 시작했다. 다행히 HTML과 CSS에 대한 내용은 인터넷에 좋은 자료가 많아서 공부가 쉬운 편이었다. 하지만 이게 또 끝이 아닐 줄이야. 웹페이지를 통해 사용자가 서버와 데이터를 주고받는 동적 설계를 위해서는 또 다른 프래그래밍 언어를 공부해야 했다. 이런 젠장. OTL... 우분투 서버에 이번에는 PHP를 설치했다. PHP는 HTML 안에 동적 기능을 부여하기 위한 프로그래밍 언어다. 여기까지가 요즘 나의 진도다.



(PHP 기본문법은 '오픈튜토리얼스(http://opentutorials.org)' 홈페이지에서 egoing 님의 동영상 강좌를 보며 배우고 있다. egoing님은 가히 아마추어 개발자를 위해 하늘에서 내려오신 천사 같은 분이다.)



이렇게 머리 빠개지게 복잡한 취미 생활을 하면서 내가 느낀 점은 다음과 같다.


1. 개발자님들 연봉은 지금보다 두 배 이상 올라야 한다. 프로 개발자가 되려면 지금 내가 한 공부보다 배는 더 해야 할 텐데, 현재 개발자들의 연봉은 불합리하다. 프로그래밍 공부는 내가 배운 의학에 비해 절대 적은 양의 공부가 아니다. 그럼에도 학습을 마친 뒤, 지금 정도의 대우밖에 기대할 수 없다면, 우리나라 소프트웨어 업계의 미래는 어둡다. 자원이 부족한 우리나라의 상황을 고려할 때, 무에서 유를 창조하는 고부가가치 산업의 단초를 소프트웨어 개발에서 찾아야 하는 건 너무 당위적이지 않는가. 


2. 프로그래밍을 공부하면서, 컴퓨터 에러에 무척 관대해졌다. 내가 만드는 수준의 단순한 앱도 버그 하나 잡는 데 일주일씩 걸리는데, 요새미티나 윈도우 같은 덩치 큰 프로그램이야 더 말해 무엇하랴. 버그가 있으니 컴퓨터다.