풀스택 기술자 논란

2016년 4월 4일

by yangpa

심장전공의가 성형외과의보다 똑똑하다 할 수 없고, 기업 합병 전문 변호사가 국제법 변호사보다 더 똑똑하다는 말도 할 수 없으며 가정의가 심장전공의보다 덜/더 똑똑하지 않다는 당연한 말부터 하고 시작하자. 그러므로 프론트엔드 개발자가 백엔드보다 덜/더 똑똑하다는 말도 당연히 성립되지 않는다. 두 개 다 한다고 해서 하나의 전문가보다 낫다고 할 수 없다(그렇다고 또 아니라고도 할 수 없다. 케바케니까).


얼마 전에 읽은 책이 존경하지 마지않는 Atul Gawande의 Checklist다. 여기서 세계 각지의 의사 얘기들이 나온다. 정말 글 잘 쓰는 저자는 암 수술 전문의인데, 그중에서도 내분비샘 암 제거 전문의다. 암 제거야 뇌암 제거와 간암 제거는 좀 많이 다를 거 같으니 그렇다 하지만 요즘엔 마취의도 엄청 세분되어서 소아과 마취 전문, 심장 수술 마취 전문, 산부인과 마취 전문, 뇌수술 마취 전문 등으로까지 간다고 한다. 그러나 작은 도시로 갈수록, 심한 경우에는 아프리카나 그 외 의사와 시설이 모자란 곳으로 가면 그런 세분화는 개소리고 그냥 의사 한 명이 소아과, 산부인과, 암 수술 뭐 다 하기 나름이다.

이럴 때 내분비샘 암 제거만 전문으로 5년 한 사람이 아프리카 가면 쓸모없는 바보가 될 수 있으나, 아프리카에서 여러모로 부족한 환경에서도 최선을 다해 일한 사람이 미국 거대 병원 가면 특화 기술 없이 어중간한 의사 1인이 될 수 있고 그렇다.


이 사람의 책 포인트는, 심히 복잡해진 현대 시대에 이미 마스터 빌더(한 사람이 다 알아서 할 수 있는 시대)는 갔고, 그렇기 때문에 '똑똑한 한 사람이 싹 다 기억하고 알아서 하기'를 기대하기보다는 일을 (체크리스트로 대변되는) 체계화하는 식으로 변해야 한다는 것이다. 물론 심장전문의가 센트럴 라인 끼는 거 어떻게 해야 하는지 안다. 상처 붕대 가는 법도 알겠지. 어떤 약을 어떤 때 써야 하는지도 기본은 알 거다. 그렇지만 할 수 있는 한 체계화해서 중환자실 전문의(가 생겼답니다), 간호사, 약사에게 넘기기도 중요하다. 그리고 전문의가 약에 대해서 잘 안다고 해서 그 일을 해야 한다는 것도 아니다. 모든 전문의가 다 약에 대해서 잘 아는 건 아닌 만큼, 이때는 "내가 잘 안다!"가 중요한 게 아니라, 그 사람이 없이도 다른 전문의와의 시스템이 돌아갈 수 있느냐가 더 중요하다. 그래서 어느 한 사람에게 기대는 시스템이 아니라 평균의 인력으로도 무리 없이 돌아갈 수 있도록 한다.

