2023. 5. 18. 16:45ㆍ프론트엔드
사전과제 피드백
원티드 프리온보딩 인턴쉽을 수강하기 위해 진행했던 사전과제의 피드백입니다.
과제의 분석
- 과제의 주제
- Simple 인증 / 인가
- Simple CRUD
- 과제에서 파악하고자 한 것 : 출제자의 의도
- 기본적인 형태의 서비스를 만들 수 있는가?
- 코드 스타일은 어떤가?
- 프로젝트 구조를 어떻게 설계 했는가?
- 과제를 수행하는 기본적인 태도
- README.md 잘 작성되었는가?
- Git활용은 잘 했는가?
- 코드 분석 ← 무조건 기업들이 보는것들
- 코드의 가독성
- 컴포넌트가 잘 분리되었는가?
- 컴포넌트를 논리적인 단위로 분해 했는가?
- 컴포넌트의 쓰임
- 컴포넌트의 역할과 책임
- 컴포넌트를 논리적인 단위로 분해 했는가?
- 관심사가 잘 분리되엇는가?
- 반복되는 코드들 : 추상화하고 분리했는가?
- 프로젝트의 아키텍쳐는 어떻게 설계 되었는가?
과제의 목표 ?
과제의 목표는 채용당하는것.
기업에서 과제를 내주는것은 채용을 위한것이다.
과제를 내주는 것은 기업입장에서 투자를 많이 하는것.
→ 실무진들이 함께할 동료를 뽑는것이다.
채용의 실패는 내가 안좋은 사람을 뽑는것이다.
→ 따라서 안좋은 지원자를 최대한 걸러내기 위한 태도를 취한다.
→ 기본적으로 지원자를 평가하는데 있어서 방어적인 태도를 기본적으로 가지게 된다.
평가하는 사람이 내 과제를 계속해서 보고싶게 만들어야 한다.
→ 애초에 시작부터 장점을 보게 만들어야 평가하는 사람이 긍정적인 프레임에 머물게 된다 → README.md를 더 더 더 열심히 써야 겟다.
→ 평가자가 내 과제에 더 오래 머물고, 더 오래 보고, 나아가서 이 과제를 수행한 나라는 사람에 대해서 더 알아보고 싶게 만들어야 한다.
- 애초에 이력서에는 나의 관심사를 넣을 필요가 없네..
사실 개발자의 코드는 항상 읽는 사람에 초점을 맞춰서 작성해야 한다.
읽기 싫은 코드
- 제대로 접근이 되지 않는 링크들
- 작성되지 않는 부실한 내용의 README.md
- 기능이 돌아가는지 확인하기 힘든 과제
- 허가되지 않은 라이브러리의 사용
- 규칙성이 없는 코드의 포멧팅 및 변수명
- 관리되지 않은 GIT(commit histroy. branch)
개발자의 기본기
개발자로서 갖춰야할 역량은 무엇이 있을까요?
- 하드 스킬
- 소프트 스킬
개발자에게 협업과 커뮤니케이션이 강조되는 이유는 개발자 혼자서는 하나의 프로덕트를 만들 수 없기 때문 → 개발자 뿐만 아니라 수많은 직군들과 협업을 통해서만 만들어 낼 수 있음.
특히 프론트엔드 개발자는 업무 특성 상 흔히 기획자, 마케팅, 디자이너, FE 개발자, BE 개발자로 구성되어 있는 제품팀에서 모든 직군들과 가장 많이 소통을 해야하는 포지션이다.
타 직군 사람들에게는 생소한 부분이 많다. 따라서 이런 생소한 영역을 청자를 고려해서 알아들을 수 있게 쉽게 풀어서 설명할 수 있는 능력을 갖추는것이 굉장히 중요합니다.
소통은 말로하는 소통, 문서로 하는 소통 → 구두로 하는 소통은 ‘상대방을 이해시키기 위함’임을 명심해야 합니다.
개발자가 주로 작성하는 문서는 commit, pr, 그리고 코드입니다. 이러한 문서를 통해서 개발자들은 서로 의도를 표현하고, 피드백을 주고받고, 팀의 능률을 올리기 위해 노력합니다. → 이러한 문서들의 중요성을 인식하고, 이를 잘 작성하고자 노력하는 것은 굉장히 중요한 일이다.
Git & Github
- 문서와 협업툴의 역할로 굳혀지고 있는 중이다…
- 깃은 가장 기본적인 문서 작성이다. 왜 이렇게 짯는지 언제 짰는지.. → commit message와 그 때 바꾼 코드를 같이 볼 수 있거 누가 언제 작성했는지 알 수 있다.
- 개발자는 팀을 나눠서 한다. 팀 내에서 일관적인 커밋메시지를 작성해야 한다.
history 관리 밎 브랜치 관리 전략
커밋들이 늘어나면 늘어날수롯 점점 맥락을 파악하기가 힘들어질 것입니다. → 이를 히스토리 관리로 잘 관리 해야한다.
- 그렇다면 유의미한 커밋만 작성해야 할까요??
- 작업중에는 원하는 만큼 커밋을 남기되, 최종적으로 브랜치의 작업이 완료 되고 pr을 통해서 master에 머지 전 시점에 여러 커밋을 하나로 합칠 수 있습니다.
- ⇒ sqush를 통해 여러 커밋틀 하나로 합칠 수 있습니다. (rebase, interactive )
팀 내에서 히스토리를 어떻게 깔끔하게 관리할 수 있을 지 고민하기
ESLint 와 prettier, Git Hook을 이용해 팀의 능률 올리기
- 컴퓨터에게 코딩 스타일을 맡기는
- Lintting 기능은 ESLint, Code Formatting은 Prettier에 일임하는 방식으로 사용
- 자동화 될 수 없는 컨벤션은 최소화 하는것이 좋고, 필요한 경우에는 반드시 문서화를 시키고, 의견을 조율해야한다.
- 한번 해두면 추후에 적용하기도 쉽고, 무엇보다 초기에 세팅해둔 것이 지속적인 개발 생산성 향상에 도움을 줍니다.
- 만약 캐싱을 했다면,
.gitignore
파일에 잘 넣어 주자.
⚠️ npm 패키지.json의 개발 환경을 잘 구분하는게 중요함
—save-dev
→ 개발 시에만 사용하고, 프로젝트 구동환경에서는 필요가 없다.
❗package.json 의 scripts 부분을 이용해 자동화를 하면 개발자의 능률을 올릴 수 있을 것이다.
Husky
eslint 끄면 어떡할건데??? 니가 뭘 할 수 있는데?? 난 팀원들 의견 개 무시할건데??? 끄고함 ㅅㄱ
- 아무리 패키지를 설치하고, 룰을 설정해도 작업자가 사용을 안하면 효과가 없음
- 사용자가 설정을 안해도 자동으로 계속 돌아갈 수 있도록 해야한다.
문제 해결 방안
- 자동화를 통해서 신경쓰지 않아도, 자동으로 적용이 되게 하고 특정 상황에서 강제로 적용이 되게 하자.
- commit 된 코드는 무조건 포메팅으 완료, push된 코드는 무조건 eslint가 pass된 상황에서 push할 수 있도록 자동화를 구축해야
git hook 도입을 해보자
- 깃 훅 도입 → git에서 특정 이벤트 발생하기 전 후로 특정 hook 동작을 실행할 수 있게 하는것
- 본인 저장소에 수동적으로 설정해야 보장가능
- 그 과정이 귀찮
Husky를 통한 Git Hook 적용
(husky의 장점 알아보기)
npm install husky —save-dev
- 설정하는 사람만 설정을 완료하면, 다들 자동으로 적용이 된다.
lint-staged → 랑 같이 사용한다.
git add
를 한 파일 (스테이징된 파일)에 대해서만 린트를 돌려주고 다시 add하고 커밋해준다.
😒 husky를 설정해 두면 vscode처럼 ide 커밋으로 푸쉬할 때도 막아주는건가?
❔ 왜 위와 같은 짓을 계속 하는가?? 우리가 함께 으쌰으쌰 하기 위해서 이다.
우리가 함께 일할 건데 이 약속을 미리 정해서 우리의 개발 생산성을 높이고 협업 과정을 좀 더 원할하게 하기 위함이다.
'프론트엔드' 카테고리의 다른 글
소프트웨어 테스트 feat. react (0) | 2023.05.20 |
---|---|
프론트엔드 개발자도 알면 좋은 지식 Infra (0) | 2023.05.18 |
세션 기반 로그인에 대한 설명 (0) | 2023.03.16 |
JWT토큰 인증 방식 로그인 (0) | 2023.03.14 |
로그인 개념과 어플리케이션 구조 알아보기 (0) | 2023.03.07 |