본문 바로가기

회고

나는 코드 품질만 바라보고 리뷰하는데, 동료가 왜 기분나빠할까요 [코드 리뷰 도입 후기 2탄]

반응형

오늘 매우 화가 났었다.

 

코드 리뷰를 하던 중이었다. (많은 갈등이 코드 리뷰를 하며 일어나는 것 같다.)

 

리팩토링할 건이 보였다. 그것도 꽤 많이. 의도가 파악되지 않는 코드도 있어 논의가 필요하다고 생각했다.

PR이 올라온지 며칠 되기도 했고, 건건마다 일일히 리뷰를 달기 어렵고 비효율적이라고 생각해서, 일단 Approve하고 아예 리팩토링을 제안하는 PR을 올리겠다고 했다.

 

메신저로

"User 객체에 관련한 의문점이 있어서 이번 PR은 approve하고 따로 리팩토링을 제안하는 PR을 만들어 올려도 될까요?"

라고 물어보니 동료는

"구두로 설명을 들을 수 있을까요?"

라고 답했다.

 

그래서 열심히 구두로 설명을 했다.

동료도 생각지 못했던 개선사항을 듣는 눈치였고, 리팩토링의 필요성에도 공감한듯 보였다.

회사 프로덕트의 품질 개선에 도움이 된 것 같아서 뿌듯했다.

설명을 듣더니 동료가 코드를 찬찬히 확인해보겠다고 해서 알겠다고 했다. 그렇게 기분 좋게 밥을 먹고 왔는데 갑자기 메신저로 이러는 것이었다.

 

"관련된 코드가 좀 있어서 일단 리팩토링은 나중에 하는 게 좋을 것 같습니다."

이걸 본 나는 생각에 잠겼다.

'왜이렇게 대충 설명하지? 이러면 내가 어떻게 납득하지?'

'이번에도 리팩토링은 나중이야? 지금처럼 미루는 게 계속해서 쌓이면 나중에 엄청난 부채로 돌아올 텐데, 왜 그런 생각을 안할까?'

등의 부정적인 생각이 들었지만 그래도 이렇게 생각했다.

'내가 미처 파악 못한 의존성이 많은가보다. 비용이 많이 들면 당장 급한 것부터 처리하고 나중에 리팩토링할 수도 있겠다.' 그리고 재차 확인했다.

"관련된 코드가 많아서 리팩토링하는데 비용이 많이 들 것 같다는 말씀이시죠?"

 

"네, 비용도 좀 들고 지금은 현재 제품 출시부터 준비하는 게 우선인 것도 있고요."

라는 대답이 돌아왔다.

그래서 대답했다.

"네, 알겠습니다. 그럼 언제쯤으로 생각하고 계신가요?  00님께서 생각하시는 적합한 시기로 지라 이슈 만들어 backlog에 넣어두겠습니다."

 

동료는 이렇게 말했다.

"음 제 업무와 관련된게 많고, 현재도 처리중이라 제가 처리하는게 나을 것 같습니다. 이슈는 제가 나중에 만들겠습니다. 리팩터링은 지금 당장 필요한 것이 아니기 때문에 우선순위에서 뒤로 빼놓는 게 좋을 것 같다는 생각입니다."

 

필자는 이렇게 느꼈다.

진짜 어물쩡 넘어가려는 거구나, 예전부터 이런 리뷰는 하지 마라, 이런 리팩토링은 나중에 해라. 이렇게 거절하더니 이번에도 그러려는 거구나. 라고 생각했다.

 

그래서 말했다.

"저도 00님 생각에 동의합니다. 다만 제가 이슈를 생성해놓으려는 이유는 그렇게 기억에서 잊혀 무기한 우선순위에서 밀리는 것을 방지하고자 하는 차원에서입니다. 시기를 여쭤본 것도 같은 맥락에서구요. 리팩토링은 당장 처리되어야 할 필요는 없지만 반드시 필요하다고 생각합니다."

 

