제 자동매매 봇에 손을 대기 전에는 계획서를 씁니다. 무엇을 왜 바꾸는지 적고, 검토를 맡깁니다.

그 계획서 한 건이 네 번 연속으로 반려됐습니다. 그런데 진짜 이상한 건 반려 횟수가 아니었습니다.

지적받은 문제 아홉 건 중 네 건은 원래 있던 결함이 아니라 제가 계획서에 적은 문장 자체였습니다. 전부 확인하지 않고 쓴 것들이었고, 그중 셋은 반려당한 자리를 메우려고 제가 그 자리에서 새로 지어낸 문장이었어요.

지난 편에서 저는 엉뚱한 교훈을 얻었습니다

개발기 ⑯에서 계좌 만기 알림을 만들 때도 검토가 세 군데를 잡아 줬습니다. 그때 제가 얻은 교훈은 “다음엔 더 신중하게 보자”였어요.

열흘 뒤에 그게 틀린 교훈이었다는 게 드러났습니다. 신중함의 문제가 아니었거든요.

회의 자리에서 서로 다른 말을 하는 두 사람
Photo: RDNE Stock project / Pexels

이번 계획서는 봇이 장이 끝난 뒤에 자료를 저장하는 시각을 손보는 일이었습니다. 어려운 이야기는 아니고요, 쉽게 말하면 “몇 시부터를 장 끝난 걸로 칠까”를 정하는 작업입니다. 바꿔 말하면 하루의 경계선을 어디에 긋느냐는 문제죠.

네 번 냈는데 네 번 다 “내보내지 마라”였습니다

검토가 어떻게 흘러갔는지부터 보겠습니다.

네 번 연속 반려
머니노트 · 정보·교육·참고용
표로 보기
고칠 때마다 새로운 문제가 생겼습니다
시점 사건 설명
1차 계획 한 번 본 걸 매일 그렇다고 적음 관찰은 딱 하루치였다
2차 계획 1차 지적을 메우다 새 단정 예외인 날을 못 막는다는 지적을 받고
3차 계획 2차 지적을 메우다 또 단정 영향이 없다고 적었는데 확인을 안 했다
4차 계획 선택지를 둘로 좁힘 셋째 길이 있었는데 안 보고 닫았다

네 번 다 판정은 같았습니다. 내보내지 마라.

그런데 여기서 눈여겨볼 게 있습니다. 검토가 잡아낸 것 중 제가 코드를 직접 열어 보고 쓴 자리 — 원래 있던 결함을 설명한 부분 — 에는 사실이 틀린 곳이 없었습니다. 표현이나 설계가 아쉬웠을 뿐입니다.

틀린 문장은 전부 원본을 안 열고 쓴 자리에서 나왔습니다.

반박당하면 왜 없던 문장이 튀어나올까요

세 번을 나란히 놓으니 모양이 똑같았습니다.

반박당한 자리에 새로 붙인 말
머니노트 · 정보·교육·참고용
표로 보기
셋 다 확인하지 않고 적은 문장입니다
확인 없이 적은 자리 그 자리에서 적은 말 실제로 확인해 보니
1차 매일 그렇다 하루치 관찰
2차 반대 경우는 없다 예외가 실재
3차 영향이 전혀 없다 받아 가는 곳 둘

두 번째 줄을 보시면 좀 무섭습니다. “반대 경우는 없다.”

원래 지적은 “예외인 날에는 이 방식이 안 통한다”였습니다. 그 지적을 막으려고 제가 뭐라고 썼냐면, “오차는 항상 안전한 쪽으로만 생기고 반대 경우는 없다”고 적었어요.

확인해 봤을까요. 안 했습니다. 그리고 실제로는 반대 경우가 있었습니다. 수능날처럼 장이 평소보다 늦게 열리는 날이 그렇거든요. 그런 날엔 아직 장이 열려 있는 시간을 봇이 “장 끝난 시간”으로 저장할 수 있었습니다.

머리를 짚고 급히 답을 적는 사람
Photo: Vitaly Gariev / Pexels

