영주머니의 개발주머니

2022 OSAM 국방오픈소스아카데미 군장병 해커톤 참가 후기 본문

공모전 & 해커톤

2022 OSAM 국방오픈소스아카데미 군장병 해커톤 참가 후기

영주머니 2022. 11. 12. 13:51

해커톤 참가 자격을 얻는 과정

 

2022 OSAM 국방오픈소스아카데미 군장병 해커톤 참가 과정

군대에 있다 보니 근무하고 생활관와서 폰하고 놀다가 자고 일어나서 근무하는게 반복되는 무의미하게 시간을 보내는 날들이 많았다. 항상 생산적이고 남는 일을 하자고 생각하지만 근무하고

youngjumoney.tistory.com

 

✔️ 팀 빌딩

팀 빌딩은 해커톤 참가자 전용 팀빌딩 게시판에서 진행된다. 게시판에서는 다른 사람들의 개발계획서를 전부 볼 수 있다. 내가 구상한 프로젝트를 같이 할 사람을 게시판에서 모집하거나 다른 프로젝트에 팀원으로 지원할 수 있는데 나는 드론 비행 허가를 관리하는 프로젝트에 팀원으로 지원했다.

✔️ 본격적인 해커톤 기간 시작!

팀 빌딩 기간이 끝나고 본격적인 해커톤이 시작된다. 확정된 팀별로 10년 이상 경력의 멘토를 붙여준다. 우리팀에는 김태경 멘토님이 배정되었는데 멘토님의 존재가 해커톤을 완주하는데 정말 큰 도움이되었다. 우리 팀 2명 모두 협업은 물론 온전한 앱 하나를 만드는 것은 처음이어서 github commit하는 방법부터 차근차근 배워야 할 정도로 초보 중의 초보였다. 그래서 개발과정에서 정말 자주 막히고 좌절하기도 했었는데 1주일마다 있던 멘토링에서 멘토님이 방향을 잡아주셔서 멘탈을 다시 부여잡고 어떻게든 앱을 완성할 수 있었던 것 같다.

✔️ 기획

기획은 정말 중요하다! 해커톤이 끝난 지금 돌이켜보면 개발 과정에서 방황한 가장 큰 이유가 부실한 기획이 아니었나 싶다. 페이지 구성이랑 흐름을 기획 단계에서 최대한 구체적으로 설정해야 개발 단계에서 헤매지 않는다. 솔직히 개발하기도 시간이 부족할 것 같아서 기획은 대충 rough하게 하고 개발하면서 구체화하면 되겠지 싶어서 바로 개발로 들어갔는데 그게 오히려 개발 소요 시간을 배로 늘린 것 같다. 다른 팀들이 기획에 1주를 통으로 사용하는데는 다 이유가 있었다. 결국 1주차 멘토링을 거의 시작도 못한채로 받았는데 거기서 프로젝트의 기능 흐름도와 페이지 구성 그리고 개발을 진행하는데의 우선 순위에 대해 조언을 받았다. 특히 우리 같이 개발이 능숙하지 않은 경우에는 기획 단계에서 생각해둔 기능을 기간내에 모두 개발하지 못할 수도 있으니 가장 핵심이 되는 기능을 우선적으로 구현하고 부가적인 기능을 추가하는 식으로 개발하는 것을 추천하셨다. 이거를 약간 있어보이게 애자일(Agile)방식으로 MVP를 개발한다라고 한다고 한다. 처음에 멘토님이 이런 식으로 말씀하셨는데 용어가 뭔 뜻이지 하나도 모르겠어서 당황했었다. ㅋㅋㅋ

✔️ 개발

APP 분야를 수강한 나는 그당시 할 줄 아는 것이 Flutter 뿐이었기에 자연스럽게 Flutter로 개발을 진행했다. 이제와서 서버 기술까지 배우는 것은 무리라고 생각해서 백엔드는 Flutter랑 호환이 잘된다는 Firebase를 사용하기로 결정했다. 우선 Flutter로 페이지 디자인을 1주정도 진행했다. 해커톤 교육기간에 클론 코딩했던 소스코드랑 구글을 열심히 찾아보며 개발을 했다. 생각보다 깔끔한 디자인을 하는 것이 어려웠다. 내 생각에는 참 공들여서 디자인했는데 다른 사람한테 보여주니까 급하게 만든 ppt 디자인 같다는 소리를 들었다.. ㅠㅠㅠㅠ

이후에는 Firebase와 드론 비행 허가 신청 양식과 유저 정보를 연동시키는 작업을 했다. 야무지게 설명해주시는 인도 형님의 유튜브를 적극적으로 참고해서 어떻게 어떻게 CRUD 구현까지했다 ㅋㅋㅋ