동료는 바로 뒤에 앉아있는데, 분노의 키보드 소리가 들렸다. 대답을 보는 필자의 감정도 격앙되었다.

"로컬에 기록도 해놓았고, 제가 이슈를 올리겠다고 말씀드렸기도 한데요. 제가 리팩터링을 안한다고 한 것도 아니라.. 제 이슈 같아서 제가 올리는게 맞는 것 같은데 필자님이 올리시려는 건 좀.... 현재 지라 보시면 00, 00, 00 등 얽혀있는 진행중인 이슈들이 있습니다. 그래서 제가 처리하려는 것입니다. 이슈 올리는 건 제가 알아서 할게요~"

 

"제가 올리겠다고 말씀드린 것은 제가 처리하고자 하는게 아니라 제가 올리고 00님께 assign해드리려고 한 것인데요, 혹시 오해가 있으셨을까용"

 

" 필자님이 올리고 필자님이 저에게 assign을 하는 것 자체가 불필요한 행동이라 생각이 듭니다."

 

"혹시나 둘 다 까먹고 넘어갈까봐 제안드린 것입니다. ㅠㅠ. 00님 다른 업무 하느라 바쁘신데 제가 report한 리팩토링 이슈는 제가 만들어서 올리면 00님께서 따로 신경 안쓰셔도 되구요, 제 딴에는 배려한다고 말씀드린 건데 그렇게 날 세워서 말씀하시니 저도 마음이 안좋네요.."

 

"개인적으로 누가 저를 매니징한다는 느낌은 별로 안좋아해서요.. 그냥 서로 믿고 잘했으면 좋겠습니다."

 

이 마지막 말을 보고 말문이 막혔고, 너무 화가 났고, 도저히 이해가 안되었다.

아무리 생각해도 내뱉고 싶은 말은 대판 싸우는 말 뿐이었다.

그래서 답하는 걸 중단했다. 누군가에게 도움을 요청하고 싶었다.

일단 친구들에게 하소연했다.

아니 저번에도 이렇게 내 제안을 거절하더니 이번엔 이슈 생성까지 막는다. 진짜 너무 짜증난다. 등의 말을 했다.

착한 필자의 친구들은 다행히(?) 내 편을 들어주었고 공감해주었다. 기분이 좀 나아졌다.

하지만 문제는 해결되지 않았다.

 

필자의 가장 중요한 목표였던 "회사 코드 품질"은 위기에 봉착해있었다.

팀웍은 깨지기 일보 직전이었고

다음의 선택지 중 하나를 선택해야 했다.

 

1. 직접 대판 싸운다.

2. 대표님께 꼰지른다.

3. 퇴사한다.

4. 이번에도 내가 포용한다.

 

1번을 하면 필자의 손해가 너무 컸다. 가뜩이나 신입사원이라 아직 입지도 없는데, 논란을 일으켜봐야 좋을 것이 없었다.

2번도 마찬가지였다. 대표님께 꼰지르는 것 자체가 필자의 커뮤니케이션 능력이 떨어진다는 방증이었고, 설령 대표님이 말씀하셔서 동료의 행동이 고쳐진다고 해도, 동료의 마음은 더 안좋아질 뿐이었다. 돌이킬 수 없는 결과가 벌어질 것이었다.

3번은 아직 때가 아니었다. 이 회사에서 이루고 싶은 것들이 너무 많았다. 이런 것 때문에 퇴사하는 것은 말이 안됐다.

그렇다고 4번을 하긴 싫었다. 지금껏 얼마나 그런 부정적인 감정을 다 받아주고 참아가면서 사과하고 맞춰줬는데, 이번까지 양보하고 싶지 않았다. 필자만 동료를 배려하고 참고 넘어가는 게 너무 억울했다. 왜 이 사람은 내 감정을 배려하지 않는데 나만 배려해야 하지?라는 생각도 했다.

 

