SWC 설계 철학을 읽고

2024년 2월 8일

[Vercel 강동윤님의 swc 설계 철학을 보며 든 생각들.]


게시물을 보기 전에 "성능이 최우선이 아닐까?"라는 생각을 했다. 캐시라던가, React의 리렌더링을 최소화하는 기법이라던가 하는 모든 부분은 성능을 좋게 하기 위해서다. 대학 수업에서도 보통 속도를 몇%라도 빠르게 하기 위한 기술들을 중점적으로 배운 것 같다. 오픈소스의 GitHub에서도 "우리 이렇게 가볍고 빨라요"하는 부분으로 광고하는 것을 자주 본 것 같다(내가 지금까지는 그런 부분들만 봤을 수도 있다).


하지만 설계 철학 중 정확성(표준)을 최우선이라고 하셨다. cm와 inch를 잘못 사용하여 인명피해가 발생했던 여러 사례들이 생각났다. 나는 표준을 고려하며 디자인과 개발을 했는가? 생각하며 반성했다. ECMAScript 표준은 왜 있는가. 개발을 하기 전 아키텍쳐를 설계하고, Sequence Diagram 등의 UML을 제작하는 이유가 무엇인가. 깃 커밋 컨벤션은 어떤 역할을 하고 디자인 시스템은 왜 만드는가. 그리고 이러한 작업들이 얼마나 많은 시간과 공간을 절약해 주었는가.


사용성에 대한 부분에서도, "UX는 여기에도 적용이 되는구나"라는 생각을 했다. swc 역시 개발자분들이 사용하는 일종의 서비스이다. 모든 서비스는 고객을 위한 좋은 사용자 경험을 제공해야 한다. 내가 작성한 코드도, 개발한 서비스도 모두 누군가가 사용하는 상품이 될 수 있기에 이를 항상 고려해야겠다.


Rust라서 성능을 약간 반납하고 더욱 가치 있는 다른 부분들을 가져오는 성공적인 거래를 할 수 있지 않았을까라는 생각도 했다. 사실 싱글 스레드 언어인 JavaSciprt를 Rust로 바꾸는 것만으로도 엄청난 성능 개선이 있을 것 같다. 동시성 프로그래밍 수업에서 Rust를 사용해 봤는데 진짜 빠르다. 그런데 Ownership, Lifetime과 같이 코딩하면서 머리가 복잡해지는.. 경험을 많이 했기 때문에 정말 어려운 언어라는 생각이 남아있다. 그래도 성능의 개선도 있으면서 사용성과 같은 다른 부분들도 얻을 수 있다면 해 볼 만한 거래가 아닌가 생각했다.


나중에 오픈소스 제작자가 되어 다시 이 글을 보면 무슨 생각을 할까 :)