[react]

내가 React를 시작한 이유 되짚어 보기


react

이 글은 본인의 배경이 웹퍼블리셔이다 보니 웹에 국한된 편협한 짧은 생각일 수밖에 없다는 걸 사전에 인지했으면 한다. 그냥 생각나서 정리해 본 내용이니까. 개인적으로는 HTML을 주로 다루기 때문에 마크업 엔지니어라는 표현을 더 좋아하지만 퍼블리셔가 너무 일반화되어 있어 편의상 퍼블리셔를 사용하고 있다.

React?

페이스북, 지금의 메타에서 나온 프로그램언어로 자바스크립트로 되어 있다. 최근의 프론트 관련 프로젝트들은 Vue 아니면 React로 크게 양분되어 있는 느낌이다. 간혹 Angular, Svelt에 대한 소문을 듣긴 하지만… 개중에서도 React의 시장 점유율이 압도적이라는 것이 개인적인 생각이다.

전 세계적으로 봐도 React가 압도적인 우위를 차지하고 있다. 대충 Angular가 처음 등장한 2013년부터 2023년 1월 1일 까지를 구글 트렌드로 조건을 걸어본 그래프다.

전세계 동향 - 구글트랜드 2013.01.01 ~ 2023.01.01 - 전세계 - 구글트랜드

대한민국 동향 - 구글트랜드 2013.01.01 ~ 2023.01.01 - 대한민국 - 구글트랜드

초반 Angular가 등장했을 때 시장을 선도하다 React가 나오고 그 뒤로 Vue가 나오는데 Vue가 인기몰이를 하며 맹렬히 추적하다 코로나 발발 후 2022년을 분기점으로 격차가 심하게 벌어지고 있다. 전 세계적으로는 아직도 Angular가 Vue를 앞서고 있지만, 국내에서는 React - Vue의 사용빈도와 관심도가 높은 편으로 보인다.

이번에 운 좋게 개인적으로 공부하던 React를 프로젝트에서 경험해 볼 수 있는 기회가 생겨 지금은 나도 React 파에 합류했지만 Vue와는 확실히 또 다른 나름의 맛이 있는 것 같다.

레거시냐 차세대냐

프리랜서로 일을 하다 보니 개인적으로 체감하게 된 프로젝트는 크게 기존 형식을 고수하는 (레거시) 프로젝트와 차세대 프로젝트로 구분된다.

  • (레거시) 프로젝트: Java, PHP, jQuery, JavaScript, HTML, CSS, gulp
  • 차세대 프로젝트: Angular, React, Vue, Svelte

이런 양상을 보이는 편인데 주로 폐쇄망을 사용해서 개발해야만 하는 경우 기존의 형식으로 작업하며 차세대의 경우는 그 외의 프로젝트에서 주로 사용된다. 업체에서 폐쇄망에서도 사용가능하도록 망을 일부 뚤어주면 npm 패키지를 사용해서 개발이 가능하다.

예전에는 라이선스가 확인된 프로그램이나 완전 무료로 사후에 문제가 없음을 확인받은 프로그램만 확인 가능해서 좀 귀찮았는데 최근에는 많이 완화된 편이다. 특히 프론트 영역은 gulp 등을 사용하기 시작하면서부터 폐쇄망에서의 작업이 그렇게 싫을 수가 없었다. 자동화, 전처리기 활용에 제약이 되면 작업 속도가 그만큼 줄어들기 때문이고 작업자 간 코딩 스타일이 달라서 코딩컨벤션의 의미가 유명무실해지기 일쑤기 때문이다.

이런 환경도 마이크로소프트사의 VSCODE가 폐쇄망에서도 사용가능하도록 반입허용이 되면서 필요한 확장기능을 같이 반입하면 npm이 없더라도 일정 부분 자동화가 가능하기에 작업자가 소스의 아웃풋, 특히 CSS에 대해 크게 신경 쓰지 않아도 되는 수준까지 발전했다. gulp도 어려운 상황이었지만 작업자의 USB가 반입 가능한 경우라면 yarn을 활용, 패키지를 모아서 폐쇄망, 로컬에서도 작업 환경을 구축해 놓을 수 있다. 이전보다 제약이 많이 완화되고 있는 걸 알 수 있다.

