이번 주에 걸린 장면 — 기획서를 받았는데 개발을 진행할 수 없었다

이번 주는 거의 일주일 내내 회의를 했다. 이번 주에 돌아보고 싶은 것은 커뮤니케이션이다. 일감을 넘겨받을 때 생기는 문제, 그리고 개발자가 무엇을 구현해야 하고 그걸 왜 해야 하는지를 아는 문제다.

시작은 기획서였다. 받아 보니 내용이 논리적이지 않았고 설명이 많이 부족해서, 이대로는 개발을 진행할 수 없었다. 그래서 기획자와 계속 얘기를 했는데, 기획자가 제대로 답하지 못하고 명확하게 말하지 못하는 부분이 있었다. 그걸 보고 알아챘다.


처음 생각 — 기획자가 현업 얘기를 제대로 못 들었다

처음에 내가 꺼낸 원인은 이것이었다. 기획자가 현업의 얘기를 제대로 못 들었다. 그래서 기획자가 개발자에게 내용을 제대로 전하지 못했고, 개발자는 무엇을 만들어야 하는지 몰랐다. 그걸 알아내려고 결국 현업과 개발자가 직접 붙어서 회의를 하기 시작했다. 일주일 내내 이어진 회의는 그렇게 생겼다.


현업도 무엇을 말해야 할지 몰랐고, 끌어내는 질문이 없었다

답을 못 하는 이유는 여럿일 수 있다. 그 모습에서 「현업 얘기를 제대로 안 들었다」로 판단하게 된 건 무엇 때문이었나?

답하다 보니 원인이 기획자 한 사람에게만 있지 않았다. 현업 분들도 자기가 무엇을 얘기해야 하는지 모르고 있었다. 내가 현업과 직접 붙어서 얘기할 때도 예상하지 못한 예외 상황이 대화 중에 계속 나왔다.

처음엔 「기획자가 못 들어서」라고 했는데, 지금은 현업도 무엇을 말해야 할지 몰랐다고 한다. 둘은 어떻게 같이 성립하나?

기획자·현업·개발자 셋이 같이 대화한 때가 있었다. 그 자리에서 기획자는 현업이 미처 생각하지 못한 것을 말하게끔 이끄는 질문을 했어야 했는데, 그런 질문이 없었다. 그래서 현업은 「이러면 되는 것 같다」 하고 넘어갔고 기획자도 그렇게 넘어갔다. 그걸 개발자가 짚어서 결국 다시 알아내는 작업을 했다.

「못 들었다」가 「끌어내지 못했다」로 바뀐 곳이 여기다.


예외 케이스는 테이블과 컬럼으로 생각하는 구현 담당에게 보였다

같은 자리에서 현업도 기획자도 넘어갔는데 개발자는 걸렸다. 그때 개발자가 던진 질문 하나를 떠올리면 어떤 질문이었나?

업무 내용이라 자세히 쓸 수는 없지만 모양은 이렇다. 어떤 프로세스가 있고, 그 프로세스가 진행되려면 그 일 안에서 여러 가지 케이스가 나온다. 기획자는 그 케이스들을 고려하지 못했다. 개발자가 「이런 일이 생길 수 있다」고 말하고, 그걸 다시 확인하는 절차를 계속 되풀이했다. 이런 케이스가 아주 많았다.

같은 프로세스를 같은 자리에서 들었는데 그 케이스들이 개발자에게만 보였다. 개발자는 무엇을 하고 있었기에 보였나?

기획자는 테이블이나 데이터를 기반으로 생각하지 않는다. 개발자는 테이블 컬럼과 그 컬럼의 데이터 타입까지 따져서 데이터를 다루기 때문에, 어디에 어긋남이나 오류가 있으면 바로 보인다. 나는 그 차이라고 생각한다. 결국 구현을 맡은 사람이기 때문이다.


외주 기획자와 실시간으로 소통이 안 되니 개발자가 현업과 바로 붙었다

그 케이스들이 구현을 맡은 사람에게 보이는 것이라면, 그 질문은 기획자가 했어야 하는가, 애초에 개발자의 몫이었는가?

이 질문에 원인이 한 번 더 옮겨 갔다. 그 질문이 개발자의 몫이라면, 개발자가 기획자와 잘 소통하고 기획자가 다시 현업과 잘 얘기하는 흐름이 있어야 했다. 그런데 이번 기획자는 외주였다. 일정 안에서 현업과 실시간으로 소통이 되지 않았다. 개발자는 상주하고 있었으니 답답한 쪽은 개발자였고, 그래서 현업과 바로 연결될 수밖에 없었다.


일주일의 회의는 낭비가 아니라 누군가 했어야 할 일이었다

처음에 이번 주를 「회의를 일주일 내내 해서 발생한 문제」로 꺼냈다. 그런데 그 회의에서 개발자가 케이스를 짚고 현업이 예외를 꺼내는 일이 계속 일어났다. 그 회의는 막아야 했던 낭비였나, 어차피 누군가 했어야 할 일이었나?

쓸데없는 낭비라기보다는 어차피 누군가는 했어야 할 일이 거기서 일어난 것 같다.

