🎯 오픈미션 주제 선정
내가 선정한 오픈미션 주제는 "현실의 불편한 문제를 프로그램으로 해결하기"다.
세부 주제는 "🪖군대 당직 관리 프로그램"만들기다.
💎 주제 선정 과정
프리코스 3주 차 이후 오픈미션 설명회를 통해 오픈미션에 대해 자세한 설명이 있었다. 설명회를 요약하면 각 지원자들이 3주 동안 프리코스를 통해 얻은 도전과 경험을 바탕으로 스스로 미션을 정의해서 결과와 과정을 제출하는 것이다. 설명회 이후 처음 드는 생각은 막막함이었다.
어떤 주제를 선정해야 하지? 내가 어떤 도전을 해야 할까? 매일 고민의 연속이었다. 그러다 개발자는 현실의 문제를 프로그램을 통해 해결하는 사람이라는 이야기가 떠올랐다. 내가 겪고 있는 현실의 문제가 어떤 것인지 고민했다. 그러다 군대에서 수작업으로 매주, 매월 당직표를 작성하는 것이 반복적이고 불편한 업무라고 생각했던 것이 떠올랐고, 군 당직은 평일/휴일 각각 당직자 순서가 정해져 있었기 때문에, 원하는 기간을 지정해 자동으로 당직표를 계산하는 프로그램이 있으면 행정업무 부담을 줄일 수 있다고 생각했다. 그래서 "군 당직 관리 프로그램"을 오픈 미션 세부 주세로 선정했다.
💎 프로그램 기획 과정
1. 실제 사용자 관점에서 고민하기
2. 해결하고 싶은 문제 정의하기
3. 진행과정에서 마주한 문제 그리고 해결
4. 실패한 점
🥕 실제 사용자 관점에서 고민하기
당직표를 작성하는 행정업무는 20대 초반의 병사가 할 때도 있고 50대의 원사분이 하시는 경우도 있다. 당직 개소마다 너무 다양하다. 그래서 누구라도 직관적으로 쉽게 사용가능해야 한다. 또한 실수할 수 있기 때문에 당직결과는 항상 새로운 파일을 생성하도록 해야 한다. 그리고 당직 순서표(양식)도 프로그램을 통해 손쉽게 다운로드할 수 있어야 한다. 또한 직관적인 사용을 위해 GUI를 통해서 프로그램을 사용할 수 있어야 한다.
🥕 해결하고 싶은 문제 정의하기
먼저 "군대 당직 관리 프로그램"을 통해서 사용자가 해결할 수 있는 문제를 정의했다.
1. 반복작업을 해결할 수 있다.(날짜, 사람 이름 입력 등)
2. 휴일, 평일 당직자 순서가 각각 존재해 발생하는 실수를 해결할 수 있다.
3. 미래에 원하는 날에 누가 당직인지 손쉽게 알 수 있다.(현재 1월인데 9월 추석연휴에 누가 당직인지 알 수 있다)
4. 전투휴무일을 쉽게 휴일로 설정할 수 있다.
🥕 진행과정에서 마주한 문제 그리고 해결
1. Apache POI 라이브러리 사용 문제
이 라이브러리를 통해 Excel을 다루는 것이 생각보다 너무 어려웠다. 이 라이브러리를 통해서 엑셀을 다룰 수 있다만 알고 있지만 어떤 메서드를 사용해야 할지 전혀 알 수 없었다. 그래서 처음으로 Apache POI 공식문서를 정독했고 기능을 하나하나 읽어보면서 이 라이브러리를 어떻게 사용해야 할지를 익힐 수 있었다. 이를 통해서 공식문서를 통해 기능을 익히는 것이 가장 정확하고 시간을 아낄 수 있다고 느꼈다.
2. 너무 많은 Exception 문제
Excel을 불러와 데이터를 읽고, 작성하는 과정에서 수많은 NullPointException을 만났습니다. Excel의 각각 row를 불러올 때 null 체크, 해당 row에서 각각 column을 불러올때 null체크 등등 너무 어려웠다. 어떤 과정에서 NullPointException이 터지는지 헷갈려 하루에도 수십 번 디버그 모드를 돌렸던 적이 많았다. 또한 Excell에 column 타입이 Numberic, date, String, data, Blank 등등 다양한 타입을 가지고 있어서 타입이 안 맞아서 터지는 예외도 수십번 겪었다. 이 경험을 통해서 예외 처리가 왜 그렇게 중요한지, Exception이 아니라 세부적인 예외를 설정해 예외를 잡는 것이 왜 중요한지 너무나도 뼈저리게 깨달았다.
🥕 실패한 점
공휴일 DB를 한국 공공데이터포털 API와 연동해서 자동으로 공휴일을 작성해 주는 방식을 고려했다. 그런데 생각해 보니 군대는 국방망이라는 단독망을 사용하고 있고 인터넷이 필요한 외부 API 연동은 불가능하다는 사실을 깨달았다. 해결책을 고민하다 대체공휴일 등 매년 불 규칙적으로 변경되는 공휴일 상황 고려, 사용자가 직접 추가/삭제가 가능한 공휴일 DB를 Excel파일로 관리하도록 했다.
💎 프로그램 소개
https://github.com/GamzaCoding/Military-Duty-Manager
GitHub - GamzaCoding/Military-Duty-Manager: 우테코8기 프리코스 오픈미션을 위한 리포
우테코8기 프리코스 오픈미션을 위한 리포. Contribute to GamzaCoding/Military-Duty-Manager development by creating an account on GitHub.
github.com
🥕 프로그램 개요
1. 원하는 기간을 설정하면 당직자 순서(평일, 휴일)에 따라서 당직표를 만들어주는 간단한 프로그램입니다.
2. 자체적인 공휴일 데이터베이스를 통해서 해당년도 공휴일은 휴일로 인식할 수 있습니다.
3. 본 프로그램을 통해서 당직자 순서(평일, 휴일)양식 파일을 생성할 수 있습니다.
4. 본 프로그램을 통해서 공휴일 데이터베이스 파일을 생성할 수 있습니다.
5. 본 프로그램을 통해서 공휴일 데이터베이스에 접근해 공휴일을 추가, 삭제할 수 있습니다.
6. 본 프로그램이 이용하는 모든 파일은 Excel파일 입니다.
🥕 화면소개
🪖시작화면

