2등 100만 가지 장점이 있어도 1등 장점 하나 못 이긴다
무언가를 선택할때 있어서 다른 사람들의 선호도를 많이 따진다. 내가 굳이 왜 얼마나 좋은지를 따지지 않아도 되기 때문이다.
왜 2등이 100만가지나 좋은게 있는데 왜 1등 이기기 힘든걸까?
1등의 장점 한가지가 무엇일까? 바로 많이 사용하는 기술이다.
많이 사용하는게 장점인가? 이유는 잘 알지못해도 사람들이 많이 쓰는 것에는 정말 그만한 이유가 존재한다. 그로 인해 오는 이점도 있다.
그런다고 1등이 무조건 무결점이고 가장 뛰어나고 찬양해야 하며 2등은 저 쓸모없고 사용하면 안되는 기술을 의미하는건 아니다.
중요한건 2등보다 1등이 낫다는 것이다.
Support 차이
React는 Facebook, Evan You 리드 아래에 오픈소스로 운영한다.
React는 회사 주도로 개발이 진행되고 있어서 어떠한 개선이나 발전에 있어 순수 오픈소스인 Vue에 비해 담대하고 빠르다.
React, Vue 가 나왔을 당시에는 둘 다 각각의 장단점이 있었기에 매력적이었으나 언젠가 부터인가 Vue가 React 뒤를 쫒고 있다는 느낌을 받기 시작했다.
React는 class 방식으로 라이프사이클과 상태관리를 하고 단순한 뷰는 function 컴포넌트로 작성했던 시절이 있었다. class 안에서 코드를 재사용하기에는 적합하지 않아서 매번 HOC로 감싸야 했고 남발하는 순간 디버깅 난이도는 하늘로 쏟구친다.
Vue에서도 mixin으로 코드를 재사용할수 있지만 병합되는 과정에서 이름이 같은 게 있으면 까다롭고 정확하게 this안에 어떤게 들어있는지, 컴포넌트 구조상 어떠한 구성을 가졌는지 한 눈에 파악하기 어려움이 존재한다. 컴포넌트 파일이 커지는 순간 data,computed, watch, method, lifecycle function 오르락 내리락 하면서 봐야하기때문이다.
React는 이 상황을 타개할 방법으로19년 2월에 hooks를 공개했으며 Vue는 20년 9월에 Composition API로 나왔다.비슷한 문제를 해결하는데 무려 1.5년이상 차이가 발생했다. 별가 아닌거 같아보여도 업데이트에 대응하는 모든 라이브러리도 동일하게 영향받는다. 21년 6월 Vue-Apollo v4는 아직도 알파버전이며 Nuxt(Vue SSR)는 아직도 Vue3를 지원하지 않는다. 😇
이미 React에서는 해결된 이슈를 굳이 Vue를 해서 힘들게 코딩하거나 기다려야 할까?
Typescript 지원
요즘 Typescript는 거의 필수인 시대이다 왜 Typescript는 많이 사용하게 된걸까?
어떠한 두 인자를 받아서 뺀다고 함수가 있다. 코드 상으로 본다면 숫자만 들어가야 할것 같지만 숫자형 문자열을 넣어도 동작한다. 이러한 Javascript의 동작으로 인해 디버깅하기가 매우 힘들다. 그래서 Typescript를 사용해서 이러한 휴면 에러를 미리 잡아내는 것이다.
React는 모든 것들이 순수 Javascript로 이루어져있다. 하물며 JSX도 Javascript로 이루어져 있어서 디버깅이 가능하다. 강력하게 타입체킹이 가능하다.
Vue 역시 Typescript를 사용할수 있으나 Vue2일때는 데코레이터 문법을 사용한 라이브러리를 얹어야 하고 그에 맞는 구조를 짜야한다. 오히려 사용하는게 더 번거롭다. 물론 Vue3에서 해결되었지만 근본적으로 Vue는 Typescript랑 잘 안 맞는다.
Vue는 구조상 타입 체킹이 어렵다. template 태그는 런타임에 가서 평가를 한다. 이로인해 props를 타입체킹한다 해도 런타임까지 가야하는 단점이 존재한다. 그리고 Event를 Emit하는 방식 또한 문제가 있는데 해당 Event의 정확한 인자의 타입을 잡지 못한다. 그래서 이것을 방지하기 위해서 따로 Emits에서 유효성을 검증한다. 그리고 몇가지 Typescript Operator들이 아직 제대로 지원이 되지 않는다.
Vue에서 Typesciprt는 반쪽짜리일뿐이다. Typescript를 온전히 사용하고 싶다면 물어볼것도 없이 React가 정답이다.
Usage 비교
21년 6월 11일 날 IT회사의 대표적인 네카라쿠배토당 공고에서 기술스택을 추려냈다.
네이버는 이미 공고가 닫혀있었고 쿠팡은 정확하게 알수 없어서 차트에 넣지않았다. 두 기업을 React,Vue 반반씩 통계에 넣는다고 해도 총합 차트에서 약 10%정도 차이(사용: React 70%, Vue 30%)가 난다. 팀에서 사용하는 기술을 명시되지 않은 곳은 전부 반반으로 설정했다. 실제로는 React가 더 높을 것이라 추정한다.
해당 차트는 신뢰성이 높은 게 아니며 전체적인 추세, 경향을 살펴보는 것에 의의를 둔다. 실제 모든 데이터를 넣어도 전체적인 퍼센트 구간은 크게 달라지지 않을거라 예상한다.
오래된 대기업일수록 요구하는 자격요건 자체는 기본기에 치중되어 있으며 React, Vue, Angular 그 어떤걸 사용해도 무방하다. 하지만 신생기업이나 급성장하는 기업일수록 해당 기업에서 사용하는 기술을 선호하거나 비슷한 기술이라면 상관없어 보인다.
개발자 서류 통과에 있어 많은 변수들이 존재하지만 동일한 조건으로 가정하겠다.
React 를 메인으로 했을 경우 약 95%(TS 포함), Vue는 약 80%(TS 포함) 지원 자격을 가진다. 그리고 입사해서 같은 프레임워크를 쓸 확률은 React인 경우 75%, Vue는 25%에 지나지 않는다.
동일한 시간, 노력을 가정하면 React를 선택하는게 확률상으로 더 많은 회사에 지원할 수 있으며 설령 다른 라이브러리를 사용해도 React를 할 확률이 훨씬 더 높다.
정리
사실 기술에 1, 2등이라는건 존재하지 않는다. 그때그때 상황에 맞추어 어떤 도구가 적합한지가 가장 중요하기때문이다.
하지만 많이 사용하는 기술을 사용하는 것이 확률적으로 더 나은 결과를 가져온다. 굳이 무슨무슨 이유인지를 안따지고 가도 괜찮다. 기술적인 것이든 시장상황이든지 패널티를 따지지 않아도 되기 때문이다.