티스토리 뷰
서른, 프로그래머 전향
2012년을 기준으로 본격적인 프로그래밍으로(정확히는 스크립터)로 전향한지 6개월 정도 시간이 흐른것 같다.
그동안 플래시 기반으로 모션작업과 간단한 3D툴을 다루면서 나름 심도있게 ActionScript2.0을 다루었으나,
소스코드가 길었다 할지라도 타임라인 기반의 막코딩으로 썼었기에.. 객체지향적(OOP)인 스크립트와는
거리가 있었고, 무엇보다 작은 규모라도 클래스기반의 설계와 제어를 하고 싶었지만 엄두가 나질 않았다.
그러던 차에 본격적인 모바일 앱 시대를 접어들게 되면서 액션스크립터로 전향한 이후에는 액션스크립트를 계속 병행하며,
자바스크립트(제이쿼리 & Library)와 HTML5를 무기로 자연스럽게 향후 IT 흐름의 대세에 합류하게 되었는데
이 자체가 정말로 큰 행운이라고 본다. 지금도 아직 배울게 산더미 같은 초보 개발자 이지만 우연스럽게도 항간에 이슈가 되고있는
"마흔, 프로그래머되기" 의 김웅남 씨의 일견과 일치하기에 다른누군가, 혹은 나 자신을 위해서 글을 인용하여 남겨두기로한다..
참고로 이 글은 마켓에서 "마흔, 프로그래머되기"를 다운받아보면 더욱 자세한 내용이 있으며, (글이 길지 않다 10분이면 읽는다.)
나의 경우 도저히 내가 할 수 없을것 같은 난이도의 프로젝트를 출중한 능력의 회사 선임분과 더불어 체계적으로 배울 기회가 제공되었고,
설상가상으로 프로젝트 기간이 딜레이되고 번복되어서, 이미 만들었던 플래시 이벤트 프로젝트를 새로 다시 만드는 일이 한번 있었는데
이게 정말 큰 도움이 되었다. (지금 보면 그 프로젝트의 버전1, 버전2의 구조나 동작방식 자체가 다르다.)
여전히 배우는 입장이지만 배울수 있는 환경 자체에 늘 감사하고, 그동안 비효율적으로 공부했던 방법에서 그냥 하나의 소설을
읽는것처럼 2개월 가량 AS3.0 책을 러프하게 두번정도 반복해서 본 것이 정말 큰 도움이 되었다.
이렇게 크게 두가지 부분이 정확히 김웅남씨의 사례와 일치했던 것 같다.
아래는 그 글의 앞부분만 인용한 원문이다.
(일일이 타이핑 하다보니 중복되거나, 약간의 문장은 다듬는 정도로 수정했다. 꼭 마켓에서 검색해서 읽어보기를 권장한다..)
마흔, 프로그래머되기
20대 부터 틈만 나면 프로그래밍 책을 보았지만 한번도 끝까지 제대로 읽어보지 못했다.
특히 C++의 경우 포인터에서 막혀 좌절이 빈번하고, 파이썬이나 자바로 계속 언어를 바꿔보지만 결과는 마찬가지..
"에휴, 내가 지금부터 프로그래밍 배워서 언제 프로그래머가 되겠느냐.. 이거 할 시간에 그냥 본업(기획, 디자인, 모션)이나
더 열심히 하는게 낫겠다.."
정말 이렇게 경험한 것이 수차례이고 주변 사람도 비슷할 것이다.
실패하는 프로세스는 다음과 같다.
1.새 책을 펼쳐 들고 의욕적으로 읽는다.
2.예제코드가 나오면 책을 보면서 일일이 타이핑하고 실행해본다.
3.실행이 잘되면 다음 진도를 나간다.
4.그런데 책을 읽을 수록 점점더 어려워 지고 제대로 타이핑 한 것 같은데 에러가 난다.
에러의 원인을 못 찾겠다. 찜찜 하지만 진도를 좀 더 나가본다.
5.새 코드가 나왔다. 타이핑하고 보니 무슨 내용인지 잘 모르겠다. 코드 양도 많고 오타가 자꾸 난다.
6.점점 더 모르겠다. 책 보고 그대로 따라 쳐도 자꾸만 에러가 난다.
7."내가 지금 뭘 하고있는거지... 프로그래밍은 너무 어려워. 내가 이제부터 프로그래밍 해서 언제 따라가겠어..
그냥 그 시간에 내껄 공부하자".
8.포기한다.
어떤분야에서건 어떤 계기를 만나 프로그래머로 변신하기까지 정말 많은 일들이 있었고, 이 분야에 대해서 전문가들이 제시한
좋은 학습 방법도 많이 소개되어있겠지만. 저의 경우 제가 몸으로 익힌 방식이 실제로 효과가 있었다는 점을 경험했기에,
이런방식도 있다는걸 알려드리고싶다.
1.책을 읽는다. 컴퓨터 책상 앞에서는 읽지않는다. 버스나 지하철, 커피숍 같은 데에서 읽는다.
2.읽다가 이해가 안되는 부분이 나오면, 잠시 생각해 보다가 그냥 계속 읽는다.
3.이해가 안 가도 읽는다. 그냥 끝까지 읽는다. 도저히 모르겠으면 그 부분은 눈으로 대충 훑어 보고 그냥 진도 나간다.
4.책을 끝까지 읽었다. 진도는 나갔는데 아직 잘 모르겠다.
5.책을 처음부터 다시 읽는다. 이번에도 눈과 머리로만 읽는다.
6.첫번째 읽었을때 보다는 이해가 잘 되는 편인데, 그래도 잘 이해가 안되는 부분이 많다. 그래도 읽는다.
끝까지 읽었다. 두 번 읽었다.
7.책을 처음부터 다시 읽는다. 이번에는 잘 읽힌다. 전에 이해 안 가던 것도 대충은 알 것 샅다. 그래도 모르는 부분이
있지만, 어쨌건 끝까지 읽는다.
8.끝까지 다 읽었다. 전보다 훨씬 빨리 읽었다. 이해 안가는 부분이 아직도 있지만, 그래도 어떤 내용이 책의 어느 부분에
적혀 있는지는 거의 다 알겠다. 아주 어려운 부분 말고는 대충 다 알 것 같다.
9.자, 이제 책없이 아주 간단한 프로그램을 하나 짜본다. 하다가 막히면 도저히 궁금증으로 가득차게 되면, 드디어 책을
펼쳐서 궁금한 부분을 찾아본다. 이미 책을 세 번 읽었기 때문에 내가 궁금해 하는 부분이 어디에 설명되어 있는지 금세
찾을 수 있다.
10.책을 보면 다시 머리가 환해진다. '에이.. 간단한 거였는데..'
11.이런식으로 간단한 프로그램을 자기 힘으로 짜 보면서, 두번째 프로그램은 약간의 난이도를 더하여 새로 다시 짜본다.
12.세번째는 이제 정말 그럴싸한 프로그램을 만들어 본다. 예를 들어 "화면에 유명한 화가의 그림을 띄워 보여주고,
화가의 이름이나 그림의 제목을 맞추는 프로그램을 만들어 보자. 문제는 총 30개중에서 랜덤으로 10 문제가 나오고,
문제를 다 맞추면 점수를 보여 준다."
이정도는 앞에서 코드를 가지고 노는 수준이 아닌, 나름 하나의 완벽한 퀴즈 게임이다. 가지고 있는 지식을 총 동원하고
모르면 책을 뒤져가면서 어떻게 하든 스스로의 힘으로 짜본다. 처음에는 막막하지만 신기하게 하나씩 해결된다.
그 다음엔 무엇을 할까? 좀 더 어려운 프로그램에 도전? 절대 그러면 안된다.
이단계가 매우 중요하다 프로그래밍 실력이 일취월장한 건 바로 이 단계에 달렸다.
그림 퀴즈 프로그램을 처름부터 다시 새로 짜보는것. 그것도 무려 4번이나.
첫번째 완성했을때의 퀴즈 프로그램은 잘돌아 가는것 처럼 보인다. 그러나 코드를 보면 엉망 진창이다.
무엇보다 코드의 양이 엄청나게 많다. 코드를 짜기전에 모르는 게 너무 많았고, 짜면서 새로운 것을 많이 배워서 실력이 늘은 부분도
있어서 허술한 부분이 많다.
이제 앞에서 짠 코드는 무시하고 새로 처음부터 다시 짠다. (물론 그림이랑 퀴즈 데이터는 재활용)
세번째 다시 짠다. 전보다 훨씬 바르게 짤 수 있다. 코드의 양은 첫 번 째에 비해 획기적으로 줄어들어 잇다.
네번째 짠다. 정말 많은 것을 배운다. 버그 찾기, 반복적 코드 사용, 프로그램의 자신감...
코딩은 이런 식으로 익혀 나가면 된다. 목표를 정하고, 내가 아는 지식과 참고 서적, 인터넷을 뒤져가며 목표를 달성해 나가는 것이다.
병행해야 할 것은 컴퓨터 앞에서는 실력을 키워가되, 버스,커피숍,지하철.. 에서는 책을 다시 읽어야한다.
이제 네번, 다섯번 읽으면 정말로 책이 머리에 쏙쏙 들어온다. 컴퓨터 앞에서 직접 내 힘으로 코딩을 하고 있기 때문에 머릿속에
문제 의식이 가득차있고 이전에는 그냥 책만 읽었을 뿐인데, 이제는 무릎을 탁 치면서 읽게된다. "아.. 여기에 이런 내용이 있었구나.."
"이렇게 짜면 좋았을 텐데"...
입문 그 이후
이후 저자의 말에 따르면, 어떤 프로그램을 엄청난 집중력으로 단 기간에 짜 보는 상황으로 실력이 늘어난 계기가 되었다고 하며,
우연히 같이 일하게된 고수의 코드를 들여다보는 것으로 더더욱 크게 발전하였다고 되어있다.
... 이후 저자는 코로나SDK와 유니티3D를 개발하고있다.
'■ 개발관련 ■ > IT 기술정보' 카테고리의 다른 글
visualStudio - 응용프로그램 디버깅 해제 (just in time) (0) | 2013.11.22 |
---|---|
All-IP (0) | 2013.10.16 |
2013년 스마트폰 OS 점유율 (0) | 2013.10.15 |
놀라운 힘 - 빌 게이츠, 마크 주커버그, 드류 휴스턴 (0) | 2013.10.13 |
프로그래밍 언어순위 - 2013년 10월 (0) | 2013.10.13 |