🪖당직자 순서(평일, 휴일) 양식 생성

🪖공휴일 DB 생성

🪖공휴일 DB에 휴일 추가/삭제

🪖최종 당직 결과 계산

🥕 실행방법
1. 터미널 혹은 명령프롬프트 이용 git clone
git clone https://github.com/GamzaCoding/Military-Duty-Manager.git
2. 프로젝트 디렉터리로 이동
cd Military-Duty-Manager
3-1. 빌드 및 실행(MAC OS)
./gradlew clean build
./gradlew run
3-2. 빌드 및 실행(Window OS)
gradlew.bat clean build
gradlew.bat run
💡 오픈미션 소감 그리고 잡담
마지막 과제는 거의 3주동안 진행되었다. 시간이 넉넉했냐고 물어보면 아니라고 생각한다. 그만큼 3주동안 하루하루 고민하고 도전하고 실패했던 순간이 많았기 때문이다. 1~3주차 과제를 진행하면서 성장한 것보다 오픈미션을 하며서 성장한게 더 많다. 새로운 라이브러리를 사용해보고, 자바로 Excel을 다루고, 처음 사용해보는 JavaFX를 통해 GUI도 만들어봤다. 매일 눈에 인공눈물을 넣어가면서 하루에 10시간 이상씩 집중해서 프로젝드를 진행했다. 그리고 기능 구현보다는 버그를 찾아내고 오류를 수정하고 코드를 리팩터링 하는데 시간을 정말 많이 투자했다. 내가 디자인 감각이 부족해 GUI가 너무 구려서 이 부분은 나중에 천천히 업그레이드 해 나가면 좋을거 같다. 거의 6주라는 우테코 프리코스가 끝났다. 아쉽고 섭섭하기도 하면서 한편으로는 시원하기도 하다. 이제 남은건 1차 합격발표인데 그전에 최종 코테도 연습하고 다른 사람들 오픈미션 프로젝트도 구경해보면서 시간을 보내려고 한다. 아! 그리고 러닝도 하면서 올해 목표인 1000km도 채워야지!!
화이팅 하자!!
'우아한테크코스' 카테고리의 다른 글
| [우아한테크코스 8기] 프리코스 3주차 회고 (1) | 2025.11.04 |
|---|---|
| [우아한테크코스 8기] 프리코스 2주차 회고 (4) | 2025.10.27 |
| [우아한테크코스 8기] 프리코스 1주차 회고 (4) | 2025.10.20 |