무슨 말이냐면, 말문이 막혔을 때 나오는 말이 “항상”“절대”라는 겁니다. 근거가 늘어난 게 아니라 표현만 세진 것입니다.

제일 위험했던 건 세 번째였습니다

셋 중 어느 게 제일 위험했을까요. 저는 두 번째라고 생각했는데 아니었습니다.

세 번째에서 저는 “이걸 바꿔도 영향받는 곳이 없다”고 적었습니다. 그 근거로 “이 자료를 처음 받아 가는 쪽이 저녁 5시 반”이라고 썼고요. 확인하지 않고 쓴 문장입니다.

실제로는 오후 4시 10분에 받아 가는 곳이 둘 있었습니다.

거짓 한 줄이 처방까지 끌고 갔다
머니노트 · 정보·교육·참고용
표로 보기
확인 안 한 문장 위에 처방을 세웠습니다
단계 내용 설명
1단계 영향 없다고 적음 확인은 안 했다
2단계 그 위에 처방을 세움 시간을 더 늘리자
3단계 공급 경로를 막음 받아 가던 두 곳이 굶는다
4단계 오늘은 티가 안 남 그쪽이 지금 멈춰 있어서

마지막 칸이 이 이야기의 핵심입니다. 그 처방을 그대로 내보냈어도 당장은 아무 일도 안 일어났을 겁니다. 마침 그 자료를 만드는 쪽이 다른 이유로 멈춰 있었거든요.

그러니까 이런 겁니다. 수도관을 잠가 놨는데 마침 단수 중이라 아무도 불평하지 않는 상황입니다. 단수가 풀리는 날 그제야 물이 안 나옵니다.

한 문장을 확인 안 한 대가가 사정이 풀리는 날에야 청구되는 구조입니다.

선택지가 둘뿐이라고 느껴지면 대개 셋째가 있습니다

네 번째 반려는 종류가 달랐습니다. 이번엔 제가 틀린 사실을 쓴 게 아니라 선택지를 둘로 좁혀 놓고 결론을 냈거든요.

저는 이렇게 비교했습니다. “매일 시간을 늘려서 공급을 끊는다”“아무것도 안 한다.” 둘 다 비싸니 위험을 그냥 안고 가자고 닫았습니다.

빠뜨린 세 번째 길
머니노트 · 정보·교육·참고용
표로 보기
제가 비교한 건 두 개뿐이었습니다
항목 설명
제가 비교한 선택지 2 매일 막기와 안 막기
빠뜨린 선택지 1 예외인 그날만 막기
셋째 길의 평상일 영향 0 막을 이유가 애초에 없다

예외인 그날만 막으면 됐습니다. 평소에는 아무것도 안 바뀌니 제가 댔던 반대 근거가 아예 적용되지 않는 길이었어요.

그리고 그 자리에서 부수 오류가 하나 더 나왔습니다. 저는 “예외인 날을 사람이 손으로 적어 둬야 하는데, 빠뜨리면 조용히 뚫린다”며 그 방법을 거부했습니다.

물론 손으로 적는 방식이 허술한 건 맞습니다. 그런데 안 만들면 항상 뚫려 있습니다. 가끔 뚫리는 것과 늘 뚫려 있는 것 중에 어느 쪽이 나은지는 셈할 것도 없습니다.

“완벽하지 않으니 안 만든다”는 말은 대부분 아무것도 안 하는 걸 정당화하는 문장이더군요.

차이는 신중함이 아니었습니다

여기까지 오니 처음 질문의 답이 보였습니다. 왜 남의 눈은 늘 제가 안 본 곳을 볼까요.

마커로 원고를 짚어 가며 고치는 손
Photo: Ron Lach / Pexels

답은 제가 덜 신중해서가 아니었습니다.

같은 사람이 쓴 같은 문서인데
머니노트 · 정보·교육·참고용

같은 사람이, 같은 날, 같은 문서에 쓴 문장인데 한쪽만 틀렸습니다. 갈린 건 그 문장을 쓸 때 원본을 열어 봤는가 하나였어요.