도무지 답이 안보였다. 이러나 저러나 필자에게는 회사 제품의 품질이 제일 중요했다. 하지만 팀 구성원간 감정이 상한 상태에서는 회사 제품의 품질이 좋아지기란 불가능하다. 답이 없어보였다. 동료는 쉽게 바뀔 것 같지 않았다. 이렇게 부정적인 감정을 쉽게 표출하는 동료와 어떻게 일을 같이 해야 하나 막막하기만 했다. (지금 보니 그렇게 심한 말을 한 것도 아닌데 본인의 부정적 감정에 휩싸이는게 이렇게 무섭다.)

 

그러다 불현듯 5번이 생각났고 바로 선택했다.

5. 코드숨에 상담을 받는다.

"ㅁㅁ님, SOS입니다. 혹시 상담 가능할까요"

"넵"

곧바로 대답이 왔다. 할렐루야

 

진짜 필자가 느끼는 부정적인 감정들을 모두 쏟아내었다. 이 사람은 왜이럴까요, 저는 너무 힘이 듭니다. 저는 이렇게 동료를 배려하는데 왜 제 생각을 안해줄까요. 등등 지금 생각하면 너무 죄송하고 감사하다.

 

역시나 ㅁㅁ님은 필자가 스스로 생각할 수 있도록 상황을 담담하게 해석하며 필자에게 공감해주셨다.

필자는 계속해서 말했다.

맞습니다. 이런 것도 나쁘고요, 이런 것도 나쁩니다. 이해가 전혀 되지 않습니다.

저는 어떻게 해야 할까요

 

"동료의 마음은 어땠을까요?"

 

"계속 지적 받아서 자존심이 상했을 것 같습니다."

말하면서도 생각했다. '코드를 지적받는데 왜 자존심이 상하지? 진짜 배우고 성장하고 싶으면 기쁘게 받아들여야 하는 것 아닌가? 자존심은 방해만 될 뿐인데, 참 답답하다.'

 

그러다 충격적인 메시지를 받았다.

"제가 00님이었다면 숨막힌다고 느꼈을 것 같아요. 언제할 거냐, 티켓 만들어 놓겠다. 리팩터링은 반드시 해야 한다. 잊어버리면 안된다. 사람은 공격받는다고 느끼면 방어하게 되어 있어요."

 

벙쪘다. '엥? ㅁㅁ님이 내가 아니라 일면식도 없는 내 동료의 편을 드네?'

'내가 진짜 그렇게 잘못한건가?' 생각이 들면서 나 자신을 돌아보게 되었다.

 

이어지는 말씀은 더 충격이었다.

"필자님 동료와 이야기할 때 그렇게 쏘아붙이지 마세요. 동료를 완전 몰아 세우고 계시네요.

라고 하면 필자님은 몰아세우는게 아니라고 하셨겠죠. 사람은 원래 그렇습니다."

 

그리고 필자는 ㅁㅁ님 말씀대로 본능적으로 방어했다. 말하면서 깨달았다. 

"아하, 저는 오히려 저를 돌아보고 있었는데요, 이렇게 말하는 것도 방어긴 하네요. ㅋㅋ"

"네 ㅎㅎ"

 

그 후엔 자기 반성의 연속이었다. 비로소 동료의 입장에 서서 필자의 행동을 바라보게 되었다.

내가 동료 입장에서 생각한다고 느꼈던 것. 동료를 배려한다고 생각했던 것들조차 끝까지 내 입장에서 생각했던 것뿐이었다.

전혀 이해가 안됐었다. 필자가 동료였다면 이런 제안들, 리뷰들, 사소한 지적이라도 너무 고마워할 것 같았다. 그런데 왜 오히려 필자한테 부정적인 감정을 표출하는지 이해가 안됐다.

 

