study/Challenge

[Challenge / day-23] 기술셋 선정하는 기준, 프론트엔드 기술셋 선정하기

creatorAron 2023. 3. 14. 00:08

오늘의 공부범위 : 강의 31,2강(Part3. ch2. 1,2강)

 

목차

1. 기술셋을 선정하는 기준

2. 기술셋 선정하기 - 프론트엔드

 

 

 오늘의 블로깅 모습..!!

 

#1 기술셋을 선정하는 기준

1. 올바른 기술셋 선정하기

새로운 기술들이 정말 빠른 속도로 나오고있는 요즘 시대에 어떤 기술셋을 사용할지 선정하는 것은 더욱 중요한 문제가 되었다. 프론트엔드라는 개념도 잘 없던 예전에는 패러다임이 되는 기술이 거의 한 두개 정도 였을텐데 요즘은 기술 하나에 같이 사용되는 라이브러리만해도 한 두가지가 아니기 때문에 더더욱 중요한 문제이다.

 

2. 올바른 기술셋이란 무엇일까?

내가 사용하고 싶은 기술이 아니라, 시스템 요구사항을 충족하는데 적합한 기술!

 

3. 올바른 기술셋 선정이 중요한 이유

기술셋 선정에 따라 개발단계뿐만 아니라 향후 소프트웨어를 운영/유지하는 비용과 난이도에 영향을 줄 수 있다. 요즘 무료이고 오픈된 기술셋도 많지만 특히, 백엔드와 관련해서는 서버에 드는 비용과 같은 것들이 만만치 않은 비용이 들 수가 있다. 게임개발과 관련해서 유니티도 기본적으로는 무료지만 기업차원에서 사용하면 꽤 비싼 비용을 주고 사용해야하고 사용하는 인원이 많으면 더 많은 비용을 지불하고 사용해야하는 경우도 있다. 이러한 경우 필요 이상인 스펙의 기술셋을 사용하면 비용의 낭비가 있거나 요금폭탄을 맞는 등 수익성을 크게 해칠 수 있다.
 이와 더불어 치명적으로 작용할 수 있는 부분은 소프트웨어의 한계점을 만들어 낼 수 있다는 점이다. 특정 기술이 향후 지원하고자 하는 서비스를 제공하는데 큰 어려움이 있거나 제공하지 못하는 기술일 경우 극단적으로는 새 기술셋으로 동일한 서비스를 개발하면서 운영을 계속 이어나가다가 개발이 완료되면 새로만든 코드로 교체하는 작업을 해 줄 수도 있다. 이 경우 팀 차원에서 드는 리소스는 엄청나게 크고 잘못된 기술셋 선정으로 인한 굉장한 실패가 될 것이다. 또한, 이렇게 극단적인 예가 아니더라도 좋은 기술이지만 팀원들이 전부 생소하거나 잘 다루지 못해서 해당 기술셋을 배우느라 많은 시간이 소요되고 원하는 서비스를 만드는데 어려움이 있을 수 있다. 

 따라서, 팀원들의 현재 능력과 서비스를 위해 필수적으로 구현되어야하는 요구사항을 구현하는데 적합한 기술은 무엇인지 고려해서 골라야한다. 그저 새로 나왔거나 좋은 기술이라서 고르게되면 안된다.

어떻게 선정하나요?

  1. 시스템의 요구사항을 잘 충족시키기 위해 필요한 것들 리스팅
  2. e.g. 멀티 스레딩 지원?, 성능, 해당 기술의 learning curve, 팀원들의 기술에 대한 친숙도, 해당 기술의 업데이트가 활발하고 커뮤니티가 활성화 되어 있는가? 등..
  3. 후보군 조사
  4.  기술셋 후보군 중에 사용해본 적이 없는 기술이 보여요. 해당 기술을 배제하는게 맞을까요? → 아닙니다! 리서치를 하는 시간을 충분히 가진 후 비교해야 합니다. 개발자는 항상 모르는 것이 있을 수밖에 없습니다. 모른다고 피하기 보다는 이해하는 시간을 가지세요. 공식 문서를 읽고, 간단하게 기술을 가지고 놀아보는 시간을 가져보세요 :)
  5. 비교 테이블 생성 - 각 후보군 별로 시스템의 요구사항을 충족 시키는지 비교하기 위한 테이블을 만들면 됩니다.
  6. 팀 내 토론 및 결정!
    1. 개인의 취향에 맞게 선택하기 보다는, 이 프로덕트에 가장 적합한 기술을 선택하는 것이 중요.</aside>
    2. <aside> 💡 조그만 프로젝트라 하더라도, 사이드 프로젝트라 하더라도, 실무에서 접근하는 방식대로 연습 하세요 🙂 사이드 프로젝트를 하는 목적도 결국은 일잘러 개발자가 되기 위함이 아닐까요?
    3. 무슨 기술을 선택하든 선택에 따른 장/단점 존재. 상황에 따라 어떤 장/단점을 수용할 것인지 판단하는 것이 중요

 

 

 

 

기술셋 선정하기 위한 비교표를 직접 작성해 보는 모습이다. Angular는 잘 몰라서 검색을 조금 해보기는 했지만 내가 섣부르게 판단하는 것은 어려워서 기술의 안정성과 팀 내 기술 친숙도는 나와 부트캠프 동료들을 가정하고 그 기준으로 작성하였다.

 

바닐라 자바스크립트는 라우팅이나 UI코드 재활용 측면 뿐 아니라 여러 측면에서 내가 적은 것처럼 불리해서 배제하였고 React와 Angular만 다시 비교해보았다.

 

 

Angular도 충분히 훌륭한 기술셋이지만 현재 익숙함이나 향후에 같이 일하게 될 사람들이 React는 무조건 알 가능성이 높기 때문에 React로 최종결정하게 되었다.

 

그리고 Redux에 대해서 나는 교육과정에서 배우기도 했고 Recoil보다는 Redux가 훨씬 익숙한데 단순히 익숙해서 선택하지말고 직접 비교표를 작성해서 결정해보라고 하셨다. 커리큘럼상 나는 Recoil을 강사님이 알려주는대로 쓸 것이지만 ㅋㅋㅋㅋㅋ 이번에 Recoil에 대해서 약간 조사를 미리 해보고 배우는 것이 좋을 것 같아서 간단하게 서칭을 해보았다.

 

Recoil 이 React 전용 라이브러리라고 강사님도 소개해주긴 하셨지만 링크에서 설명하는 내용을 읽어보면 Redux가 대세이고 정말 많이 쓰인다고해서 꼭 Redux를 써야한다는 생각은 버리는 것이 좋지 않을까 생각이 들었다. Recoil은 React 전용 라이브러리이기 때문에 React에서 다른 상태관리 라이브러리들이 해주지 못하는 비동기 관련 처리라든지 아직은 잘 모르겠지만 동시성모드에 대한 지원까지 해줄 수 있다고 한다. 게다가 배우기 쉽다니 너무 좋다... Redux도 할 줄 알고 Recoil도 할 줄 안다면 더욱 유연하게 기술셋을 선정할 수 있는 (주니어 입장에서 내가 선정하지는 않겠지만... 프론트가 나 혼자라면 선정할 수는 있겠다.. 그런 일은 없어야하겠지만) 개발자가 될 것이다.

 

 

 

관련링크

패스트캠퍼스 : http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

#패스트캠퍼스 #패캠챌린지 #수강료0원챌린지 #환급챌린지 #직장인인강 #직장인자기계발 #패캠인강후기 #패스트캠퍼스후기 #오공완 #사이드프로젝트10개기술스택으로구현하는풀스택서버리스프로젝트withReact