
2024-10-06
React / Deep-dive (22)
The end
글에 앞서..
-
이번 마지막 글은 React의 코드 분석에 관한 글은 아닙니다.
-
개인적으로 React deep dive를 하게 된 계기와 과정, 그리고 끝난 뒤의 생각과 감정을 적은 글입니다.
-
굳이 마지막 회고를 적는 이유는 저와 비슷한 상황의 개발자, 신입 개발자 분들께 조금이나마 도움이 되었으면 하는 마음과 함께 성장하는 힘이 되길 바라며 적어봅니다.
지난 흔적
안녕하세요. 신입 프론트엔드 개발자 오기윤 입니다!
-
React-deep-dive 대 장정을 마무리하며 드리고 싶은 말씀을 끄적여봅니다.
(지극히 개인적이고 주관적입니다^^)오늘, 10월 6일 기점으로 프론트엔드 개발자로 일한 지 어느덧 1년 4개월이 지나고 있습니다…
제가 첫 HTML을 접하고 개발을 시작한 때는 2022년 8월이었습니다.
(벌써 2년이라는 시간이.. 늙기 싫다 증말 😂) -
저는 2022년 9월 ~ 2023년 2월 “SW사관학교 정글”이라는 부트캠프를 진행했으며, JavaScript로 처음 프로젝트를 만들었던 것은 2022년 12월 마지막 “나만의 무기” 라는 사용자 서비스를 만드는 프로젝트였습니다.
한 달 정도 되는 짧은 시간 안에 언어, 라이브러리, 프레임워크를 정해 프로젝트를 진행해야 하다 보니 JavaScript의 let, var, const도 구분하지 못하면서 JavaScript의 기본 문법만 겉 핥기로 익히고, React, ReactNative로 프로젝트를 진행했습니다.
그렇게 프로젝트는 나름 성공적? 마무리 하였지만 JavaScript에 대한 기본기가 너무 부족하다 보니 취준 과정 중 코딩 테스트, 면접에서 떨어지기를 반복했습니다.
-
지식의 부재를 온몸으로 마주했고, 마음은 급했지만 정글에서 CS를 깊게 공부했던 경험이 굉장히 좋았어서 기본부터 다지자는 생각이 들었습니다.
(Back to basic…)그 이후 너무나도 훌륭한 정글 동기분들과 JavaScript 스터디를 하면서 호이스팅, 클로저, 프로토타입, 실행 컨텍스트 등 JavaScript와 많이 친해지고 난 뒤에 마주하는 JavaScript는 상당히 다르게 느껴졌습니다.
물론 취직을 위해서 React의 기본 용법과 Hook최적화를 먼저 공부하면서 5개월 이상의 취준 끝에 취직에는 성공했습니다.
(춥다 추워 😇) -
사실 첫 회사는 입사할 때와는 다르게 회사 사정 상 SI위주의 외주 개발이 주를 이루었고, 1년 넘게 지속되었습니다.
2년 이상의 경력자도 사수도 없었고, 그렇다고 몇 달 선배인 개발자 분들과 개발하는 기회도 쉽게 주어지지 않았습니다.
솔직히 혼자 프로젝트를 세팅하고, 에러를 마주하고, 외주의 요구 사항들을 해결해 나가는 시간이 많이 고통스러웠고 혼란스러웠습니다.
-
짧으면 일주일, 길면 2~3달 안에 만들어 내야 하는 프로젝트를 반복 진행하면서 React를 계속 사용했지만 React 초보라면 마주한다는 Too many re-renders, Invalid hook, blinking 등의 에러와 종종 인사를 해야 했고, 스스로 나는 과연 당당하게
“프론트 개발자라고 말할 수 있을까?”
“JavaScript 언어를 사용하며 React.js 라이브러리를 주력으로 사용합니다! 라고 말을 자신감 있게 말할 자격이 있을까?”
라는 의문이 계속 저를 괴롭혔습니다.
(저는 개인적으로 찝찝한 걸 굉장히 싫어하는 성격입니다..ㅎㅎ;) -
주변 동기들은 하나의 서비스를 계속 발전시켜나가는 경험을 하며 성장해나가는 것이 많이 부러웠고 초조했습니다.
-
내가 질문하고 소통할 사람이 가까이에 없고, 사용자 피드백을 받으며 하나의 서비스를 발전시키는 경험을 하기 힘든 환경이라면, 😷
-
내가 속한 회사가 언젠가 자사 서비스를 개발하는 그 날이 오던, 추후 다른 회사에서 서비스를 만들어 나가던 스스로에게 준비되었다고 말할 수 있고, 함께 일하는 동료들에게 도움이 되는 사람이 되고 싶었습니다.
그 날이 React-deep-dive의 시작이었던 것 같습니다.
(아마 취직하고 4달이 지난 2023년 11월 쯤 이였던 것 같습니다.)시간 상으로는 1년 정도이지만 개발자로서의 첫 직장이라 부족한 점이 많았기에 회사 일정을 따라가기도 벅차서 실질적인 기간은 4달? 정도 되는 것 같습니다.
물론 4달을 온전히 React를 파본 것은 아니고 퇴근한 뒤에 집에 와서, 주말에, 공휴일에 틈틈히 내부 코드와 관련 포스팅을 읽어보고, 정리해보고, 다시 쓰기를 반복했던 것 같습니다.
React가 생긴 배경과 철학, 발전 과정, 전체 문맥을 파악하는 과정이 제일 어려웠던 것 같습니다.
현재, 지금
React의 내부 코드를 분석하고 파악하면서 가장 크게 느낀 점은 “재밌다 이 녀석”입니다.
-
좋은 책과 드라마, 영화를 보면 사람들은 이렇게 말하곤 하는 것 같습니다.
“이 작가 어떻게 이런 생각을 했지?”
“아 나 완전 공감, 진짜로 슬펐어, 좋았어, 행복했어, 화났어”
-
저한테는 이 과정이 굉장히 재밌는 드라마를 시청하는 것과 같았습니다.
“도대체 왜 이 함수의 구현체는 어디 있는거야?” → 짜증
“아무리 봐도 진짜 문맥 이해가 안된다. 처음부터 다시 간다;” → 화남
“와 어떻게 이런 생각을 했지?” → 감탄
“아 이래서 이렇게 작성했고 React가 동작하는구나!” → 행복
-
많은 개발자 선배 분들과 커뮤니티, SNS에서 다음과 같이 말합니다.
(모두가 그렇다는 것은 아닙니다.)“프론트는 AI가 대체할 것이다.”
“프론트도 백엔드를 공부해야 한다.”
-
저도 걱정과 생각이 지금도 많지만,
“Latte is horse”처럼 “옛날에는 프론트 백 이딴 거 없었어~” 라는 말씀들을 해주시는 것처럼결국 Front는 Back 즉 Server에 대해 알아야 하며 나아가 Infra도 알아야 합니다.
Back도 Front를 알아야 하며 Front를 알아야 Infra도 자유롭게 다룰 수 있다고 생각합니다.
-
여러분이 생각하는 개발자는 무엇인가요?
제가 생각하는 개발자는 “문제를 효율적인 방법으로 해결하는 사람” 입니다.
-
효율적인 방법은 무엇인가요?
결국 언어와 Front, Back, 언어는 모두 문제를 해결하기 위한 도구와 수단일 뿐입니다.
그러나 효율적인 해결책을 도출하려면 많이 알면 알수록 좋습니다.
개인적으로 Front, Back은 그저 출발선이 다를 뿐이라고 생각합니다.
얘기가 조금 다른 길로 새버렸는데 하고 싶은 말은 “깊게 하나를 파헤치다 보면 길이 보이는 것 같습니다.”
-
정글(부트갬프)에서 pintOS 과정 중 cpu scheduling이 있었는데, 저는 사실 프론트에서 scheduler를 구현 할 일은 없을 거라고 생각했었습니다.
-
그런데 React(현 Meta)팀은 Scheduler를 직접 만들어서 Work를 스케줄링하여 순서를 보장하고 Concurrent Mode또한 완성했습니다.
-
“프론트에서 스케줄러를 만들고 이벤트의 순서를 제어하고 중단하고 재 실행을 시킨다?”
저한테는 굉장히 신선한 충격이었습니다.
React관련 포스팅을 이어가면서 많은 개발자들이 고민하며 만든 코드와 로직, 변수명 마저도 저한테는 굉장히 많은 도움이 되었던 것 같습니다.
저희가 같이 봤었던, 들었던, 겪었던 어떠한 것들을 마주하면 반가운 것처럼 내부 코드에 적혀있는
Invalid hook.., Too many re-renders..
가 여기서 throw Error를 한 것이구나 하며 알아가는 재미가 꽤나 있었습니다. 🤓
-
그리고 다음
제가 살펴본 React code는 16버전 (React 16.12.0 version) 입니다.
어떻게 보면 React가 빛나기 시작한 함수형 컴포넌트와 Hook, Concurrent mode의 시작 점이라고 할 수 있을 것 같습니다.
현재는 19버전을 준비하고 있고 임시 버전인 18.3 까지 이어서 계속 발전 중인 것으로 알고 있는데요.
제가 16버전으로 정한 이유는 현재의 LANE 까지 한 번에 받아들이기는 너무 어려울 것 같고, 그렇지만 현재 사용 중인 함수형 컴포넌트, 훅, Life-cycle등 핵심 로직은 모두 담고 있기에 저의 가려움들을 시원하게 긁어줄 수 있을 것 같아서 선택한 버전입니다.
추후에 어떤 Deep-dive를 이어 갈지는 모르겠지만 Core, base가 단단하면 받아들이는 양과 넓은 시야가 생기는 것 같습니다.
제가 쓴 글들이 완벽하지도 않고, 틀렸을 수도 있지만 저는 너무나 만족합니다.
모든 글을 읽는다고 해서 내 것이 되는 것은 아니고, 나만의 생각과 정리가 내 core, base가 된다는 것을 다시 한 번 느낀 것 같습니다.
사실 제일 드리고 싶은 말씀은 “여러분도 여러분 만의 Deep-dive를 통해 많이 단단해지고 성장하셨으면 좋겠습니다.”
긴 글 읽어주셔서 감사합니다.
다음에 또 좋은 글로 찾아뵙겠습니다.
모두 화이팅!!🤩

React / Deep-dive (21)
Commit Phase (2)