우리가 끊임없이 소스코드를 고치는 이유
잊고 있던 것이 생각났다.
1. 기획팀에서 문서를 만든다.
2. 그래픽팀과 프로그램 팀에서 만들어진 문서로 개발을 한다.
3. QA를 진행한다.
4. 서비스를 오픈한다.
서비스 중인 게임에 뭔가 추가할 때를 중간에 복잡한 이야기 다 자르고 이야기하면 저것이다. 저걸 또 한 번 더 비틀어서 프로그래머인 내 시선으로 보자.
1. '이거 만들어주세요.'라고 문서가 온다.
2. 만든다. 만들면서 문서에 이해가 안 가는 것이 있으면 기획한 사람에게 물어본다.
3. 다 만들면 QA가 시작되고 QA에서는 이게 안되고 저게 안된다고 한다.
4. 열심히 고친다
5. 또 이게 안되고 저게 안되고
6. 또 고치고
7. 또 이게 안되고 저게 안되고
8. 또 고치고
114. 고칠 것이 더 이상 없으면 완료.
(8번에서 114로 뛴 거 오타 아니다.)
여기에서 미묘한 갈등이 생기는 부분들이 있는데 그중에 가장 큰 부분은 3번, 5번, 7번...에 있는 QA가 시작되고 QA에서는 이게 안되고 저게 안된다고 한다는 부분이다.
안된다고 이야기하는 것도 역시나 세 가지 유형이 있다.
잘못 만들어서 버그가 생겼음.
기획문서에는 없는 내용이라서 개발이 안됐음.
문서를 잘못 이해해서 다르게 만들었음.
여기에 각 회사별 독특한 유형이 몇 개씩 들어가는데 이 회사에 있는 독특한 유형은 정말 독특하다.
평범하지 않은 유형
"섭자님. 게임머니가 검증 문서에 나오는 결과랑 다르게 들어와요. 이것 좀 확인해주시겠어요."
"네. 혹시 그 검증 문서를 제가 볼 수 있을까요?"
"네. 잠시만이요."
메신저로 엑셀 파일이 전달됐다.
엑셀 문서 참 예쁘게 만들었다. 이렇게 예쁘니 무서운 독을 가지고 있겠지.
넣어야 하는 값은 '내가 있는 지역'과 '내가 죽인 몬스터', 그리고 '캐릭터 레벨과 장비'를 입력하면 상단에 있는 크고 거대한 검은색 네모칸에 노~~란 색으로 내가 받아야 하는 게임머니가 표시된다.
이제는 정말 안 예쁜 로그파일을 볼 차례.
로그파일에는 영어인 듯 영어가 아닌 글씨들이 쓰여 있는 텍스트 파일. 그중에서 내가 실제로 유저에게 준 게임머니를 표시한 부분을 힘들게 찾았다.
다르다.
정말로 내가 실제 유저에게 준 게임머니와 다른 숫자가 쓰여 있다.
저 값이 다르다고 해서 나한테 온 건데 무슨 기대를 한 거냐. 기대는 안 했지만 그래도 실망.
이러면 방법은 하나뿐. 내 PC에 게임 서버와 게임 클라이언트를 실행시켜서 한 단계씩 확인을 해 봐야 한다.
실행하고 한 줄씩 확인하고 확인을 못해서 또 실행하고 한 줄씩 확인하고 그래도 확인이 안돼서 또 실행하고 또 한 줄씩 확인.... 두 시간을 확인하고 나서 원인을 찾았다.
“저기 이 검증 문서는 누가 만든 거예요?”
“그건 큐장님이 만들었죠.”
조용히 큐장님 자리에 찾아가 말을 했다.
“큐장님! 이 검증 문서가 잘못됐어요.”
“네? 에이 그럴 리가요. 그 문서 기획서대로 만든 건데요.”
“정말이요? 어떤 기획서요? 혹시 그 기획서 나도 볼 수 있어요?"
잠시 후 내 슬랙으로 문서 하나가 올라왔다. 하아... 찜찜하네. 내가 가지고 있는 문서랑 왜 제목부터 다른 거니.
문서를 찬찬히 훑어봤다. 정말 찬찬~~~~히 훑어봤다. 아주아주 찬찬~~~히.
진짜네. 개발 문서에 쓰여 있는 대로 만들어진 검증 문서였다.
이제 찾아갈 사람은 개발 문서를 만든 사람이다.
“게디님. 이 개발 문서에 앞부분 잘못써져 있어요."
“네? 앞부분이요? 앞부분은 원래 있던 것 그대로 쓴 거예요. 우리 지금 몹 잡으면 게임머니 어떻게 주는지 설명해놓은 건데 그게 틀릴리 가요.”
“어....라...."
슬슬 눈 앞이 컴컴해지는 게 똥을 지긋이 꾸욱 밟은 느낌이 든다.
"이게 소스코드에 있는 것이랑 달라요. 지금 저희 게임은 이렇게 안 돌아가고 있어요."
"음..... 그러면 소스코드에 있는 것 정리해서 주실 수 있을까요 확인을 해볼게요.”
"네......"
소스코드를 찬찬히 리뷰하고 디버깅해보고 트레이싱도 해 보면서 문서에서 잘못 쓰인 부분을 찾고 그것을 정리해서 위키에 올리는데 하루가 홀딱 다 가 버렸다. 그리고 그 문서를 전달해 준 뒤에 내가 들은 말은 요 근래 들었던 이야기 중에서 가장 최악의 한마디였다.
써 주신 것을 기반으로 다시 문서 작성해서 보내드릴게요. 수정이 좀 많겠네요.
네. 이것으로 제가 지금까지 만들었던 것은 새로 만들어야 하는 것이 되었습니다.
도대체가 왜 이런 일이 생기는 것인지에 대해서 심각하게 고찰을... 하기 전에 욕을 하고 싶지만 욕은 메모장에 잔뜩 하고 저장 안 하고 닫아버렸으니까 됐다.
왜 이런 일이 생겼는지는 뻔하디 뻔하다.
수정해야 하는 것이 생겼고 --> 말로 수정해 달라고 했고 --> 수정해달라는 대로 프로그래머는 수정했고 >> 끝.
뭐가 이상할까요?? 이상한 게 없다고?
수정해야 하는 것이 생겼고 >> 문서를 작성하고 >> 문서를 확인한 후 프로그래밍을 하고 >> 확인하고 >> 끝.
그렇다. 문서를 작성해놔야 한다.
문서가 너무 많거나 바뀌면 어떤 게 진짜인지 몰라서 문제라고? 그것보다 더 큰 건 아무것도 없는 거다. 뭐가 됐든 간에 있기만 하면 된다. 있으면 뭐가 최신 문서인지 급한 사람이 찾아낸다. 그런데 없으면 그걸 어떻게 찾겠는가.
부디 문서를 만들어주길 바란다. 최종, 진짜 최종, 진짜 진짜 최종, 진짜짜짜짜짜 최종 문서가 아무리 많아도 괜찮으니 바뀌었으면 문서를 만들어주길 바란다.
그것이 있었으면 오늘 나의 야근도, 그리고 미래의 누군가의 야근도 없어질 수 있다.
나의 지금 한시간이 누군가의 30시간을 줄여줄 지도 모른다면 한번의 수고를 해 줄 만 하지 않나.