다시 한 번 동료의 입장이 되어 필자가 한 행동을 그대로 받았다고 생각을 해보았다. 필자였어도 사소한 지적이 계속 반복되고 끝까지 물고 늘어지면 피로할 것 같았다. (물론 필자는 그 당시에도 '아니 지적이 반복되면 지적 받는 사람이 고쳐야 하는 거 아냐?!' 라고 생각했다.) 그리고 이번에도 '내가 올리겠다고 했는데 왜 끝까지 자기가 올리겠다고 하지?' '나를 못믿나?' 라고 생각해서 화가 많이 났을 것 같았다.

 

너무 부끄러웠다. 그리고 너무 미안했다. 만감이 교차했다.

'나는 진짜 아직도 많이 부족하구나, 내가 너무 오만했구나.'

'일 잘하는 기준이 다른 것처럼 좋은 코드에 대한 생각도

서로의 기준이 다른 것인데 내가 동료에게 나의 기준을 강요하고 있었구나.'

'나는 회사 코드 품질이 가장 중요하다는 것을 핑계로 내가 하는 행동을 정당화하고 있었구나.'

'회사 코드 품질보다 더 중요한 것은 같이 일하는 동료인데, 동료를 배려하지 않는 나쁜 동료는 바로 나였구나.'

 

쥐구멍에라도 들어가 숨고 싶었다.

그리고 생각할 수록 너무 죄송해지고 반성이 되었다.

장문의 사과 메시지를 쓰기 시작했다. 얼굴 비추는 것이 너무 부끄러워서 이렇게 메시지로만 사과할까 잠깐 생각했다.

하지만 직접 찾아가 사과하는 게 동료의 기분이 더 괜찮아질 것 같았다.

 

"저는 솔직히 이해가 안됐었습니다.

...중략...

나는 회사 제품만 생각해서 말씀드리는 건데 00님은 왜 저렇게 부정적인 감정을 내게 표출하시는거지? 라는 생각에 답답하고 속상했습니다. 근데 그게 잘못 되었었네요. 동료는 바라보지 않고 회사 제품만 바라보는 그 점이요. 동료를 배려하지 않는 나쁜 동료는 바로 저였네요.. 앞으로는 좀 더 00님을 믿고 존중하겠습니다. 😭 너무 부끄러워지는데요, 사과의 의미로 커피 한 잔 쏘고 싶은데 회의전에 재빨리 어떠신가요?"

바로 대답이 왔다.

"좋습니다. 화장실 들렀다가 엘베 앞으로 갈게요!"

 

동료도 기다리고 있었던 것 같다.

동료도 저렇게 마지막 말을 보내고 미안한 감정이 들었다고 한다.

필자가 한다고 했는데 이슈를 가져간 꼴이었으니까.

 

그렇게 터놓고 서로의 상황과 왜 그렇게 행동했는지 대화를 나누었다.

알고 보니 동료는 개인적으로 안좋은 일도 겹치고, 건강도 갑자기 안좋아져서 신경 쓰고 있는 상태였으며, 대표님께 알게모르게 푸시가 들어와 일정을 맞추는데 압박감을 가지고 있었다.

 

그 얘기를 들으니 지금까지의 행동이 다 이해되고 더욱 죄송해졌다.

이렇게 닥친 일이 많은데, 사소한 변수명 가지고 물고 늘어지고 있으니, 얼마나 숨이 막혔을까. 너무 부끄러웠다.

 

필자는 중도에 다른 프로젝트로 업무가 이관되었다가 그게 종료되어 다시 동료와 합류한지 얼마 되지 않았는데 필자의 업무로 분장이 많이 되지 않아 비교적 필자의 업무는 한가한 편이었고, 동료의 업무는 막중했다.

맡은 업무는 많지 않은데 열정이 넘쳐 그 열정이 사소한 개선점으로까지 미친 것이다. 필자도 맡은 업무가 많았더라면 나중으로 미룰 수도 있는 정도의 개선점들이었다.

 

결국 그렇게 대화를 잘 끝내고 서로의 안좋은 감정도 조금은 누그러들었다.

메신저는 서로 으쌰으쌰 하자는 메시지로 잘 마무리 되었다.

 

