요즘 많이 하는 생각: Ruby on Rails를 배우면 어떨까?
오해를 살까 봐 미리 말하지만 나는 프로그래머가 아니다. 컴퓨터 프로그래밍을 배워서 아래의 책을 썼을 뿐이다. 개정판을 내고 싶은 생각도 있지만.. 당최 시간이 안 난다. 오늘은 좀 다른 이야기를 해보고자 한다. 뜬금없지만, 과연 내가 쓴 대로 파이썬을 배우면 좋은 걸까? 앞으로도 계속 좋을까? 생각을 정리해보고자 글을 쓴다.
https://product.kyobobook.co.kr/detail/S000001817976
책의 저자소개에서도 밝히고 있듯이 나는 공공부문 연구원이고, 일 때문에 여러 도구를 쓴다. 사실 R과 SPSS와 같은 통계패키지를 자유자재로 다룬다고 하면 거짓말이고, 어깨너머로 다 배웠기 때문에 분석이 필요하면 다시 배워서 사용할 수준은 되는 것 같다. 예전에 무슨 사고실험 한다고 넷로고라고 프로그램도 배웠었다. 여러분도 심심할 때 한 번 해보면 인싸이트를 얻는데 많은 도움이 될 것 같다.
파이썬을 배우게 된 건 2014년으로 거슬러 올라간다. 책이 2020년에 나왔으니 6년은 연습한 셈이다. 사실 6년을 꾸준히 계속 열심히 파이썬을 했다고 말을 하진 못하겠지만, 낑낑대면서 계속 코딩을 해왔던 건 사실이다. 보고서를 쓸 때도 자료 정리할 때 굳이 csv 파일로 변환시켜서 낑낑대며 pandas를 적용해 보고, scipy로 통계도 해봤다. 사실 파이썬으로 통계를 하는 건 조금은 불편한데, 각 라이브러리들이 통계를 적당히 다룰 뿐이지 최적화되지는 않았기 때문에 통계를 전문적으로 하려면 R을 쓰는 게 낫다. 그런데 또 우리나라에서 인기가 식을 줄 모르는 구조방정식 모형이라는 놈을 쓰려면 R로는 부족하다. 시계열 분석을 하려면 E-views라는 놈을 써야 하고, 구조방정식 하려면 SPSS Amos를 써야 한다. 물론 다른 대안들도 있겠지만, 자신이 하려고 하는 방법론과 가장 맞는 방법을 찾는 게 중요하다. 사실 이것 조차 누가 잘 알려주는 사람이 없어서 대학원 생활이 고되긴 하다.
잠시 옆 길로 샜지만, 내 근본적 고민은 "파이썬으로 뭘 할 수 있을 것인가?"였다. 물론 내가 개발자라면 이런 고민을 덜 했을 것이다. 왜냐하면 시키는 것을 해야 하니까. 그런데 나는 개발자가 아니기 때문에 파이썬으로 할 일을 내가 찾아야 했다. 그래서 찾아낸 것이 데이터 정리 및 분석(csv, pandas, numpy 이용), 정규식을 이용한 텍스트 데이터 분석 및 추출, 통계분석, 웹스크레이핑 정도이다. 물론 여기까지 하는 것도 쉽지는 않았고, 꽤 오랜 시간이 걸렸다.
내가 예전에 개발자를 만나서 "파이썬을 배워서 웹크롤러를 만들고 있다"라고 말하면 다들 나를 이상하게 쳐다봤다. 그들의 관심사와 내 말이 너무 동떨어져 있다고 느껴졌다. 구글에서 핵심 개발자들은 검색엔진의 품질을 높이기 위해서 수많은 크롤러를 개발하고, 경쟁한다. 그래서 구글 검색결과는 시간이 지날수록 바뀐다. 왜냐하면 시간이 지나서 그 정보의 중요성이 바뀌기도 하지만, 정보를 긁어모으는 로직 자체가 달라지기 때문이다.
책이 나오고 나서 파이썬은 인문 사회계까지 널리 배울 정도로 바람이 불었다. 덕분에 내 책도 조금은 인기를 얻었다. 사실상 내가 만들어낸 작품 중에서는 가장 널리 알려진 게 아닌 가 싶다. 그 책에도 나와 있지만, 여전히 "파이썬을 잘하면 뭘 할 수 있지?"라는 것에 대해서는 솔직히 확신이 없다. 장고로 웹개발한다? 크롤링으로 검색엔진 개발한다? 데이터 분석을 기가 막히게 한다? 업무와 관련하여서도 나도 제법 분석을 요구하는 일을 하지만, 분석은 대체로 엑셀로 한다. 파이썬으로 내 직무에 관련한 파일을 개발해 본 적도 있지만, 상용화는 안 해봤다. 왜냐하면, 일단 파이썬으로 하면 나 말고는 이 로직에 손댈 수 있는 사람이 없어진다. 곧 이 로직의 유지보수를 평생 내가 해야 할지도 모른다.
직관성에 관해서는 아무래도 파이썬은 엑셀에 비해 좀 부족하다. 엑셀은 모든 셀에서 계산식을 연동시킬 수 있다 보니, 즉 반자동의 매력이 있다. 하지만 이 반자동적 특성 때문에 수많은 휴먼 에러(human errror)를 낳는다. 결국 얼마나 예리한 사람이 이 엑셀 수식을 따라가면서 보느냐에 따라서 완성도가 달라진다. 솔직히 이런 점은 정확성을 요하는 프로젝트에 맞지 않는 도구라고 생각되며 장기적으로 뭐든 시스템적 모델로 대체되어야 한다는 생각이다. 그러나 아직 현장은 엑셀에 의존하고 있다.
파이썬은 직관성과 용이성, 범용성으로 인해 많은 사랑을 받는다. 그럼에도 불구하고, 파이썬을 배워도 뭘 해야 할지 모르는 게 현실이다.
Ruby on Rails는 좀 다르다. 루비를 배우고 나면 가장 확실한 장점은 Ruby on Rails를 사용할 수 있게 된다는 점이다. 그냥 '레일즈'라 부르자.
레일즈는 웹 프로그래밍의 최적화된 도구이다. 트위터, AirBnB, 당근마켓, 리멤버 등도 레일즈로 만들었다. 물론 트위터의 경우 엄청나게 많은 트래픽을 레일즈로 다 감당할 수는 없었기 때문에 결국 자바와 자바스크립트로 다시 개발하게 되었다. 그런데 이것 역시 아주 좋은 사례이다. 루비로 개발하더라도 사용자가 많아지면, 자바스크리트로 갈아탈 수도 있기 때문이다.
며칠간 루비온레일즈를 다루면서 느낀 소감은 레일즈가 앞으로 유망할 것 같다는 김스트라다무스적 느낌이 들었다.
지금 웹사이트는 수많은 백엔드 개발자와 프런트엔드 개발자가 협업해서 만든다. 퍼블리셔가 있고, 디자이너가 있고, 서버 개발자가 있다. 사실 그보다 훨씬 더 다양한 직종이 있지만, 아무튼... 그러다 보니 웹사이트 개발 하는데 최소 몇 천만 원 들지 않고서는 만들 수 없다는 마음속의 견적이 많은 사람들의 머릿속에 새겨져 있다. 프런트 엔드가 식당으로 치자면 종업원과 서빙하는 사람이라면, 백엔드는 주문받아서 요리를 해내는 사람이다. 그 위에는 식당 전체를 기획하고 운영하는 사장님이 있어야 할 것이다. 사장님은 당연히 프런트 엔드와 백 엔드에 대해 어느 정도 알고 있어야 할 것이다.
앞으론 프런트개발자와 백엔드 개발자가 어느 정도 합쳐진 풀스택 개발자가 필요하고 그러기 위해선 웹개발에 필요한 스트레스를 확 줄여서 디자인과 UI에도 집중하게 해주는 쉽고 강력한 웹프레임웤이 필요하다. 즉 손님맞이도 하면서 요리도 할 줄 아는 창업자를 위해선 레일즈가 좋은 선택일 수 있다.
앞으로 프로그래밍이 유망한 것은, 기존 직장인들이 뭘 활용할 수 있는 것보다는 결국 창업생태계의 원동력이기 때문이라고 본다. 그러면 백엔드와 프런트엔드 구분 없이 저비용으로 빠르게 개발할 수 있는 프레임웤이 필요하다.
레일즈는 2004년에 개발되어 엄청나게 많은 히트 사이트를 남기고 아직까지도 운영되고 있는 웹프레임워크이다. 예전에 수많은 불편함에도 불구하고, 동영상 편집을 하려면 파이널컷프로라는 애플의 독보적인 프로그램을 사용해야 했기 때문에 맥을 샀던 것처럼, 레일즈를 이용하기 위해서 루비를 배우는 것도 나쁘지 않다고 생각한다.
루비는 파이썬만큼 인기는 없지만, 그래서 그만큼의 라이브러리나 사용자는 가지고 있지 않지만, 최종 목적지가 웹개발이라면 파이썬에서 장고를 배우고 웹을 개발하는 것보다 루비를 배우고 레일즈를 배워서 개발하는 게 훨씬 빠른 지름길이다. 자바스크립트와 자바를 배우고, 그다음에 어깨너머로 HTML과 CSS를 배워서 웹개발 하는 것보단 훨씬 빠르다. 그런 장점이 있어서 레일즈가 아직까지도 현업에서 살아남지 않는가 하는 생각이 든다.
개발자들이 이런 이야기를 한다. 사실 실리콘밸리에서 루비스트(루비 할 줄 아는 개발자)가 인기 많다는 건 조금 알려진 사실이다. 그런데 실리콘밸리에서만 그렇지 루비 본산지인 일본에서조차도 루비의 인기가 피크를 찍고 내려가는 중이라는 것이다. 그러나 언어 하나를 배워서 웹사이트를 개발하려면 뭘 배워야 할까, 를 고민하면 루비가 가장 빠르다. 아니, 사실 루비를 본격적으로 배울 필요도 없고, "레일즈"를 배우는 것이 더 빠르다. Ruby문법은 Ruby on Rails를 구성하는 일부일 뿐이다. Ruby on Rails를 통해 웹사이트를 개발하려면 HTML, CSS, Ruby를 모두 조금씩 알아야 하는데, 정말 조금씩만 알아도 된다. 그래도 뚝딱뚝딱 매뉴얼 따라가다 보면 웹사이트 비슷한 것이 만들어진다. 로그인? 이거 처음부터 배우려면 얼마나 복잡한가? 레일즈에는 로그인에 필요한 라이브러리가 미리 구비되어 있다.
여러 번 말하지만, 멋쟁이 사자 대표 이두희 천재 프로그래머가 천재가 된 이유는 파이썬보다 루비를 접했기 때문이라고 생각한다. 파이썬으로 웹개발하려고 했으면, 애초에 장고에서 막혀서 '서울대 강의평가 사이트' 만들지도 못했다. 레일즈는 쉽다. 초보자가 가장 빠르게 웹서비스를 구축할 수 있는 길이라면 현재까지 레일즈가 여전히 좋지 않을까 하는 생각이다.