스테이징만 하고 푸시하지 못한 하루

by 박정욱

오늘은 잘하고 싶었다


개발자들이 사용하는 Git이라는 도구가 있다. 코드를 바로 세상에 공개하는 게 아니라 몇 단계를 거친다. 먼저 '스테이징(staging)'이라는 임시 저장 공간에 변경사항을 모아두고, '커밋(commit)'으로 하나의 완성된 작업 단위를 만든 다음, 마지막에 '푸시(push)'를 통해 모든 사람이 볼 수 있는 곳에 올린다. 마치 편지를 쓰고, 봉투에 넣고, 우체통에 넣는 것처럼 말이다.


우리 마음도 똑같다. 아침, 아이의 작은 어깨가 떨리며 울음을 터트리는 모습을 보며 가슴이 찢어진다. 서둘러 나가야 하는 상황에서도 내 목소리가 왜 그렇게 날카로웠을까. 출근길 지하철에서 문득 떠오르는 아이의 젖은 눈동자. 그 순간부터 마음속 스테이징이 시작된다. "오늘 저녁엔 꼭 무릎을 맞대고 앉아 이야기하자. 아이의 눈을 똑바로 보며 '미안해'라고 말하고, 어떤 기분이었는지 천천히 들어주자." 이런 다짐들이 마음의 임시 저장소에 하나씩 쌓인다. 따뜻한 목소리로 말하기, 충분한 시간 주기, 아이 눈높이로 앉아서 대화하기. 모든 계획이 차곡차곡 준비된다.


세심하게 준비된 마음의 저장소


회사 책상에 앉아서도 마음의 계획을 계속 다듬는다. 오전 업무를 하면서도 문득문득 아이 생각이 난다. 회의 중에도 아침의 그 장면이 스쳐 지나간다. 아이가 눈물을 글썽이며 나를 올려다보던 그 표정. 그때마다 가슴이 조여오고, 더 구체적인 계획들이 마음에 추가된다. 퇴근길에 회사 근처 편의점을 서성인다. 아이가 좋아하는 딸기 우유를 사갈지, 초콜릿 과자를 사갈지 진지하게 고민한다. 평소라면 5초면 결정할 일에 10분을 쓴다. 단순한 간식이 아니다. 이건 내 마음을 전달하는 작은 매개체이자, 아침의 상처를 치유하고 싶다는 간절함의 표현이다.


결국 둘 다 산다. 딸기 우유와 초콜릿 과자, 그리고 아이가 한 번 맛있어 할 것 같은 요구르트까지 골랐다. 퇴근하는 길에 계속 집에 들어 갔을 때 모습을 그려본다. 집에 들어가서 먼저 아이를 안아주고, 무릎을 맞대고 앉아 눈을 마주치며 이야기를 나누는 모습. "아빠가 아침에 화내서 미안했어. 너 많이 놀랐지?" 라고 말하는 내 모습이 선명하게 그려진다. 집에 도착할 무렵이면 마음속에 준비된 것들이 꽤 구체적이 되어있다. 인내심 기르기, 경청하는 태도, 함께 놀이하기, 잠자리 책읽기까지. 심지어 아이가 어떤 반응을 보일지, 그때 나는 어떻게 대답할지까지 시뮬레이션해본다. 마음속으로 몇 번이고 리허설을 했다. "오늘 유치원에서 뭐가 제일 재밌었어?", "아빠가 아침에 화내서 속상했지? 이야기해줄래?" 같은 대화 스크립트까지 준비한다. 간식을 받고 아이가 좋아할 얼굴을 상상하며 미소가 절로 지어진다. 오늘은 다르다. 오늘은 꼭 제대로 된 아빠가 될 수 있을 것 같다. 이제 실행만 하면 된다. 아이에게 전달만 하면 된다.


예상치 못한 충돌이 발생했다


