설계는 처음부터 맞지 않는다. 대부분의 프로젝트는 문제를 정확히 정의하지 못한 상태에서 시작되고, 그 결과 틀린 구조 위에서 개발이 진행된다. 이 글은 Readium 개발기를 시작하기 전에, 왜 이 시리즈가 “정답”이 아니라 “설계가 무너지는 과정”을 기록하려 하는지에 대한 선언이다.
우리는 단순히 기능을 구현하는 것이 아니라, 신뢰할 수 없는 실행 환경을 견디기 위한 코드를 함께 작성하고 있다. polyfill에서 ponyfill, 그리고 그 너머까지 이어진 흐름은 JavaScript가 어떻게 불확실성 위에서 진화해왔는지를 보여준다. 이 글은 우리가 작성하는 코드의 상당 부분이 왜 기능이 아니라 ‘환경에 대한 방어’로 존재하는지를 구조적으로 풀어낸다.
우리는 단순히 코드를 작성하는 것이 아니라, 수백 개의 의존성을 함께 다운로드하며 시스템을 구성한다. 문제는 그 중 상당수가 더 이상 필요 없는 코드라는 점이다. 이 글은 JavaScript 의존성 비대화가 어떻게 만들어졌고, 왜 여전히 유지되고 있으며, 우리가 어떤 선택을 해야 하는지를 구조적으로 분석한다.
AI 에이전트가 모든 일을 대신하는 시대라는 말은 매력적이다. 하지만 금융과 의료 같은 규제 산업에 이 개념을 그대로 적용하는 순간, 그 전제는 무너진다. 이 글은 AI의 한계가 기술이 아니라 책임 구조에 있다는 점, 그리고 AI가 왜 자율적인 존재가 아니라 통제 가능한 구조로 재구성될 수밖에 없는지를 따라간다.