목차
- 자바스크립트 호이스팅과 export 방식
- 맥과 게임 관련 이야기 (메이플 월드, 바람의나라 클래식)
- export default 지양 및 named export의 장점
- 백엔드-프론트엔드 데이터 설계 및 API 설계 논의
- 개발 도구 및 환경 이야기 (Vim, VSCode, 노트북 환경)
- 리액트 및 리덕스 학습 조언
- CSS와 스타일링 난이도
- 커뮤니케이션과 협업 경험
- 일상, 식사, 운동, 휴식 이야기
- 면접 및 구직 관련
1. 자바스크립트 호이스팅과 export 방식 🛠️
- 호이스팅(Hoisting): 자바스크립트에서 변수와 함수 선언이 코드 실행 전에 메모리에 먼저 올라가는 현상.
- 함수 선언문과 변수 선언문은 호이스팅되어, 실제 선언문보다 앞에서 호출해도 동작.
- 이는 때로는 의도하지 않은 버그를 유발하지만, 함수 선언을 자유롭게 위치시키는 유용함도 있음.
- export default 사용 지양 이유
- default export는 어떤 이름으로 import 하든 상관없이 가져올 수 있어서, 임포트하는 쪽에서 마음대로 이름을 바꿀 수 있음.
- 이는 코드 가독성과 유지보수 측면에서 불리할 수 있어, named export를 선호하는 경향이 있음.
- named export 사용 장점
- 명확한 임포트: 어떤 이름으로 내보내는지 분명하여 코드 읽기가 쉬움.
- 자동 리팩토링 지원: 함수나 컴포넌트 이름 변경 시 IDE에서 전체 코드 쉽게 변경 가능.
- 일관성 유지: 여러 컴포넌트가 같은 이름으로 관리되어 혼란 최소화.
- 트리 쉐이킹(Dead Code Elimination)에 유리: 번들러가 사용하지 않는 모듈을 제거해 번들 크기 감소.
- 함수 선언식이 디버깅에 좋은 이유
- 함수(컴포넌트)에 이름이 명시되어 있으면 디버거가 함수 이름을 잘 인식해 추적이 쉬워짐.
- 화살표 함수도 이름이 표시될 수 있음(const MyComponent = () => ...).
2. 맥과 게임 관련 이야기 🎮🍎
- 맥의 게임 환경이 많이 개선되어 메이플 월드, 바람의나라 클래식 같은 옛 게임들도 맥에서 지원됨.
- 메이플 월드는 정식 서버는 아니지만 별도의 플랫폼으로도 플레이 가능.
- 게임 플레이 경험은 빠르게 질려질 수 있지만, 개발자들 사이에 소소한 화제로 즐거움을 줌.
3. 백엔드-프론트엔드 데이터 설계 및 API 설계 💻🔄
- 문제 상황: A, B라는 API에서 데이터를 받아 새로운 기능 C를 구현해야 할 때,
- A, B 데이터를 각각 호출해서 사용하는 경우와
- C 기능용 별도 API를 만드는 경우에 대한 고민.
- 일반적인 해결법
- 신규 기능에 특화된 API를 새로 만드는 것이 낫다.
- 이유는 명확성과 유지보수성 향상 때문.
- 백엔드와 프론트엔드의 역할 분배
- 백엔드는 관계형 데이터 모델 기반 도메인 중심 응답을 제공.
- 프론트엔드는 주로 렌더링에 맞게 데이터 약간의 가공 담당.
- 데이터를 배열(map으로 순회하는 형태)로 만들어 렌더링하기 쉽게 하는 경우가 많음.
- 개발자 관점
- '편한 방식'이 기준이 되어서는 안 됨. 비용, 성능, 유지보수성 모두 고려 필요.
- BFF(Backend For Frontend) 패턴도 데이터 문제 해결에 도움 될 수 있음.
- API 설계 시 주의점
- 직관적 API 설계가 중요.
- 데이터 가공에 따른 서버 부하와 클라이언트 부하 균형 맞추기.
4. 개발 도구 및 환경 이야기 🖥️⚙️
- Vim vs VSCode
- Vim의 강점은 메크로(반복 작업 자동화)와 빠른 키보드 조작.
- 최근에는 VSCode에 Vim 플러그인을 넣어 두 환경 장점을 혼용하는 경우가 많음.
- 고사양 노트북(M1 Max 이상) 사용 권장, 그래도 무겁다고 느낄 수도 있음.
- VSCode 프로필 기능
- 사용자별, 프로젝트별 다른 설정과 확장 프로그램을 관리할 수 있는 기능.
- trusted-document 문제나 extension과 연동 이슈에 대해 CLI로 대체하는 방법이 있음.
- 노트북 환경
- 램은 32GB 이상이면 보통 충분하지만, 더 큰 용량(64GB 등)이 작업 속도에 긍정적으로 작용.
- 교육할인, 신제품 발표(M4 맥북 등)를 통해 업그레이드 계획 고려 가능.
5. 리액트 및 리덕스 학습 조언 📚
- 리덕스 학습의 핵심은 reducer(누산기) 개념을 이해하는 것.
- reducer는 상태(state)를 받아 새 상태를 리턴하는 함수.
- 코드 작성 연습이 중요하며, 개념을 이해한 후 다양한 프로젝트에 직접 적용해 보는 것을 권장.
- 매핑(map)을 이용해 배열 데이터를 효율적으로 렌더링하는 패턴이 일반적임.
- 초보자 대상 프론트엔드 관련 스택: Node.js, React, SCSS, React Router 등 익히기.
6. CSS와 스타일링 난이도 🎨
- CSS는 초보자도 어려워하는 영역 중 하나.
- 복잡한 레이아웃, 반응형 디자인 등에서 난이도가 상승함.
- AI 도구(GPT 등)를 활용하거나, CSS 프레임워크 사용 고려 가능.
- CSS가 어렵다는 의견 다수, 꾸준한 연습과 학습이 필수.
7. 커뮤니케이션과 협업 경험 🤝
- 개발자들이 다양한 경험과 의견을 나누면서 코드 설계, 환경 설정, 도구 선택 등에 대해 토론.
- 협업에서의 조율, API 설계 시 기준점 설정에 대한 고민 공유.
- 친근한 대화 속에서도 때로는 진지한 기술 토론과 배움의 시간이 공존.
8. 일상, 식사, 운동, 휴식 이야기 ❤️🔥
- 개발자들끼리 식사 메뉴, 운동, 주말 계획 등 인간적인 이야기를 나눔.
- 갈비찜, 감자탕, 하와이안 피자 등 다양한 메뉴 추천과 평.
- 운동은 술 마시기 위한 체력관리라는 유머섞인 자기소개.
- 휴식과 행복한 ‘낭비’(시간, 돈 등)를 즐기는 이야기가 등장해 인간미 묻어남.
면접팁⚡
- 백엔드와 프론트엔드 협업 시 API 설계에 대해 면접 질문 가능
- "백엔드에서 데이터를 어떻게 주는 게 프론트엔드에 효율적인가?"
- 답변 시 데이터 처리의 책임 분배, 유지보수성, 성능 측면 고려해야 한다고 설명.
- 자바스크립트 호이스팅에 대해 명확히 이해하고 있으면 플러스
- 호이스팅 개념과 문제점, 해결책 언급 가능.
- named export vs default export 장단점 이해
- 코드 유지보수, 명확성, 트리 쉐이킹과 디버깅 관점에서 설명할 수 있도록 준비.
링크🔗
- 리덕스 학습 참고 블로그:
https://m.blog.naver.com/pjt3591oo/222628438249 - 뉴스 링크 (자바+스크립트 관련):
https://n.news.naver.com/article/092/0002350111?cds=news_my - 메이플 관련 유튜브 동영상(언급된 영상):
https://www.youtube.com/watch?v=CCl83cQEzhw
#자바스크립트#React#Redux#프론트엔드#백엔드#개발도구#Vim#VSCode#API설계#컬래버레이션