하지만 집 앞 현관문을 열자마자 예상하지 못한 상황이 벌어진다. 개발자들이 말하는 '머지 콘플릭트(merge conflict)', 두 개의 다른 코드가 충돌하는 상황과 똑같다. 첫째가 장난감을 던지며 소리를 지르고, 둘째는 기저귀가 샌 채로 울고 있다. 바닥에는 우유가 쏟아져 있고, 아내는 지친 표정으로 "빨리 좀 도와줘"라고 말한다. 내가 아침에 준비해둔 '따뜻한 목소리' 계획이 갑자기 현실의 '급한 상황 처리' 모드와 충돌한다. 마치 컴퓨터에서 두 개의 프로그램이 동시에 같은 작업을 하려다 오류가 나는 것처럼.


딸기 우유를 건네며 "아빠가 미안해, 아침에 화내서..."라고 말하려던 계획이 있었다. 하지만 첫째는 "딸기 우유 싫어!"라며 바닥에 던져버린다. 그 순간, 내 마음에서 '되돌리기(revert)'가 일어난다. 개발자들이 잘못된 코드를 이전 상태로 되돌릴 때 쓰는 기능처럼, 순식간에 아침과 똑같은 목소리가 튀어나온다. "그럼 뭘 먹고 싶은데?" 애원하는 듯한 목소리 뒤에 숨은 짜증이 새어나간다.


작은 변수들이 만드는 시스템 오류


아이는 내 목소리 톤의 변화를 민감하게 감지한다. 5살 아이의 감정 안테나는 어른보다 훨씬 예민하다. 아침과 똑같은 패턴이 반복되고 있다는 걸 본능적으로 안다. 기대했던 따뜻함 대신 조급함을 느낀 아이의 얼굴이 금세 굳어진다. "아빠가 또 화내는 거야?" 그 한마디에 내 마음의 전체 시스템이 다운된다. 마치 컴퓨터가 갑자기 멈춰버리는 것처럼. 하루 종일 정성껏 준비해둔 모든 계획들이 한순간에 날아간다. 따뜻한 목소리, 진심어린 사과, 충분한 시간 주기, 눈높이 맞춰 대화하기. 그 모든 것들이 증발해버린다.


무너지는 건 계획만이 아니다. 나라는 사람, 아빠라는 존재에 대한 신뢰도 함께 무너진다. 아이의 눈에서 기대가 사라지는 걸 본다. 또다시 실망시킨 아빠, 말만 앞세우는 아빠라는 낙인이 찍히는 순간이다. "아빠는 맨날 화내기만 해." 아이의 작은 목소리가 가슴에 박힌다. 맞다. 나는 화내는 아빠다. 좋은 의도를 가진 채로 매번 화내는, 모순덩어리 아빠다.


아이는 더 이상 내게 말을 하지 않고, 혼자 방 구석에 앉아 장난감을 만지작거린다. 가끔 흘끔흘끔 나를 쳐다보지만, 이내 시선을 돌린다. 그 작은 등이 말한다. '아빠는 또 실패했어. 또 거짓말했어.' 간식을 가져다줘도 "괜찮아"라고 말하며 받지 않는다. 그 "괜찮아"가 얼마나 괜찮지 않다는 의미인지 누구보다 잘 안다. 5살 아이도 체념할 줄 안다는 게 이렇게 슬플 줄이야.


잘못된 모드로 보낸 주말


개발자들은 작업할 때 '브랜치(branch)'라는 걸 만든다. 기존 작업에 영향을 주지 않고 새로운 기능을 개발하는 별도의 작업 공간이다. 주중 내내 나는 마음속에 '주말_가족시간' 브랜치를 열심히 만들었다. 월요일부터 계획이 시작됐다. 토요일 오전에는 아이들과 근처 공원에 가서 그네도 밀어주고 시소도 타자. 점심은 아이와 함께 요리해보자. 간단한 샌드위치나 김밥 정도면 5살 아이도 충분히 도울 수 있을 것이다. 오후에는 집에서 함께 영화를 보거나 보드게임을 하고, 저녁에는 목욕도 함께하며 하루를 마무리하자. 일요일 계획도 구체적이었다. 아침 늦잠도 괜찮다. 여유롭게 일어나서 브런치를 만들어 먹고, 아이들이 좋아하는 만화책을 읽어주자. 날씨가 좋으면 자전거도 타러 가고, 비가 오면 집에서 레고나 퍼즐을 함께 맞춰보자. 무엇보다 아이들의 이야기를 충분히 들어주는 시간을 갖자.


