Table of contents
- 후기
- 질문과 답변
1. 후기
소중한 분께서 만들어주신 소중한 기회로 인프런 회사 견학을 해볼 수 있는 기회가 생겼고, 함께 열심히 부트캠프를 진행했던 인원들과 인프랩 사무실을 견학하였습니다.
인프랩 사무실 소개, 인프런과 랠릿 프론트엔드 파트 업무와 서비스에 대한 소개, 신입 개발자의 온보딩 과정, 사전에 준비해간 취업준비를 갓 시작하는 신입 프론트엔드 개발자가 가장 궁금해할 만한 여러 질문들에 대해 인프런과 랠릿 프론트엔드 파트의 여러 팀원분들, 그리고 CTO이신 향로님께서 긴 시간 자세하게 답변을 해주셨습니다.
다소 많은 인원이 한꺼번에 방문드려 업무에 너무 차질을 드리진 않았을까 죄송스러웠지만, ”우리는 성장 기회의 평등함을 추구합니다.” 라는 인프런의 모토에 걸맞게, 전체 질문 답변 시간만 2시간 이상을 할애해서 질문 한 문항에만 20분 이상을 할애하여 진지하고 상세하게 답변해주셨습니다.
이제 막 커리어를 시작하려는 개발자 지망생들이라면 안 써본 사람이 없을 서비스인 인프런에서 실제로 현직으로 근무하시는 개발자 분들께 받은 피드백은 앞으로 개발자로 생활하면서 잊지 못할 경험으로 남을 것 같습니다.
2. 질문과 답변
👀 주의 - 인프런의 공식 의견이 아닙니다. 질답시간에 제가 메모해둔 내용을 바탕으로 작성하였기 때문에, 혹여나 생략되거나 잘못 이해하고 작성한 부분이 생길 수 있음을 감안해주세요. 일부 참고자료 링크는 질답 시간에 소개된 자료가 아닌 개인적으로 레퍼런스로 삼는 연관자료의 링크입니다.
1. 알고리즘
질문
- 프론트엔드 개발 시 알고리즘적인 접근이 필요한 경우에 이미 추상화된 API로 구현된 알고리즘의 조합으로 해결을 대부분 할 수 있다고 하지만, ( *장기적인 개발 역량 관점에서 알고리즘 공부의 중요성은 인지하고 있습니다!) 실무로 프론트엔드 개발을 하면서 실제로 직접 구현해서 빈번히 사용하는 알고리즘 유형이 있는지 궁금합니다!
답변
- 일반적으로 프론트엔드 실무 기준에서는 그렇게 많이 사용될 일은 없음.
- 하지만 다른 사람의 코드를 파악하거나 본질적인 구현력/ 문제 해결력을 위해서 교양 수준으로는 대표적인 유형들에 대해선 알고 있어야 함.
- 특정 도메인이나 특정 기능에서는 필요할 수도 있다.
- 참고하면 좋을 영상
2. 사용자 vs 수익성
질문
- 사용자 입장에서 도움이 되는 서비스를 만드는 방향과 회사에 이익이 될 수 있도록 서비스를 만드는 방향이 항상 같은 노선에 있다면 이상적이겠지만, 이 둘이 상충된다고 느껴지는 경우가 있으셨는지, 있다면 어떤 식으로 해결하셨을지 궁금합니다!
답변
- 사용자의 입장인지, 그저 나의 의견인지 모호하다.
- 내 판단보다 C레벨, 기획 파트의 의견이 대체로 더 정확한 경우가 많다.
- 사용자도 자신의 니즈가 무엇인지 모르는 경우도 많다.
- 사용자가 좋아하는 서비스이면 수익성도 좋은 서비스일 확률이 높다.
- 인기가 많지만 수익을 잘 내지 못하는 서비스 (오늘회 예시) 에서 볼 수 있듯이 사용자만 좋아한다고 회사가 살아남을 수 있는게 아니다.
- 회사는 동아리가 아니다. (수익을 창출해야 한다)
3. Vite 도입
질문
- 인프랩에서 Vite를 사용한다고 봤는데 CRA보다 속도가 빠르다는 장점이 있지만 단점으로 패키지를 하나씩 설치해줘야하는 단점이 있다고 알고 있습니다. CRA대신 사용하게 된 계기가 있나요?
답변
- CRA의 바벨/웹팩은 싱글쓰레드로 직렬로만 처리되므로 느린데, Vite는 ES빌더를 사용하므로 빌드 속도가 더 빠르다.
- 질문 내용처럼 패키지를 하나씩 설치해줄 필요는 없음.
- 전체를 다 vite로 만들진 않았음. 일부는 cra로 사용함.
4. 컴포넌트 성능 최적화
질문
- 리액트에서 useMemo와 useCallback을 모든 함수나 값에 사용하면 오히려 성능 저하가 발생하는데 useMemo와 useCallback를 사용하는 기준이 궁금합니다.
답변
- 코드 가독성을 해치기 때문에 useMemo, useCallback을 일반적인 상황에서는 잘 사용하지 않는다.
- 이른 최적화는 좋지 못하다. 성능 최적화는 문제가 명확하게 보이면 그때 적용한다.
- 백단에서 메모이제이션 여부 추가질문
- 메모이제이션 자체로도 리소스를 소모하는 것이다.
- 공유자원을 백엔드 서버에서 사용하지 않기 위해서 백엔드 단에서도 메모이제이션은 지양한다.
5. 신입 프론트엔드 개발자에게 요구되는 역량
질문
- 신입 프론트엔드 개발자는 회사에서 어떤 업무를 주로 하게 되나요? 또 신입에게 가장 기대되는 역량이 있을까요?
답변
- 시니어 : 기존에 쌓아온 자신의 노하우를 현 회사에 전파하며 융화되는 것을 목표로 함.
- 주니어 : 빠르게 회사에 동화되어 패스트 팔로워가 되는 것을 목표로 함.
- 실수에도 문제없는 코드부터 타 직군과 협업하여 담당해보면서 현업 과정을 연습하며, 이 기간을 수습기간으로 두며 회사에서도 그 사람의 협업능력과 커뮤니케이션 능력을 평가한다.
6. 과제전형 준비
질문
- 프론트엔드 과제전형을 준비할 때 도움이 되는 방법이 있을까요?
답변
- 깃허브에 다른사람들이 public으로 기업과제를 수행한 내용을 올려둔 경우가 많다. 참고하면 좋다.
- 다른 사람들의 좋은 코드를 많이 보고 피드백도 많이 받아야 한다.
- 과제 제출을 완료하고 기술면접을 보기 까지 남은 시간동안에도 과제를 추가적으로 리팩토링할 부분을 진행하면서 문서화해두었고, 면접 과정에서 이를 보여주면서 좋은 인상을 줄 수 있었음.
- 과제를 제출한 후에도 어떻게 짰던 코드였는지 까먹지 않게 꼭 재확인 해두자.
- 자기소개 등 내 서류에서 작성했던 나의 관심사를 코드에서도 증명해주어야 한다.
- 성능최적화나 재사용성 등의 집중적으로 고민했거나 중요하게 생각하는 부분들.
- 커밋 컨벤션을 지키면서, 해당 커밋으로 설명할 수 있는 만큼의 작업 단위로 끊어서 커밋해두는게 좋다.
- 전체 구현과정을 하나의 커밋으로 하거나 커밋으로 작업내용을 설명할 수 없게 뭉텅이로 커밋하는건 좋지 않다.
7. 포트폴리오
질문
- 포트폴리오는 어떤 방향으로 준비하는게 좋을까요?
답변
단순한 구현으로 여러개 찍어내기 x, 하나라도 제대로 깊게 해보는게 훨씬 더 좋음. 겉보기에 화려한 것 보다 서비스의 운영 측면에 중점을 두고 실제 사용자가 있거나 내가 사용할 용도의 서비스를 만들어봐야 함. 그래야만 스스로 유지보수 하기 쉬운 코드로 작성하게 된다.
8. Pyscript 공부해야 할 지
질문
- 파이스크립트가 올해 중순에 출시됐는데 앞으로 파이스크립트를 사용하는 프론트엔드 개발자가 많이 나올 수 도 있을까요?
답변
- 커뮤니티를 이미 이룬 기술은 대체하기가 쉽지 않다. 그만큼 존재하는 인력풀과 기존에 쌓인 레퍼런스를 무시할 수 없다.
- 개인공부라면 ok.
- 인원의 변동이 있더라도 원활한 유지보수를 위해서 회사는 시장에서 수요가 많은 기술스택을 고려할 수 밖에 없다.
9. 기억에 남는 면접자
질문
- 면접 본 신입 프론트엔드 개발자 중 가장 기억에 남는 면접자가 있으신가요 ??
답변
- 긍정적으로 인상적이었던 경우
- 기본적인 능력은 다 갖추고 있는 상태에서 자신의 캐릭터성을 긍정적으로 증명한 경우 (ex: 테스트 커버리지 100%)
- 부정적으로 인상적이었던 경우
- 단답형, 모르더라도 개선을 위해 방법을 찾기 위한 열의가 보이지 않는 경우
- 꼬리질문에서 들통나는 모르는데 아는 척
- 성과를 수치 기반으로 증명하려고 하는데 그 수치가 객관적인 지표가 아니라 본인의 주관인 경우
- 명백하게 틀린 내용을 확신을 가지고 주장하는 경우