동형격언

원본

동형 격언(isomorphic aphorisms)은 테크 인플루언서들이 사용하는 방식 중 내가 가장 싫어하는 방법이다.

분석적 명제만으로 논리를 설파하기 때문에 언뜻 보면 굉장히 현실적으로 들릴 수도 있겠으나, 그 중에서 심오한 논리는 눈 씻고 찾아봐도 보기 힘들다.

예) React를 쓰면 안 되는 이유 10가지!

  1. 앱의 복잡도가 커지면 커질수록 상태 관리를 하기 힘듦

  2. useEffect를 사용하면 버그를 추적하기 힘들어짐

  3. SSR? PHP가 10년 전부터 했던 걸 똑같이 따라함

  4. ...

왜 "동형 격언"인가 하면, 생각을 설파할 때 어떤 개념적인 원론적인 담론이 아닌 "힘들다", "복잡하다"라는 그 아무개라도 알 수 있는(그래서 더 많은 사람들에게 공감을 살 수 있는) 언어들을 선택하기 때문이다. 이런 류의 글은 태어나서 한 번도 Ruby를 써본 적 없는 나도 쓸 수 있다. 동형적이기 때문에.

예) Ruby on Rails가 도태되는 이유

  1. 자바스크립트가 대세인데 Ruby를 굳이?

  2. Boilerplate 코드가 너무 많음!

왜 이런 식의 사고방식이 문제인가 하면, 개발자, 더 나아가서 엔지니어라는 직군의 본질은 "추상적인 개념"을 실용적인 것으로 변화시키는 것이기 때문이다. 이건 의견의 차이를 떠나서 응용과학이 가지는 숙명이고 매력이다. (여기서 말하는 엔지니어는 굉장히 포괄적인 개념이다. 프론트엔드, 백엔드, ML, 데이터 사이언스 등등)

하지만 이런 비판에 앞서서 본질적인 글을 쓰는 건 쉬운 일이 아니라는 것도 강조하고 싶다. 특히 소모적인 콘텐츠가 주로 생산되는 소셜미디어에서 사람들은 본질적인 대화 자체를 꺼려하기도 한다. 이건 의견의 옳고 그름을 떠나서 많은 사람에게 와닿고 진실에 가까운, 그리고 재밌는 글을 쓰려면 엄청난 직관과 글솜씨를 요구하기 때문이다. 나는 동형적인 설명 외에 "왜" 본질적으로 타입스크립트가 자바스크립트보다 더 나은지에 대해서 내가 피상적으로 느끼는 것 외에 본질적으로 설명할 수 없다. (이 문제에 대한 본질적인 접근방식의 예: https://lexi-lambda.github.io/blog/2020/01/19/no-dynamic-type-systems-are-not-inherently-more-open/)

실무에 경험한 바로는 당연히 정적 타이핑이 생산성이 높다. 근데 그 생산성은 어떻게 정의할 것이며 내가 가진 "느낌"을 "효율성"이라는 측정 가능한 수로 어떻게 변환할 것인가? 결국 나는 "TypeScript는 정적인 타입이 효율성을 높인다"는, 틀리지는 않지만 만족스럽지 못한 대화밖에 못 하는 것이다.

결국 내가 하고자 하는 말은 실용성에 반(反)하는 것이 아닌 동어반복(Tautology)을 응용과학의 훌륭함을 오염시키는 행위를 지탄하고자 하는 것이다.

  • "타입스크립트는 더 생각이 많이 필요해서 복잡하다"

  • "Next.js 프레임워크는 overhead가 많기 때문에 너무 크고 불필요하다"

  • "굳이 React Hook을 배워야 하는지 모르겠다" (이건 6년 전에 엄청 많이 듣던 말)

반대로 긍정적인 발언도 문제가 될 수 있다:

  • "MUI는 사용하기 편하다"

이런 문장들 자체가 나쁘다는 건 아니다 - 연차가 있는 엔지니어들이 악의성이 없든 있든 이런 의견들을 본질적이라고 착각하는 게 나는 문제라고 생각한다. 이런 의견들이 굳어지면서(복잡한 건 나쁜 것이다, 비효율적인 건 나쁜 것이다) 일종의 개발자들의 Zeitgeist(시대정신)으로 남게 되고, 이런 오류는 개인이 점점 더 고치기 힘들어진다.

이런 생각에 대해 모두 경각심을 가지면 좋겠으니, 훌륭한 엔지니어들은 모두가 알고 있는 명언으로 긴 글을 마무리하려 한다: Talk is cheap, show me the code

Powered by wisp

6/22/2025