brunch

You can make anything
by writing

C.S.Lewis

by BranU May 11. 2019

마케터의 프로그래밍 (1)

파이썬

이런걸 선택적 기억상실이라고 해야하나? computer science를 전공했지만 프로그래밍했던 기억이 잘 안난다. 프로그래밍은 하면 할수록 싫었다. 싫어하면서도 내가 왜 싫어하는지 깨닫지는 못했다. 음,, 싫다는 표현은 너무 부정적이니 내가 다른 것을 하면 더 잘 맞겠다란 생각을 했다는 것으로 순화해보겠다.


결정적으로 이런 생각이 든 건 3학년 2학기 졸업작품을 준비하면서였다. 그 당시 페이스북 음악 추천 페이지를 운영하였는데 그 페이지가 꽤 잘 됐었다. 6개월 만에 4만 명의 사람들이 모일 정도로 잘됐다. 내 또래 혹은 10대 친구들이 좋아할 만한 옛날 노래들을 추천해주고 메시지로 온 사연들과 관련된 신청곡을 틀어주었다. 그리고 이런 나의 흥미 덕분에 당시 졸업작품으로도 ‘음악 추천 애플리케이션’을 만들 수 있었다.


그런데 졸업작품을 진행하면 할수록 애플리케이션 개발보단 기획과 디자인이 더 즐거웠다. 기획과 디자인을 할 때는 밤을 새도 피곤한 걸 모르겠더라. 그래서 그때를 기점으로 내 미래를 개발자에 한정해서 볼 것이 아니라 넓게 보자 생각했던 것 같다. 또, 해커톤이라는 창업 캠프에 참여했었는데 당시 만났던 디자인 파트를 담당하던 언니가 내게 아이디어 뱅크라며 칭찬을 많이 해줬던 것 또한 나에겐 큰 영향을 미쳤다. 물론 우리 팀은 꼴찌를 했지만.. (나는 아이디어만 좋았다.)


그렇게 겨우겨우 탈컴공을 했는데 이번에 다시 프로그래밍을 하게 된 것이다. 그것도 데이터 분석을 위한 프로그래밍. 처음에는 싫었다. 첫째는 프로그래밍을 싫어했던 기억이 있었기 때문이고 두 번째는 이미 내가 마지막 주 목요일마다 회사에서 진행하는 프로젝트도 있었기에 버거웠다. 그래서 처음에는 방어적인 태도를 취했다. 그렇지만 커리어를 업그레이드하기 위해서 또 다른 프로그래밍은 내가 넘어야 하는 산이었다.


마케팅은 데이터로 말한다. 마케팅 부서는 주로 돈을 쓰는 부서이기에 돈을 어떻게 쓸지를 '잘' 소명하는 것이 중요하다. 그렇기에 그 소명을 위해서는 근거 데이터가 있어야 한다. 3년간 기획안을 내면서 팀장님에게 가장 많이 들었던 질문도 이 기획안이 5천만원짜리를 쓸만한 기획안이냐는 것이었다. (그 당시 기획안을 제대로 못써서 그렇다. 아직도 기획안을 잘 쓰진 못한다. 잘 쓰려고 노력할 뿐.)


마케터에겐 데이터를 분석하는 일은 중요하다.

그래서 이번 수업을 열심히 들기로 결심했다. 올해 월별 트렌드 리포트를 발행하는 업무도 추가되었는데 트렌드 속에서 데이터 기반으로 상품 방향성도 함께 제시한다면 나의 가치는 올라갈 수밖에 없다는 생각이 들었다. 이번 프로그래밍 수업을 잘 듣고 잘만 활용한다면 수치로도 정확히 말할 수 있게 된다.


프로그래밍을 멀리 했던 때를 떠올려보면  내가 왜 프로그래밍을 해야 하는지 '목적'이 없었던 것 같다. 흥미도 없는데 왜 해야 하는지에 대한 목적도 없으니 당연히 멀어졌던 것 같다. 이제 목적을 찾았으니 열심히 할 수 있을 것 같다.


이번 주 목요일에 배운 파이썬 내용에 대해 정리해보았다. 데이터 분석에 관심 있는 마케터라면 해당 글이 도움이 많이 될 것이다. 앞으로 16주 과정의 배움을 브런치에 연재할 예정이니 관심 있게 지켜봐 주시면 감사하겠다.


