Nolan Lawson이 본 '플랫폼을 쓰라'는 말이 안 먹히는 이유: jQuery 시대의 습관, 문서화 격차, 직접 만드는 재미
- Nolan Lawson이 "플랫폼을 쓰라"는 통념의 반대편을 정리함. 브라우저가 생태계를 따라잡던 시절 jQuery가 빈틈을 메웠고 IE6 같은 구형 브라우저가 사라지길 기다려야 했던 '울퉁불퉁한 웹'에서는 직접 만드는 게 합리적 선택이었음
- 문서화 격차도 이유로 꼽음. npm 패키지는 README와 예제, 튜토리얼, 스크린샷이 잘 갖춰져 있었지만 MDN이 자리 잡기 전 웹 플랫폼 문서는 블로그와 StackOverflow, CSS Tricks에 흩어져 있었고 그 사이트들조차 jQuery나 GreenSock을 쓰라고 권했음
- 자신만의 코드를 만드는 재미와 IKEA 효과를 지목함. 모달 다이얼로그 하나를 직접 만들면 position:absolute와 z-index, body overflow 차단, Esc 처리, 포커스 트랩, 포커스 반환까지 구현해야 하는데 많은 개발자에게 이 과정이 즐거움
- 댓글에서는 네이티브 보다 Adobe 구현이 접근성, 포커스 관리, 모바일 터치 스크린리더 지원, 유연성에서 낫다고 반박함. 데이트 피커도 네이티브 구현으로는 금방 부족해진다는 지적이 나옴
- 프론트엔드 25년 경력 댓글러는 그동안 자기를 괴롭힌 게 IE6와 웹 컴포넌트 둘뿐이라며, 에이전트 개발 시대에도 AI가 웹 컴포넌트의 같은 함정에 빠진다고 함. 네이티브 웹 컴포넌트를 내부 사이트에 적용했다가 로딩이 느려져 되돌린 사례도 나옴
Hacker News opinions
Dragula 이름이랑 로고 진짜 잘 만들었음. 나는 아직도 Dragula 쓰는데 Sortable보다 뭔가 손에 붙는 느낌임. 이유는 설명 못 하겠지만 신경 안 씀, 그냥 JS 라이브러리니까.
드래그앤드롭은 iOS Safari에서 거의 안 됨. 드래그하면 뷰포트까지 같이 밀려버림.
글에서 네이티브
얘기가 나오는데, 개발자들이 커스텀 다이얼로그를 만드는 건 접근성, 포커스 관리, 모바일 터치 스크린리더 지원이 더 낫기 때문임. Adobe 구현이 네이티브보다 훨씬 유연하고, 결과물이 더 나빠지는데 '플랫폼을 쓰라'고 하면 설득이 안 됨.날짜 선택기도 똑같음. 네이티브 구현은 금방 부족해짐.
이건 역사적 사고 같음. 예전엔 플랫폼이 못 해줘서 다이얼로그 하나 만들려면 라이브러리를 써야 했고, 그렇게 훈련된 개발자들이 React 시대까지 온 거임. DOM 만지는 건 나쁜 짓이라고 배웠음. 지금도 바닐라 CSS 쓰자고 하면 'tailwind랑 shadcn이 기본이지' 소리 들음.
tailwind랑 shadcn이 플랫폼보다 나쁘다는 건 무슨 소리임? 개발 속도가 몇 배로 빨라지는데.
글 자체가 답을 자세히 주고 있음. 익숙함, 추상화 수준, 문서화. 직접 만들어서 배우는 재미 얘기도 동의함. 예전엔 그게 개발자 성공 공식이었는데 요즘 AI 시대엔 아니라고들 느끼는 듯.
'직접 배워라'에 대한 극도의 무관심이 지금 프로그래밍에서 AI가 인기 있는 이유임.
최근에 만든 사이트는 거의 Claude 출력물임. WCAG AAA 접근성 기준 유지하고 로딩, 렌더링 시간 최적화하라고 시켰더니 잘 하더라. 페이지 무게에 신경 쓰라고 하면 JS랑 React 안 쓰고 브라우저 네이티브 요소, CSS, 바닐라 JS로 감. 문제는 그걸 요구해야 한다는 거고, 요구하려면 언어를 알아야 함. 그냥 예쁜 웹사이트 만들어달라고 하면 800KB React 번들에 Inter 폰트에 AI 베이지 색감 나옴.
언어를 꼭 알아야 함? 로딩 시간 개선해달라고 물어보기만 하면 되는 거 아님?
웹 컴포넌트는 API 설계가 이상하고 쓰기 어려움. Lit 없이 쓰는 사람이 몇이나 되겠음. React는 상대적으로 잘 설계됐고 그렇게까지 뚱뚱하지도 않음. 이건 취향 문제라 논쟁해도 결론 안 남.
25년 넘게 프론트엔드 해왔는데 그동안 나를 진짜 괴롭힌 건 두 개뿐임. IE6랑 웹 컴포넌트. '플랫폼을 쓰라'고 할 때마다 불행해지고 사이드 프로젝트를 접게 됨. 에이전트 개발 시대에도 AI가 웹 컴포넌트의 같은 함정에 빠짐. 다들 '네, 그리고' 식으로만 표준을 쌓아왔음.
React가 잘 설계됐다는 건 동의 못 함. Svelte나 SolidJS가 기술적으로 낫다고 봄. 그런데 왜 React가 아직 인기 있냐면 기술 외적인 부분임. 문서가 처음부터 훌륭했고, 영상과 샘플 프로젝트, 컨퍼런스로 단방향 데이터 흐름을 가르치면서 FP를 발명한 것처럼 굴었음. 돈 잘 쓰는 팀과 커뮤니티가 만든 모멘텀이 컸음. 설계 결함으로 문제가 생기면 '네가 잘못 쓴 거'라는 소리를 들었음.
나는 React를 끝까지 피했음. 네이티브 웹 컴포넌트가 나와서 내부 사이트에 써봤는데 엄청 느렸음. 중복 코드를 줄이려다가 즉시 로딩되던 사이트가 눈에 띄게 느려짐. 기본 기능 최적화하려고 꼼수를 써야 한다는 게 이상해서 다 걷어내고 원래 구조로 돌아감.
React가 잘 설계됐다는 건 훅이랑 매직 스트링으로 난리 나기 전 얘기임. SaaS들이 Next.js랑 React만 확장 SDK로 지원해서 어쩔 수 없이 쓰지만, 개인 프로젝트는 다 바닐라 JS에 Java, .NET, PHP임.