비행 신청 목록 페이지 (나만의 첫 CRUD페이지 구현!)


우리가 기획한 프로젝트는 유저가 군부대에 드론 비행 계획을 보내는 것으로 시작하기 때문에 계획된 비행반경을 표시하는게 필수적이었다. 이를 위해 GoogleMap API를 연동시키기로 결정했는데 무슨 거창한 기능이 있는 것은 아니지만 처음해보는 API 사용에 공식 문서도 읽어보면서 개발을 하니 뭔가 멋진 개발자가 된거같은 기분은 들어서 기분이 좋았다!

비행반경 설정 페이지

중간 멘토링에서는 사용자 경험에 대한 조언을 들었다. 우선 우리 앱에 Text Field가 불필요하게 많았다. 웹이면 큰 상관없지만 앱에서 많은 Text Field는 사용자 경험을 크게 저해한다. 생각해보면 나같아도 양식하나 작성하는데 핸드폰에서 키보드가 계속 내려갔다 올라왔다하면 불편할 것 같다. 그래서 Text Field는 최소화하고 DropdownBox와 DateTimePicker같은 패키지들을 찾아서 썻다. 확실히 신청 양식이 더 깔끔해진 느낌을 받았다. 개발과정에서 간과하고 있던 사용자 경험의 중요성을 알게 되었다.

비행 신청 양식

마감 2주전 앱의 큰 틀은 다 잡은 상태에서 추가적인 개발을 진행하려는데 토요일에 갑자기 개발환경 접속이 안되는 문제가 발생했다.. 사지방에서 개발을 해야하가보니 주최측에서 CodeSpace를 제공해줬는데 무슨 이유에서인지 CodeSpace가 열리지 않았다. 대부분의 개발시간이 주말시간에 집중되어 있어서 꽤 큰 타격이었다. 다행히 금방 주최측이 문자로 상황을 안내해주고 Github에 새로운 Organization을 만들면서 해결되었다. 마감 기한도 주말을 한번 더 포함하도록 연장되었다. 하지만 연장된 기간은 전 기간이라 사실상 연장된 기간을 활용하지는 못했다.. 결국 휴가 기간을 활용해서 고연전 전까지 풀 개발을 돌리고 발표자료랑 시연영상 만들면서 주말 손실을 매꾸긴했다 ㅋㅋㅋ

✔️ 후기

개인적으로 아쉬움이 많이 남는 해커톤이다. 특히 협업을 제대로 경험해보지 못한 것 같아 아쉽다. 팀원끼리 서로 만나는 것은 물론 시간을 맞춰 연락하는 것조차 어려워서 합을 잘 맞추지 못했던 것 같다. 전반적으로 다른 프로젝트 2개를 각자하는 느낌이 들었다. 기획 단계를 좀 더 철저하게 했으면 이러지 않았을 것 같아 많이 아쉽다.

또 개발 과정에서 컴포넌트를 제대로 활용하지 못한게 아쉽다. 클론 코딩할때는 코드를 기능별로 쪼개서 깔끔하게 구현했는데 막상 직접 코드를 짜다보니까 페이지랑 컴포넌트간에 주고받아야하는 정보도 많고 상태관리도 어려웠다. 그냥 한 페이지에 다 때려박고 전역변수 선언해서 해결해버린게 많아서 누더기 코드를 기워붙인 느낌이 있다.. 앞으로 좋은 코드도 많이 참고하고 더 공부하면서 클린 코드를 짜기 위해서 더 노력해야겠다.

하지만 처음으로 완전한 앱 개발을 마치고 나니 정말 뿌듯하다. 시작할때 commit하는 것 조차 어려워했던 걸 생각해보면 이번 해커톤을 통해 정말 급속도로 성장한 것 같다. 이런 좋은 기회를 마련해주신 OSAM 사무국과 많은 도움 주신 멘토님에게 정말 감사하다.

이번 해커톤을 하면서 플레이스토어 내가 개발한 앱을 출시하고 싶다는 생각이 들었다. 뭔가 내가 만든 앱을 다른 사람들이 유용하게 사용한다고 상상만해도 벌써 가슴이 두근거리고 신난다. 또 이번 해커톤에서는 Firebase를 사용했지만 다음에 앱을 개발할 때에는 백엔드 기술도 하나 공부해서 풀스택 개발자로 도약하고 싶다.


해커톤 Github 주소
https://github.com/osamhack2022-v2/APP_DPMS_DroneTheBeat

 

GitHub - osamhack2022-v2/APP_DPMS_DroneTheBeat: 군 드론 허가 시스템

군 드론 허가 시스템. Contribute to osamhack2022-v2/APP_DPMS_DroneTheBeat development by creating an account on GitHub.

github.com

 

Comments