개요

사전 설명

군대를 포병의 사격지휘병으로 가면서 다른 보직과 다르게 모든 포대(보병의 중대급)의 작전분과가 같이 근무(작전 수행을 위한 사격통제장치 앞에서 항시 대기)를 서고, 근무표 작성은 본부포대가 담당하였는데 제가 본부포대라 근무표를 작성하게 됐습니다.

문제점 및 기획의도

기존 근무표는 미리 짜여진 로테이션을 보고 하나씩 대입해 표로 만들어 근무자 공용 PC에 저장하는 식으로 작성했습니다. 모두 수작업이면서 미리 3~4주 분량을 만드는데 중간에 휴가 등으로 빠지는 인원이 생기면 그 인원을 지우고 모든 로테이션을 일일이 당겨서 다시 만들어야 하는 큰 피로가 있었습니다. 그러던 중 VBA를 접하게 됐고, 이를 통해 부대 PC로도 프로그램을 만들 수 있다고 생각하여 수정에 대한 피로 절감을 위한 ‘근무표 자동 생성기’를 기획하였습니다.

요구사항

  1. 요일, 상황에 맞는 로테이션으로 작성되어야 함.

    로테이션 종류: 주중, 주말, 훈련 전날, 훈련 중, 주중 당직, 주말 당직.

    주중과 주말의 의미는 다음 날이 주중인지, 주말인지를 의미. 금요일 밤에 시작해 토요일 아침에 끝나는 당직은 주말 당직, 일요일 밤에 시작해 월요일 아침에 끝나는 당직은 주중 당직.

  2. 근무자가 휴가일 경우에는 그 근무자를 제외하고 다음 사람으로 넘어감.

    개인적인 일로 근무를 설 수 없는 경우(연속된 당직 등)에는 다른 날짜의 근무자와 맞교환을 해야 하지만, 휴가일 경우에는 로테이션에서 제외.

제작단계

  1. 사용자가 직접 작성해야 할 요소는 근무표 생성이 시작되는 날짜, 근무자들의 휴가, 훈련 계획, 로테이션. 로테이션은 사전에 작성되며, 순서가 주기적으로 랜덤으로 바뀌고 한동안 바뀌지 않음.
  2. 생성 시작 날짜부터 약 4주가 생성되도록 하고 이 기간동안 훈련이 있는지, 해당 날짜의 근무자가 휴가인지 등을 반영해 작성.

배포 후

많은 로테이션과 휴가, 훈련 등의 변수를 모두 고려해야 하는 점과 실수로 인해 근무자들의 항의를 받는 점 등으로 많은 스트레스가 유발되던 상황에서 버그로 인해 사소한 트러블이 있었으나 픽스 후에는 논란 일절 없이 유용하게 사용. 특히, 미리 만든 후에 휴가가 생기면 그 또한 해당 인원의 이름을 지우고 일일이 올려야 하는 수고를 덜어 근무표 작성자의 부담과 휴가자가 느끼는 미안함을 동시에 해결.

이후, VBA 작성 경험을 살려 ‘사격통제장치’의 검산을 위한 ‘사격 제원 계산기’를 제작하고 대대장의 포상 휴가를 받음.

특이사항

군대에서 제작하여 코드 등의 자료가 없음. 알고리즘을 작성한 노트를 가지고 나왔으나 분실.