개인적인 의견으로 좋은 개발자란, 할 수 있는 한 자기 일을 상용 기술로 체계적으로, 정석에 맞게 해 두어서 본인이 나가도 큰 차질 없이 시스템이 돌아가게 해두는 사람이라고 본다. 이건 뭐 나의 자존심이나 믿음 이런 게 아니라, 그냥 시장 경제나 회사 입장에서 볼 때, 그런 개발자가 제일 회사의 위험부담을 줄이기 때문에 그런 측면에서 봐서 좋은 개발자란 말이다(막말로, 엄청 열심히 일했지만, 어느 날 버스에 치여 죽어도 회사는 안 망하고 딴 사람 구할 수 있는..). 한 사람이 아주 중요해지면, 그 사람이 사표 내고 나갔을 때 그만큼 임팩트가 크다는 말이 된다. 그렇다면 그 사람 입장에서는 좋은 협상 도구겠지만, 회사 입장에서는 별로 좋지 않다. 물론 회사 직원 누가 떠나더라도 전혀 임팩트를 안 받을 수는 없고, 일을 오래 하면 할수록 이건 상호 의존 관계가 된다. 직원 자신도 딴 회사 가면 낙동강 오리알 된다는 말이다. (바로 이런 이유로 난 3-4년마다 옮기는 게 좋다고 생각한다. 다른 회사에서도 많이 쓰는, 상용화된 기술을 배우는 데에 집중하고 이 회사에만 해당하는 일은 좀 저어하기도 했...는데 마소 와서 망했군.) 실제로 큰 은행에서는 아주 능력 있는 개발자/팀장에게 기대야 하는 상황에서 위험 분석 끝에 그 사람을 자르는 선택을 하기도 한다. 그 사람 하나에 기대야 하는 상황은 너무 리스크가 크기 때문에 조금 더 효율성이 낮아지더라도 팀으로 대체하는 것이다.


이 다음은 전문성 문제.

다 전문적으로 할 필요는 없다. 이미 프로덕트 방향이 정해져 있다면, 그건 염두에 두고 시스템 디자인을 해야 할 거고, 요즘 세상에 크게 히트 칠 프로덕트라면 한 사람의 마스터 빌더가 모든 것을 염두에 두고 해낼 수는 없다고 본다. 미국, 한국 한 나라에서만 팔 거 아니면, 다른 언어·문화 로컬라이제이션 생각해 두어야 한다. 백엔드인 나에게 프론트엔드 맡기면 뭐 대강 뚝딱 만들어 놓을 수는 있겠지. 하지만 로컬라이제이션이 쉽게 소프트웨어를 처음부터 잘 디자인하는 방식이 있다고 알고 있다. 그런 게 있다는 걸 어렴풋이 알고 있지만 어떻게 하는지는 모른다. 시간 들여서 찾아봐야 한다. 어렵다는 게 아니라 시간 투자를 해야 한다는 거다. 모바일에 특화된 디자인 다르고 웹 페이지에 맞는 디자인이 다르다. 나도 그건 알지만 자세히는 모른다. 시간 투자해야 한다. 모바일 역시 태블릿 다르고 휴대폰 메이커마다 아무래도 다르겠지? OS마다 다른 부분도 있을 거다. 그리고 테스팅은? 릴리즈 할 때마다 UX 테스트하는 프레임워크 있어야 할 텐데 이것 역시 대강은 알고 있지만, 오늘 바로 하라고 하면 시간 좀 오래 걸린다. 데이터 분석도 요즘엔 릴리즈부터 곧바로 시작해야 할 텐데, 보안, 온갖 법규 준수를 위한 시스템 디자인...도 포함한 단 한 명의 개발자라고 하면, 의사 하나가 간호사, 원무과 없이 혼자 원맨쇼를 하겠다는 셈. 아 뭐 너 그거 못해! 너 멍청해!! 가 아니라, 어느 정도 규모를 가지고 클 거라는 계산을 최소한 했다면, "슈퍼 의사 한 명 고용해서 다 끝내겠어"란 정도의 각오로는 무리라는 말. 그리고 여기서 "처음부터 간호사, 마취의 필요 없어!! 좋은 의사라면 마취 정도는 할 수 있어야지! 간호사가 하는 것보다는 케어를 더 잘 해야지!!" 라는 말은 그냥 말이 아니라 방귀다.

아 물론, 어차피 병원 개원하는 동네에서는 의사 한 사람 의원 체제가 보통이고, '마취의 없어서 수술 못해요'라고 하면 바보 취급 받는 분위기라면 그럴 수도 있다. 그래도 의사 한 명이 이것저것 다 하는 거면 그 사람의 엄청난 시간 낭비지, 팔방미인이라고 자랑할 건 아닌 거 같다. 백엔드가 남는 시간에 UX/디자인, 프론트엔드가 데이터 파이프라인 등등 취미로 한다면 말리진 않겠지만, 일하는 시간에 다른 익숙하지 않은 디자인 같은 거 시키면 시간낭비. 그리고 개발자의 시간 낭비는 곧 돈 낭비.