하지만 주말 아침이 오면 상황이 달라진다. 엉뚱하게 '일상_루틴' 모드로 전환해버렸다. 평일에 미뤄둔 빨래가 산더미처럼 쌓여있고, 설거지할 그릇들이 싱크대를 가득 채우고 있다. 화장실 청소도 해야 하고, 밀린 온라인 쇼핑 결제도 처리해야 한다. 기존 습관의 힘은 생각보다 강하다. 몸은 자동으로 평소 주말 루틴을 실행한다. 밀린 집안일, 개인 휴식 시간, 넷플릭스에서 밀린 드라마 시청. 새로 계획한 가족시간 기능들은 아예 실행되지 않는다. "아빠, 언제 놀아?" 아이의 기대 어린 목소리가 들릴 때마다 가슴이 찔린다. 모드를 바꿔야 한다는 걸 머리로는 안다. 하지만 몸은 이미 다른 일에 집중되어 있다. 빨래를 개면서 "조금만 기다려"라고 말하고, 설거지를 하면서 "이것만 하고"라고 답한다. "아빠가 일 조금만 하고 놀자" → "아빠가 청소만 하고 놀자" → "아빠 좀만 쉬고 놀자" 끝없는 "조금만 기다려"의 연속이다. 아이는 처음엔 "알았어, 기다릴게"라고 착하게 대답한다. 하지만 시간이 지날수록 목소리가 작아진다. "아빠... 언제 놀아?" 점점 힘없어지는 아이의 목소리를 듣고 있으면서도, 나는 여전히 다른 일을 하고 있다.


일요일 저녁이 되어서야 깨닫는다. 또 아무것도 하지 못했다는 걸. 이틀 내내 아이들과 제대로 놀아주지 못했다는 걸. 아이들의 실망스러운 표정을 보며, 내가 얼마나 형편없는 아빠인지 뼈저리게 느낀다. 주말이 끝나가는 일요일 밤, 아이는 "아빠는 맨날 바빠"라고 말한다. 그 말이 비수처럼 꽂힌다.


기록되지 못한 후회들


밤, 아이들이 잠든 후에야 진정한 돌아보기가 시작된다. 개발자들이 작업 기록을 확인하듯, 오늘 하루를 되짚어본다. 오늘의 기록을 정리해보면 참담하다. 아침 7시: 아이에게 화냄. 오전 9시~오후 6시: 좋은 아빠 되기 계획 수립. 오후 7시: 계획 실패, 다시 화냄. 오후 8시: 아이 울음. 오후 9시: 죄책감과 자책. 실패의 기록만 가득하다. 정작 기록하고 싶었던 것들은 어디에도 남지 않았다. 따뜻한 목소리로 "사랑해"라고 말하기, 진심어린 사과와 함께하는 포옹, 아이의 이야기를 끝까지 들어주기, 함께 웃으며 보낸 즐거운 시간들. 이 모든 것들이 마음속에만 머물렀을 뿐, 아이에게는 전달되지 않았다.


더 아픈 건 아이의 반응이다. 저녁 식사 때 아이는 평소보다 조용했다. "오늘 유치원에서 뭐 했어?"라고 물어봐도 "그냥..."이라고만 답한다. 평소 같으면 신나게 떠들던 아이가 이렇게 조용할 때, 그게 왜인지 누구보다 잘 안다. 아빠가 또 화를 냈기 때문이다. 아이의 잠든 얼굴을 바라보며 조용히 방에 들어간다. 형광등을 끄고 조그만 무드등만 켜둔 채, 아이의 옆에 조심스럽게 앉는다. 오늘 저녁 잠자리에서 울먹이며 "아빠가 화내서 무서웠어"라고 말했던 그 작은 목소리가 다시 들린다. "무서웠어?" "응..." "아빠가 미안해." "괜찮아..."라고 말했지만, 아이의 '괜찮아'는 전혀 괜찮지 않다는 뜻이었다. 5살 아이도 상대방을 배려할 줄 안다. 아빠가 미안해한다는 걸 알기에, 괜찮다고 말해주는 것이다.


