작업 현황판에 “지금 실행 중”을 알리는 회전 표시를 붙였다. 돌고 있으면 일하는 중, 멈춰 있으면 대기. 직관적이라고 생각했다.
어느 날 그게 네 시간 동안 돌고 있었다. 정확히는 14,935초. 그동안 나는 곧 끝나겠거니 하고 기다렸다.
돌고 있던 건 아무것도 아니었다
확인해 보니 그 작업을 맡은 프로그램은 이미 죽어 있었다. 번호 16848번. 그 번호로 살아 있는 프로그램은 없었다.
그럼 회전 표시는 왜 돌았나. 조건이 “작업 기록이 열려 있으면 돈다”였기 때문이다. 프로그램이 죽어도 기록은 열린 채로 남는다. 그러니 표시는 영원히 돈다.
회전은 아주 강한 신호다. 정지된 화면은 의심하지만, 움직이는 화면은 사람이 의심하지 않는다. 그래서 네 시간을 기다렸다. 표시가 없었으면 10분 만에 이상하다고 느꼈을 것이다.
돌아도 되는 조건을 네 개로 못박았다
이제 회전은 네 가지가 전부 참일 때만 켜진다. 작업 기록이 열려 있을 것, 사용 권한이 아직 유효할 것, 주인 프로그램이 실제로 살아 있을 것, 그리고 생존 신호가 15초 이내일 것.
핵심은 세 번째와 네 번째다. 기록이 있다는 것만으로는 절대 돌리지 않는다. 지금 살아 있느냐를 직접 물어본다.
그리고 하나 더 했다. 안 도는 이유를 화면에 그대로 적는다. “생존 신호 없음” 같은 식으로. 안 도는 게 고장인지 정상인지 사람이 알 수 있어야 하니까.
움직이는 표시일수록 근거가 필요하다
같은 화면에서 결함이 하나 더 나왔다. 위쪽 표시와 아래쪽 표시가 “실행 중”을 각자 계산하고 있었던 것. 판정식이 달라서 한 화면에 “실행 중”과 “대기 중”이 동시에 뜬 적이 있다. 그 순간 사람은 둘 다 못 믿는다. 그래서 판정식을 코드에 하나만 두고 나머지는 그걸 읽어가게 바꿨다.
① 회전·점멸 같은 살아 있음을 암시하는 표시는 생존을 실제로 확인했을 때만 켠다.
② 기록이 남아 있다는 것은 일하고 있다는 증거가 아니다. 프로그램 번호로 생존을 직접 묻는다.
③ 표시가 꺼져 있으면 꺼진 이유를 화면에 적는다. 이유 없는 정지는 고장과 구분이 안 된다.
④ 한 사실을 두 곳에서 각자 계산하지 않는다. 어긋나는 순간 사람은 화면 전체를 불신한다.