학습지에 빨간 X 가 줄줄이 나오면 예전엔 곧장 힌트 모드였는데, 어느 순간 보였어요 ── 문제집은 그냥 테스트 묶음이고, 빨간 X 는 「자라야 할 자리」를 가르쳐 주는 거더라고요. 그 사고방식을 육아로 옮긴 게 「실패 확인 주도」. 육아 프레임워크 시리즈 2 편.
「또 틀렸어.」
수학 학습지, 위에서 세 문제 연속 빨간 X. 입을 삐죽이고 종이를 째려보고 있어요.
솔직히 좀 전의 저였으면 「에이」 하면서 다음 문제 옆에 슬쩍 힌트를 흘렸을 거예요.
예전에 아이 실수, 제가 먼저 주워 담고 있었어요 라는 글을 쓴 적이 있는데, 글로 적어 놨다고 습관이 그리 쉽게 빠지진 않더라고요. 빨간 X 가 줄을 서 있으면 손이 먼저 나갑니다.
그래도 요즘은, 조금은 더 가만히 보고 있을 수 있게 됐어요. 그 이유를 한번 풀어 보고 싶었어요.
머리로는 다들 아는 얘기지요. 근데 막상 우리 아이 점수 보면 그 지식은 바닥에 떨어져요. 저도 똑같아요.
다만 어른이 된 지금 돌아보면, 머리에 남아 있는 건 거의 다 그때 틀렸던 자리들이에요. 술술 푼 문제는 다 까먹었어요.
여기서 제 정의를 한번 적어 둘게요 (우리 집은 이렇게 본다, 정도).
이 3 단계까지 가야 비로소 공부, 라고 저는 생각해요.
그냥 문제를 풀기만 하면, 아직 공부 아니에요.
답까지 맞춰 봤어도, 아직 공부 아니에요.
채점하고 끝, 동그라미 X 갯수에 기뻐하고 슬퍼하면 끝. 그러면 실력은 안 올라가요. 틀린 자리를 다시 봐서 외우니까 실력이 올라가요. 그게 제일 중요한 자리.
… 라고 적어 두긴 했는데, 저도 어릴 땐 채점에서 끝나던 쪽이라, 솔직히 큰소리는 못 칩니다.
잠깐 개발자 모드로 갈게요.
소프트웨어 개발 현장엔 (요즘은 별로 입에 안 올리지만) 「Bug 곡선」이라는 게 있어요. 테스트 단계에서 시간에 따라 bug 가 몇 개 잡혔는지를 그려 보는 거예요.
재밌는 건, 테스트 한 사이클 돌리고 「bug 0 건이요」 하고 보고가 올라오면, 현장은 환호하지 않아요. 오히려 한쪽 눈썹이 올라가요. … 진짜? 그런 분위기.
왜냐면 개발 현장은 사람은 실수한다 는 전제 위에서 굴러가거든요. 코드 리뷰도, 테스트도, CI 도, 전부 「사람이 어디선가 실수했을 거다」 를 잡으려고 깔아 둔 것들이에요.
0 건은 목표가 아니에요. 0 건은 보통 「테스트가 헐겁다」는 신호예요. 버그는 안에 있고, 그냥 못 잡힌 거.
이 글에서 제일 하고 싶었던 얘기는 아마 이 부분이에요.
개발 얘기 하다가, 「사람은 실수한다」고 입에 올린 순간 ── 그 노하우, 굳이 개발 안에만 가둘 이유 없는 거 아닌가, 싶었어요.
「사람은」, 그러면 아이도, 저도요.
사람이 실수한다는 전제로 짜인 구조는, 공부 쪽에도 그대로 가져다 쓸 수 있을 거예요. production 에 bug 0 을 이상향으로 안 잡듯, 학습지에 빨간 X 0 을 이상향으로 잡을 필요도 없어요.
코드 안 짜는 분들 위해 가볍게 ── TDD (테스트 주도 개발) 는 대충 이런 모양이에요.
def test_add():
assert add(1, 2) == 3 # ← 「정답」을 먼저 적어 둠 (지금은 깨짐 = Red)
def add(a, b): # ← 그러고 나서 본체를 적음
return a + b # ← 테스트 통과하면 = Green
「이렇게 돼야 한다」는 테스트 (정답) 를 먼저 적어 두고, 깨진 상태 (Red) 에서 시작해서, 테스트가 통과되도록 구현을 다듬어 가는 거. 그 루프예요.
적다 보니 깨달았는데, 문제집 이거 거의 그대로네요.
아이 (= 구현되는 본체) 는 아직 빨간 상태. 그래서 풀어요. 틀려요 (Red 가 유지됨). 답을 보고, 왜 그렇게 되는지 흡수해요. 다음에 비슷한 문제가 나오면, 통과 (Green).
문제집을 푸는 목적은, 눈앞의 문제를 푸는 게 아니에요.
자기 자신을 Green 으로 만드는 거.
그렇게 보면, X 가 찍힌 순간에 실망하는 것도 좀 빗나간 반응 같더라고요. X 는 Red. 그냥 테스트 결과. 「이 자리 고치면 돼」 라고 위치까지 친절하게 알려 주는 신호일 뿐이에요.
이걸 이름 붙이자면 실패 확인 주도 (Failure Confirmation Driven) 양육.
적어 놓고 보면 당연한 얘기들뿐이긴 한데, TDD 어휘를 입혀 보니까, 왜 요즘 아이 X 표시를 보고 안 흔들리려고 하는지가 저한테 조금 설명되더라고요.
아이한테는 대충 이렇게 얘기해요.
「문제 푸는 게 공부가 아니야. X 표시 몇 개든 괜찮아. X 자리를 이해하는 게 공부니까. 거꾸로 말하면, 뭘 이해하면 실력이 올라가는지 알게 된 거잖아. 좋은 거지.」
표정이 영 안 풀려서, 그 자리에서 문제를 내 봤어요.
1+1=?, 1+2=?, 1+3=?
당연히 즉답.
「자랐어?」
「안 자랐어. 원래 알았는데, 뭘.」
「그치. 전부 동그라미면, 그 문제집 풀 이유가 없잖아. X 자리를 찾으려고 푸는 거야. X 찾았으면, 자랄 자리 하나 찾은 거지.」
당연한 얘기일지도 모르겠어요.
그렇게 보면 숙제 푸는 의미도 좀 달라져요. 먼저 예습을 한 번 하고 문제를 풀어 봐도 괜찮을지도. 문제 자체가 테스트 시나리오니까.