프로젝트의 규모에 따라 속도 개선을 위해 소스를 압축하는 것이 필수지만, 개발 이후 다음에 작업할 불특정 작업자나 현업이 gulp, scss에 대한 지식등이 없으면 압축도 못한다.

뭐, 이런저런 제약등이 있지만 확실히 많이 좋아지고 있는 (레거시) 프로젝트의 환경인데 차세대 프로젝트는 npm에 대한 의존성이 강해서 아직 공공이나 뱅킹등 보안에 민감한 곳에서는 도입이 미미한 상황이다. 그래도 조금씩 많아지고 있는 실정이라 생각된다.

앞으로 퍼블리셔라는 직군은 없어질까?

본인의 밥벌이 수단이 웹퍼블리싱이라는 직군의 위치는 날이 갈수록 점점 반강제적으로 웹프론트앤드로 넘어가고 있는 추세다. 아마 업계에 몸담고 있는 이들은 체감하고 있고 공감하지 않을까 싶은데 이 상황에 적응하느냐 마느냐에 따라 향후 업계에서 잔류될지 퇴출될지가 결정될 것 같다. 선수생명 끝나면 나가야지 뭐..

전환점이 어찌 보면 이미 늦었다고 할 수도 있는데 회사에 속하지 않은 프리랜서 특성상 차세대 프로젝트보다 (레거시) 프로젝트의 빈도가 높기도 하고 이력서, 경력에 포함되지 않은 차세대 프로젝트의 참가에 제약이 있기에 영역을 넘어가는 것이 좀 어려운 편이다. 그래도 사이드로 꾸준히 공부한 사람은 넘어갈 기회를 잡게 되는 것이고 아니면 계속 버티다 적응하지 못하고 퇴출되는 상황에 직면하게 된다. 그런데 이 상황.. 너무 익숙하다. 아이폰이 세상에 나오면서 플래시가 사라지고 액션스크립터가 사라진 그 상황과 너무 닮았다는 생각이다. 그때보다 그나마 긍정적인 면을 생각하자면 어디에나 있겠지만 국내의 이권에 의해 생기는 갈라파고스적인 업계의 생태계가 수명연장을 도와주고 있다고 할까.

긍정적인 시선

아직, 긍정적인 시선으로 시장을 보자면 퍼블리셔라는 직군이 없어질 수는 없다. (레거시) 프로젝트에 의존적인 SR, SM, SI가 아예 사라질 수는 없는 시장이라는 생각이고 프로젝트 규모에 따라 스크립터와 퍼블리셔를 구분하여 진행하기 때문이다.

부정적인 시선

시장의 변화 속도가 빠르니 정신 차리고 보니 어느 순간 불러주는 사람이 없더라는 시점이 오지 않을까라는 불안감이 가장 크다.

주식처럼 시장을 판단할 수 있는 능력은 없으니 어떻게든 버티려면 뭔가를 해야만 한다. 없어질 것인가에 대한 질문에 동문서답이 될 수 있겠지만, 준비되어 있다면 문제없을 것이고 준비되어 있지 않거나 여기가 아니라도 놀 곳이 많다면 그냥 지금을 즐기다 넘어가면 될 일이다.

개인적으로 느끼는 업무별 참여도

개인적으로 느끼거나 생각하는 작업 참여도의 분포다. ✗ - △ - ◯ - ● 순으로 구성되는데 전적으로 개인의 경험에 의한 평균적인 내용이라 절대적인 기준은 될 수 없다는 걸 참고했으면 한다.

다음에 열거하는 기준은 지금까지 프로젝트를 진행하면서 현업, 백앤드를 제외하곤 업무 참여에 경중은 있으나 기획, 디자인, 퍼블, 프론트를 다 경험해 본 입장이란 점도 참고 바란다.

