Photo by gfairchild



읽기 전에 추천 한 번!

블로거에겐 큰 힘입니다



Big Data에 대한 열기가 뜨겁다. 개인적으로도 관심이 많은 분야이다. 여러 가치사슬(Value Chain) 이를테면, 제조, 구매, 판매, 마케팅, 관리 등 - 상의 기업데이터를 분석해서 기업의 가치를 극대화하는 데 필요한 의미있는 정보를 찾아내고 활용하는데특히 관심이 있다. 그럴려면, 기업의 정보에 접근할 권한이 있어야 하고, 그 정보를 활용에서 유의미한 정보를 생산해 내는 능력이 필요하다. 데이터를 수집하고, 가공하고, 분석해서 의미있는 정보를 만들어내기 위해서 필수적으로 몇 가지 프로그래밍 언어를 배울 필요가 있다. 이를테면 통계 프로그래밍 언어인 R, 강력한 스크립트 언어인 Python같은 것들 이다. 프로그래밍 경험은 대학때 기초 교양과목으로 수강한 C언어, 엑셀을 좀 더 잘 다루기 위해 공부했던 VBA, 회사 ERP 시스템에 있는 데이터를 나의 입맛에 맞게 뽑아내려고 공부했던 Oracle SQL등이 있다. 그런데 대부분 10년 넘게 거의 사용한 적이 없다. Python을 지난 몇 주간 공부해 보니, 분명 쉽고 강력한 언어이긴 하다. 그런데 막상 그걸로 프로그램을 짜보려고 하니 잘안된다. 그러다 도대체 '프로그래밍은 어떻게 공부해야 하는건가?'라는 생각에 책도 사보고 웹서핑도 해봤다. 중요한 내용들을 정리해본다.

코딩하지 말고 읽어라

책 사모으는 걸 좋아한다. Python을 공부하기로 마음먹고 교보문고 사이트에서 파이썬과 관련한 책을 5권 정도 샀다. 그리고 한 권씩 컴퓨터 앞에 앉아 독서대를 갖다 놓고 읽다가 바로 코딩해보고, 읽다가 코딩해보고, 읽다가 코딩하기를 반복했다. 이렇게 지난 몇 주간 3권정도를 독파했다. 그런데, 책을 보지 않고 코딩하려니 잘 안된다. 책은 읽었지만 머리속에 정리없이 오로지 코딩 그 자체에만 몰두 했기 때문이리라. 웹서핑 중에 발견한 대부분의 프로그래밍 방법론에는 '코딩하지 말고 읽어라'라고 쓰여 있었다. 가급적이면 프로그래밍에 필요한 논리, 구조, 문법을 이해하면서 읽어나가야 한다. 처음에는 힘들겠지만 인내하며 끝을 보는 습관을 들여야 한다. 3번 정도 읽다보면 공부하는 프로그래밍 언어에 대한 전반적인 체계가 잡힌다.

아주 큰 프로그램을 짜보라

이제 프로그램을 짜볼 차례다. 처음에는 작게 시작 할 수 밖에 없다. 말을 배웠다고 해서 모두가 뛰어난 작가가 되는 것은 아니지 않는가? 하지만 절대로 아는 범위내에서만 문제를 해결하려고 하면 안된다. 한계를 극복해야 한다. 지금 내 한계가 100줄짜리면 1,000줄짜리 코드에 도전해 보는 것이다. 100줄짜리 코드와 1,000줄짜리 코드는 프로그램의 그 안의 논리와 복잡도가 말도 안되게 차이가 난다. 그렇지만 그걸 해결하고 나면 100줄짜리 코드는 우스워 질 것이다. 복잡한 문제를 얼마나 잘 쪼개어 해결하느냐가 관건이다. 괜히 큰 프로그램에 도전했다가 끝도 못보고 포기하게 되면 어쩌냐고? 누가 시켜서 독학하는게 아니지 않는가? 하고 싶어서 하는 것이 아닌가? 그 과정을 통해 배우게 되는 것이 분명 충분히 있다.

Googling 하라

프로그래밍을 공부하기 위해 책을 구입해서 읽고, 새로운 프로그램을 짜보려고 노력하다보면 불가피하게 아주 사소한 문제에서 막혀서 더이상 진행하지 못하는 경우가 생긴다. 나는 Python 3.3버전으로 처음 파이썬을 배우기 시작했는데, Html Parsing 모듈인 BeautifulSoup을 설치하는데 완전 애를 먹었다. 코드가 다 파이썬 2버전으로 작성되어 있었던 것이다. 이걸 어떻게 해결할까 생각하면서 Googling을 하니 이미 나와 동일한 문제로 고생한 사람들의 질문과 답변이 이미 수없이 쌓여 있었다. 그렇다. 내가 겪게 되는 대부분의 문제는 이미 누군가 벌써 겪은 문제일 수 있고, 그 문제에 대한 해답은 웹의 어딘가에 분명히 존재한다. 믿어라. 구글이 올바른 대안이다. 네이버는 아니다. 영어를 읽고 이해할 수 있어야 한다. 웹상의 정보의 97%는 영어로 만들어져 있다고 하지 않는가? 이미 있는 정보를 활용할 수 있는 능력을 키워야 한다.

배포하고, 공유하라

뭔가 새로운 프로그램을 짜게 되면 배포하고 공유하라. 만약, 그것이 어떤 문제를 해결하는데 기존에 없던 새로운 방식이라면 사람들은 그것을 써볼 것이다. 그리고 피드백을 줄 것이다. 예상치 못한 버그들, 기능개선이 필요한 부분 등등. 그것이 무엇이든 거기에 신경써야 한다. 결국 그 문제를 해결하기 위해 또 공부하고 수정하고 다시 배포하다보면 프로그래밍 실력은 날이 갈수록 높아지게 될 것이다.

나는 앞으로 다른 프로그래밍 언어 - R, SQL, HTML, CSS 등- 들도 위와 같은 방식으로 공부해 나갈 것이다. 최고의 데이터 분석 전문가가 되는 날을 그날을 생각하며... 


프로그래밍 공부방법론에 관해 괜찮은 글이 있어 링크해 본다.

프로그래밍 언어배우기의 달인(http://agile.egloos.com/5664879)

프로그래밍 언어를 배우는 법(http://www.wikihow.com/Learn-a-Programming-Language)



댓글을 달아 주세요

  1. 윤노일

    도움이 되는 글 이었습니다. 감사합니다.

    2015.11.26 11:59 신고 Address Modify/Delete Reply
  2. 쿠루쿠루

    잘 읽었습니다. ㅠㅠ

    제가 준비할려고 하는 블로그랑 너무 비슷해서 놀랐고

    저랑 비슷한 취향에 또 한번 놀랐고

    저보다 더욱 깔끔히 글쓰시는 것 같아서 더 더욱 놀랐습니다.

    마지막으로 쓴 글들을 보니 저와 비슷한 일을 하시는 분 같아 더욱 놀랐습니다.

    글 잘 읽었습니다.

    홈피가 너무 마음에 듭니다. 깔끔하신 성격이신것 같네요...(이건 저와 너무 달라서..놀랐습니다. ;^) )


    2015.12.10 17:39 신고 Address Modify/Delete Reply
  3. 이담

    010 9954 9430 얘기 나누고 싶습니다.. (배움에 관해서..)

    2016.03.17 11:22 신고 Address Modify/Delete Reply