본문 바로가기
기타

[2021 군장병 공개SW 온라인 해커톤] 후기

by gibro 2022. 1. 16.

선발 과정

코딩 테스트(25%) + 계발 계획서(25%) + 이론평가(25%) + 강의 수강(25%)

 

● 코딩 테스트
2시간 동안 총 4문제를 푸는 방식이었다. 1번, 3번 문제는 난이도가 적당해 보였고 2번 문제는 해결 불가능해 보였으며 4번 문제는 시간이 충분하다면 풀만해 보였다. 하지만 생각보다 1번 문제에서 시간을 오래 쓰게 되었고 3번 문제까지 풀고 나니 시간이 별로 없었다. 4번 문제는 시간상 거의 풀지도 못하였다. 문자열 문제 풀이를 많이 해봐야겠다고 생각했다.

 

● 계발 계획서
해커톤을 진행하면서 본인이 하고 싶은 프로젝트를 서술하면 된다. 프로젝트 개발 배경, 개발 과정, 의의 등을 작성해야 한다.

 

● 이론평가 + 강의 수강
본인이 선택한 분야의 강의를 듣고 그 강의에 대한 시험을 보는 것이다. 강의를 열심히 들으면 된다. 나는 AI 분야를 선택하였는데 기초 지식이 있던 터라 이론평가가 크게 어렵지 않았다.

 

팀빌딩

점수 기준에 협업 관련 내용이 있기에 팀을 이루는 편이 좋다. (물론 혼자 해서 상은 탄 참가자도 있었다..!) 팀빌딩 방식은 본인이 팀장이 되어 본인이 계획한 프로젝트에 참여할 팀원을 모으는 방식과 다른 팀의 팀원으로 합류하는 방식으로 나뉜다. 내가 합류한 헬프밀 프로젝트는 총 3명으로 구성되었고 2명이 프론트 엔트를, 1명이 백엔드를 맡았다. 백엔드쪽에 관심이 많아 백엔드를 맡고 싶었지만 Flutter라는 크로스 개발 플랫폼을 접해보고 싶었고 프론트엔드를 경험해볼 수 있는 기회라고 생각이 들어 프론트엔드를 맡게 되었다.

 

프로젝트 진행

★ 기획/설계
우리는 '장병들이 현재 겪고 있는 급식과 관련된 문제를 해결하기 위한 앱'을 기획하였다. 먼저 이 앱에 들어가야 할 필수적인 기능들과 세부 기능들을 정리하였다. 프로젝트 진행에 있어 가장 중요한 단계인 만큼 최대한 구체적으로 정리하였다. 플로우 차트 설계를 통해 앱의 작동 방식을 한눈에 확인하고 와이어 프레임 설계를 통해 더욱 수월하게 앱을 개발할 수 있었다. 또한 아키텍처 설계를 통해 필요한 클래스들을 정의하고 각 클래스별 기능, 변수, 함수를 정리하였다. 백엔드 파트에서는 DB 설계, API 설계, AI 설계 등이 이루어졌다.

 

★ 개발
프론트 파트는 Flutter, 백엔드 파트는 Node.js + MySQL을 사용하여 개발을 진행하였다. 개발에 앞서 개발해야 할 앱 화면 리스트를 작성하여 팀원과 배분하였고 화면별 개발 기한을 정했다. 이를 바탕으로 개발을 진행하면서 일주일에 한 번 미팅을 통해 진행 상황과 논의사항을 공유하였다. 또한 Notion을 통해 프로젝트를 관리하였다. 유용한 기능을 제공하여 많은 내용을 정리하는데 수월하였다.

Flutter를 통한 앱 개발은 처음이라 기획 단계에서 기획, 설계를 진행함과 동시에 Flutter를 공부하였다. 하지만 막상 개발을 시작하고 나니 공부하지 않은 위젯을 많이 사용해야 했다. 이 때문에 초반에는 위젯 공부 → 소스 분석 → 코드 구현 순으로 개발을 진행하였다. 개발 3주 차부터는 다양한 위젯에 익숙해져서 위젯 공부에 들이는 시간을 많이 줄일 수 있었다.

프론트엔드를 맡았지만 백엔드 개발도 동시에 하게 되었다. 백엔드 파트를 맡은 팀원이 혼자라 시간이 부족하였기 때문이다. Node.js 코드와 DB를 추가/수정하면서 사용자 API의 자잘한 오류를 해결하였고 공지사항 API를 구현하였다.

후기

혼자서 하는 토이 프로젝트는 여러 개 해보았다. 그러나 기획부터 구현까지 팀원과 같이 진행하는 프로젝트는 처음이었다. 이는 팀원들도 마찬가지였고 시간이 부족하여 시연 영상, README 작성에 시간을 많이 쏟지 못한 점이 아쉽다.😂 입상에는 실패하였지만 해커톤을 진행하면서 많은 것을 배우고 느낄 수 있었다.

 

1. 기획/설계 단계에 시간을 많이 쏟는 이유를 알 수 있었다.

프로젝트 기획 단계에서 세부적인 사항을 구체적으로 정하지 않아(부대 설정을 어떻게 할 것인가 등) 구현 중에 논의할 사항이 많이 추가되었다. 철저한 기획이 구현을 수월하게 한다는 사실을 알 수 있었다.

 

2. 미팅의 중요성을 알 수 있었다.

미팅을 준비하면서 완료한 작업, 남은 작업, 논의사항, 막힌 부분 등을 정리하고 이를 공유하였는데 이는 프로젝트 현황 파악과 프로젝트의 구체화에 도움이 되었다.

 

3. 문서화의 중요성을 알 수 있었다.

프로젝트를 정리하고 효과적인 의사소통에 있어 문서화는 필수적이었다. 팀원이 많을수록 더욱 중요해질 것 같다는 생각이 들었다. 글쓰기 연습을 하자!

 

4. 프론트엔드 쪽 개발 경험이 생겼다.

Flutter의 기본 구조를 배우고 다양한 레이아웃을 활용하여 프로젝트를 진행하였다. UI 설계와 Flutter을 이용한 UI 구현 경험을 통해 프론트엔드 개발 실력이 향상되었다. 다만 이와 같은 프로젝트를 다음에 진행할 때는 백엔드 파트를 맡으려고 한다. 그때 이 프론트엔드 개발 경험을 살리면 백엔드 개발에 있어서 많은 도움이 될 것이다. 또한 백엔드 파트를 맡을 실력이 아직 부족하다는 생각이 들었다. 백엔드 공부를 하자!

 

5. 2개월간 개발에 몰두할 수 있었던 소중한 시간이었다.

군 생활 중 가장 보람찬 2개월이 아니었나 싶다. 군 장병을 대상으로 해커톤을 개최한 국방오픈소스아카데미(OSAM)에 감사의 말씀을 전하고 싶다. 매년 진행하는 것으로 알고 있는데 개발에 관심이 있는 군 장병들은 내년, 혹은 내후년에 꼭 참가하길 바란다!

'기타' 카테고리의 다른 글

[Github] Token을 이용하여 git push 하는 법  (1) 2022.01.12

댓글