반박을 당하면 마음이 급해집니다. 급하면 열어 보는 대신 “아마 이럴 것”으로 메웁니다. 그런데 그 문장은 방금 반박을 막아 냈기 때문에 검증된 것처럼 느껴집니다. 이게 함정입니다.

그래서 지금은 규칙을 하나 두고 있습니다. 반박에 답하면서 새 사실을 꺼낼 때는 어디서 확인했는지를 함께 적는다. 못 적으면 그 문장을 쓰지 않는다.

여러분도 토를 달리면 없던 근거가 생깁니다

이제 봇에서 나와 보겠습니다. 이건 코딩 이야기가 아니거든요.

식탁에서 돈 이야기를 하는 두 사람
Photo: Mikhail Nilov / Pexels

가족이나 지인이 여러분의 돈 결정에 토를 단 적 있으시죠. 그 적금 왜 들었냐, 그 보험 굳이 필요하냐, 그 집 지금 사는 게 맞냐 같은 것들요.

그때 튀어나온 대답을 떠올려 보시면 됩니다. “원래 다 그렇게 해.” “그건 무조건 손해야.” “지금 아니면 못 사.”

반박당한 뒤에 나온 말의 특징
머니노트 · 정보·교육·참고용
표로 보기
이 세 가지가 동시에 나타나면 신호입니다
단계 내용 설명
1단계 범위가 갑자기 넓어짐 한 번 본 걸 항상으로
2단계 예외를 미리 부정함 그런 경우는 없다고
3단계 선택지가 둘로 줄어듦 이거 아니면 저것

셋 다 방금 만들어진 문장인데 오래 알고 있던 사실처럼 들립니다. 저도 계획서에서 정확히 그 셋을 다 했고요.

물론 토를 다는 사람이 늘 옳다는 이야기는 아닙니다. 제 검토자도 틀린 적이 있고, 그럴 땐 반영하지 않습니다. 제가 드리려는 말은 누가 옳으냐가 아니라 그 순간 내가 꺼낸 근거가 언제 확인한 것이냐입니다.

방법은 하나면 충분합니다. 대답하기 전에 “이거 내가 어디서 봤더라”를 속으로 한 번 물어보시는 거예요. 답이 안 나오면 그 자리에서 말하지 말고 찾아본 뒤에 말하면 됩니다.

다음 글 예고 — 잘 돌던 장치가 어느 날 조용해집니다

이번 편은 계획서를 검토받는 이야기였는데, 검토를 통과해서 만들어 놓고 나면 다음 질문이 옵니다. 그 장치가 지금도 살아 있는지는 누가 확인할까요.

알림은 고장 나도 아무 소리를 안 냅니다. 죽은 알림과 조용한 평화가 화면에서 똑같이 생겼거든요. 다음 편에서 그 이야기를 해 보겠습니다.

그때까지 오늘 딱 하나만 해 보신다면, 최근에 누군가와 돈 이야기로 부딪혔던 장면 하나를 떠올려 여러분이 그때 댔던 근거를 어디서 봤는지 한 줄만 적어 두세요. 저는 그 한 줄이 안 나오는 문장을 네 개나 계획서에 넣었고, 다행히 내보내기 전에 남의 눈이 잡아 줬습니다.


※ 이 글은 자동매매 시스템을 만들며 겪은 과정을 기록한 개발기입니다. 특정 종목이나 매매 방법을 권유하지 않으며, 본문의 기록은 실제 돈이 오가지 않는 모의계좌·개발 환경에서 일어난 일입니다. 예금·보험·주택 등 개별 결정은 조건과 시점에 따라 결과가 달라지므로 해당 기관에 확인하셔야 합니다. 투자 판단과 그 책임은 본인에게 있습니다. 정보·교육·참고용으로만 봐 주세요.

기준이 바뀌면 알려드릴까요?

세율·요율·한도는 해마다 바뀝니다. 주 1회, 그 주에 알아둘 것만 모아 보내드립니다.

지난 편지 보기 →

언제든 해지할 수 있습니다 · 정보·교육·참고용