이번 주를 「문제」로 꺼냈는데, 문제라고 부른 회의 자체는 필요한 일이었다. 생각이 가장 크게 꺾인 곳이다.

그 일이 필요한 일이었다면, 이번 주에 실제로 잃은 것은 무엇이었나? 같은 회의가 다른 때, 다른 순서로 일어났다면 무엇이 달라졌을까?

이 일은 개발하기 전에 일어났어야 했다. 실제로는 개발이 어느 정도 진행된 뒤 중간에 일어났다. 문제는 회의가 아니라 회의의 시점이었다.


데드라인 때문에 추측으로 시작했고 70%를 다시 만든다

기획서를 받았을 때는 「개발을 진행할 수 없는 상황」이었다고 했다. 그런데 개발은 어느 정도 진행됐다. 어떻게 시작됐나?

개발자들끼리 기획서를 같이 보며 얘기하고, 예측과 추측을 해서 그걸 바탕으로 개발했다. 모자란 부분은 기획자와 메신저로 주고받으며 진행했다. 그러다 모자란 부분이 너무 많아서 멈췄다.

처음부터 부족한 걸 알았는데, 멈추고 현업과 먼저 붙자고 하지 않고 추측으로 시작한 이유는 무엇이었나?

기획서를 보고 파악하는 일이 제대로 되지 않았는데, 그래도 데드라인은 정해져 있었다. 그래서 그냥 계속 개발을 이어 갔다.

추측으로 먼저 만든 것 중에 회의 뒤에도 살아남은 것과 다시 만들어야 했던 것은 어떤 비율이었나?

만들어진 것이 30, 다시 만들어야 하는 것이 70% 정도다.


첫날로 돌아가도 개발을 시작한 것은 옳았다

똑같이 데드라인이 정해져 있고 설명이 부족한 기획서를 받은 첫날로 돌아간다면 무엇을 하겠나?

처음에는 이렇게 답했다. 기획서를 진짜 꼼꼼하게 읽고, 개발은 진행하지 않겠다.

이번에 빠진 예외 케이스들은 기획서 안에 없었고, 현업도 대화하다 비로소 꺼낸 것들이다. 꼼꼼히 읽은 다음에는 무엇을 하겠나?

꼼꼼히 읽은 다음 예외 케이스를 정리할 수 있게 현업에게 물어보고 개발을 진행했을 것 같다. 다만 이 답은 내가 먼저 떠올린 게 아니라 질문을 받고 「그 말대로」 따라간 답이었다.

이번에 추측으로 시작한 이유는 데드라인이었다. 다음에도 데드라인은 있을 텐데, 첫날 멈추고 현업에게 묻고 있으면 그 압박은 어떻게 하나?

그 데드라인은 결국 지켜지지 않았다. 고객사에서도 일정을 못 맞추겠다고 판단해서 기간이 늘어났다.

첫날 추측으로 시작하게 만든 데드라인이 결국 늘어났다. 그걸 알고 나니 첫날의 판단을 지금은 어떻게 보나?

생각해 보니 그것도 어쩔 수 없었다. 그때는 기간이 고정이었고 그때 끊는다고 생각했으니, 해야 하는 상황이었다. 개발을 시작한 것은 결국 옳았다. 조금 전에 「개발은 진행하지 않겠다」고 한 것은 사실 아니었다. 기간이 있었으니 개발하는 게 맞았다.

시작한 것은 옳았고 그 결과 70%를 다시 만든다. 다음에 같은 첫날이 와도 시작할 텐데, 다르게 할 것이 하나라도 있나, 이번과 똑같이 하겠나?

이번에도 똑같이 할 것 같기도 하다. 「같다」가 아니라 「같기도 하다」인 건, 그때 상황마다 다를 수 있어서다.


이번 주의 고찰

일주일의 회의는 낭비가 아니라 어차피 누군가 했어야 할 일이었다. 문제는 그 일이 개발 전이 아니라 개발 중간에 일어났다는 것이다.

원인은 대화하는 동안 세 번 옮겨 갔다. 「기획자가 현업 얘기를 못 들었다」에서 「현업도 몰랐고 끌어내는 질문이 없었다」로, 다시 「외주라 실시간으로 소통이 안 됐다」로. 그리고 회의가 문제가 아니라 회의가 일어난 시점이 문제였다는 데 닿았다.

이번 주에는 이름 붙인 패턴이 없다.


아직 안 풀린 것

  • 다음 첫날에 무엇을 다르게 할 것인가. 데드라인이 고정이면 시작하는 게 옳았다고 했고, 그러면 같은 첫날에도 시작할 것이다. 그렇다면 70%를 다시 만드는 일은 어떻게 줄이는가. 지금 답은 「똑같이 할 것 같기도 하고, 상황마다 다르다」에서 멈춰 있다. 그 「상황」이 무엇인지는 아직 말하지 않았다
  • 현업에게 예외 케이스를 끌어내는 질문은 누구의 몫인가. 케이스는 구현을 맡은 사람에게 보인다고 했고, 기획자가 그 질문을 했어야 한다고도 했다. 둘 중 어느 쪽인지는 정하지 않았다

자신만의 철학을 만들어가는 중입니다.
최상단으로 이동했습니다!
확대 이미지

댓글남기기