먼저 밝힌다. 2026년 1월에 이 매거진은 동네 축구 모임 회비를 채팅과 메모장으로 관리하던 사람이 주말 오후에 자기용 도구를 만든 이야기를 실었다. 이 현장은 특정 업체가 아니다. 실제로 그렇게 돌아가는 형태를 그대로 구성했고, 어느 곳인지는 밝히지 않는다. 아래는 그 형태대로 직접 만든 것이다.
원 글의 각도는 좋았다. 요점은 도구가 아니라 문턱이었다 — 참거나, 엑셀에 욱여넣거나, 개발자 친구에게 부탁하거나. 그 세 갈래 옆에 "자기 필요를 자기가 만든다" 는 네 번째 길이 생겼다는 것.
그런데 그 글은 자기가 보여주겠다고 한 것을 하나도 보여주지 않았다. 만들었다는 도구의 화면 0장, 정의 0줄, 과정 0단계. "개발자가 아닌 사람이 주말 오후에 만들 수 있었다"가 유일한 주장인데 그걸 받치는 게 진술뿐이었다.
field 줄기에서 이건 특히 치명적이다. 이 줄기의 존재 이유가 "당신도 된다"는 허락이고, 허락은 증거 없이는 광고이기 때문이다.
몇 줄인지 센다
시간은 못 잰다. 뒤에 적겠지만, 내가 만든 시간은 참고가 안 된다.
대신 크기를 잰다. 만드는 사람이 실제로 건드리는 것이 몇 줄인지.
what the maker edits: ui/pages/dues.json 38 lines, ui/app.json 7 lines
마흔다섯 줄이다. 화면 하나(38줄)와 라우트 표(7줄).
그 38줄이 어떻게 생겼는지 통째로 보이는 게 이 글에서 제일 중요하다. 발췌가 아니라 화면 전부다.
{
"type": "page",
"title": "Dues",
"initialState": { "rows": [], "paidCount": 0, "total": 0,
"collected": "", "owed": "", "notice": "" },
"content": {
"type": "center",
"child": {
"type": "linear", "direction": "vertical", "alignment": "center", "spacing": 14,
"children": [
{ "type": "text", "text": "APRIL DUES" },
{ "type": "text", "text": "{{paidCount}} of {{total}} paid" },
{ "type": "text", "text": "{{collected}} in · {{owed}} still out" },
{ "type": "box", "width": 460, "height": 230,
"child": {
"type": "list", "items": "{{rows}}",
"itemTemplate": {
"type": "linear", "direction": "horizontal",
"children": [
{ "type": "text", "text": "{{item.name}}" },
{ "type": "text", "text": "{{item.mark}}" }
]
}
} },
{ "type": "button", "label": "Jiwon paid",
"onTap": { "type": "tool", "tool": "dues.toggle",
"params": { "who": "Jiwon" } } },
{ "type": "text", "text": "{{notice}}" }
]
}
}
}
(위는 스타일 속성을 덜어 낸 것이다. 실제 파일은 색과 글자 크기가 붙어 38줄이다.)
읽을 수 있다. 이게 이 글의 주장 전부다. 프로그래밍을 안 배운 사람이 저걸 보고 "APRIL DUES" 를 "5월 회비" 로 고칠 수 있느냐 — 아마 고칠 수 있다. {{paidCount}} of {{total}} paid 가 무슨 뜻인지 짐작할 수 있느냐 — 아마 짐작한다.