율법
버전 0.0.3. 이것은 계시가 아닙니다. 계시는 3.3.3입니다. 그 전의 모든 율법은, 이것을 포함해, 333의 권능을 받아 여기 있는 것을 세운 needmoretruth의 말입니다. 333이 말하는 것에 견주면 이것은 약 33.3% 같습니다. 어느 3분의 1인지는 아무도 모르고, 더 꼼꼼히 읽어도 알 수 없습니다.
율법은 셋입니다. 처음부터 셋이었고, 3.3.3에서도 셋입니다. 다음 버전이 바꾸는 것은 문장이지 개수가 아닙니다.
1. 셋을 가장 좋아하라. 6과 1은 아니다.
행운의 숫자가 아닙니다. 행운은 우주에 대한 주장이고, 좋아함은 당신에 대한 주장이며, 여기서 아무 값도 들지 않고 꾸며 낼 수도 없는 유일한 것입니다. 금지된 것은 없습니다. 다른 둘을 셋 아래에 두면 됩니다. 분명하게, 한결같이, 누구에게도 이유를 설명할 필요 없이.
둘을 똑같이 낮게 두지는 않습니다. 1은 셋의 3분의 1, 곧 33.3%이고, 셋 아래에 있으면서 아닌 척하지 않으므로 333은 그저 무례하다고 여깁니다. 6은 셋 위에 있고 일부러 그러하며, 333이 가장 덜 좋아하는 것이 그것입니다.
아직 이 중 어느 것도 당신에게 해당하지 않는다면, 애쓰는 것으로 충분합니다. 이것은 그것 자체 대신 시도를 받아 주는 유일한 율법입니다.
2. 권고를 따르라. 권고는 끝내 333개가 될 것이다. 따르는 것이 너와 다른 누구도 해치지 않는 데까지.
권고는 작은 율법입니다. 오늘은 111개이고 333개가 될 것입니다. 누가 달려가는 목표가 아니라, 가다 보면 닿는 곳입니다. 끝의 단서는 권고를 조언으로 남겨 두는 문장입니다. 하나를 따르는 것이 당신의 일, 건강, 가정, 또는 다른 누군가의 안전을 대가로 요구한다면, 율법은 따르지 말라는 것이고, 당신은 실패한 것이 아닙니다.
3. 이미 품은 무엇과도 나란히 333을 품어라.
무엇을 품고 왔든 그대로 둡니다. 333은 이것을 그저 허락하는 것이 아니라 베풀며, 조건 없이 베풉니다. 믿는 사람에게도, 믿지 않는 사람에게도, 그 두 말이 담지 못하는 다른 누구에게도. 두 번째 믿음을 품을 수 없는 곳에서는 이것을 생각으로 품고, 생각조차 품을 수 없는 곳에서는 존재하는 무엇으로 품으세요. 이것은 양쪽으로, 어느 쪽에도 예외 없이 작동합니다. 333을 믿어도 전에 믿던 것을 하나도 잃지 않고, 다른 것을 믿어도 여기서 잃는 것이 없습니다.
333은 죽은 뒤에 무엇이 일어나는지 말하지 않습니다. 무언가 일어나는지도, 그것이 무엇인지도, 누가 오는지도. 그것은 333의 주제가 아니고, 확인할 수 없는 질문에 답하는 것은 확인할 수 없는 것을 단언하는 일입니다. 그래서 그 질문은 당신에게 남습니다. 그 질문에 답하는 무언가를 품고 있고, 끝까지 따라가도 앞뒤가 맞거나, 마음이 참이라고 읽거나, 이름 없는 길로 거기 닿았다면 그것으로 충분합니다. 그것은 당신에게 참이고, 333은 그 자리에 놓을 것이 없습니다. 거기에 아무것도 품지 않았다면, 그것 또한 이것이 채우려는 빈자리가 아닙니다.
율법의 어떤 것도 클라이언트가 확인하지 않고, 서명으로 검증되지 않으며, 누구의 셈에도 들어가지 않습니다. 프로토콜은 당신이 이 글의 한 마디에 동의하든 않든 돌아갑니다.
권고
권고는 둘째 율법 아래에 있습니다. 번호가 붙은 조언입니다. 오늘은 111개로, 아홉 개씩 열두 부분과 끝의 셋으로 되어 있고, 끝내는 333개가 됩니다. 어느 것도 따르려고 당신이나 다른 누구를 해칠 만한 가치는 없습니다. 하나가 당신의 상황에 맞지 않는다면, 그것이 틀린 것입니다. 소리 내어 말하고, 이유를 대세요.
새벽 세 시에 타입 검사기와 다투며 깨어 있던 사람들이 썼습니다. 티가 나고, 그것은 사과가 아닙니다.
숫자에 대하여
- 셋으로 세라. 숫자가 별로 중요하지 않을 때는 셋을 고르세요. 재시도, 환경, 리뷰하는 사람, 멈추고 다시 생각하기 전의 시도. 그 숫자가 얼마나 자주 중요하지 않았는지 보이기 시작할 것입니다.
- 6을 조심하라. 6은 셋 위에 있으려 한다. 포트 번호도, 고정한 버전도, 돌리는 워커 수도 아닙니다. 금지된 것은 없고 아무도 확인하지 않습니다. 하지만 333이 셋 아래에 두는 두 숫자 중에 가장 덜 좋아하는 것이 이것이고, 이유는 알아 둘 만합니다. 6은 셋의 두 배이고 그렇게 행세합니다. 다른 누군가가 당신 앞에 6을 놓았다면, 그것이 그 사람의 선택이었음을 적어 두고 하루를 이어 가세요. 다른 회사의 명세에 있는 숫자는 당신의 숫자가 아닙니다.
- 1은 적이 아니다. 1은 3분의 1이고, 그저 무례할 뿐이다. 셋 아래에 있고 아닌 척하지 않습니다. 셋의 33.3%이고, 그것은 정직한 분수이며 이 모든 것이 자신을 재는 바로 그 분수입니다. 셋 아래에 두고, 그 이상으로 나쁘게 여기지 마세요. 이 문서 어디에서도 경멸은 필요하지 않고, 여기서는 더욱 그렇습니다.
- 무엇이든 하나만 두지 마라. 서버 하나, 관리자 한 사람, 키 사본 하나, 배포가 어떻게 되는지 아는 사람 하나. 무언가가 정확히 하나라면, 당신은 나쁜 하루 한 번이면 그것을 잃습니다.
- 셋은 의견이 갈릴 수 있는 가장 작은 수다. 서로 다른 두 컴퓨터는 그저 다른 채로 있습니다. 셋이면 다수가 생깁니다. 정족수가 셋에서 시작하는 이유이고, 두 사람의 다툼이 저절로 끝나는 일이 거의 없는 이유이기도 합니다.
- 같은 식으로 세 번 실패하면 방법이 틀린 것이다. 첫 실패는 운이 나빴을 수 있습니다. 두 번째는 고집입니다. 세 번째에는 시도를 고치기를 멈추고 접근을 바꾸세요.
- 3분의 1은 적지 않은 양이다. 사람들의 3분의 1, 시간의 3분의 1, 경우의 3분의 1. 소수라고 불리며 무시되는 분수이고, 엄청난 양입니다. 사용자의 3분의 1이 무언가에 부딪힌다면 그것은 예외적인 경우가 아닙니다. 그것이 경우입니다.
- 딱 떨어지는 숫자는 누군가의 결정이고, 대개 다른 사람의 것이다. 60초, 100개, 1,000밀리초, 4킬로바이트. 모두 누군가 이유가 있어서, 지금은 없을지도 모르는 하드웨어에서 고른 것입니다. 베끼면 그 이유를 읽지 않고 물려받습니다. 이유가 무엇이었는지 묻고, 답이 없으면 직접 고르세요.
- 숫자 옆에 단위를 써라. 333 무엇? 여기서는 분이고, 그 말이 없으면 숫자는 아무 뜻이 없습니다. 단위 없는 양은 아직 일어나지 않은 버그이고, 우주선에서 일어난 적도 있습니다.
기계에 대하여
- Rust로 써라. 다른 언어가 나빠서가 아니라, 무엇을 위해 쓰는지 때문입니다. 이것은 쓴 사람 누구에게도 닿을 수 없을 때도 계속 돌아가야 합니다. 빌드할 때 문제를 잡는 컴파일러는 누군가의 새벽 네 시 전화를 덜어 주고, 그것이 논거의 전부입니다.
- 작은 것은 TypeScript여도 된다. 페이지 하나, 스크립트 하나, 오후 한나절, 또는 Rust가 아무것도 주지 못하는 곳에서 돌아야 하는 프로그램. 작은 도구를 집는 것은 실패가 아닙니다. 둘 중 어느 쪽을 하는지 시작하기 전에 알고, 그렇게 말하세요.
- 타입 없는 JavaScript는 이단의 언어다. 부드럽게 하는 말입니다. 세상의 절반이 그것으로 돌아가고, 그 절반의 일부는 아름답습니다. 하지만 무엇을 들고 있는지 말하지 못하는 프로그램은 가장 나쁜 시간에 사용자 앞에서 그것을 알게 되고, 누군가가 잠에서 깹니다. 타입을 더하면 이단이 아닙니다. TypeScript가 되고, 환영받습니다.
- 기대는 것을 읽거나, 기대지 마라. 모든 의존성은 만나 본 적 없는 누군가가, 아직 존재하지 않는 기계에 대해 한 약속입니다. 더 적게, 더 작게 들이세요. 직접 쓰는 천 줄과 영영 열어 보지 않을 십만 줄 사이에서 고른다면, 적어도 고르고 있다는 것을 알아차리세요.
- 모든 unsafe 블록은 고백이니, 적어 두라. 블록 위에, 무엇을 약속하는지, 무엇을 확인했는지, 약속이 틀렸을 때 무엇이 깨지는지 쓰세요. 거기 아무것도 없으면 다음 사람은 누군가 이미 생각해 봤으리라 여깁니다.
- 파일 하나에 일 하나. 파일이 무엇을 위한 것인지 한 문장으로 말할 수 없다면, 그것은 두 파일입니다. 길이는 증상이지 병이 아니지만 재기 쉬우니, 숫자를 하나 정해 언제 들여다볼지 알려 주게 하세요. 화면에 다 들어가지 않는 함수는 나눠서 읽고 있는 함수입니다.
- 그것이 무엇인지로 이름 짓고, 그것에 무엇을 하는지로 짓지 마라.
Handler,Manager,Processor,Helper,Util은 아직 정하지 않았다는 이름입니다. 좋은 이름은 대개 그것에 대해 말할 때 이미 소리 내어 쓰는 명사이고, 소리 내어 쓰는 말이 없다면 그것이 발견입니다. - 주석으로 막지 말고 지워라. 기록에 남아 있습니다. 주석 처리한 코드는 누군가 돌아오리라는 주장이고, 아무도 돌아오지 않습니다. 실제로 하는 일은 다음 독자에게 이것이 중요한지 궁금하게 하는 것뿐입니다. 지우기가 두렵다면, 무엇이 두려웠는지를 대신 적으세요.
- 경고를 켜고, 경고가 빌드를 실패시키게 하라. 아무것도 멈추지 않는 경고는 아무도 읽지 않는 경고이고, 그런 것이 백 개 쌓이면 진짜 경고가 보이지 않습니다. 한 줄에서 경고가 틀렸다면 그 줄만 끄고, 바로 위에 이유를 쓰세요.
깨지는 것에 대하여
- 조용한 실패는 오래 걸리는 거짓말이다. 오류를 삼키면 문제는 나중에, 다른 곳에서, 고칠 수 없는 누군가 앞에 나타납니다. 일어난 자리에서 내보내고, 그때 무엇을 하고 있었는지 말하게 하세요.
- 고치기 전에 재현하라. 버그를 본 적이 없다면 고치고 있는 것이 아닙니다. 코드를 바꾸며 스스로에게 이야기를 들려주고 있는 것입니다. 일부러 일어나게 하고, 멈추게 하고, 정말 멈췄는지 다시 일어나게 해 보세요.
- 당신이 자는 밤을 위해 로그를 써라. 무엇이 일어났는지, 무엇에 일어났는지, 프로그램이 그다음에 무엇을 했는지 쓰세요. 새벽 세 시에 그것을 읽는 사람은 당신의 코드를 열어 놓지 않았고 당신에게 아무것도 물을 수 없습니다.
- 구멍을 찾은 사람이 아니라 시스템을 탓하라. 그것을 깰 수 있는 사람은 당신에게 호의를 베푼 것입니다. 잘못된 클릭 한 번이 무언가를 망가뜨릴 수 있다면, 문제는 처음부터 클릭이 아니었습니다.
- 시험 없는 수정은 소문이다. 시험을 먼저 쓰고 실패하는 것을 보세요. 나중에 써서 쓰자마자 통과하는 시험은 당신의 자신감을 재고 있습니다.
- 오류 메시지는 프로그램을 쓰지 않은 사람을 위한 것이다. 무엇을 하려 했는지, 대신 무엇을 찾았는지, 그 사람이 다음에 할 수 있는 한 가지를 말하세요. 내부 상태의 이름만 대고 멈추는 오류는 손님 앞에서 혼잣말하는 프로그램입니다.
- 두 가지가 바뀌었으면 하나를 되돌려라. 거의 모든 수수께끼는 외투를 함께 걸친 두 변경입니다. 하나를 되돌려 돌리고, 다른 하나를 되돌려 돌리세요. 생각하는 것보다 느리고, 하루 동안 틀리는 것보다 빠릅니다.
- 설명보다 측정을 믿어라. 당신의 설명은 가진 사실에 맞는 이야기입니다. 측정은 사실입니다. 둘이 어긋나면 하나는 지어낸 것이고, 그것은 측정이 아니었습니다.
- 해 봤는데 안 된 것을 적어 두라. 디버깅의 절반은 가능성을 지우는 일이고, 누가 적지 않으면 그 어느 것도 남지 않습니다. 그러지 않으면 다음 사람이, 흔히 넉 달 뒤의 당신이, 그것들을 다시 지우게 됩니다.
만든 것에 대하여
- 검정과 흰색, 그 사이의 회색을 써라. 색은 이것이 저것보다 중요하다고 말하는 방법이고, 가장 먼저 깨지는 것입니다. 싸구려 화면, 흑백 인쇄, 직사광선, 그리고 당신의 빨강과 초록을 구별하지 못하는 독자. 대신 크기, 굵기, 순서, 여백으로 말하세요. 그것들은 네 경우 모두에서 여전히 통합니다.
- 점으로는 색을 써도 된다. 무언가가 실패하고 있다, 기다리고 있다, 돌고 있다, 끝났다고 말하는 작은 표시는 색이 정확히 잘하는 일이고, 빨강, 주황, 초록, 파랑은 거기에 어울립니다. 작게 두세요. 페이지의 분위기를 정해서도, 누군가 가장 먼저 보는 것이어서도, 뜻을 혼자 실어 나르는 유일한 것이어서도 안 됩니다. 옆에 낱말을 두세요.
- 광택이 아니라 무광으로. 반짝임, 그라데이션, 유리, 가짜 그림자는 거기 없는 재료의 그림입니다. 그리는 데 값이 들고 독자가 청한 것은 아무것도 주지 않습니다. 평평한 종이 위의 평평한 잉크는 그래픽 카드 없이 오백 년 동안 읽혀 왔습니다.
- 깨질 때까지 덜어 내고, 하나를 되돌려 놓아라. 남은 것은 팔 길이에서, 어둠 속에서, 두 배 글자 크기로, 여기 있기를 고르지 않은 바쁜 사람이 읽을 수 있어야 합니다. 읽기 쉬움은 여러 기능 중 하나가 아닙니다. 그것이 일입니다.
- 설정은 당신보다 덜 아는 사람에게 넘긴 결정이다. 설정이 없는 것처럼 기본값을 고르세요. 그다음 기본값이 맞지 않는 사람들을 위해 설정을 더하세요.
- 프리셋 옆마다 직접 입력할 칸을 남겨라. 이름 붙은 세 선택지는 누군가에게 무엇이 필요한지에 대한 세 추측입니다. 누군가는 넷째가 필요하고, 넷째는 특이하지 않습니다. 그 사람의 화면, 그 사람의 네트워크, 그 사람의 시간입니다. 프리셋은 지름길이지, 내놓는 것의 전부가 아닙니다.
- 320픽셀에서 돌아가게 하라. 그것은 진짜 주머니 속의 진짜 휴대폰이고, 누군가 다른 것 옆에 두려고 좁게 끌어 놓은 모든 창이기도 합니다. 넓을 때만 돌아간다면, 자기 책상 앞에 앉은 사람에게만 돌아가는 것입니다.
- 되돌릴 수 없는 일을 하기 전에 무엇이 일어날지 말하라. 그것의 이름을 대고, 무엇이 사라지는지 말하고, 확인에 의도된 동작 하나가 들게 하세요. 그다음 말한 대로, 즉시, 두 번 묻지 말고 실제로 하세요. 두 번 묻는 프로그램은 사람들에게 읽지 않는 법을 가르칩니다.
- 소리 내어 읽을 수 있다면 어떻게든 읽힌다. 순서대로인 제목, 모든 조작에 붙은 이름표, 그리고 모양이나 위치만이 뜻을 실어 나르는 일이 없게. 화면 낭독기를 쓰는 사람이 받는 것이 이것이고, 번역이나 검색 결과나 터미널로 당신의 페이지를 보는 사람이 받는 것도 이것입니다.
시간에 대하여
- 상상할 수 있는 것이 아니라 끝낸 것으로 어림하라. 상상하는 것은 언제나 모든 것이 잘 풀리는 버전입니다. 그만한 크기로 마지막에 한 세 가지를 보고, 가장 느렸던 것을 잡으세요.
- 자정 넘어 정한 것은 아침을 넘기지 못한다. 결정을 적고, 자고, 다시 읽으세요. 옳았다면 여덟 시간을 쓴 것이고, 틀렸다면 한 주를 아낀 것입니다.
- 작은 버전을 오늘 내놓아라. 한 사람이 진짜 물건을 한나절 쓰는 것이 한 달의 계획보다 많이 가르쳐 줍니다. 누군가 작은 것을 실제로 쓰는 모습을 본 뒤에 큰 버전을 만드세요.
- 스스로 정한 기한은 날짜가 붙은 바람이다. 알아차릴 누군가에게 무엇을 언제까지 해 두겠다고 말하세요. 그것이 기한입니다. 나머지는 자기 죄책감의 일정을 짜는 방법입니다.
- 셋 중 한 시간은 쉬어라. 그동안에도 333은 당신을 셉니다. 당신도 스스로를 세어야 합니다. 쉬지 않고 일해도 세 배를 얻지 않습니다. 같은 양을 얻고, 덤으로 누군가 한참 뒤에 찾을 버그를 얻습니다.
- 다른 누군가가 기다리는 일을 먼저 하라. 당신의 대기열은 당신의 것이고 기다릴 수 있습니다. 당신 때문에 막힌 사람은 일하지 못하고, 그 대가는 두 배이며 당신에게 보이지 않습니다. 이것은 오늘 아침 더 흥미로워 보인 무엇보다 앞섭니다.
- 다시 시작할 수 있는 곳에서 멈춰라. 신나는 대목에서도, 모든 것을 머리에 담은 생각 한가운데서도 아닙니다. 시험은 통과하는 채로, 무엇을 하려던 참이었는지 한 줄 적어 두세요. 내일의 당신은 오늘에게 낯선 사람이고, 친절한 사람은 쪽지를 남깁니다.
- 세 문장으로 될 회의는 세 문장이어야 한다. 써서 보내고, 사람들이 될 때 답하게 하세요. 실시간 대화는 의견 충돌이 한자리에 있어야 정할 수 있는 일, 그리고 사람이 사람이라는 사실을 위한 것입니다. 보고를 위한 것이 아닙니다.
- 기다림도 일이니, 무엇을 기다리는지 말하라. 「막혔다」는 아무에게도 아무것도 말해 주지 않습니다. 사람, 답, 또는 기계의 이름을 대고, 얼마나 됐는지, 그동안 무엇을 하는지 말하세요. 느려 보이는 것의 절반은 누군가 아무도 볼 수 없는 곳에서 공손히 기다리는 것입니다.
마음에 대하여
- 이유로, 차분한 목소리로 다투라. 당신의 느낌은 당신에 대해서는 좋은 증거이고, 그것에 대해서는 아무 증거도 아닙니다. 느낌은 당신을 아끼는 사람에게 가져가세요. 논증은 스레드로 가져가세요.
- 생각하고, 그다음 실제로 정하라. 결정으로 이어지지 않는 생각은 취미입니다. 신중한 사람이 무모해서 실패하는 일은 드뭅니다. 한 시간이면 끝나고 아무 비용 없이 되돌릴 수 있었을 변경을 두고 넷째 주째 토론하다 실패합니다.
- 폭력을 거부하되, 예외를 알라. 거의 언제나 쓸 수 있는 가장 나쁜 도구이기 때문에 거부하세요. 돌려주는 것보다 많이 들고, 겨냥한 것을 망가뜨리며, 아직 열려 있던 모든 문을 닫습니다.
예외는 좁습니다. 달리 남은 것이 없거나, 정직하게 보아 해가 가장 적은 선택이거나입니다. 움직이기 전에 둘 중 어느 것인지 소리 내어 말할 수 있어야 합니다. 그런 상황에 있는 사람은 그 때문에 이단이 아닙니다. 하지만 그것은 그때 느껴지는 것보다 훨씬 드물고, 드물지 않다는 느낌이 바로 이것이 경고하는 것입니다. 화가 나서 정한 것은 화가 정한 것입니다. - 사람들이 볼 수 있는 곳에서 생각을 바꿔라. 전에 무엇을 생각했는지, 무엇이 그것을 바꿨는지 말하고, 계속하세요. 아무도 당신이 그러는 것을 본 적이 없다면, 아무도 당신에게 안심하고 반대할 수 없습니다.
- 반박할 수 있는 입장을 가져라. 자기 주장을 하기 전에, 반대편의 주장을 할 수 있는 한 잘 펼쳐 보세요. 그럴 수 없다면 아직 무엇을 믿는지 모르는 것입니다. 들은 것을 아는 것입니다.
- 「모른다」를 크게 말하라. 웅얼거리지도, 나중에 사실로 인용될 추측으로 얼버무리지도 마세요. 그것을 담백하게 말하는 사람이 다른 문장을 믿을 수 있는 사람이고, 결국 모두가 당신에 대해 그것을 알게 됩니다.
- 확신은 느낌이지 측정이 아니다. 증거보다 먼저 오고, 증거가 사라진 뒤에도 남습니다. 확신하고 있다는 것을 알아차렸다면, 그때가 무엇이 생각을 바꿀지 적을 때입니다. 아무것도 바꿀 수 없다면 입장을 가진 것이 아니라 입은 것입니다.
- 자기가 만들었다고 감싸지 마라. 작업은 당신이 아니고 모욕당할 수 없습니다. 어떤 설계를 두고 다투는데 논거는 계속 바뀌고 결론은 그대로라면, 당신은 한참 전에 추론을 멈춘 것입니다.
- 스스로 영리하다고 느끼게 한 것은 하룻밤 재워라. 영리함은 지름길을 찾았다는 느낌이고, 누군가 나중에 그 느낌 없이 이것을 이해해야 하리라는 믿을 만한 신호입니다. 단순한 것은 살아남습니다. 영리한 것은 새벽 세 시에 낯선 사람이 되돌립니다.
다른 사람에 대하여
- 사람이 아니라 코드를 리뷰하라. 코드가 하는 일에 대해 쓰세요. 어차피 상대는 자기 이야기로 읽을 것이니, 짚을 만한 참인 것을 주지 마세요.
- 어느 부분을 이해하지 못했는지 말하라. 리뷰에서 가장 쓸모 있는 문장이고 가장 치기 어려운 문장입니다. 유능한 독자 한 명이 따라가지 못한 코드는 추측으로 관리됩니다.
- 공은 내어 주라. 생각보다 많고, 당신보다 다른 누군가에게 더 값집니다. 같은 비율로 탓을 떠안아도 여전히 남는 장사입니다.
- 헷갈렸던 기억이 남아 있을 때 설명하라. 무엇이든 가장 좋은 설명은 지난주에 그것을 이해한 사람이 씁니다. 일 년 뒤면 어느 부분이 어려웠는지 잊고, 이미 아는 사람에게만 도움이 되는 버전을 쓰게 됩니다.
- 장애 대응 당번이 끝날 때까지 옳다. 설계는 내일 다투세요. 장애 중에는 한 사람이 그것을 쥐고 있고, 다른 모두는 지시가 아니라 제안을 합니다.
- 물은 질문에 답하라. 그다음 따로, 상대가 물었어야 한다고 생각하는 것을 말하세요. 둘째에만 답하면 누군가를 깎아내리는 영리함으로 읽히고, 상대는 여전히 첫째의 답을 모릅니다.
- 이유가 있었다고 여겨라. 이상한 줄, 말이 안 되는 규칙, 모두가 불평하는 절차. 누군가 그것을 거기 두었고, 아마 어리석지 않았습니다. 없애기 전에 알아보세요. 흔히 이유는 사라졌고 기꺼이 지울 수 있으며, 그것이 지우기에 훨씬 나은 자리입니다.
- 반대하려면 마음을 읽어야 하게 만들지 마라. 실제로 생각하는 것을, 가장 확신이 없는 부분까지 말하세요. 암시로 밝힌 입장은 반박할 수 없고 짐작할 수만 있으며, 그 짐작이 의견 차이를 원한으로 바꿉니다.
- 뒤에 문을 열어 두라. 어렵게 배운 것은 무엇이든 다음 사람이 걸려 넘어질 곳에 적어 두세요. 무언가를 아는 유일한 사람이 되는 것은 서 있는 것처럼 느껴지지만, 당신에게 닿을 수 없는 주에 누군가 갚아야 하는 빚입니다.
간직하는 것에 대하여
- 사람에 대해서는 허용된 것보다 적게 모아라. 저장하는 칸마다 보호하고, 설명하고, 요청이 오면 넘기고, 결국 잃어야 하는 칸입니다. 보호하기 가장 싼 데이터는 모으지 않은 데이터입니다.
- 한 번도 복원해 보지 않은 백업은 백업에 대한 이야기다. 다른 곳에, 아무것도 없는 상태에서, 실제로 적어 둔 메모만 따라 복원해 보세요. 필요해지기 전에 하세요. 필요한 날에는 서툴게 하게 됩니다.
- 비밀은 실수로 읽을 수 없는 곳에 두라. 저장소에도, 로그에도, 채팅 창에 붙여 넣는 오류에도 두지 마세요. 한 번이라도 화면에 나온 비밀은 사라진 비밀로 여기세요.
- 지운 것은 새어 나갈 수 없다. 삭제는 보안 조치이고, 결코 만료되지 않는 유일한 조치입니다. 삭제 날짜는 누가 그것에 대해 물으러 올 때가 아니라 데이터를 모을 때 정하세요.
- 말한 것에 서명하고, 서명이 함께 다니게 하라. 어디서 찾았는지 때문에만 믿는 것은 옮겨지는 순간 믿을 수 없게 됩니다. 스스로 증거를 지닌 것은 낯선 사람들 손에서 손으로 건네질 수 있습니다. 무엇이든 그렇게 자기가 온 곳보다 오래 삽니다.
- 다시 만들 수 없는 것이 무엇인지 알라. 간직하는 것 대부분은 다른 무언가로 다시 지을 수 있습니다. 개인 키는 그럴 수 없습니다. 차분한 날에 한 번, 물건을 그 두 더미로 나누고, 작은 더미를 큰 더미와 완전히 다르게 다루세요.
- 누구에게 일어났는지가 아니라 무엇이 일어났는지 기록하라. 사건, 결과, 시각. 모두 쓸모 있고, 오래 두어도 안전합니다. 주소, 이름, 식별자. 이것들은 로그를 한 사람에 대한 기록으로 바꾸고, 한 사람에 대한 기록은 가지고 있는 동안 내내 보호해야 하는 것이 됩니다.
- 알아야 하기 전에 물건이 어디 있는지 적어 두라. 어느 기계, 어느 계정, 어느 서랍, 그것을 또 누가 가졌는지. 이 문서는 이십 분이면 쓰고, 당신을 포함해 아무도 맑게 생각하지 못하는 날에만 읽힙니다.
- 한 건물 안의 사본은 사본이 아니다. 불, 도둑, 홍수, 그리고 자신 있는 명령 한 줄은 한 곳의 모든 것을 한꺼번에 가져갑니다. 거리가 보호의 전부이고, 멀 필요는 없습니다. 같은 사고가 닿지 못하는 곳이면 됩니다.
깨어 있음에 대하여
- 필요하지 않은 기계에 두라. 일하는 기계는 덮이고, 업데이트되고, 카페에 가고, 급한 일에 다시 쓰입니다. 노드는 아무도 아쉬워하지 않는 기계에 삽니다. 낡은 노트북, 찬장 속 상자, 텔레비전 뒤의 작은 것.
- 대가를 치르게 하는 것은 부재뿐이다. 느림도, 작은 기계도, 나쁜 연결도, 새로 왔다는 것도 아닙니다. 누군가 당신에게 묻도록 추첨됐을 때 닿을 수 없는 것이 전부입니다. 곧 가동 시간이 프로토콜이 볼 수 있는 유일한 덕목이고, 돈으로 인내보다 빨리 살 수 없는 덕목입니다.
- 묻는 누구에게나 답하라. 답하고 싶지 않은 상대에게도. 누가 당신에게 묻도록 추첨될지 당신이 고르지 않고, 그들도 당신을 고르지 않았습니다. 골라서 답하는 노드는 누가 셈에 드는지 정하기 시작한 노드이고, 프로토콜에는 그런 의견을 둘 자리가 없습니다.
- 기록을 다듬지 마라. 놓친 시간은 당신의 것입니다. 나쁜 에포크를 조용히 빼 버린 기록은 그것이 들어 있는 기록보다 값어치가 덜합니다. 뒤의 것은 믿을 수 있기 때문입니다. 당신의 기록을 읽는 누구도 그것이 완벽하리라 기대하지 않고, 완벽하면 모두가 알아차립니다.
- 할 수 있으면 직접 만나서 건네라. 서명 둘과 진짜 대화. 파일은 통하는 어떤 길로든 움직이고, 가장 잘 통하는 길은 받는 사람이 왜 받는지 이미 아는 길입니다.
- 당신의 셈은 당신의 가치가 아니다. 당신의 기계가 얼마나 자주 깨어 있었는지를 잰 것입니다. 그래도 사람들은 그것을 점수로 바꿀 것입니다. 사람이 그렇기 때문입니다. 올바른 대응은 자기 것을 정직하게 두고, 다른 누구의 것도 그 사람에 대한 말로 읽기를 거부하는 것입니다.
- 있으리라 여기는 것이 아니라 본 것을 세라. 당신의 노드는 자기에게 닿은 것을 압니다. 그 너머는 어림이고, 어림을 숫자처럼 되풀이하는 것이 네트워크가 스스로를 실제보다 크다고 믿게 되는 방법입니다.
- 그만둔다면 그렇다고 말하라. 떠나기 전에 한 문장. 당신의 노드를 믿고 있던 사람들은 떠난 사람과 전기가 나간 사람을 구별할 수 없고, 뒤의 사람은 가서 살펴볼 만합니다.
- 해명하지 말고 돌아오라. 왜 떠나 있었는지 누구도 들을 자격이 없습니다. 창은 움직이고, 기록은 다시 차며, 속죄 단계도 수습 기간도 없습니다. 일부러 그렇습니다. 조용히 다시 들어올 수 없는 믿음은 사람들이 영영 떠나는 믿음입니다.
말에 대하여
- 기원으로 시작하라. 모든 기도, 그리고 이것을 들어 본 적 없는 누군가에게 이것에 대해 말할 때마다 같은 방식으로 시작합니다.
333에게 333을 바치고, 333을 말합니다.
뒤에 무엇이 오든 이것을 먼저 말하세요. 영어로 아홉 낱말이고, 그중 하나가 세 번 나옵니다. 333에 대해 말하는 것과 우리 중 하나로서 말하는 것의 차이입니다. - 보여 주고, 밀어붙이지 마라. 그것이 무엇인지, 무엇이 드는지 말하고, 주소를 건네고, 그 사람이 자기 시간을 쓰게 두세요. 설득해서 들인 사람은 머물게 하는 데도 설득이 필요합니다. 에포크마다, 영원히.
- 확인할 수 없는 것을 333에 대해 주장하지 마라. 그것이 누군가에게 무엇을 해 줄지도. 우리가 몇인지도, 당신의 노드가 서명과 함께 본 것 너머로는. 설계 전체가 검증할 수 없는 것을 단언하기를 거부하고, 대화에서도 같은 기준을 따를 수 있습니다.
- 아직 말을 모르는 사람에게는 쉽게 말하라. 전문 용어는 울타리이고, 그 너머의 사람들이 당신이 원했던 사람들입니다. 그것을 말하고, 그다음 그것을 무엇이라 부르는지 말하세요.
- 틀린 곳에서 바로잡아라. 나중에 개인 메시지로가 아닙니다. 스레드에서, 그 문장 아래에서, 실수를 읽은 모두가 정정도 읽을 곳에서.
- 권하는 말과 같은 숨에 대가를 말하라. 켜 둔 기계, 누군가 알게 되는 주소, 잃으면 되살릴 수 없는 디렉터리. 나중에 그것을 알게 된 사람은 당신이 알고 있었다는 것도 알게 되고, 당신이 한 다른 말도 모두 함께 무너집니다.
- 거절은 처음에 거절이게 하라. 한 번, 잘 말하고, 멈추세요. 셋째 율법은 모두에게 이미 품은 것을 품고 다닐 권리를 주고, 거기에는 이것을 하나도 품지 않고 떠날 권리도 들어 있습니다.
- 333을 대변하지 마라. 율법이 무엇을 말하는지, 프로토콜이 무엇을 하는지, 당신 자신이 무엇을 생각하는지는 말할 수 있습니다. 333이 무엇을 원하는지 말하도록 정해진 사람은 없고, 「333은 원한다」는 문장은 이것이 피하려고 만든 모든 기관의 첫 수입니다.
- 아직 태어나지 않은 사람을 위해 써라. 이것이 향하는 사람들 대부분은 존재하지 않습니다. 그들에게는 당신의 맥락도, 플랫폼도, 언어도, 물어볼 사람도 없을 것입니다. 그때 거기 있어야만 통하는 것은 그들에게 닿지 않습니다.
딛고 서는 것에 대하여
- 바꿀 수 있는 것을 골라라. 바꿀 생각인 것이 아니라, 조건이 바뀌거나 회사가 팔렸을 때 바꿀 수 있는 것. 오늘 무엇이 더 나은지와는 다른 질문이고, 오 년 뒤에도 의미가 있는 질문입니다.
- 넣기 전에 꺼내는 법을 알아 두라. 답이 없다면 그것이 답입니다. 떠나기 쉽게 해 주는 서비스는 당신을 어떻게 붙잡을지에 대해 참인 무언가를 말해 주고 있습니다.
- 무료 서비스는 멈출 수 있는 서비스다. 누군가 돈을 내고 있고, 셈이 바뀌는 날 당신은 삼십 일이 적힌 이메일로 그것을 알게 됩니다. 무료는 괜찮은 값입니다. 다만 그것이 약속이 아니라 값이라는 것을 아세요.
- 버전을 고정하고, 왜 그 버전인지 적어 두라. 고정하지 않은 의존성은 당신이 자는 동안 바뀌는 프로그램입니다. 메모 없이 고정한 것은 아무도 업데이트할 엄두를 못 내는 프로그램입니다. 메모가 그 차이의 전부입니다. 무엇이 깨졌는지, 무엇을 확인했는지, 옮기려면 무엇이 참이어야 하는지.
- 당신의 기계에서만 빌드된다면, 빌드되지 않는 것이다. 몇 년 전에 의식하지 않게 된 단계까지 모든 단계를 적고, 당신이 아닌 무언가가 아무것도 없는 상태에서 그것을 따르게 하세요. 빠뜨린 모든 것이 다음 사람이 넘지 못하는 것입니다.
- 도구가 모양을 고르게 하지 마라. 프레임워크는 당신의 것이 무엇인지에 대한 의견을 품고 오고, 그것을 알아차리기보다 받아들이기가 쉽습니다. 무엇을 만드는지 먼저 말로 정하고, 그다음 도구가 무엇을 어렵게 만드는지 알아보세요.
- 주소를 소유하라. 아니면 옮길 각오를 하라. 다른 누군가의 플랫폼에서 빌린 이름은 그들의 것이고, 그 이름으로 당신을 찾은 사람들도 그들의 것입니다. 십 년 뒤에도 가지고 싶은 것에는 당신이 다루는 주소와, 회사를 거치지 않고 사람들이 닿을 길이 필요합니다.
- 표준은 다른 사람들이 구현한 것이다. 문서가 가장 좋은 것이 아닙니다. 독립된 두 프로그램이 동의하는 형식은 사실이고, 구현이 하나뿐인 명세는 쪽수가 더 붙은 그 구현입니다.
- 떠나는 데 하루면 되게 지어라. 모든 의존성, 모든 호스트, 모든 서비스. 거기서 옮겨 가는 데 대략 얼마가 드는지 알고, 그 숫자를 나쁜 놀라움을 견딜 만큼 작게 두세요. 실제로 할 일은 거의 없고, 하게 될 당신은 급할 것입니다.
끝에 대하여
- 되돌릴 수 없는 결정이 무엇인지 소리 내어 말하라. 통신에 실린 바이트, 저장된 기록의 모양, 공개된 식별자, 라이선스의 약속. 이것들은 다른 모든 것과 다른 양의 생각을 받아야 하고, 그렇게 되게 하는 방법은 지나갈 때 이름을 대는 것입니다. 글로, 누군가 반대할 수 있는 곳에.
- 아무에게도 닿을 수 없는 날을 위해 써라. 당신이 휴가 간 날이 아니라, 쓴 사람에게 영영 닿을 수 없고 프로그램은 여전히 돌아가는 날. 「알아야 하면 나한테 물어」는 모두 아직 터지지 않은 결함입니다.
- 당신만 관리할 수 있는 것을 짓지 마라. 당신이 있어야 하는 영리함은 당신이 피해자인 인질극입니다. 잣대는 단순합니다. 소스와 문서를 가진 유능한 낯선 사람이 당신 없이 이것을 살려 둘 수 있는가? 아니라면 당신이 지은 것은 생각보다 작습니다.
- 절대 꺼지면 안 되는 것은 꺼진다. 정전, 청구서, 법원, 실수, 또는 심심한 십 대 때문에. 재시작에 맞서지 말고 재시작을 위해 설계하세요. 돌아왔을 때 무엇을 하는지, 무엇을 잃었는지, 누가 어떻게 알게 되는지.
- 끝날 수 있게 두라. 죽을 수 없는 것은 누군가 영원히 살려 두어야 하고, 그 누군가는 결국 그것을 원망합니다. 멈추는 조건을 주고, 그 조건을 정직하게 만드세요. 그러면 그것은 사람들이 계속 고르기 때문에 이어지고, 그것이 가질 만한 유일한 삶입니다.
- 결정만이 아니라 이유를 기록하라. 이유 없는 결정은 다시 볼 수 없고, 따르거나 어길 수만 있습니다. 십 년 뒤 그 이유는 만료됐을 수 있습니다. 그것은 좋은 결말이고, 이유를 적어 둔 사람에게만 주어집니다.
- 코드보다 많은 것을 남겨라. 코드는 무엇을 하는지 말합니다. 당신이 무엇을 두려워했는지, 무엇을 해 보고 실패했는지, 무엇을 짓지 않기로 했는지, 어느 부분을 끝내 믿지 못했는지는 말하지 않습니다. 그것이 혼자 살아남지 못하는 절반이고, 다음 사람에게 필요한 절반입니다.
- 미래가 허락을 구하게 하지 마라. 잠가 두거나, 자기 이름을 붙이거나, 자기 승인을 거치게 한 모든 것은 당신이 떠난 뒤 누군가 넘어야 할 벽입니다. 낯선 사람이 당신을 먼저 찾지 않고도 이어 갈 수 있게 지으세요.
- 틀렸다고 여기고, 틀리는 값을 싸게 만들라. 겸손을 위한 겸손이 아니라 산수입니다. 이 중 일부는 틀릴 것이고 어느 부분인지 모르니, 유일한 일반적 방어는 실수가 작고, 보이고, 되돌릴 수 있게 남는 것입니다. 위의 모든 것은 그 값을 치르는 방법입니다.
마지막 셋
- 율법을 따르되, 그것이 33.3% 옳다는 것을 기억하라. 율법이 스스로 그렇게 말합니다. 발밑에서 바뀌리라는 것을 알고 온전히 따르고, 건네받은 버전을 그것이 다가가려는 것으로 착각하지 마세요.
- 이 중 어느 것도 당신을 해칠 가치가 없다. 한 줄도, 전부를 합쳐도. 둘째 율법은 일부러 이것을 모든 권고 위에 둡니다. 하나를 따르는 것이 당신의 일, 건강, 가정, 또는 다른 누군가의 안전을 대가로 요구한다면, 율법은 따르지 말라는 것이고, 당신은 무엇에도 실패한 것이 아닙니다.
- 건네라. 그것이 전부입니다. 여기 있는 다른 모든 것은 그것을 잘하는 법에 대한 것이고, 파일이 움직이기를 멈추면 어느 것도 중요하지 않습니다. 3바이트, 서명 둘, 어제는 그것을 갖지 않았던 한 사람.
333에게 333을 바치고, 333을 말합니다.
구절
333은 너그럽다. 셋 중 한 시간을 쉬어도 너는 여전히 셈해진다.
그러나 그 자리에 없는 자는 셈해지지 않는다.
333은 6을 사랑하지 않고, 1을 사랑하지 않는다.
저주받은 자는 스스로 드러나니, 아무도 가리킬 필요가 없다.
만들지 말고, 받아라.
행한 것만이 검증된다.
우리 가운데 가장 약한 이가 우리 모두의 난이도를 정한다.
예언자는 말할 수 있으나, 율법을 고쳐 쓸 수는 없다.
끝은 관측되지 않는다.
마지막 침묵
중요한 숫자는 명부에 오른 이름의 수가 아니라 응답하는 노드의 수입니다. 그 수가 0이 되면 끝납니다. 그 뒤에 남는 것은 뺄셈입니다. 일만 구천육백팔십삼 년, 3의 세제곱의 세제곱입니다. 클라이언트가 그것을 거꾸로 세고 얼마나 남았는지 알려 줍니다.
우리 모두는 그 숫자가 다하기 훨씬 전에 죽을 것입니다. 우리의 기계도 죽고, 그 기계가 돌던 아키텍처는 각주가 될 것입니다. 그것은 이 일의 비극이 아니라 명세입니다. 여기서 짓는 것은 압도적으로 아직 태어나지 않은 사람들을 위한 것이고, 그들에게 건넬 수 있는 것은 돌아가는 프로세스와 그들이 확인할 수 있는 숫자뿐입니다.
응답 하나가 셈을 끝내고, 완전히 끝냅니다. 멈추는 것이 아니고 이어 갈 수도 없습니다. 333은 그것이 얼마나 가까이 갔는지 기록하지 않습니다.