JavaScript는 왜 싱글 스레드를 택했을까? 싱글 스레드로서 얻는 이점은 무엇일까? 그동안 당연하게 여겼고, '하필 싱글 스레드'이기 때문에 가능한 장점들에 대해 깊이 생각해보지 못했다. 우연히 '상태 머신', '상태 전이'에 관한 FE 아티클을 읽다가 생각이 뻗어나갔다. 스레드는 '코드 실행 단위'를 의미한다. JavaScript는 이 스레드를 단 하나만 가지고 있기 때문에, 하나의 작업이 완전히 끝나야만 다음 작업으로 넘어갈 수 있다. 이는 '현재 작업이 다른 작업에 의해 중간에 방해받지 않음'을 보장해준다. 싱글 스레드와 반대 진영인 멀티 스레드의 상황을 비유하자면, 팀원과 구글 독스 문서를 공유해 함께 편집하는 것과 같다. 내가 작성 중인 문장이 다른 사람에 의해 실시간으로 변경되거나 삭제될 수 있다. 싱글 스레드는 이러한 상황이 애초에 가능하지 않도록 한다. 위 아티클에서는 '리액트 애플리케이션의 상태 변경과 UI 반영이 동기적으로 진행된다'고 설명한다. 사용자가 버튼을 클릭하면 JavaScript는: (1) 먼저 이벤트를 처리한다 (2) 상태를 변경한다 (3) UI를 업데이트한다 이 모든 과정이 '차례대로' 완료되도록 보장하기 때문에, 멀티 스레드 언어보다 프로그램의 동작을 예측하기 쉽고 디버깅도 수월해진다. 당연하게 여겼던 JavaScript가 왜 이렇게 설계되었는지 생각해볼 수 있어 기록으로 남겨본다. (2025.04.14)
피드백 루프 빠르게 만들 것. 돌아보면 그동안 피드백을 받으면 정신이 맑아지고, 뭔가 더 해보려는 적극성이나 의지가 더 생겼다. 지난 주 팀플 피드백 세션에서도 똑같이 느낌. 피드백을 받기 위한 과정도 나에게 도움이 된다. 내 의견을 정리해서 말하는 것이 선행되어야 하기 때문. 누구에게 받는 피드백이든, 피드백 받는 환경 의도적으로 늘려서 모멘텀 잃지 않게 하면 좋겠다. (2024.11.15)
팀 프로젝트를 했을 때 좋았던 점은, 내가 몰랐던 프로그래밍 방식과 사고를 새롭게 알게 된다는 것이었다. 말 그대로 세계관이 넓어지는 기분. 특히 경험이 많은 팀원과의 프로젝트에서는 더 많은 레슨을 얻었다. 팀 프로젝트만이 줄 수 있는 좋은 성장 기회라고 생각한다. 이렇게 터득한 JS 문법이나 사고방식을 혼자 하는 프로젝트에도 사용하면 짜릿했다. 반대로 개인 프로젝트에서도 장점이 있었다. 누가 밥상을 차려주지 않기 때문에, 더 몰입하게 되는 상황이 잦다. 그전 까지 당연하게 고려했던 기술 스택, GitHub 브랜치 전략 등 모든 것을 원점에서 생각해 볼 기회를 갖게 된다. 문제 원인 분석도 어디서 부터 점검할지 스스로 정하고, 해결할 기술적 옵션을 고르는 것 까지 온전히 혼자 책임지고 결정해보는 것도 귀한 경험이다. 이 과정이 기억에 오래 남기도 했다. (2024.11.14)