다시 또 깨닫는다. 아무리 정성스럽게 계획을 세워도, 실행하지 않으면 존재하지 않는 것과 같다는 걸. 아무리 아름다운 마음을 가져도, 행동으로 보여주지 않으면 아무도 알 수 없다는 걸. 개발자들이 하는 말이 맞다. 코드를 아무리 잘 짜도, 커밋하고 푸시하지 않으면 세상에 존재하지 않는 것과 같다. 아이의 기억 속 저장소에는 오늘도 '화내는 아빠'라는 데이터만 추가되었다. 그리고 조금씩, '아빠는 화를 내는 사람'이라는 인식이 고정되어 간다.


내일의 변화를 준비하며


그래도 포기할 수는 없다. 개발자들이 잘못된 작업을 되돌리되 변경사항은 보존하는 '소프트 리셋'처럼, 오늘의 실패를 되돌리되 배운 것들은 지우지 않는다. 내일 아침, 더 나은 시도를 하기 위해서 소프트 리셋을 한다. 오늘의 실패에서 얻은 교훈들을 정리해본다. 첫째, 너무 완벽한 계획을 세우지 말자. 거창한 계획보다는 작고 실행 가능한 것부터 시작하자. 둘째, 예상치 못한 상황에 대한 대비책을 마련하자. 아이가 울고 있을 때, 집이 어수선할 때도 실행할 수 있는 간단한 플랜 B를 준비해두자. 셋째, 감정이 올라올 때를 위한 '일시정지' 버튼을 만들어두자. 화가 날 것 같으면 잠시 화장실에 가서 심호흡을 하거나, "아빠가 잠깐 마음을 정리하고 올게"라고 말하고 잠시 공간을 분리하는 것도 방법이다. 넷째, 아이의 반응에 너무 의존하지 말자. 아이가 내 계획대로 반응하지 않는다고 해서 포기하지 말고, 꾸준히 내 방식을 유지해보자.


무엇보다 중요한 건, 어쩌면 완벽한 한 번의 성공보다는 작은 변화들을 꾸준히 쌓아가는 게 더 중요할지도 모른다는 깨달음이다. 짧은 포옹 하나, 진심어린 "미안해" 한마디, 아이의 말을 끝까지 들어주기, 5분이라도 온전히 함께하는 시간부터 시작하는 것. 내일 아침을 위한 구체적인 계획도 세워본다. 알람을 5분 일찍 맞춰서 여유를 갖자. 아이가 밥을 안 먹으려 하면 "괜찮아, 천천히 먹자"라고 말하며 옆에 앉아있어 주자. 출근 전에 아이를 꼭 안아주고 "사랑해, 오늘도 즐거운 하루 보내"라고 말하자. 작지만 실행 가능한 목표들이다.


내일도 예상치 못한 상황이 일어날 것이다. 계획과 다른 일들이 생길 것이다. 또 실수할 수도 있다. 하지만 그때마다 당황하지 말고, 차근차근 문제를 해결해나가자. 개발할 때 버그가 생기면 디버깅하듯이, 육아에서 문제가 생기면 차분히 원인을 파악하고 해결책을 찾아보자. 아이와 나 사이의 관계는 하나의 긴 프로젝트다. 단기간에 완성되는 게 아니라, 매일매일 조금씩 더 나은 버전을 만들어가는 지속적인 작업이다. 실수했을 때는 겸손하게 인정하며, 꾸준히 개선해나가는 것. 그것이 진정한 개발자이자 아빠의 마음가짐이 아닐까. 한 가지 더 다짐한다. 내일 저녁에는 꼭 아이에게 오늘 미안했던 일에 대해 다시 한번 제대로 사과하자. 그리고 "아빠가 계속 노력하고 있다"는 걸 아이도 알 수 있게 하자. 내일은 꼭 푸시할 수 있기를. 작은 변화라도 좋으니, 준비된 마음이 아이에게 제대로 전달되기를 기대한다.


이전 02화변수는 많고 디폴트 값은 없다