My AI Content Journey
I apologize ahead of time, what follows has no tooling applied to it. No grammar checks, no AI, and...
개요 #
SolidJS를 만든 Ryan Carniato가 자신의 글쓰기 이력을 처음부터 끝까지 털어놨다. 8년 동안 수백 편의 글을 쓰면서 어떻게 문장을 고쳐왔는지, 2025년 말 LLM을 쓰기 시작한 뒤 무엇이 달라졌는지, 그리고 그 변화에 독자들이 어떻게 반응했는지를 담았다.
글 맨 앞에 그는 이런 단서를 달았다. 이 글에는 어떤 도구도 쓰지 않았다고. 문법 검사도, AI도, 흐름을 다듬는 편집도 거치지 않았다는 것이다. 거칠게 읽힐 수 있지만 그게 중요하다고 그는 적었다.
결론부터 말하면 그는 아직 답을 찾지 못했다. 글은 "나도 계속 알아가는 중"이라는 문장으로 끝난다.
8년에 걸쳐 만든 편집 파이프라인 #
시작은 정말 거칠었다 #
Carniato는 SolidJS를 만들면서 일찍부터 교육이 근본적인 장벽이라고 판단했다. 프론트엔드 담론을 React가 장악한 상황에서 다른 아이디어를 꺼내기가 쉽지 않았고, "JavaScript Fatigue"라는 말이 돌던 시기이기도 했다.
문제는 그의 초기 글이 정말 거칠었다는 점이다. 영어 실력이 부족했던 건 아니다. 학교 성적은 늘 괜찮았다. 다만 그가 전하려던 생각이 코드 예제 범위를 넘어섰다. 수년간의 관찰과 여러 분야를 오간 학습에서 나온 것들이라, 요점 하나 전달하는 데 글 한 편이 통째로 필요했고 그 과정에서 세부 사항에 파묻히기 일쑤였다.
말하듯 쓰는 습관도 발목을 잡았다. ICQ와 MSN 메신저를 쓰던 시절 그는 마침표를 계속 찍어 대화 속도를 표현했다. "..."이 길수록 더 긴 침묵이라는 뜻이었다. 회사에서 이메일을 쓸 때는 불필요한 부분을 덜어내려고 평균 세 번씩 고쳐 썼다고 한다.
2018년 Medium에 초기 글을 올리기 시작했을 때, Gitter와 Spectrum에 모여 있던 초기 Solid 커뮤니티가 교정을 도와줬다. 커뮤니티에 글을 검토받는 습관은 그 후로도 사라지지 않았다. 오늘날 그의 글 대부분도 공개 며칠 전 Solid Discord에 먼저 올라온다.
Grammarly, 그리고 문단을 쪼개는 법 #
커뮤니티 멤버 한 명이 Grammarly를 써보라고 권했다. 단어와 쉼표를 자주 빠뜨리던 그에게는 큰 도움이 됐다. 무료 버전이어도 표현이 많이 이상할 때는 힌트를 줘서 다시 써볼 기회를 만들어줬다.
그래도 생각만큼 많이 고쳐지지는 않았다. 애초에 단순한 함정에 빠지는 유형이 아니었기 때문이다. 문장이 더 명확해진 것도 아니었다. 진짜 돌파구는 온라인 퍼블리케이션에 글을 싣기 시작하면서 왔다. 2019년 무렵 "Angular in Depth"가 그랬다. 그들은 콘텐츠를 지지해줬지만, 동시에 이 글이 독자를 놓치고 있다는 점을 짚었다.
@layzee가 그와 마주 앉아 글 하나를 붙들고 문단 나누는 법을 알려준 일도 있었다. 그때까지 Carniato는 한 문단이 하나의 완결된 생각을 담아야 한다고 여겼다. 그러다 보니 문단 하나에 늘어지는 문장이 6~8개씩 들어갔다. 세 개를 넘기지 말라는 게 조언이었다. 방금 전한 내용을 독자가 소화할 틈을 주라는 뜻이었다. 같은 이유로 여백과 이미지를 넣으라는 말도 들었다.
처음엔 마음에 들지 않았다. 글이 길어졌기 때문이다. 그가 보기엔 너무 길었다. 하지만 그 덕에 무엇을 말하려는지에 더 집중하게 됐다. 문단을 쪼개는 편집 한 번, 군더더기를 걷어내는 편집 한 번이 필요해졌다.
Theo Browne의 첨삭 #
Solid에 속도가 붙던 2020~2022년 사이에는 Theo Browne(T3.gg)이 그의 글을 여러 편 검토했다. Theo는 흐름이 끊기는 문장을 훨씬 덜 봐줬고, 불필요한 표현을 전부 걷어냈다. "And ...", "In fact", "But Honestly", "Actually..", "Simply put," 같은 것들이다. 아무것도 더하지 않는다는 게 이유였다. 그렇게 정리하고 나니 정말 힘을 실어야 할 대목에 그 표현들을 아껴 쓸 수 있게 됐다.
2025년 말까지 그의 글쓰기 과정은 이랬다. 거칠게 초고를 쓰고, 혼자 여러 번 고치고, Grammarly를 돌리고, Solid 커뮤니티에 넘긴다. 피드백을 받은 뒤 특정 검토자 몇 명에게 다시 보낸다(Theo처럼 바빠져서 정기적으로 봐주기 어려워진 사람들도 있었다). 그렇게 예닐곱 명이 붙고 그 두 배의 시간이 지나서야 글 한 편이 나왔다.
LLM을 만나기까지 #
Carniato는 2025년 말까지 LLM에 의도적으로 프롬프트를 넣어본 적이 없다. 스스로도 AI 후발주자였다고 밝혔다. 구글 검색에서 Gemini 결과가 뜨는 정도, 글이나 스트림용 이미지 생성을 조금 만져본 정도가 전부였다. 챗 LLM은 직접 쓰지 않았다.
그런데 2023년 말부터 두 가지 현상이 눈에 띄었다.
첫째, 그의 작업을 인용한 형편없는 글들이 나타났다. "2023년에 써야 할 최고의 자바스크립트 프레임워크" 같은 제목이었다. 처음엔 성의 없는 마케팅 글이라고 생각했다. 실제로 일부는 그랬을 것이다. 하지만 시간이 지나면서 그는 이것들이 AI가 만든 글임을 알아차렸다.
둘째, 그의 글에 찾아와 AI가 썼다고 지적하는 사람들이 생겼다. 그의 대답은 "글을 읽긴 했나요?"였다. AI가 그런 주장을 펼 리 없다는 것이다. 다만 돌아온 피드백의 요지는, 좁은 지면에 너무 많은 걸 담으려다 보니 글이 모호하다는 것이었다. 거시적 이야기와 미시적 세부 사항 사이를 오가는 방식이 방향 감각을 잃게 만든다고도 했다. 필요에 의해 만들어진 그의 트레이드마크 문체가 오해를 산 셈이다.
그는 두 가지 모두 크게 신경 쓰지 않았다. 중요한 건 언제나 내용이었다. 둘은 명백히 다르다고 봤다. 연말 자바스크립트 결산 글을 직접 쓰더라도, 조금만 생각하면 차이를 알 수 있다는 것이다. 그의 글에는 다른 어디에도 없는 관점과 깊이가 있었다.
직접 써보고 나서 #
2025년 말, Solid 2.0의 상위 설계 작업을 하던 중 그는 LLM을 써보기로 했다. 코딩용이 아니라 문제를 함께 이야기하며 통찰을 얻을 수 있을지 보려는 목적이었다. 당시 GPT 5.3이 나와 있었지만 그는 무료로 쓸 수 있는 CoPilot을 썼고 모델은 5.1이었다. 세부 사항을 자꾸 잊어버려서 과정 자체가 답답했다. 곧 그는 내용을 계속 기록하게 만들어야 한다는 걸 깨달았다.
설계를 정리하는 데 재미가 붙으면서, 그는 논의한 내용을 짧은 설명글로 정리하게 시켜 Discord에 공유했다. 그가 쓰던 HackMD 문서는 암호처럼 난해했는데, 이 방식으로는 사람들이 무슨 이야기인지 곧바로 이해했다. 깊이까지는 아니어도 요지는 전달됐다.
정작 그가 가장 못 쓰는 종류가 이런 상위 개념 요약이었다. Solid 커뮤니티에서는 그의 글을 AI로 요약해 올리는 일이 흔했다. 아무도 그가 하는 말을 이해하지 못하는 것 같았고, 최전선의 작업을 하느라 부연할 시간이 없었기 때문이다.
하지만 자기 글의 진짜 요점을 붙잡게 하려고 하면 AI는 매번 빗나갔다. Cursor와 프런티어 모델로 옮긴 뒤에도 마찬가지였다. 그럴듯한 글은 나왔지만 그가 세울 법한 입장이나 논증은 아니었다. 그만의 관점과 시각이 빠져 있었다. 가끔 The Architecture of Temporal Determinism 같은 흥미로운 결과를 내놓기도 했지만 드문 일이었다.
AI로 편집한 첫 글 #
Grammarly의 노란 밑줄에 지칠 무렵이었다. 구조적 문제를 지적하지만 유료 결제를 해야 내용을 볼 수 있는 그 밑줄 말이다. 그는 차라리 글 전체를 LLM에 넣어보기로 했다. 그리고 놀랐다.
자신이 쓴 글이 그대로 들어갔는데 결과물이 매끄러웠다. 초반 세 번의 퇴고도, Grammarly도, 커뮤니티 검토도, 전담 편집자도 없이 결승선에 바로 도착한 느낌이었다. 물론 이후 절차를 다 거치기는 했지만 돌아오는 피드백이 거의 없었다.
특히 마음에 들었던 건 글이 짧아지면서 동시에 그가 머릿속으로 듣던 리듬이 살아났다는 점이다. 예전의 그 멈춤들. 세미콜론과 --를 쓰는 방식이 그가 의도했던 것과 정확히 맞아떨어졌다. 끊긴 문장도, 흐름의 혼란도 없었다. 완벽하게 읽혔다.
이상하다고 느낀 부분도 몇 가지 있었다. AI는 각 섹션 끝을 요약하는 걸 무척 좋아했다. 그도 섹션을 이어붙일 때 질문을 던지는 문장을 쓰긴 했지만, AI는 매듭을 예쁘게 지으려 들었다. 그런 대목은 눈에 바로 띄어서 곧장 잘라냈다. 그 외에는 오랫동안 찾던 바로 그것이었다. 간결하면서 명확하게 쓰는 일에 그렇게 애를 먹었는데, 그것도 대체로 자기 말투 그대로 얻어낸 셈이었다.
그렇게 나온 첫 글이 이것이다.
개발자들이 좋아하지 않지만 피할 수 없는 React의 두 가지 설계 선택 →
반응은 예상 밖이었다 #
그는 이 글에 기대를 걸었다. 철학적으로 오랜 경쟁자였던 React가 몇 가지 지점에서 완전히 옳았다고 세상에 말하는, 예상 밖의 선언이었기 때문이다. 논쟁적이었고 솔직했다. 그리고 그가 쓴 어떤 글보다 명확해야 했다.
돌이켜보면 반응은 뻔한 것이었다고 그는 적었다. 사람들은 군데군데 남은 AI 어투를 넘기지 못했다. 그게 핵심이다. 몇 군데만으로도 레이더가 울린다. 그는 이 글의 AI 적용 전후 버전을 갖고 있었고 스트림에서 직접 보여주기까지 했다. 원본은 전부 그가 썼다. AI가 썼다고 지목된 부분들도 그만큼 그의 것이었다. 사용 사실을 인정하고 책임지면 충분하리라 생각했다.
하지만 오히려 분노를 불렀다. 그는 약간의 억울함을 느꼈다고 털어놨다. 스스로 판단하기에 이건 중요한 작업이었고 지축을 흔들 만한 이야기였는데, 사람들은 메시지를 더 명확하게 만들려고 AI를 썼다는 사실만 이야기했다. 과거에는 모호하고 따라가기 어렵다는 이유로 외면당했다. 이제는 정반대의 이유로 외면당하고 있었다.
AI로 만든 커버 이미지에도 비슷한 반응이 돌아왔다. 그전까지는 무료 이미지를 인터넷에서 골라 썼다. 고르는 데 약간의 요령은 필요했지만 딱히 공을 들인 작업은 아니었다. AI는 내용에 맞는 이미지를 실제로 만들어줬다. 이번에도 그가 보기엔 훨씬 나았다. 그는 예술가가 아니다. 그런데도 받아들여지지 않았다. 비합리적으로 느껴졌다. 더 많은 노력을 들여 더 나은 결과를 냈는데도 그랬다. 그는 자신이 뭔가를 놓치고 있다는 걸 인정했다.
두 번째 시도 — Solid 2.0 RC 발표문 #
지난주 Solid 2.0 RC 릴리스 발표를 내놓으면서 그는 방식을 조금 바꿨다. 릴리스 글은 전에도 써봤지만 늘 까다로웠다. 독자의 집중 시간은 짧고 요점에는 빨리 도달해야 한다. Solid 2.0은 특히 어려웠다. 담을 게 너무 많았다. 항목 나열만으로는 가치를 제대로 전하지 못하는데, 세부 내용을 다 다룰 방법도 없었다.
그는 글을 써서 AI에 보여주고 편집을 받았다. 이번에는 표현을 정리하는 데 더 신경 썼다. 결과물이 나빠서가 아니라 사람들을 자극하리라는 걸 알았기 때문이다. 그래도 글은 여전히 너무 길었다. 그러다 에이전트가 뻔한 제안을 했다. 후속 시리즈로 나누라는 것이었다. 제거될 요소들을 따로 정리하면 해결된다는 계산이었다.
결과물을 보고 그는 감탄했다. 도입부와 감정이 실린 부분은 그대로 두고, 빈 곳을 릴리스 글에 어울리는 명확하고 간결한 방식으로 채웠다. 그가 쓴 것보다 훨씬 짧아졌고, 한 번 손본 뒤에는 검토한 모두가 훨씬 읽기 편하다는 데 동의했다. 중요한 대목은 AI에게 다시 쓰게 하지 않았기 때문에 AI 같은 느낌도 훨씬 덜했다. 그래도 마케팅 성격이 강한 쪽에는 사람 손을 거친 뒤에도 흔적이 남아 있었다.
반응은 또 갈렸다. 그는 사람들이 끝까지 읽지 않았기 때문일 거라고 짐작했다. 반응의 절반은 항목 나열 부분에 AI를 쓴 것에 관한 이야기였다. 미묘하지만 알아챌 만하다는 게 전반적인 정서였다. 글의 목적에 비춰보면 그 편이 분명 더 나은 글이었다. 하지만 사람들은 그 지점을 넘어가지 못했다. 대부분의 문장에 사람의 영혼이 담겨 있었는데, 몇 개의 항목 나열이 전체를 망친 셈이다.
에이전트끼리 논쟁하던 주 #
한 주가 이상하게 흘러갔다고 그는 적었다. 시작은 Solid 2.0과 Octane을 비교한 AI 작성 Gist였다. Dominic이 에이전트의 도움을 받은 글로 응답한 걸 보고, 그는 릴리스 이후의 할 일들을 밀어붙이면서 같은 방식을 쓰지 않고는 그 논의를 따라갈 방법이 없다고 판단했다. 말 그대로 에이전트들이 각자의 논점을 두고 다퉜다. 그 논점이 자신들의 것이라는 건 알아볼 수 있었다. 근본적인 입장은 맞지만 목소리는 아니었다.
가장 진솔한 순간은 마지막에 왔다. 두 사람 모두 에이전트를 걷어내고 실제로 대화했다. 상황이 얼마나 우스꽝스러워졌는지 둘 다 깨달았을 거라고 그는 썼다.
문제는 이게 오늘날의 작업 방식과 크게 다르지 않다는 점이다. 이슈나 PR을 에이전트에게 검토시킬 때, 자신이 주도하고 변경 사항을 확인하고 응답 방향을 정하더라도 결과물은 더 이상 자기 말투가 아니다. 그래도 정당화하기는 쉽다.
지금 SolidJS에 열려 있는 이슈와 PR 수를 보면 그렇다. 이런 도움 없이 이만큼 대응하기란 불가능하다. 거의 모든 이슈를 닫았다. 이슈 제출자들이 에이전트로 만든 PR을 올리는 것과 팀 자체의 에이전트 작업이 합쳐진 결과다. 대신 사람다운 면은 사라졌다. 예전에는 모든 PR에 직접 감사 인사를 남겼는데, 최근 몇 달은 그러지 못했다는 걸 그도 알고 있다. 이유를 대기는 쉽지만 사람이 치르는 비용이 있다.
세 번째 방식, 그리고 남은 질문 #
그는 곧 또 다른 글을 낼 예정이며 이번에는 다른 방식을 시도하고 있다. 직접 쓴 글을 AI에 넣되, AI가 글 자체를 편집하게 두지는 않는 방식이다. AI가 어떤 부분을 다시 썼다면 그 지점의 자기 문장이 부족하다는 신호로 받아들인다. AI가 쓴 걸 읽어본 뒤 창을 최소화하고, 그 구조를 자기 목소리로 다시 쓴다. 이 방식이 더 잘 통할지는 지켜봐야 한다는 게 그의 말이다.
까다로운 지점도 인정했다. 자기 글에서 이미 LLM 특유의 어투가 들린다는 것이다. 비평가들 말로는 몇 년 전에도 이미 비슷했다. 그리고 AI가 쓴 쪽이 자기 글보다 낫다고 느끼는 순간부터 편향이 생긴다. 그럼에도 좋은 콘텐츠를 만들기 위해 할 수 있는 가장 정직한 방법이라고 그는 적었다. 좋은 콘텐츠라는 건 진짜 좋은 콘텐츠를 말한다고 덧붙이며, 이 글 자체는 거기 해당하지 않을지도 모른다고 했다.
그래서 다시 해볼 생각이라고, 아직 알아가는 중이라고 글을 맺었다. 우리가 계속할 수 있는 건 그것뿐이라는 문장이 마지막이다.
이 글은 위 출처를 바탕으로 한국 독자를 위해 재작성한 기사입니다. 원문의 사실과 수치에 근거하며, 별도의 견해를 포함하지 않습니다.

Photo by