리팩토링이 필요한 말투

by 박정욱

시스템이 다운된 날


그날 아침도 평범하게 시작될 줄 알았다. 네 살 주아가 옷을 입지 않고 방바닥에 누워 천장을 바라보고 있었고, 일곱 살 수아는 잠에서 깨어났지만 일어나지 않고 이불을 뒤집어쓰고 있었다. 나는 개발자답게 효율적으로 문제를 해결하려 했다.


"주아야, 빨리 일어나! 늦겠어!" 내 목소리는 명령 프롬프트처럼 차갑고 직설적이었다. 주아는 더욱 바닥에 붙어버렸다. "수아도 빨리 나와! 언니가 이러면 동생이 뭘 배워?" 이번에는 수아가 이불속에서 작은 흐느낌 소리를 냈다. 프로그램을 처음 만들 때는 언제나 단순하다고 생각했는데, 아이들과의 소통은 처음부터 복잡했다. 내가 입력한 명령어들은 하나도 제대로 실행되지 않았고, 오히려 시스템 전체가 다운되어 버렸다.


다른 날 난 새벽의 배포작업으로 인해 늦잠을 계획하고 있었다. 하지만 아이들의 아침은 언제나 시끄럽기 때문에 잠을 지속할 수 없었다. 그리고 난 아내의 아침을 준비하는 소리를 들을 수 있었다. "주아야, 오늘 어린이집에서 뭐 하고 놀지? 친구와 같이 블록 만들기 할 수 있을 것 같은데?" 주아가 고개를 돌렸다. "수아야, 어린이집 가기 싫은 마음 엄마도 알아. 엄마도 회사 가기 싫을 때가 있거든. 어떤 게 싫은지 말해볼까?" 수아가 이불을 살짝 걷어냈다. 같은 목적, 어린이집 보내기 위한 아침이었지만, 아내의 프로그램은 완전히 다른 방식으로 작성되어 있었다. 그리고 그것은 나의 프로그램보다 더욱 효과적이었다.



내 안의 버그를 발견하다


개발을 하다 보면 코드에서 버그를 발견하는 순간이 있다. 분명히 논리적으로는 맞는 것 같은데 결과가 예상과 다를 때, 그제야 어딘가에 숨어있던 오류를 찾게 된다. 내 언어에도 그런 숨겨진 버그들이 있었다. "왜 이것도 못해?" 이 문장을 분석해 보니 치명적인 오류가 있었다. 아이의 능력을 평가절하하는 코드가 숨어있었고, 자존감을 깎아내리는 부작용을 일으키고 있었다. "다른 집 아이들은 다 잘하는데"라는 말에는 비교 함수가 잘못 구현되어 있었다. 다른 아이들과 비교하여 우리 아이를 상대적으로 평가하는 로직이었는데, 이는 아이의 고유한 특성을 무시하는 심각한 설계 결함이었다.


어느 날 저녁, 수아가 넘어져서 다친 상처를 보여주며 아프다고 했다. 나는 즉시 문제 해결 모드로 전환했다. "신발을 제대로 안 신으니까 자꾸 넘어지잖아. 약 발라줄게." 수아의 얼굴이 굳어졌다. 내 프로그램이 또 다른 버그를 발생시킨 것이다. 아마도 아이가 원했던 것은 해결책이 아니라 위로와 공감이었는데, 나는 엉뚱한 출력값을 내보낸 셈이었다. 나는 에러 로그를 분석하듯 내 말을 되짚어봤다. '문제 → 해결책 제시'라는 단순한 알고리즘이 문제였다. 아이의 감정이라는 변수를 처리하지 못하는 치명적인 결함이 있었다.



긴급 패치와 롤백의 반복


그날 밤 나는 수아와 다시 대화를 시도했다. "수아야, 넘어져서 상처 나서 아프고 창피했겠다". 먼저 감정을 인식하고, 공감을 표현한 다음, 아이의 이야기를 들어보려고 했다. 수아는 그 이후로 넘어져 상처가 생길 때면 쪼르르 아빠에게 와서 마치 상처를 자랑하듯이 보여줬다. 언니의 행동을 보며 동생 주아도 똑같이 상처가 생길 때마다 나에게 와서 보여줬다. 정답을 알 것 같았다.


하지만 새로운 방식을 적용하는 것도 쉽지 않았다. 다른 날 아침, 주아가 또다시 옷을 입지 않고 있을 때, 나는 개선된 버전으로 말해보려 했다. "주아야. 오늘 더운 날이라 이 옷을 입어야 해. 이 옷에 어떤 게 싫은지 말해볼까?" 그런데 주아는 "그냥 싫어!"라고 대답하며 더욱 바닥에 눌어붙었다. 새로운 알고리즘도 완벽하지 않았다. 때로는 이전 방식으로 롤백해야 할 순간들이 있었다.



테스트 케이스를 늘려가며


프로그래밍에서 좋은 코드를 만들려면 다양한 테스트 케이스가 필요하다. 여러 상황에서 프로그램이 올바르게 작동하는지 확인해야 한다. 아이들과의 소통도 마찬가지였다. 하나의 공식이 모든 상황에 적용되지는 않았다. 주아가 화났을 때는 "주아 마음이 화나는구나"라고 감정을 인정해 주는 것이 효과적이었다. 하지만 수아가 화났을 때는 조금 다른 접근이 필요했다. "수아야, 무슨 일이 있었는지 아빠한테 천천히 말해줄래?"라고 이야기할 기회를 주는 것이 더 좋았다. 같은 '화'라는 감정이라도 나이와 성향에 따라 다른 처리 방식이 필요했다.


