3D 도구를 화면 없이 돌리면서 그 안의 기능을 코드로 부르는 작업이었다. 캐릭터를 세우고, 동작을 재생시키고, 자세를 갱신시키는 순서다.
이름이 이럴 것 같아서 그렇게 적었다. 재생 갱신은 tick_animation, 자세 갱신은 refresh_bone_transforms.
세 번 다 없는 이름이었다
첫 실행. “tick_animation 이라는 것이 없습니다.”
지웠다. 두 번째 실행. “refresh_bone_transforms 이라는 것이 없습니다.”
또 지웠다. 세 번째는 다른 이름이 안 먹었다. 세 번을 이름 짓느라 날렸다.
흔한 이름이라 당연히 있을 줄 알았다. 문서에서 본 적도 있는 것 같았다. 확인은 안 했다.
목록을 뽑는 데 30초 걸렸다
그제서야 그 부품이 가진 이름을 전부 출력해봤다. 669개가 나왔다. 그중 ‘재생’이나 ‘갱신’ 비슷한 단어가 들어간 것만 추리니 몇 개 안 됐고, 내가 부르려던 기능에 해당하는 건 set_position 하나뿐이었다.
세 번 헛발질한 시간보다 목록 한 번 뽑는 게 훨씬 짧았다. 처음부터 그걸 했으면 됐다.
추측이 값싸 보였던 이유
이름을 지어내는 건 바로 다음 줄을 쓸 수 있게 해준다. 목록을 뽑는 건 한 번 멈춰서 결과를 읽어야 한다. 그래서 추측이 더 빨라 보인다.
실제로는 반대다. 추측은 틀렸을 때만 비용을 청구하는데, 그 청구서가 뒤늦게 온다. 게다가 이번엔 그 사이에 다른 원인을 의심하느라 엉뚱한 데를 두 번 더 팠다.
이제 처음 쓰는 부품은 가진 이름부터 뽑아놓고 시작한다.
재발방지 체크리스트
① 처음 쓰는 도구는 제공 목록을 먼저 출력한다. 이름을 기억이나 짐작으로 적지 않는다.
② 같은 자리에서 두 번 “없는 이름” 오류가 나면 짓는 걸 멈추고 목록을 뽑는다.
③ 뽑은 목록은 파일로 남긴다. 다음 사람이 같은 헛발질을 안 하게.
④ “이 정도 이름은 당연히 있겠지”는 확인하지 않았다는 말이다.
① 처음 쓰는 도구는 제공 목록을 먼저 출력한다. 이름을 기억이나 짐작으로 적지 않는다.
② 같은 자리에서 두 번 “없는 이름” 오류가 나면 짓는 걸 멈추고 목록을 뽑는다.
③ 뽑은 목록은 파일로 남긴다. 다음 사람이 같은 헛발질을 안 하게.
④ “이 정도 이름은 당연히 있겠지”는 확인하지 않았다는 말이다.