덧으로, 이건 그냥 분위기 같기도 한데, 최소한 내 경험으로는 디자인/Ux/UI 등을 완전 전문분야로 보는 분위기에서 일하다 보니, 백엔드 개발자한테 수준 있는 UI 디자인, 포토샵, 프론트엔드에게 백엔드 시스템 디자인 바라는 야무진 회사는 별로 없다. 아, 당장 간단한 거 만들어내는 건 시킬지 몰라도, 그거 가지고 돈 벌 발랄한 기대는 하지 않는다. 거의 최소한이 백엔드 + 프론트엔드 + 디자이너인데, 정말 돈 없고 급하면 백엔드 하는 사람이 프론트엔드 뼈대만 만들고, 디자이너와 얘기해서 조절할 수는 있겠다. 아니면 디자인만 외주로 줘서 백엔드에 대강 붙이던지. 요즘엔 - 프론트엔드 개발자 + UX/UI 디자이너 + 실제 디자이너 이게 보통인 것 같다. 실제 디자이너가 시안 뽑아내고, UX/UI 전문가가 사이트 흐름, 유저가 어떻게 사이트를 쓸 것인가 등등을 설계하고, 그 뼈대는 프론트엔드 개발자가 만드는 식. 그리고 백엔드랑 인터페이스 붙이면 완성. 이 때 클라우드에서 PaaS, SaaS를 쓰고 있어 딱히 플랫폼 백엔드 잘 알 필요가 없다면 뭐 프론트엔드랑 백엔드 다 한다고도 우길 수는 있겠음. 글치만 혼자 일하는 거 아니면 Continuous Integration, 빌드 시스템 셋업해야 할 거고, 유닛 테스팅 인터그레이션 테스팅, 스테이징, 플덕션 모니터링 있어야 할 건데, 그것도 다 한다고? 혼자서? (거듭 말하지만, 어렵다는 게 아니라, 그거 다 하려면 시간이 모자랄 거라는 얘기다.)

하지만 결정적으로 한국은 '풀스택 개발자'를 원하는 거 같다는 슬픈 사실. 근데 그걸 바라는 사람들은 자기가 원하는 시스템이 어떤 설계인지, 어떻게 돌아가야 하는지를 잘 몰라서 '하여튼 닥치고 이거 다 해줄 사람' 한 명 고용하는 걸 원하는 걸까? 아니면 한국에서 스타트업들이 만들어내는 상품들이 거의 비슷비슷하고 (앱스토어 게임, 앱이라든지) 툴도 비슷해서 풀스택(=앱개발자)이 가능한 걸까? 아예 규모 커질 거 생각을 안하는 걸까? 회사 사람들이 사표를 안 내는 걸까?? 투자가한테 어필 안 해도 되는 걸까??? 그냥 대강대강 UI 만들어도 상관없는 걸까???




풀스택은 백엔드, 프론트엔드 다 한다는 말 듣고 썼던 글입니다. 저는 첫 직장에서 리눅스 command prompt curses 라이브러리로 Point of Sale System 프론트엔드 만들고 백엔드는 PostgreSQL 로 구현했으니... 오오 나도 풀스택?

농담이라고 한 말이에요. 아니에요. 못생긴 웹페이지 만들 수는 있고 자바스크립트한테 감정 쌓일 만큼 싸워 봤습니다만 어디 가서 풀스택이란 말 안 해요. cgi-bin 시절에 펄 스크립트로 웹 프로그래밍 시작해서 하는 말은 아니고요.


그냥 가려니까 섭섭해서.

풀스택은 웹·자바스크립트·앱 쪽 개발만 되나요? 펌웨어 C·어셈블러 코더는 웹 없으니 안 끼워주나요? 백엔드 데이터 여러 군데서 긁어서 처리해서 시각화까지 하면 그건 풀스택으로 안 쳐주나요? 주피터 노트북·R 샤이니로 아주 이쁘게 마크업된 리포트, 인터랙티브 자바스크립트 리포트도 되는데, 풀스택 안 될까요?

음 안 되네요. 안 될 거야. 웹이나 앱을 해야 해.

keyword
매거진의 이전글회사에서 꼭 필요한 사람이 되면 안 되는 이유