#why python


데이터 분석을 하는데 왜 우리가, 왜 마케터가 파이썬을 공부해야 하나?

파이썬은 2018년 기준 가장 많이 사용되는 프로그래밍 언어이고, job trend에서도 python가능자를 더 필요로 한다. 가장 인기 좋은 프로그래밍 언어 1위 역시 python(31.2%)이며 2위가 java(19.6%), 3위가 c++(9.8%), 4위는 c#(7.4%)이라고 한다.


python으로 만들어진 프로그램이 많은데 그중 우리가 자주 쓰는 인스타그램도 있다. 구글 소프트웨어 반이상이 python으로 만들어졌다. 특히 2016년 엄청난 이슈를 불러일으켰던 알파고도 python으로 만들어졌다.


2016년엔 데이터 분석을 위해 주로 쓰인 언어가 R이었지만 지금은 파이썬을 더 많이 쓴다. R을 시작한 사람 중 python으로 갈아탄 사람은 많지만 python을 쓰다가 R로 간 사람은 거의 없다고 한다. 이미 R을 이긴 지 오래란다.  AI 개발 시에 가장 적합한 5가지 프로그래밍 언어에서도 1위가 python이다. (2위 자바와 그 친구들 3위 c/c++ 4위 자바스크립트 5위 R)


#프로그래밍 언어

범용 : 자바 / C / C++ / Basic / Python
웹/스크립 : PHP / Javascript / Python / Perl(펄) / Ruby(루비)
데이터베이스 : SQL / SPARQL / Python / Scala(스칼라) / Excel
데이터 분석 : SPSS / SAS / R / Python / Excel

여기서도 볼 수 있듯 파이썬은 어디에나 속한다.


#파이썬이란

파이썬은 네덜란드 출신의 개발자 휘도 판 로썸이 개발했다.  


네이버 상세 검색

휘도 판 로썸은 1989년 크리스마스 주에, 연구실이 닫혀있어서 심심한 김에 만들었다. 농담이 아니고 반 로섬을 유럽에서는 애덤 스미스에 비견할 정도다. 프로그래밍 계의 경제학자라나... 심심해서 만들었다는 것은 파이썬 서문과 마이크로소프트웨어와 한 인터뷰를 보면 알겠지만 사실이다. 기술자들은 심심할 때 항상 걸작이 나온다. 2000년에는 Python 2, 2008년에는 Python 3가 나왔다. 파이썬이라는 이름은 휘도가 즐겨보던 영국의 6인조 코미디 그룹 몬티 파이선에서 따왔다고 한다.

문법이 매우 쉬워서 초보자들이 처음 프로그래밍을 배울 때 추천되는 언어이다. 오죽하면 Python의 별명이 '실행할 수 있는 의사 코드(Executable pseudocode)'일 정도. 실제로도 미국 공과 대학교에서 컴퓨터 프로그래밍 입문 수업으로 Python을 많이 사용하기도 한다. 학습용으로 좋은 언어인 동시에 실사용률과 생산성도 높은 강력한 언어인 셈. 즉 접근성과 응용력이 좋다는 게 굉장히 중요하다. Python의 이런 두 마리 토끼는 교육용 프로그래밍 언어인 BASIC이 망했어요 루트를 타게 된 결정적인 이유이다. 농담이 아니고 파이썬이 교육용 언어로 자리 잡으면서 베이직은 마이크로소프트에 의해 산소호흡기를 달고 연명만 하는 신세가 됐다. MS가 없으면 BASIC은... 안습.


#파이썬의 특징


Easy to learn

광범위하게 사용하고 있고 초보자들도 쉽게 배울 수 있는 프로그래밍 언어. 다른 프로그래밍 언어보다 문법이 간단하면서도 엄격하지 않음

 e.g.(for example) 변수를 사용하기 전에 별도의 자료형 선언을 하지 않아도 됨. 문법 표현이 매우 간결하기 때문에 프로그래밍 경험이 전혀 없어도 아주 짧은 기간 내 파이썬 문법을 마스터할 수 있음


 e.g. 명령문을 구분할 때 중괄호('{', '}') 대신 들여 쓰기(indentation)를 사용. 사람이 글을 쓸 때 문단을 구분하는 것처럼 들여 쓰기를 사용해서 명령문 블록을 구분하기 때문에 글을 써 내려가듯이 프로그램 논리를 자연스럽게 표현할 수 있다.