이렇게 글을 쓰다가 또 느끼는 것이 동료는 지금까지 필자의 많은 의견을 수용해주었다는 사실이다. '좋은 코드의 기준을 책 읽고 스터디하여 같이 정해 문서화 하자.' '코드리뷰 하자.' '테스트 코드 자동화 도입하자.' 이거 하자 저거 하자 등의 제안을 다 수용해준 게 바로 필자의 동료였다. 너무 감사했다. (많이도 요구했다!)

 

그 뒤로 업무가 바빠 신경쓸 겨를이 없었지만

집에 와서는 약간 울적해 했다.

오늘 있었던 일을 계속 생각하며 반성하는데 너무 부끄럽고, '필자가 아직 많이 부족하구나'라고 많이 느꼈다.

 

모든 것은 외부 상황을 컨트롤하는 것이 아니라 내 마음 내면을 컨트롤하는 문제이다.

라는 요새 푹 빠져 챙겨보는 유튜버 "진쏠미"의 말이 다시금 생각나면서 '마인드 컨트롤은 참 어렵구나.'라고 생각했다.

또 울적해졌다.

언제쯤이면 필자는 마인드 컨트롤을 잘 하게 될 수 있을까.

그러다 그 유튜버가 말한 솔루션을 실천했다.

"멈춰!" 라고 본능적인 반응을 의식적으로 멈춘 뒤, 본인의 반응을 "선택"한다.

 

여기서 선택한 필자의 반응은

지나간 일 다 잊어버려! 앞으로 잘하면 되지!

였다.

 

많은 것을 느꼈다.

회사에서도, 집에 와서도.

 

이 회고를 쓰면서도 교훈을 얻는다.

코드 리뷰할 때 중요한 것은 코드 품질만이 아니다.

역설적이지만 맞는 말이다.

 

그보다 중요한 것은

 

코드 리뷰를 받는 사람의 상황,

코드 리뷰를 하는 사람의 동료에 대한 믿음.

"코드 품질보다 중요한 것은 팀웍"이라는 공감대

였다.

 

참으로 좌충우돌 치기어린 신입사원의 분투기가 아닐 수 없다.

하지만 이런 필자도 누군가에게 칭찬받고 싶다. 인정 받고 싶다.

 

"신입이 어떻게 그렇게 진지하고 열정적으로 꼼꼼하게 프로그래밍에 임했을까.

참 대견하다."

"어떻게 그렇게 자기 일에 애정을 갖고 집착할까, 참으로 모범적인 직원이 아닐 수 없다."

"열정이 넘쳐 실수하기도 하지만 내 눈에는 그 점이 마냥 나쁘게 보이지 않는다.

기특해라."

 

라고 누가 좀 말해줬음 좋겠다.

 

필자는 돈이 중요한 게 아니다. (물론 돈도 중요하긴 하다.)

돈보다 더 중요한 것은 필자의 가슴을 뛰게 하는 도메인이었다.

회사의 서비스에 애정을 갖고 입사했고, 그만큼 진짜 좋은 품질로 제품을 만들고 업그레이드 해서 많은 가치를 고객들에게 선사하고 싶었다.

 

필자로선 최선을 다한 일인데 어쩔 수 없었겠다고,

이제부터라도 동료의 감정을 진정으로 생각하며 일하면 된다고 말해줬음 좋겠다.

 

필자라도 이렇게 글을 쓰니 마음이 좀 나아진다.

글을 쓰다보니 시간이 늦었다.

 

내일도 바쁜 일상에 치일 것이다.

열정을 갖고, 애정을 갖고 있는 본인 업무에 온 힘을 다해 몸을 던질 이 땅의 모든 신입사원들은 이 글을 보고 자그마한 위안을 얻었으면 좋겠다.

 

진정성을 갖고 열심히 노력하는 모든 사람은 반드시 잘 될 것이다.

필자도 그렇고, 이 글을 공감하며 끝까지 본 당신도 그렇다.

반응형