프로젝트전반중반후반
현업
기획
디자인
퍼블리셔
프론트앤드
백앤드
  • 현업은 갑이다. 대체적으로 정직원이기에 프로젝트를 하나만 참가하는 경우가 적다. 결국 관심도가 초반보다 후반에 집중된다. 개인평가와 관련된 성과인 만큼 윗사람들에게 올라가는 내용에 민감해진다. 친밀하고 착하고 잘 챙겨주고 다 좋지만 역시 갑은 갑이다. 대체로 초반엔 “알아서 잘해주세요”. 후반엔 “이게 아닌데..”

  • 기획은 초중반에 집중된다. 달라는 거 잘 주지 않는 현업, 디자인 및 다른 관계자들에게 넘길 내용을 정리해야 하는 과정. 이거 없다 저거 없다 결정해 달라며 아우성인 작업자들. 도메인에 대한 이해도 필요하고 욕받이 위치도 겸해야 한다. 시간은 없고 기획은 해야 하건만 현업은 자리를 비우고 약속 잡기는 어렵고 “아.. 나보고 어쩌란 말이냐..”

  • 디자인은 리서치, 시안작업에 열광하고 중반에 피크를 달한다. 기획을 쪼고 현업을 설득하고 좋아 보이는 인터랙션이 당연한 것이라 여기며 각종 이상향에 준하는 그림을 그려서 현업을 기쁘게 해 주고 의기양양해서 돌아와 현실과 직면하면 좌절하거나 잔다르크가 되기도 한다. 그나마 협업에 대한 마인드가 잡혀 있으면 다행. 대체로 퍼블 직군과의 다툼이 잦은 편이다. “저치들은 맨날 다 안된데. 능력들이 없어.”

  • 퍼블리셔는 디자인도 없고 기획서도 없지만 개발에 넘기기 위한 무의미한 작업이 허다하다. 현업에 보여주기 위해, 개발 편의를 위해. 대체로 그렇지만 프로젝트에 스크립트 담당이 없으면 좀 더 치열해지고 방어적이 된다. 초반에는 디자이너와 후반에는 개발과 밀접한 관계에 놓이게 되며 접근성 인증까지 받아야 한다면 퍼블 쪽에선 할 말이 많아지고 디자이너를 고운 시선으로 보지 않게 되는 경향이 강하다.

    통과불가한 컬러를 주면서 통과시키라면 어쩌자고. 넘겨준 코드를 개발에서 맘대로 건드리거나 루프를 잘못 돌리거나 태그위치를 틀려 놓고 퍼블책임이라며 동네방네 떠들다 자기가 잘 못 적용한 걸 알게 되면 그건 작은 정말이지 아주 사소한 실수에 불과하다.

    디자인 감각도 개발적인 이해도 필요하다. “접근성 프로젝트인가요. 스크립터는 있나요. 기획서나 디자인은 나온 건가요. 이 코드를 잘못 적용하셨네요. 최신 브라우저에서만 됩니다. 나한테 왜 이러세요 ㅠㅠ” 이 외에도 다양한 할 말들이 한 트럭이지만..

  • 프론트앤드는 대체로 퍼블영역과 백앤드를 아우르면서 스크립트에 특화된 직군이다. 전천후에 해당하는데 대체로 퍼블직군이나 백앤드에서 전향하는 경우가 많기 때문에 다양한 지식을 가지고 있고 거의 다 할 수 있어서 원만한 편이다. 아직까지 진정한 프론트앤드를 영접할 경우가 적어서 평가가 어렵지만.. 어지간해서는 날을 세우지 않는다. 왜? 환경, 조건여하에 따라 다 가능하니까. 백앤드와 마찬가지로 혼자서 다 할 수 있다. 만능.

  • 백앤드는.. 백앤드다. 전반부는 주로 관리직이 바쁘고 중반을 넘어 후반으로 갈수록 전부 바쁘고 날카롭다. 기획이 바뀌고 기준이 바뀌고 디자인이 바뀌고 퍼블 수정이 많고 어쩌고 저쩌고. “기획서에 없다. 요구사항에 없다. 다 할 수 있는데 시간을 그만큼 줄 거냐.” 프론트와 마찬가지로 올라운드다. 화면의 결과물은 템플릿만 활용한다면 어지간해선 혼자서 다 할 수 있다. 이쪽도 만능.

그래서 내가 React를 시작한 이유는..

역량을 늘리고 업무 참여도, 기여도를 올리고 할 수 있는 범위를 늘리고 최신 기술이니까 등등 많고 많은 미사여구가 있지만, 간단히 말하자면…

(더 이상 물러날 곳이 없기에) 먹고살려면 해야 하니까. Simple is Best.

record 10

시작한지 3개월만의 회고?

아직은 우스운 단계지만, 어쨌건 되집어 보는 과정은 계속 필요하리라.