Very expressive language

같은 직업을 하는 프로그램을 c나 java로 작성할 때보다 파이썬으로 작성할 경우 훨씬 짧은 줄로 작성 가능


Cross platform language(크로스 플랫폼 언어)

윈도우즈, 맥 OS, 리눅스, 유닉스 등 다양한 운영체제에서 실행 가능


Interpreted language(해석형 언어)

high level language로 작성한 소스코드(원시 코드)를 기계어로 변환하는 컴파일 과정 없이 바로 실행 가능(no compilation and linking) java의 경우 해석형 언어지만 컴파일 과정이 필요함


Interactive language(대화형 언어)

코드를 대화하듯 한 줄 입력하고 실행한 후 결과를 바로 확인할 수 있기 때문에 매우 편리. 언어가 제공하는 다양한 기능들을 실험적으로 사용하고 테스트해 볼 수 있음

대화형 모드 예시

>>> 2+2  ← 시용자가 입력 (input)

4 ← 컴퓨터가 대답 (output)


다양한 고급 프로그래밍 기능 제공

1. 숫자(정수, 실수, 복소수 등) 또는 문자열(ASCII, Unicode) 등 다양한 내장(built-in) 기본 자료형과 리스트, 튜플, 사전과 같은 내장 복합 자료형을 지원

2. 클래스, 다중 상속(multiple inheritance), 모듈, 패키지, 예외처리(exception handling), 자동 메모리 관리 등을 지원

3. 생성자(generator), 리스트/세트/딕셔너리 축약 등 강력한 고급 프로그래밍 기능 지원


강력하고 풍부한 라이브러리(library) 제공

: 개발 속도가 빠름

프로그래밍에 자주 사용되는 다양한 기능이 장착된 표준 라이브러리(standard library)를 기본적으로 제공

※ 라이브러리(library)

다양한 기능을 제공하는 함수나 모듈을 프로그램에서 쉽게 불러 사용할 수 있게 미리 작성해서 컴파일해 놓은 코드(모듈)들의 모음 e.g. 웹 서버 연결, 정규표현식(regular expression)을 통한 문자 검색, 파일 읽고 쓰기 등


기본으로 제공되는 라이브러리뿐만 아니라, 개인이나 단체에서 만들어서 배포하는 수천 개가 넘는 다양하면서도 기능이 풍부한 라이브러리가 존재하면 필요시 언제든 사용 가능

pypi.python.org/pypi


엄청난 사용자 커뮤니티

- 대규모의 사용자 커뮤니티 존재

- 도움을 손쉽게 받을 수 있을 뿐 아니라 참고자료도 풍부

e.g., 스택오버플로우(http://stackoverflow.com/)에서 파이썬 관련 많은 도움을 받을 수 있음


뛰어난 확장성

C, C++에서 작성된 모듈을 불러와서 사용하는 것이 가능

모듈 : 미리 작성되어 편리하게 가져다 쓸 수 있는 코드를 뜻하며 여러 개의 모듈이 모이면 라이브러리가 됨

프로그래밍 가능한 인터페이스를 제공하기 때문에 다른 프로그래밍 언어에서 불러 사용하는 것이 가능


윈도우 운영체제에서 명령어 셀은 ‘명령 프롬프트’다. 명령 프롬프트 실행파일 이름은 cmd.exe이고, 윈도우에서 기본으로 제공되는 프로그램이다. 명령어는 MS-DOS와 호환되기 때문에 도스를 사용해본 경험이 있다면 ‘명령 프롬프트’를 사용하는 데 큰 문제가 없을 것이다. 맥OS운영체제에서 명령어 셀은 ‘터미널’이다. 터미널은 맥OS에서 기본으로 제공되는 프로그램이다. 명령어는 리눅스와 호환되기 때문에 리눅스를 사용해본 경험이 있다면 ‘터미널’을 사용하는데 큰 문제가 없을 것이다.



매거진의 이전글 마케터의 프로그래밍(0)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari