"2020군장병 온라인 해커톤"참여 후기

­김찬호·2020년 11월 7일
7

공부할 때만 참고하던 벨로그에 억지(?)로 글을 쓰게 되었다. 그래도 예전부터 써보기로 했으니 이참에 꾸준히 써봐야겠다.

글을쓰게 된 계기는 국방오픈소스아카데미에서 주관한 해커톤에 참가하였는데, 해커톤 일정이 끝난 후 커뮤니티에 참여하라는 권고 때문이다. 그래서 나의 첫 글은 이번 해커톤 참여 후기 + 추천글이 됐다.

국방오픈소스아카데미

국방오픈소스아카데미는 매년 군장병들이 복무 기간 동안 공개SW 개발 기술을 학습하고 체험할 수 있도록 인터넷 강의를 제공하고 인터넷 강의에 내용을 기반으로 시험을 치뤄 함격한 인원들에 대해 집체교육을 실시하는 프로그램이다. 약 5년 정도 된 장수 프로젝트인데 이번년도는 코로나19 사태 때문에 집체교육 대신 온라인 해커톤으로 진행한다.
군대에서 행정병 직책을 맡다보니 국방부 홈페이지에 자주 들락날락 하며 여러 공모전이나 행사에 관한 정보를 얻게 되는데 이 프로그램도 그렇게 알게 되었다.

만약에 이 글을 읽고 있는 사람이 군인이거나 미필자이면 사단홈페이지나 국방부 홈페이지를 주기적으로 보며 군생활을 의미있게 보낼 수 있는 프로그램을 찾아보는 것을 추천한다.

교육과정

교육과정은 크게인터넷 강의 / 집체교육(온라인 해커톤) 이 두 가지로 분류된다.

1. 인터넷 강의

인터넷 강의를 또 나누자면 크게 필수과정 / 개발과정으로 나뉜다. 필수과정을 100%인가? 80%인가? 를 이수하면 개발과정을 수강할 수 있다.
필수과정은 IT의 기본적인 지식에 대한 내용이고 개발과정은 5개의 분야에 대한 심화내용이 담겨있다. 개발과정은 단 1개의 과정만 이수할 수 있다.

필수과정의 내용은 다음과 같다.
사진에는 안 나왔지만 자율주행 / 로보틱스 과목을 추가로 이수해야한다.
인터넷 강의의 후기를 좀 남기자면.. 좀 지루했다. 알면 좋은 내용이긴 하나 시험을 봐야하는 입장에서 시험에 나오지 않는 내용을 공부하는 것은 비효율적이라고 생각했다. (필수과정 내용은 시험에 나오지 않고, 개발과정에 관한 내용만 나왔다. 매년 다를 수 있음)

개발과정의 5개 과목은 다음과 같다.

나는 이 5개 과목중에서 웹 서비스 과목을 수강했다.
웹 과목의 프로세스와 내용의 비율을 간략하게 설명하면
html, css(30%) -> javascript(40%) -> vue.js(30%) 정도가 된다.
사실 html, css, js는 기본이라고 생각하여 이것도 대충 넘길까 고민 했는데, 오랜만에 코딩을 하니 까먹은 내용도 많고 몰랐던 내용도 간혹 있으니 은근 재미있게 했던 것 같다.

#시험

시험은 코딩테스트 / 이론문제(개발과정 내용) / 개발계획서 이 세 가지로 나뉘었다. 혹시나 하는 마음에 시험 문제에 대해서는 포괄적으로 작성하겠다.
코딩테스트는 난이도가 다른 5개 문제로 구성됐고 프로그래머스를 이용하여 풀었다. 알고리즘에 약한 나는 4, 5번 문제를 풀지도 못했다.
이론문제는 너무 쉬었다. 문법관련 문제들만 나왔는데 1주일만 투자하면 대부분 만점맞을 정도였다.
개발계획서는 말 그대로 개발계획서다. 내가 집체교육(해커톤)에서 뭘 개발할지에 관해 기술하는 것이다. 질문 내용이 기억은 안나는데, 전반적으로 어떻게 개발할지에 대해보다 서비스를 어떻게 확장시킬 것인지에 관한 내용이었다. 개발계획서보다는 사업설명서에 가까운 것 같았다.

2. 온라인 해커톤

