Why 시리즈: 당연한 것들에 대한 질문
개발을 하다 보면 당연하게 받아들이는 것들이 참 많습니다.
JavaScript에서 undefined
를 마주치면 "아, 값이 할당되지 않았구나"라고 생각하고 넘어가고, React에서 클로저를 사용할 때도 "이렇게 하면 되겠지"하고 넘어가곤 합니다.
하지만 정작 "왜?"라는 질문을 받으면 제대로 된 답을 하지 못하는 경우가 많은 것 같습니다.
시리즈를 시작하며
부스트캠프 8주차, 늦은 저녁 오프라인 활동이 끝나고 양꼬치를 즐기며 7,8주차 그룹 동료들과 이야기를 나누던 중이었습니다. 프론트엔드 스프린트가 끝나가던 시점이었습니다. 바닐라 자바스크립트로 프레임워크를 직접 만들어보고, 리액트로 프로젝트까지 진행하면서 많은 것을 배웠지만, 동시에 더 깊은 의문도 생겼던 시기였죠.
그날 저녁, 그룹에서 가장 인상 깊었던 순간은 한 캠퍼 분의 날카로운 질문들이었습니다. 개인적으로 이번 부스트캠프에서 제일 실력이 뛰어나다고 생각했던 분이었고, 다른 개발 분야에서의 경력도 있으셔서 늘 넓은 시야로 통찰력 있는 조언을 해주셨던 분이었기에 그분의 질문에 더욱 귀를 기울였습니다.
"JavaScript에서 undefined를 왜 사용하는 걸까요?"
"React에서 클로저를 왜 사용하는 걸까요?"
순간 머릿속이 하얘졌습니다. 매일 사용하는 개념들인데, 정작 그 근본적인 이유를 설명하지 못하는 제 모습을 발견한 거죠. 그 순간 깨달았습니다. 이제는 '왜'라는 질문에 대답할 수 있지 않을까 생각했는데, 여전히 너무 쉽게 '이렇게 하면 돼'라는 결론에만 집중한 채, '왜 이렇게 해야 하는가?'라는 본질적인 질문을 놓치고 있었던 것입니다.
시리즈의 목적
이 'Why 시리즈'는 그날의 깨달음에서 시작됩니다. 프론트엔드 개발에서 당연하게 여기는 것들에 대해 근본적인 질문을 던지고, 그 답을 찾아가는 여정이 될 것입니다. 단순히 사용법을 익히는 것을 넘어, 그 기술이 탄생한 배경과 이유를 이해함으로써 더 깊이 있는 개발자로 성장하고자 합니다.
다뤄 보려고 생각 중인 주제들은 다음과 같습니다:
- JavaScript의 undefined는 왜 존재하는가?
- React에서 클로저가 필요한 이유는 무엇인가?
- Virtual DOM은 왜 도입되었는가?
- 상태 관리 라이브러리는 왜 필요한가?
- 브라우저의 렌더링 과정은 왜 이렇게 설계되었나?
- REST API는 왜 이런 구조를 가지게 되었나?
시리즈 진행 방식
각 주제는 다음과 같은 구조로 다룰 예정입니다:
- 문제 상황 제시
- 역사적 배경
- 기술적 해결 과정
- 현재 사용되는 이유
- 대안과 트레이드오프
- 실제 활용 사례
부스트캠프에서 배운 가장 큰 교훈은 '질문하는 법'을 배운 것이었습니다. 특히 동료 개발자들이 던지는 질문들은 단순한 호기심이 아닌, 기술의 본질을 꿰뚫는 통찰이 담겨있었죠. 이 시리즈를 통해 저와 같은 개발자를 준비하는 친구들이 혹은 주니어 개발자 분들이(제 실력이 부족할 거 같지만) 당연하게 여기던 것들에 대해 다시 한 번 생각해보는 계기가 되었으면 합니다.
특히나 프로젝트를 앞두고 있는 지금, 이러한 근본적인 질문들은 더욱 중요한 의미를 가집니다. 지난 8주간의 스프린트에서 놓쳤던 개념들을 하나씩 되짚어보고, 곧 시작될 프로젝트에서 마주하게 될 기술들에 대해서도 미리 깊이 있게 이해해보고자 합니다. TypeScript부터 시작해서 상태관리, 테스팅, CI/CD까지 - 프로젝트를 진행하면서 마주칠 각 기술의 존재 이유와 작동 원리를 탐구해보려 합니다.
이 시리즈는 단순한 지식 정리가 아닌, 제가 성장해나가는 과정의 기록이 될 것입니다. '이렇게 하면 된다'는 답을 찾는 것에서 '왜 이렇게 해야 하는가'를 고민하는 개발자로 발전하는 여정이 되길 바랍니다. 이렇게 적어두는 이유도 스스로 동기부여를 만들고 꾸준히 글을 쓰기 위한 시작으로 이렇게 글을 남겨보려고 합니다.
'DEV > FE' 카테고리의 다른 글
[why] JavaScript는 왜 undefined를 사용할까? (2) | 2024.10.26 |
---|---|
[why] 프론트엔드 개발자로써 알아야 되는 부분들 (0) | 2024.10.26 |
[FE] React Context API와 LocalStorage로 간단 상태관리 모듈 만들기 (1) | 2024.10.09 |
[FE] 아토믹 디자인 패턴에서 탈출: 컴포넌트 디자인 패턴, 방법론 찾아보기 (1) | 2024.10.07 |