
나는 27살 늦은 나이에 육군 정보보호병으로 입대하였다. 열심히 정보보호병 임무를 수행하던 중에 국방오픈소스아카데미라는 해커톤을 알게되었다.
해커톤에 참여하기 위해서는 온라인 교육 이수와 이론 평가, 코딩 테스트, 개발 계획서를 제출해야 한다. 이후 선발 조건을 충족한 인원들이 해커톤에 참여할 수 있었다.
가장 난관이었던 것은 코딩 테스트였다. 군 장병을 대상으로 하는 것이라 난이도가 높지는 않을 것이라고 생각했는데 난이도가 높았다. 군 입대 전에는 보안 쪽만 공부해서 알고리즘에 취약했는데, 다행히도 나름 선방해서 운이 좋게 선발되었다.
나는 웹으로 지원하였지만 최종적으로는 앱으로 변경하였다. 프로젝트 이름은 “내일 일기”이다. “내일 일기”는 내일의 할 일 목록과 목표를 일기와 리스트 형태로 작성할 수 있는 앱이다. 또한, AWS가 제공하는 Comprehend 서비스를 사용하여 작성된 일기의 감정을 분석한다. AI를 좀 더 활용하고 싶어 AWS Rekognition을 이용해 프로필 이미지의 감정을 분석하는 기능도 추가하였다.
프로젝트 시작

팀이 정해지고(우리 팀은 2명), 멘토님이 매칭되었다. 우리의 멘토님은 최주호 멘토님이다. 해커톤 참가자 선발을 위한 강의를 직접 녹화하신 분이라 낯설지 않았고, 많이 의지할 수 있었다.
디자인, 설계, Flutter 공부
팀원은 모바일을 개발해 본 경험이 있었지만 나는 앱 개발에 대해서 전혀 몰랐다. 해커톤의 강의만으로는 부족하다고 판단하여 따로 Flutter에 대한 강의와 책을 구매하여 당직, 개인 정비 시간 등 시간이 날 때마다 공부했다.
디자인은 멘토님이 Dribbble에서 마음에 드는 것을 고르고 참고하여 View들을 구성해보라고 하셨다. 팀원과 디자인을 고르고, 팀원이 Adobe XD를 사용해 본 경험이 있어 Figma를 사용하여 열심히 디자인했다. 선임 중에 디자인 전공인 선임이 있어 디자인에 있어서 많은 도움을 받았다.

최종적으로는 위와 같은 형태로 앱이 설계되었다. 우리는 구글 플레이스토어 출시, 오픈소스 기여, AI 등 많은 경험을 할 수 있었다. 로고도 팀원이 정말 심사숙고하고 디자인하는 선임에게 도움을 받으며 만들었다. 간단해 보이지만 굉장한 노력이 깃들어 있는 로고이다.
개발 시작과 환경 문제
1-2주일 간 Flutter, Firebase, GetX 공부, 디자인, 설계 재구성을 하였고 멘토님에게 확인을 받고 개발을 시작하였다. 나는 로그인, 회원가입, AI 부분을 맡았고 팀원은 달력, 일기, 할 일 목록 부분을 맡아서 프로젝트를 진행하였다.
정말 개발환경에 대해서 할 말이 많은데, 애뮬레이터는 기본이고 보안 정책으로 인해 제한되는 것이 너무 많았다. IDE는 해커톤에서 제공하는 Codespace를 사용하였지만 제공된 스펙으로는 도저히 개발할 수가 없었다. 자동 완성도 너무 느리고 빌드는 그냥 뻗어버린다. 우리는 직접 돈을 내고 더 좋은 스펙을 사용하는 방법으로 개발 환경 문제를 해결했다. 역시 돈이 무엇이든 최고의 해법인 것 같다.
다음은 테스트 용도인 애뮬레이터가 문제였는데, 보안 정책으로 인해 애뮬레이터가 실행되지 않았다. 나는 정보보호병이어서 강제적으로 실행시키는 법을 알고 있긴 했는데, 마음 편히 개발하기 위해 부대에 승인 요청을 하여 애뮬레이터 문제도 해결하였다.
개발
로그인과 회원가입은 ID, Password와 Google, Facebook OAuth를 사용하였다. Firebase의 문서가 읽기 힘든 부분이 있었지만 예제들이 많아서 금방 개발할 수 있었다. 상태 관리 경험이 별로 없어서 상태 부분에서 막히는 부분이 꽤 있었는데 팀원 덕분에 수월하게 해결했다.
우리 프로젝트의 기능들이 어렵지 않고 단순하였기 때문에 개발을 굉장히 빨리 했다. 실질적인 기능 개발 기간은 2주도 안 되었던 것 같다. 시간이 여유가 있었기에 구글 플레이스토어에 출시하고, 해커톤이 오픈소스라는 키워드를 가지고 있기에 달력을 라이브러리로 만들어 배포하기로 하였다(팀원이 정말 고생했다).
다섯 번째 멘토링 때 멘토님이 앱 퀄리티, 라이브러리, 발표 자료 모두 좋다고 하셨다. 하지만 기능이 살짝 부족한 것 같다고 하셔서 문장 감정 분석과 이미지 감정 분석을 넣는 것을 제안하셨고, 우리는 AWS를 이용하여 빠르게 개발하였다. 이후에는 발표 자료와 문서 작성, 버그 수정을 하면서 프로젝트를 완성시켰다.
최종 제출이 20일이었는데, 개선된 기능과 버그를 수정한 번들을 출시하였다. 계속 ‘검토 중’이라는 상태였다가 제출 하루 전날에야 프로덕션 상태가 되어 출시되었다. 혹시나 문제가 있어서 취소될까 봐 걱정했다.
완주
10월 20일 프로젝트를 최종 제출을 하였다. 한 달간 정말 고생한 것 같다. 중대 인원이 줄어서 당직도 많이 서야했고 개발 환경도 좋지 않고 나는 처음 앱 개발을 경험하는거다보니 많은 우여곡절이 있었다. 팀원에게 정말 많은 의지를 했다.
우리 프로젝트는 입상은 하지 못했다. 하지만 정말 많은 것을 깨닫고 경험한 것 같다. 이번 프로젝트를 통해서 앱 개발과 협업이 무엇인지를 많이 깨달은 것 같다. 그리고 제일 깊게 깨달은 것은 어떤 상황에서도 포기하지 않고 나아갈 힘이 생긴것 같다.