개발자한테 무시받지 않는 PM 되는법
나는 대기업(스러운 곳)의 경영기획팀의 기획자로 5년간 일하다가 작년 초 회사를 그만두고 스타트업을 하겠다고 나왔다 (이거 뭐 써먹을데가 있어야지). 흔히 스타트업에서 '기획'한다고 하면 그건 대부분 '모바일/웹 서비스 기획자'를 의미한다. 이들은 개발자, 디자이너, 마케터들 사이에 새우 등 터지듯 일하는 경우가 많기 때문에 프로그래밍 배경지식이 없으면 특히 개발자들에게 x무시 당하기 쉽다. 이 글에서는 나같은 문돌이가 짜투리시간 약 3-4개월만 투자하면 초보 수준의 웹사이트는 개발 가능할 정도의 프로그래밍 스킬을 익혀서 개발자랑 어느정도 대화가 되는 PM이 되는 법에 대해 논하고자 한다. 참고로, 책보고 공부하는거 질색인 사람들에게 강추한다.
지금부터 내가 설명하려는 '문돌이의 프로그래밍공부 방법론'은 어디까지나 다음에 해당하는 사람들에게 어울리는 방법임을 미리 밝혀둔다.
1. 나는 학원같은거 다니면 적어도 반 이상은 완주할 정도의 인내력이 있다.
2. 기본적인 영어 리스닝 실력은 있다.
3. 내 목표는 개발자 되는게 아니라 개발자랑 일하는거다 (-> 진짜 프로그래머가 되는법은 절대로 내가 한 방법론으로 해서는 안된다.. 이건 그러니까.. 어디까지나 야매)
생활코딩은 이제 너무 유명해져서 많은 문돌이들이 코딩 공부하는 성역이 되어버렸다. 그런데 아이러니한건 여기를 아는 사람은 많은데 여기서 코스 하나를 완주했다는 사람 보기는 힘들다는거. 생활코딩 사이트에 보면 생활코딩 작심 40시간 라이브 가 있는데 그야말로 40시간동안 웹서비스의 방대한 영역을 전부 건드리는 무지막지한 코스로서, 아무리 이고잉님이 쉽게 리드한다지만 문돌이가 처음부터 저걸 다 따라하는건 무리가 있다고 생각한다. 하지만, 이고잉님이 프로그래밍의 세계에 대해 전반적인 그림을 아주 잘 그려주시기 때문에 한번쯤 완주하고 나면 앞으로 내가 뭘 공부해야 하겠구나 하고 감 잡는데 큰 도움이 된다. 여기서 명심할 것은 이걸 그냥 가벼운 마음으로 시청만 하라는거다. 설치하라는거 다 설치하고, 코딩하라는거 다 코딩하면서 너무 진지하게 보지 말고, 그냥 시청만 하면서 프로그래밍 세계에 대해 맛만 보는거다. 왜냐면 완전 초보자가 AWS 트고, 리눅스, 우분투 설치하고, 깃허브에 서브라임까지 생소한 툴들 만지작하다 보면 겁부터 먹고 그냥 접게되는 경우가 많기 때문이다.
요즘 온라인에서 프로그래밍 배우는 사이트가 정말 많아졌다. 유데미, 유다시티, 칸, 코세라, 린다닷컴 등등 내가 아는 곳만 해도 10군데는 된다. 개인적으로 처음 프로그래밍 공부하는거면 왠만하면 한글로 배우지 말고 영어로 배우는 것을 추천한다. 객체 지향, 변수, 매개변수, 상수, 선택자, 제어문... 등등 한글로 배우면 이런 한문어로 된 단어들로 가르치는데 솔직히 더 어렵기도 하고 어차피 나중에 코딩하다 막히면 가장 많이 찾아볼 사이트가 스택오버플로우일텐데 저거 다시 영어로 찾아보느니 아예 처음부터 저걸 object-oriented, variable, parameter, constant, control statement... 요런식으로 인식해 버리는게 더 낫기 때문이다.
해외 온라인 사이트는 많은 사람들이 유다시티를 얘기하는데 나는 유데미를 추천한다. 이유는 간단하다. 우리의 목표는 프로그래머로 취직하는게 아니라 프로그래머랑 일을 같이 하는게 목표이기 때문이다. 유다시티는 진짜 프로그래머 취업을 목표하는 사람들을 위해 디자인되었기 때문에 일단 수강료가 비싸고, 퀴즈도 엄청 풀어야 하고, 출석률도 체크하고, 아무튼 엄청 까다로운데 비해 유데미는 내가 필요한 특정 스킬들만 골라서 퀴즈같은거 없이 (있어도 점수체크 없음) 빠르게 수강 가능하고, 수업료도 저렴한 편이고, 무엇보다도 강사들이 대부분 실제 현업 종사자들이어서 가르치는 내용이 매우 실무적이다. (유다시티는 대학 백그라운드에 좀 교수같은 느낌)
아까 1단계의 생활코딩 40시간 라이브를 전부 들었다면, 이제 프로그래밍의 세계가 대략 클라이언트-서버 프로그래밍의 두 영역으로 구분될 수 있고 (하드웨어, OS 이런거 제외), 프로그래밍 언어가 뭔지 (Ruby, Python, PHP 이런거), 프레임워크가 뭔지 (Ruby on Rails, Django, CodeIgnitor 이런거) 정도는 감이 생겼을 거다. (저게 각각 뭔지는 몰라도 되고 그냥 카테고리화만 할 줄 알아도 된다는 뜻임)
이 글에서는 간단하게 프로그래밍 언어와 프레임워크의 차이점만 짚고 넘어가 보자. 프로그래밍 언어는 말그대로 소프트웨어를 작성하기위해 필요한 언어규약을 의마한다. 즉 내가 미국사람과 대화를 하려면 영어라는 언어가 필요하듯이 어떤 웹서비스를 통해 사용자와 통신하려면 수 많은 프로그래밍 언어들 중 내가 필요한거를 사용한다는것으로 이해하면 편하다. 흔히 고급언어-저급언어 이런말이 있는데 뭐 고급언어가 더 좋은거고 저급언어가 나쁜거고 이런말이 아니고, 최대한 사람이 사용하는 언어와 가까우면 고급언어라 부른다. 반대로 컴퓨터가 CPU 레벨에서 비트단위로 직접 사용하는 언어는 저급언어라고 부르고 기계어, 어셈블리어 뭐 이런걸 말하는데 이런건 지금 몰라도 된다. (생활코딩에서 이고잉님이 빙산의 일각 그림으로 아주 명쾌하게 설명해 주신다) 즉, 우리 초보레벨에서 프로그래밍 언어라고 하면 Ruby, Python, PHP, Java, JavaScript, C, C++, HTML, CSS 요런거 말하는거라고 이해하면 되고, 저기서 HTML, CSS는 웹브라우저에서 지금 당신이 보고있는 페이지 띄워주기 위해 필요한 언어이다. 즉, HTML, CSS는 웹페이지 코딩하려면 반드시 들어가는 내용이고, 좀 현란한 인터렉션도 넣으려면 JavaScript도 이 범주에 필요할 수 있고, 나머지 Ruby, Python, PHP, Java, C들 중에서 당신이 기본 베이스로 할 프로그래밍 언어를 선택하면 된다는 뜻이다. 정리하면, |HTML, CSS, JavaScript (선택) | + |기본 베이스로 할 언어 한개| 요렇게 공부를 해야 한다는 뜻이다. 프레임워크는 저기 언급한 프로그래밍 언어들로 프로그래밍을 쉽게 할 수 있도록 필요한 뼈대를 미리 설계해 놓은것, 좀더 어려운 말로는 재사용이 가능한 클래스들과 그 관계들을 미리 정의해 놓은 패키치같은거라고 이해하면 되는데, 각 기본 베이스로 선택하는 언어별로 프레임워크가 정해져 있다. 예를들어 Ruby 언어를 공부하면 프레임워크는 Ruby on Rails, Python을 공부할거면 프레임워크는 Django를 같이 공부하는 식이다.
정리하면, 생활코딩 강의로 그냥 저 전반적인 세계에 대해서는 맛만 보고 당신은 그냥 Ruby와 Ruby on Rails를 선택해서 배우도록 하자. 왜 Ruby on Rails로 공부해야 하는가에 대해서는 여러가지 내 나름의 이유가 있는데 첫째, 컨벤션이 매우 엄격해서 비록 처음에는 러닝커브가 조금 있는 편이지만 초보자가 실수할 여지를 최대한 줄여준다. 예를들어 내가 써야하는 구문이 살짝만 틀려도, 명령어 하나의 대소문자만 틀려도 레일즈는 아예 페이지 전체를 보여주지 않는다. 이게 장점일수도 단점일수도 있겠지만 초보자가 어느정도 돌아가는 웹사이트 만들기 위해서 말도안되게 코딩한게 지저분하게 돌아가는 웹사이트보다는 좀 오래걸리지만 한번 만들고 나면 제대로 돌아가는 웹사이트가 운영하는데 더 유리하겠다라는 내 개인적 의견이다. 둘째, 레일즈에는 Ruby Gem이라고 불리는 아주 강력한 서드파티 라이브러리가 있다. 물론 대부분의 프로그래밍 언어에서 서드파티 라이브러리는 다 있지만, 루비젬이 강력한 이유는 앞서 얘기한 첫번째와 유사하다. 다른 언어의 라이브러리는 초보자가 그대로 가져다 쓰면 분명 에러 백퍼일것이다. 내 상황에 맞게 어느정도 변형할 수 있는 수준의 프로그래밍 능력이 있어야 할텐데 문돌이 초보자에게 그걸 기대하긴 어렵다. 반면 루비젬은 (전부 다 그렇진 않지만) 진짜 옛날 MS도스 시절 디스크 갔다 꼽고 인스톨 클릭하면 알아서 프로그램 깔아주던 느낌으로 젬파일을 인스톨하면 대부분의 라이브러리가 알아서 장착된다.
루비를 선택해야 하는 마지막 이유는 (또 가장 중요한 이유는) 실제 웹사이트를 Deploy하는데 있어서 아무런 지식이 필요 없이 가능하다는데에 있다. 당신의 컴퓨터에서 코딩한 웹페이지들을 실제로 유저가 사용하기 위해서는 크게 다음 3가지가 필요하다. 1/서버 - 당신이 만든 웹페이지들을 어딘가에 가져다 놔야 유저가 찾아올수 있다. 당신 컴퓨터로 유저가 직접 접속할 순 없지 않은가. 2/도메인 - 당신 집에 유저가 놀러오려면 집주소가 필요한것 처럼, 당신이 올려놓은 웹페이지를 호출하기 위해서 필요한 주소같은 거다. 3/Deploy (배포) - 위 준비된 내용들을 실제 서버에 설치하고 유저가 찾아올 수 있게 만들어주는 일. 이 3가지 영역은 보통 백엔드라고 부르고 아마존 클라우드 서버니 하는게 다 저거 매니징하기 위해서 활용하는 서비스 이다. 아무튼, 이 영역은 나같은 평범한 문돌이에게 넘사벽의 영역이다. 괜히 배우려고 낑낑댈 필요도 없다. 레일즈를 배우면 나중에 디플로이할때 '헤로쿠'라는 서비스를 활용할 수 있는데 (물론 다른 언어도 가능하지만 쓱 읽어보면 레일즈로 하는게 젤 편해보임) 저기 웹사이트에서 시키는 대로 코드 복붙하고 명령어 몇번 치면 디플로이가 정말 마법처럼 이루어지고 덤으로 공짜 도메인까지 준다!! (물론 일정 트래픽 이하에는 서버비도 공짜) 난 이 3번째 이유만으로도 초보자들이 첫 배우는 프로그래밍 언어로 루비만큼 강력한게 없다고 생각한다.
서론이 너무 길었다.. 아무튼 결론은 아까 말한 유데미 사이트에서 Ruby on Rails로 웹사이트 만들기 프로그램을 찾아서 공부하라는 말을 하려고 이 긴 설명을 한 거다. 유데미에서 레일즈로 웹사이트 만드는 코스 찾아보면 한 20개는 넘게 검색되는데, 다음 기준에 부합하는 내용의 코스를 선택하도록 한다.
1. Bootcamp가 제목에 있는 코스 - 부트캠프라고 명시한 코스는 대부분 웹서비스 하나를 실제 서버에까지 올려서 완전하게 구현하는 코스를 말한다.
2. Ruby on Rails를 활용하는 코스 - 각 코스 실라부스에서 Ruby on Rails를 활용하는지 확인해 본다.
3. 레이팅이 적어도 4.5 이상, 별점 준 학생수가 최소 200 이상인 코스를 선택한다.
참고로 내가 들었던 과정은 The Complete Web Developer Bootcamp라는 코스인데, 이미 1년 넘은 과정이기 때문에 이걸 듣지 말고, 그냥 이 코스의 실라부스를 참고해서 유사한 최신 코스를 찾아서 완주하길 바란다. 보통 2-3달 코스로 디자인 되어 있는데 하루에 1시간정도씩만 투자하면 2달이면 완주 가능하도록 되어있다.
부트스트랩이란 아까 잠시 짚고 넘어간 HTML, CSS등의 웹페이지를 구현하는 언어를 위한 프레임워크이다. 사실 HTML, CSS도 초보자가 자유자재로 내가 구상한대로 화면에 딱 띄우도록 코딩하는건 매우매우 어렵다. 심지어 버튼하나 중앙정렬 하는것도 쉽지 않다. 부트스트랩은 이런 일들을 마법같이 쉽게 해주는, 그리고 모바일 반응형 구현도 코딩 몇줄로 가능하게 해주는 프레임워크이다. 아마도 당신이 선택할 유데미 코스에서 부트스트랩 활용하는 법이 포함되어 있을 듯 한데, 거기서는 정말 기본적인 내용만 훑어볼게 뻔하니 1주일정도 투자해서 부트스트랩을 제대로 익히고 넘어가도록 하자. 부트스트랩 사용법은 유데미에서 저렴한 코스를 하나 찾아서 수강하는것도 좋은 방법이고 그리 어렵지 않으니 부트스트랩 공식 웹사이트에서 필요한 내용만 골라서 본인의 웹사이트에 이것저것 적용해보며 익히는것도 좋다.
여기까지 왔으면 당신은 이미 웹서비스에 관해서는 개발자랑 어느정도 대화는 되는 수준이 되어있을 것이다. 하지만, 여기까지 왔는데 실제로 내가 직접 코딩해서 서버에 디플로이까지 해 본 사이트 하나 정도는 있어야 하지 않겠나? 하지만 아무리 유데미 코스 하나 들었다고 당장 멋진 포트폴리오 웹사이트 만드는게 그리 쉽지는 않을 것이다. 이 단계를 아주 쉽게 해주는 사이트가 하나 있다. 바로 부트스트랩에서 제공하는 연습용 웹페이지인 Start Bootstrap이다.
여기 가면 아주 잘 디자인된 다양한 종류의 부트스트랩 기반 웹사이트 코딩 파일들을 통째로 다운받을 수 있다. 본인이 도전해 보고 싶은 스타일 몇개를 골라서 다운받은 후에 index.html과 연결된 css파일 구조를 잘 파악해 본 다음에, 본인의 포트폴리오 웹사이트를 한번 만들어 보자. 이미 뼈대가 다 잡혀있기 때문에 그 뼈대를 분석하는 것 만으로도 큰 공부가 된다. 박스모델을 어떻게 쓰고 있고, 각종 버튼들을 글리피콘이랑 폰트어썸을 써서 멋있게 구현하는 법, jQuery의 각종 트랜지션들을 어떻게 구현하고 있는지 등등을 배울수 있고, 이 중에서 내가 필요한 부분을 복붙해서 내 웹사이트에 붙여볼 수도 있다. 나는 이 당시 여기의 웹사이트들 중 3개를 적절히 조합해서 다음과 같은 내 포트폴리오 웹사이트를 만들었다.
당신이 여기까지 오는데 아마도 3-4달정도의 시간이 필요할 것이다. 다시 한번 강조하지만, 이렇게 공부하고 나서 당신이 '나는 개발자 입니다'라고 말하면 x욕 먹기 쉽다. 개발자의 세계는 웹개발만 해도 그리 녹록한 세상이 아니다. 하지만 이렇게 3달정도 야매로 포트폴리오 웹사이트 하나 뚝딱 만들어낼 정도로 훑어내고 나면 개발자랑 어느정도 대화가 통하는 문돌이 PM이 될수는 있다. 또한 당신이 정말 뜻이 생겨서 앞으로 앱개발도 배우고 직접 스택오버플로우 찾아다니면서 버그도 고치고 하다 보면 한 반년쯤 후에는 진짜 기본수준의 프로그래밍은 할 줄 아는 문돌이 PM이 되어 있을 것이다. PM으로서 본인이 구현하고자 하는 기능의 기술스택에 대해 개발자랑 어느정도 대화도 가능할 것이다.
다음 글에서는 같은 맥락으로 디자이너랑 일할 수 있는 PM되기, 또는 디자이너 없는 스타트업에서 PM이 디자이너역할하기의 야매스러운 방법론에 대해 논해보고자 한다.
글쓴이는 노마드태스크 (Nomadtask)라는 퀘스트 기반의 글로벌 마케팅 캠페인 플랫폼의 Co-founder 및 디자이너로 일하고 있다. 원래는 비즈니스를 전공하고 기획자로 일하다가 스타트업을 창업하고 본업을 스타트업 파운더+디자이너로 전향했는데, 그 과정에서 득템한 다양한 스킬들을 연재하고 있다.
노마드태스크 - https://nomadtask.com/