ERP를 새로 도입했다. 신버전인데, 곳곳에 버그가 있었다. 회계담당은 일일이 수기로 확인했다. 시스템 안정화는 느렸다. 회계담당의 업무 부담은 높았다. 불만이 쌓여갔다.
어느 날, 회계담당이 도저히 못 하겠다고 했다. 계산이 틀리다. 개발사는 프로그램이 틀리지는 않다고 했다. 그쪽도 우리도 몇 번이고 체크했다. 같은 대답만 오고 갔다. 뚜껑이 반쯤 열렸다.
1,099,989,000 원을 투자해 보통주 351,614 주를 보유했다. 이중 12만 주를 주당 10,000원에 팔았다. 이건을 처리하는 중이었다. 매각대금 12억을 투자원금과 수익으로 나눠야 한다. 회계의 계산으로는 수익이 824,592,082 원이다. ERP는 824,592,081 원으로 나왔다. 1원 차이가 났다. 아무것도 아닌 것 같은 그 1원으로, 몇 사람이 실랑이를 몇 시간 동안 하고 있었다.
....
나는 전직 프로그래머다. 개발사와 통화했다. 로직은 정확했다. 코드도 틀리지 않았다. 무엇이 문제일까.
원금과 수익으로 나누려면, 먼저 1주당 취득단가를 계산해야 한다. 회계담당은 계산기를 두드려 3,128.39932 원으로 했다. 소수 다섯째까지. 프로그램에서는 끝까지, 기계적으로 계산했다. 변수의 용량을 다 채울 때까지. float형(32비트) 변수로 처리했으면, 소수 6자리 까지다. 그럼 3,128.399324. 오차가 났다.( = 0.000004 ) 12만 주니까 0.48원. 계정은 원단위로 한다. 소수점 이하를 처리하면서 1원 차이가 만들어졌다. 프로그램은 현업의 관례를 반영해야 한다. 소수점 5자리 이하는 절사 하라고 했다. 엑셀의 RoundDown(A,5)이다. 비슷한 문제가 여러 곳에서 사라졌다.
오차. 돈에서는 크기의 문제가 아니다. 정확해야 한다. 아니면, 또 어디선가 문제가 된다. 1원이 10만 원이 되고, 1억이 될 수도 있다. 돈을 다루는 업종은 1원은 곧 신뢰다.
....
회계담당자가 프로그램에서 몇 비트 변수를 쓰는지 알지 못한다. 개발사는 현업의 디테일을 알려주지 않으면 모른다. 각자는 완벽하게 처리했다. 그렇게 생각한다. 그렇게 당연한 곳에서 문제가 일어나면, 찾기가 어렵다. 내 등잔도, 남의 등잔도, 등잔 밑은 항상 어둡다. 그곳을 비추는 것이 매뉴얼이다. 항상 기본사항을 먼저 체크하자. 그래야 해법을 찾을 수 있다.
먼저, 관점을 일치시키자. 주고받는 프로토콜을 정의하자. 하찮아 보이지만, 이게 1번이다.
심사역이 투자협상을 할 때, 심사역과 사장님 가정이 서로 틀리다. 투자 전 기업가치인지, 투자 후 인지. 스톡옵션 희석분이 포함된 것인지. 무심코 투심 위했다간 낭패가 된다. 가정을 확인하자. 그게 탄탄한 기본기다. 그런 후에 "척하면 척" 할 수 있다.
그리고, 최종적으로 무엇을 결정해야 하는지, 정확히 알자. 투자 협상에서는 투자단가다. 1원 단위 까지. 달러라면, 소수 넷째 자리. 계약서, 청약서 서류에 투자단가가 중심이다. 이게 결정하면, 오해는 없다. 기업가치, 지분율,,, 이런 것들은 투자단가를 결정하기 위한 보조적인 역할이다.
이제 익숙해졌다 싶을 때, 사고가 많다. 운전 같다. 기본으로 돌아가서, 확인하고, 서로 맞추자. 돌다리도 가끔은 두들기자. 발 뻗고 잘 잘 수 있다.