어제 팀원 한 명이랑 오래 얘기했다.
기획이 며칠째 같은 자리였다. 뭐가 막혔냐고 물어보니, 여기를 이렇게 바꾸면 저 화면이 같이 바뀌고 그러면 저기서 엣지케이스가 생기고 그걸 처리하려면 또 앞단을 봐야 한다고 했다. 듣고 있으면 틀린 말이 하나도 없다. 실제로 다 연결돼 있는 게 맞다.
그래서 물어봤다. 그래서 지금 풀려는 문제가 뭐냐고.
A를 해야 할 것 같다고 했다. A를 왜 해야 하냐고 물었다. 대답이 잠깐 멈췄다. 다시 물었다. 어떤 사용자가 뭘 하려다가 어디서 막히는 걸 없애주는 거냐고. 여기서도 바로 나오지 않았다.
그 자리에서는 내가 아는 얘기를 했다. 예전에 개발할 때 하던 얘기들. 나쁘지 않은 대화였다고 생각한다. 근데 집에 와서 계속 걸린 건 대화 내용이 아니라 다른 거였다.
왜 저 질문이 그 사람 안에서 먼저 안 나왔을까.
일단 그날 한 얘기
순서상 그날 한 얘기를 먼저 적어둔다. 이게 이 글의 본론은 아니다.
정체의 원인은 복잡도가 아니라고 봤다. 얽혀 있는 건 맞지만, 얽혀 있다고 못 움직이는 건 아니다. 얽힌 것도 사람들은 매일 고친다. 진짜 문제는 무시할 근거가 없다는 거였다.
문제가 정해져 있으면 파급효과 중에 뭘 볼지 고를 수 있다. 지금 푸는 게 ‘이거’ 니까 이 케이스는 나중에 본다, 이렇게 잘라낼 수 있다. 근데 문제가 안 정해져 있으면 그 기준이 없다. 그러면 눈에 들어오는 모든 연결이 다 똑같이 중요해 보인다. 성실할수록 더 느려진다.
도메인 얘기도 했다. “이게 되어야 저게 된다”랑 “이 둘은 같이 설계해야 한다”는 다른 얘긴데, 이걸 붙여서 생각하면 순서가 있는 모든 게 한 덩어리가 된다. 연결이 있는 건 당연하고, 문제는 분리할 수 있는 걸 분리해뒀냐다. 커플링이 심해지면 확인 비용이 늘어나는 것보다도 아무도 바꾸려 하지 않게 되는 게 더 나쁘다.
엣지케이스는 순서 문제라고 했다. 기준 정책이 먼저 나오고 그 다음에 잡는 거다. 기본이 없으면 뭐가 예외인지 판단할 수가 없으니까.
비유하자면 이렇다.
벽돌로 집을 짓는데 벽돌 성분이 바뀌면 집의 강도가 달라질 수 있다. 그래서 벽돌을 함부로 못 바꾼다. 근데 벽돌이 만족해야 하는 최소 조건은 애초에 어떤 집을 지으려 했는지에서 나온다. 그 조건만 정해지면 그 안에서 성분은 얼마든지 바꿔도 된다. 집을 다시 볼 필요가 없다. 반대로 벽돌이 하중을 안 받아도 된다는 식으로 존재 이유가 바뀌면, 그건 벽돌 변경이 아니라 집 설계 변경이다.
그러니까 물어볼 건 벽돌을 바꾸면 집이 어떻게 되냐가 아니라, 이게 조건 안에서의 변경이냐 조건 자체를 바꾸는 거냐다. 근데 최소 조건이 없으면 이 구분이 안 되고, 그래서 모든 변경이 집 전체를 흔드는 일처럼 느껴진다.
여기까지가 내가 생각한 부분과, 전달 하고싶었던 부분이다.
근데 여기서부터가 진짜 걸렸던 부분
일이 끝나고 든 생각은 이거였다. 내가 한 얘기가 맞았다 치자. 그래서?
저 사람이 저렇게 생각하게 된 배경을 나는 모른다. 어떤 조직에서 어떤 방식으로 일해왔는지, 그동안 어떤 질문을 받아왔는지, 문제를 정의하는 게 자기 몫이라고 배운 적이 있는지 없는지. 하나도 모른다. 몇 년치 맥락을 모르는 상태에서 한 시간 대화하고 원인을 그 사람 안에 두는 건, 솔직히 근거가 없다.
그리고 대답이 안 나온 게 정말 생각을 안 해본 건지도 확실하지 않다. 생각은 했는데 확신이 없어서 말을 못 했을 수도 있고, 내 질문이 좋지 않았을 수도 있다. 그 세 개는 겉으로 똑같이 침묵으로 보인다. 나는 그걸 구분 안 하고 하나로 처리했다.
하나 더 있다. 그 질문들은 받는 입장에서 편한 질문이 아니다. 왜 해야 하냐, 누가 뭘 하다 막히냐. 이런 건 PM 혹은 TL인 매니저가 물어보면 무게가 다르게 실린다. 잘못 답하면 안 될 것 같으면 사람은 답을 안 한다. 모르는 것도 아닌데 말을 안 하는 상태가 있다.
그래서 이게 내 몫이라는 얘기
어렵지만, 또한 잘 해야하는것.
저런 질문을 스스로 던지는 습관은 그냥 생기지 않는다. 그런 질문을 자주 받아봤고, 그 질문에 틀린 답을 해도 별일 없었던 경험이 쌓여야 생긴다. 이건 개인 역량이라기보다 환경에 가깝다.
그렇게 보면 답이 안 나온 건 그 사람 문제가 아니라 그런 환경이 아직 없다는 얘기고, 그 환경을 만드는 건 내 일이다.
이걸 인정하고 나니까 그날 대화가 좀 다르게 보였다. 나는 문제를 정의해주고 왔다. 그 순간에는 도움이 됐을 거다. 며칠 막혀 있던 게 풀렸으니까. 근데 다음에 비슷한 상황이 오면 또 나한테 와야 한다. 답을 주는 건 그 자리를 넘기는 거지 보는 눈을 만들어주는 게 아니다.
내가 이걸 잘 못 느꼈던 이유도 알 것 같다. 나는 결론부터 말하고 근거는 나중에 찾는 편이다. 대체로 결과가 괜찮게 나오니까 그게 문제라는 걸 잘 몰랐다. 근데 그 방식은 나한테만 되는 거다. 남한테는 결론만 보이고 거기까지 간 과정은 안 보인다. 과정이 안 보이면 가져갈 게 없다. 내 방식이 빨라서 좋은 줄 알았는데, 옆에서 보기엔 오히려 배울 게 없는 방식이었을 수 있다.
근데 어떻게 하는 건지는 모르겠다
여기까지는 알겠는데, 그래서 뭘 어떻게 해야 하는지는 아직 모르겠다.
답을 안 주고 질문만 하면 그건 그것대로 사람을 지치게 한다. 시간이 없을 때는 그냥 답을 주는 게 맞을 때도 있다. 매번 캐묻듯이 굴 수도 없고, 그렇게 하면 그것도 또 다른 형태의 압박이다. 어디까지 기다리고 어디서 개입할지, 그 선을 재는 감각이 나한테는 아직 없다.
틀려도 괜찮은 환경이라는 것도 말은 쉬운데 실제로 뭘 하는 건지 모르겠다. 괜찮다고 말한다고 괜찮아지는 게 아니라는 건 안다. 결국 틀렸을 때 내가 어떻게 반응하느냐가 쌓여서 만들어지는 것 같은데, 그건 한두 번으로 되는 게 아니고 내가 매번 그렇게 할 자신도 솔직히 없다.
한동안은 이것부터 해보려고 한다. 답을 말하기 전에 몇 초라도 기다리기. 그리고 내가 왜 그렇게 생각했는지를 결론이랑 같이 말하기. 근거를 나중에 찾는 버릇을 고치는 게 나한테도 필요하고, 옆에서 보기에도 그게 나을 것 같다.
이게 맞는 방법인지는 모르겠다. 나중에 다시 적어봐야 알 것 같다.