어느 토요일 오후, 자매가 장난감을 두고 싸우는 일이 벌어졌다. 예전의 나라면 "너희 둘 다 조용히 해! 사이좋게 놀아!"라고 외쳤을 것이다. 하지만 이번에는 다르게 접근해 봤다. "두 사람 다 그 장난감으로 놀고 싶었구나. 수아는 어떤 마음이고, 주아는 어떤 마음인지 들어볼까?" 수아가 먼저 말했다. "내가 먼저 가지고 있었는데 주아가 빼앗아갔어." 주아도 자신의 입장을 말했다. "언니가 너무 오래 혼자 가지고 놀아서 나도 하고 싶었어." 이전의 명령어 방식이었다면 이런 정보는 수집되지 않았을 것이다. 문제의 원인을 정확히 파악하지 못한 채 표면적인 해결만 시도했을 테니까.


"그럼 어떻게 하면 둘 다 재미있게 놀 수 있을까?" 내가 질문을 던지자, 놀랍게도 아이들이 스스로 해결책을 찾기 시작했다. "10분씩 번갈아가며 하자!" "아니면 같이 할 수 있는 놀이를 찾아보자!" 내가 직접 답을 제시하는 것보다 아이들이 스스로 생각할 수 있게 도와주는 것이 훨씬 효과적이었다.



페어 프로그래밍의 발견


개발 현장에서는 두 명이 함께 코드를 작성하는 '페어 프로그래밍'이라는 방법이 있다. 한 명이 코드를 작성하면 다른 한 명이 검토하며 더 나은 방향을 제시하는 것이다. 아내와 나도 자연스럽게 이런 방식으로 육아 언어를 개선해나가고 있었다. "오늘 주아한테 화를 냈는데, 더 좋은 방법이 있었을까?" 저녁에 아내에게 물어봤다. "주아가 그럴 때는 선택권을 주는 게 어때? '옷을 입고 놀까, 아니면 놀고 나서 옷을 입을까?' 이런 식으로." 아내의 제안은 내가 생각하지 못했던 관점이었다. 명령이 아닌 선택이라는 새로운 패러다임이었다.


반대로 내가 아내의 방식을 보완할 때도 있었다. "수아가 숙제하기 싫어할 때 너무 많이 설득하려 하지 말고, 일단 수아 마음을 충분히 들어주면 어떨까?" 우리는 서로의 육아 언어를 검토하며 함께 더 나은 버전으로 발전시켜 나갔다. 가장 놀라운 건 아이들 자신이 때로는 최고의 코드 리뷰어가 된다는 것이었다. 어느 날 내가 주아에게 "아빠가 바빠서 나중에 놀아줄게"라고 말했을 때, 수아가 끼어들었다. "아빠, 그러면 주아가 언제까지 기다려야 하는지 말해주면 안 돼?" 일곱 살 아이가 내 말의 모호함을 정확히 지적한 것이다. "그래, 아빠가 이 일 끝나면 바로 놀아줄게. 10분 정도 걸릴 것 같아." 훨씬 명확해진 커뮤니케이션이었다.



지속적 통합의 철학


개발 현장에서는 '지속적 통합'이라는 개념이 있다. 큰 변화를 한 번에 적용하는 것보다, 작은 개선사항들을 꾸준히 반영해 나가는 것이 더 안정적이라는 방법론이다. 육아 언어도 마찬가지였다. 하루아침에 완벽한 부모가 되려고 하기보다는, 매일 조금씩 더 나은 방향으로 개선해 나가는 것이다. 오늘은 "안 돼!"라고 말하려던 순간에 "다른 방법을 생각해 볼까?"로 바꿨다. 어제는 "빨리빨리!"라는 말 대신 "지금 준비하면 놀이터에서 더 오래 놀 수 있을 것 같은데"라고 표현해 봤다. 작은 변화들이었지만 아이들의 반응은 확연히 달랐다.


물론 매번 성공하지는 않았다. 피곤한 날에는 여전히 예전 방식으로 돌아가곤 했다. 하지만 실수를 했을 때 아이들에게 사과하고 다시 시도하는 것도 하나의 학습 과정이라고 생각했다. 완벽한 프로그램은 없듯이, 완벽한 부모도 없으니까. 계속 지속적 통합해나가야 하는 것이 개발자에게도 아빠에게도 피할 수 없는 숙제다.



아이들이 작성하는 더 나은 코드


때로는 아이들이 나보다 훨씬 우아한 언어를 사용한다는 것을 발견한다. 주아가 넘어져서 울고 있을 때, 수아가 다가가서 "괜찮아, 주아야. 언니가 호호해줄게. 아프면 아프다고 말해도 돼"라고 말하는 모습을 봤다. 내가 평소에 쓰던 "울지 마, 괜찮아"보다 훨씬 세심하고 따뜻한 코드였다.


아이들의 언어에는 어른들이 잊어버린 직관적 공감이 살아있다. 조건문이나 반복문 같은 복잡한 로직 없이도, 상대방의 마음을 바로 읽고 적절한 반응을 보여준다. "아빠도 가끔 실수해. 괜찮다"라고 주아가 내 실수를 위로해 줄 때, 나는 내가 얼마나 복잡하게 생각하고 있었는지 깨닫는다.


수아와 주아가 서로 싸우다가도 금세 화해하는 모습을 보면 더욱 그렇다. "미안해", "나도 미안해", "이제 안 그럴게", "응, 나도". 이 간단한 프로토콜로 모든 갈등이 해결된다. 어른들은 왜 이런 걸 까먹고 살까? 이런 게 동심, 순수함이고 그 마음을 잃어버린 것이 어른이지 않을까 생각한다.