코딩테스트를 엄청나게 못 봤지만 운이 좋게 합격했다. 해커톤 팀은 자율적으로 빌딩하는 것이었고, 팀 빌딩을 위한 게시판을 활용한다.
내 아이템이 꽤 혁신적이고 쓸만했다고 생각했는데, 영상처리를 사용해야 하는 부분 때문에 포기했다. (군 내에서 영상을 PC로 옮기는 것은 엄청 힘들다.) 그리고 대충 적은 내 이력서를 팀 빌딩 게시판에 올렸고, 다행히 몇몇 팀이 제의가 왔다. 나는 군 내 의료체계를 변화시키려는 아이디어가 마음에 들었고 해당 팀에 참여하게 된 후 멘토를 지정받았다.
이런 해커톤에 처음 참여한 나와 우리팀은 개발에만 몰두했었다. 하지만 멘토님 께서는 개발보단 문서화에 더 힘 쓰는것이 좋을 것 같다고 하여서 완벽하게 개발을 끝내지 못하고 문서화 작업에 몰두했다. 내가 README를 이쁘게 작성해본 첫 경험이었다.

배운점

문서화의 중요성

이번 해커톤의 주요 주제가 오픈소스인 것 때문인지는 몰라도 개발문서, 오픈소스 기여도 등 개발 외적인 부분을 중요시했다. 그래도 README를 이쁘게 작성하니 확실히 이 프로젝트가 무슨 프로젝트인지 한 눈에 알아보기 쉬웠고, 앞으로도 중요시 해야겠다는 생각을 하게 됐다.

오픈소스 활용의 중요성

우리팀은 챗봇이 주 기능 중 하나였는데, 챗봇의 UI를 어떻게 구현할지가 큰 문제였다. 나는 평범한 웹페이지만 만들어왔지 챗봇은 처음 개발하는 분야이기 때문이었다. 물론 못할것도 없었겠지만 시간이 오래 걸릴 것이 뻔했고 개발 일정에 못 맞출 수도 있었다. 더군다나 나는 오픈소스를 활용해본 경험이 전무하여 다른 사람이 개발한 챗봇의 UI를 가져와서 사용한다는 생각을 전혀 못했다.
그러던 중 우리팀원 중 인프라개발을 맡았던 팀원이 오픈소스 챗봇을코드를 추천해줬고, 코드를 분석하여 필요한 부분만 사용하자고 했다. 하지만 남의 코드를 분석하는 것이 처음이었던 나는 막막했다. 대충 이해는 되는데 그래서 어떻게 쓰라는건지..한 숨만 나왔다. 이 때 코드를 추천해줬던 팀원이 챗봇 개발은 자신에게 맡겨달라 하였고 너무 깔끔하게 잘 해줬다.
이번 일을 계기로 다른 사람의 코드를 가져다 쓰는 것이 얼마나 효율적인지 알게 되었고, 앞으로도 좋은 오픈소스를 사용하고 만들 수 있도록 노력해보려 한다.

사이버지식정보방 코딩

사지방 코딩은 진짜 너무 힘들다. 우리 사지방은 하모니카OS라는 국내에서 개발한 오픈소스 운영체제인데, 아직 불안정한 점들이 너무 많았고 인터넷도 불안정하고 작업내용은 PC를 종료하면 사라진다. 그래서 웹에서 지원하는 개발환경을 이용할 수 밖에 없었고 처음엔 구름IDE를 사용하다가 국방부에서 지원하는 codespace를 사용했다. 웬만하면 codespace는 사용하지 말자. 진짜 별로다. 나는 작업한 내용이 좀 남아있어서 다른 툴로 갈아타기 힘들었지만 웹 기반 ide를 사용해야 한다면 구름ide를 추천한다.

마치며..

이번 활동은 꽤 의미있었다. 아직 수상자는 발표되지 않았지만, 수상을 하지 못하더라도 잃어버린 감을 되찾는 좋은 경험이 됐다.
만일 이 교육에 참여하려는 사람이 있다면 각오는 단단히 해야할 것이다. 참가자들이 군인이라고 무시하면 안 된다. 해커톤에 참여한 사람들의 소속을 보면 군 내 SW개발팀에 속해있는 사람들이 굉장히 많고, 그렇지 않더라도 능력있는 사람이 엄청나게 많다. (SW개발단에 속해있는 중령도 있었다.)
그러니 수상을 목표로 한다면 진짜 열심히 해야하고 잘 해야한다. 교육 내용은 굉장히 좋으니 군 장병 중 SW에 관심이 있던 사람이라면 해볼만 한 프로그램인 것 같다.

profile
주니어 개발자가 되고싶은 학부생

5개의 댓글

comment-user-thumbnail
2020년 11월 8일

오삼 참가자분을 뵈네요! 의료체계면 Meditact 시려나요 혹시

1개의 답글
comment-user-thumbnail
2020년 11월 9일

하하 체고체고

1개의 답글

안녕하세요, 국방오픈소스아카데미 담당자입니다.

어렵고 힘든 여건 속에서 끝까지 참여해주셔서 대단히 감사합니다.
소중한 리뷰도 감사히 잘 보았습니다. 앞으로도 오픈소스 분야의 많은 관심을 부탁드립니다.

그리고 수상을 진심으로 축하드립니다~! ^^

감사합니다.

답글 달기