오늘은 점핏에서 프론트엔드 관련 강의를 한다고 해서 응모했고 당첨돼서 가기로 했다!!
내가 취업 전에 알았으면 좋았을 것. 프론트엔드 관점에서의 필요한 소프트스킬과 하드스킬.
능력 = Hard Skills + Soft Skills. 프로그래밍에 필요한 기술을 하드스킬, 개발 외적으로 필요한 기술을 소프트스킬
왜? 개발로 끝나는 것이 아닌 기술 변화에 따른 '시간이 지나면 유지보수가 필요'하기 때문. 즉, 소프트웨어 엔지니어는 '시간 위를 걷는 프로그래밍'
그렇다면 시간 위를 걸어야한다면 어떻게 걸어야할까? 대체로, 옳은 기술은 없다. 상황에 따른 선택이 있을 뿐. 주관적으로 다르지만 나는 아래와 같다.
displayUserInfo
나 fetchUserInfo
등 함수로 나눠 문제가 어디서 생겼는지 알 수 있음processData
, clear
, reset
normalizeResponseData
, splitBookDataByCategory
추적 용이하게 하기 위해서!
학습을 위해, 실험을 위해 기술을 적용하는데 적용되는 공식이 있다.
그러니 한번 프로젝트 진행할 때 욕심 부리지 말자.
평생 공부해야 하기에 나의 최적의 학습 루틴을 만들어 놓자. 매일 해도 괜찮을 정도로!
대신 계획을 세웠으면 닥치고 진행해서 공식문서나 강의나 책이나 프로젝트 개발하며 학습하자.
그리고 또 가장 좋은 공부 방법은 교육이다. 즉, 사람과 소통 사이에서 학습이 제일 빠르다. 내가 가르쳐 주든 가르침 받든!
코드 너머에 사용자가 있다. 항상 UX에 대한 고민을 해야한다.
잘 알기만 한다면 처음 프로젝트를 착수하면서 설계를 들어가도 그 코드의 품질이 다르다.
태연이의 사담 : 여기 UX 사이트도 재밌다. 여러번 반복하자.
하나 잘하기도 점점 더 어려워지고 있다. 전문 분야를 가지자.
이건 강사님의 큰 주관적 철학. 하나 하기가 진짜 어렵다. 프론트엔드하다가 SQL을 해도 잘 짜야하는 건데 좀 힘들다.
거절의 3단계.
한번씩 공고도 보고, 취업 시장에 대한 트렌드를 알 수 있어서 좋다. 아예 놓지 말자. 이력서 업데이트 같은 경우도 마찬가지다. 적어도 반년에 한번?
맘에 드는 곳이 있다면 찔러보고 인터뷰를 본다면 인터뷰를 보자. 면접을 연습할 수 있는 기회다. 영어권이라도 영어 인터뷰를 연습할 수 있는 기회가 있다.
우선순위대로 알려줬다.
만약 이 회사에서 내가 가장 뛰어난 개발자라고 생각한다면 이직 준비를 하자.
하드캐리해서 회사를 이끌어 갈 자신 있으면 예외다.
고민하고 한 질문과 안한 진문은 분명 차이가 난다.
구글의 15분 규칙 : 15분을 기준 잡고 겁나 고민하고 안되면 물어보자.
기획자, 디자이너, 개발자를 이어주는 번역기가 되자!
프론트엔드의 소통 = 중간 다리
이러한 상황으로 소통을 잘하는 프론트엔드 개발자는 팀 전체의 퍼포먼스를 증가시킨다. 즉, 서로의 번역기가 되어주는 것.
그렇다면 어떻게 소통해야 좋은 번역기가 되는 것일까?
프론트엔드 개발자는 번역하기 전 맥락과 의도를 파악해야한다.
이 사람이 무엇을 모르는가?
만약 맥락이 빠진다면 다시 물어보는 등 소통 비용이 더욱 증가한다.
위 사진처럼 사전지식이 없는 기획자나 제 3자가 보는 상황이라면 저걸 보고 잘 알지 못한다.
그렇다면 어떻게 설명해줘야할까?
위처럼 지금 놓인 상황과 상대방이 혹시 모를수도 있는 것들을 설명해주는 것. 그게 맥락을 추가한다는 것이다.
이 사람이 무엇을 원하는가?
의도가 빠진다면 대화가 산으로 간다. 예시를 보자.
이처럼 개발자의 의도가 명확하지 않다면 저렇게 소통이 여러번 반복돼 소통 비용이 증가한다.
그렇다면 어떻게 써야할까?
이렇게 기획자에게 개발 의도에 대해서 명확히 한다면 불필요한 소통이 발생하지 않는다. 굿!
즉,
맥락 + 의도 = 불필요한 커뮤니케이션 비용 ⬇
라고 정리할 수 있다.
좀더 깊이 들어가서 맥락과 의도를 잘 파악하고 챙기려면 어떻게 해야할까?
우린 사람이기에 감정이 들어갈 수 밖에 없다. 하지만 팀의 발전을 위한다면 대화의 감정 보단 목적에 집중하자. 감정에 사로잡히면 대화의 본질을 잃어버리기 때문.
중간다리, 번역기로서 기반 지식이 있다면 각 입장을 내가 이해할 수 있기에 훨씬 소통이 잘될 것이다. 즉, 내가 잘 이해해야 쉽게 설명해줄 수 있다.
백엔드 개발 공부를 하거나 기획 및 디자인 관련 책을 읽어보자.
프론트엔드 전반적인 개발 생태계를 보자.
위 사진을 보며 전반적인 걸 보자.
프론트는 JS, TS를 많이 쓴다. 그 파생인 JSX, TSX를 많이 쓴다.
TS는 정적 타입을 추가한 JS SuperSet언어다! 마소 최고!
SSG가 가장 핫하다. 그에 관해 개발하는 프레임워크 Gatsby.js가 있고, SSR도 다시 대두되고 있는데 Next.js가 있다.
CSS의 재사용성의 대두로 SASS가 등장해서 많이 쓰이고들 있고, JS 파일 안에서 CSS를 해결해보고자 CSS in JS인 Emotion, Styled-componenets가 생겼다.
Tailwind CSS도 생겼는데 Next.js와 궁합이 좋아 많이 쓰인다.
상태관리 라이브러리를 보자!
가장 많이 쓰이고, 대중적인 리덕스가 대두된다. 꼭 한번 거쳐가야할 라이브러리다.
그 외에 할아버지가 된 Mobx, 빠르게 추격하고 있으며 리덕스 뺨 때리는 리코일, 심플하면서 성능 겁나 좋다고 알려진 Zustand가 있다.
서버데이터를 펫칭해오는 라이브러리를 보자!
가장 핫하다가고 생각하는 리액트쿼리가 있다. 그리고 vercel을 만든 회사에서 만든 것이 있는데 SWR도 있다. 서로 싸우고 있기에 누가 주가 될지 계속 관찰하자.
개인적으로 Next.js + SWR + Tailwind로 개발해보고 싶다!
사실 UI 라이브러리를 쓰는 이유는 웹 접근성을 위한 WAI-ARIA를 쉽게 구현하기 위해 많이들 쓴다.
가장 핫한 회사 Vercel은 리액트 프레임워크 Next.js를 만들었다.
SSR(ServerSideRendering)를 위한 프레임워크로 출범했지만, 점점 백엔드 기능도 추가해서 풀스택 프레임워크로 변하고 있다.
그 외에 StaticFileServing, FastRefresh, ESLint, DynamicImport 등등이 있다.
위 기능들만 보더라도 리액트만으로 개발할 때 직접 설정해야하는 복잡한 기능들을 쉽고 간편하게 사용할 수 있다!
또한 Front-end와 Back-end 를 하나의 프로젝트로 개발 할 수 있는 점에서 1인 개발을 한다면 필연적으로 선택해야하는 거시다!
위에서 봤던 프론트엔드 트렌드 중 TS를 많이 쓰고, 많이 공고도 낸다. 애초에 너무 좋기도 하고, 개발 규모가 커질 수록 타입이 더더욱 중요해지기 때문에 많이들 애용하고 채용한다.
10년된 따끈따끈 마이크로소프트가 만든 JS 슈퍼셋 언어! 걍 JS의 타입 첨가물이다.
FE 개발자라면 모두 마땅히 써야하는 추세다.
다들 왜 타입스크립트를 쓸까?? 왜 쓰는 것일까? 바로 TS만의 개발자 경험이다.
현업에서는 점진적으로 적용하여 추가하는 식으로 가자.
저 @ts-check
와 @param
를 추가한다면 타입체크를 임시적으로 할 수 있다. 자신이 만든 앱에 저렇게 적용한다면 배우기도 쉽고 빠르다.
TS를 원한다면 JSDoc을 추가해서 역할을 지정해보고 나중에 타입스크립트로 리팩토링 해보자. TS는 편하니까!
내용 읽어봤는데 알차서 너무 좋았습니다. 정리를 되게 잘하셨네요.
특히 UX 확인하는 퀴즈 링크랑 좋은 코드의 조건이나 이런 것들이 알찼습니다.
그리고 next.js랑 swr, tailwindcss 하고 있는데 재밌더라구요
테스트코드.. 어떻게 공부해야할지.. 감이 안오네요