1. 해커톤 참가
  2. 참가자 선발 과정
    1. 1. 온라인 평가
    2. 2. 코딩 테스트
    3. 3. 개발 계획서
    4. 4. 선발 결과
  3. 팀 빌딩 과정
  4. 온라인 해커톤 및 프로젝트 진행
  5. 후기

해커톤 참가

국방오픈소스아카데미(OSAM) 홈페이지를 해커톤 이전에 발견을 해서, 2022년 해커톤도 열리기를 기대하고 있던 중에 대회 공고가 올라왔고 자연스럽게 참여하게 되었다.

참가자 선발 과정

해커톤에 참여하려면 온라인 평가, 코딩 테스트, 개발 계획서 이렇게 세 가지의 과제를 제출해야 했고, 각각 성적이 50%,25%,25%씩 반영된 선발 점수로 최종 해커톤 참여자 150명 내외를 선정하는 방식이었다.

1. 온라인 평가

온라인 평가는 각 분야별 필수 강의를 듣고 그 강의에 관련된 시험을 보는 형태였다. 제한시간은 1시간, 총 40문제가 출제되었었다. 선택할 수 있는 분야는 WEB,APP,IoT,Cloud 총 4개가 잇었다. 내가 선택했던 APP 분야는 Dart 언어를 사용하는 Front-end 라이브러리 Flutter를 중점으로 했고, 플러터 초급∙중급∙고급 강좌를 필수적으로 이수해야 했다. 평가는 강의에서 나온 자료가 거의 그대로 나왔던 것 같다. 다만 막상 풀 때는 다 아는 내용이라고 생각했지만 결과를 확인해보니 95점이었다. 두 문제를 어디서 틀렸는지 아직도 모르겠다.
(사실 문제를 풀면서 구글링도 가능하기 때문에 1시간을 적당히 잘 분배해서 검색의 기회를 적당히 활용하는것도 좋다고 생각한다.)

2. 코딩 테스트

사실상 이 코딩테스트를 준비하기 위해 알고리즘 공부를 한 달 넘게 했다. 프로그래머스의 코딩테스트 환경으로 2시간 동안 총 4문제를 풀게 되는데, 이쪽으론 비전공자였던 내가 다 풀기에는 조금 어려운 난이도였다. 백준으로 따지면 1번은 실버 4, 2번은 실버 1, 3~4번은 골드 1정도의 난이도였던 것 같다. 사실 그렇게 어려운 알고리즘이 나온 건 아닌데, 문제 자체가 너무 더럽고 생각치 못한 예외 케이스들이 있어서 코드 양이 많이 길어질 수 밖에 없었던 것 같다. 난 결과적으로 1,2번 모두 풀고 3번은 패스, 4번을 절반 정도 점수를 받아서 최종 점수는 400점 만점에 254점이었다. 사실 알고리즘을 이번에 처음 입문을 하고 짧은 시간동안 압축해서 공부를 하자니 이론적인 부분은 많이 배웠어도, 실전 코딩테스트에서 좋은 성적이 나오려면 문제를 많이 풀어보는게 가장 좋은 것 같다.
참고로, 해커톤과 별개인 코딩경진대회는 이 코딩 테스트의 점수가 가장 높은 6명에게 시상과 상품을 준다. 이번 1등 상품은 iPad Air정도였으니, 부상이 꽤 쏠쏠하다. 다만 상위 3명은 모두 만점이라 해결 시간이 짧았던 순서로 순위가 정해졌고, 6등 커트라인이 322점이었으니 수상하려면 최소 백준 플레티넘 정도는 되야하지 않을까 싶다.

3. 개발 계획서

병영생활 및 국방에서 활용 가능한 창의적인 아이디어라는 대주제 안에서 본인이 해커톤에 진출했을 때 진행할 프로젝트의 구체적인 개발 계획서를 작성하는 과제였다. 물론 나중에 본인의 주제를 포기하고 다른 사람의 주제에 모여서 팀 빌딩을 할 수 있다는 걸 알고있었어서, 많은 노력을 들이지는 않았다.

4. 선발 결과

생각만큼 대회 경쟁률이 그렇게 빡세지 않아서 코딩테스트 점수가 기대에 못 미쳤던 나도 안정권으로 본선에 진출할 수 있었던 것 같다. 해커톤 참가자로 선발된 이후에는 별도의 탭에서 팀 빌딩 기능과 커뮤니티 게시판을 이용할 수 있게된다. 그래서 다른 참가자들의 개발 계획서도 볼 수 있었는데, 개발계획서가 빈칸인데도 선발된 사람도 있었다. 참가자 수가 그만큼 적어서 개발계획서를 완성하지 못해도 선발했던 것 같은데, 그럼 굳이 코딩테스트 준비나 개발계획서를 열심히 할 필요가 없었을 수도 있겠다는 생각도 들었다.

팀 빌딩 과정

팀 빌딩 기간이 시작되면 내 프로젝트에 필요한 구체적인 포지션과 인원수를 설정할 수 있게 된다. 그래서 다른 사람들의 개발 계획서를 보면서 참여하고 싶은 주제가 생기면 본인의 것을 포기하고, 비어있는 포지션에 참여 신청을 넣으면 되는 방식으로 진행된다. 나는 고등학교 동기가 팀장을 맡은 군 법규 도우미 프로젝트에 Frontend 파트로 참여하기로 했다. 실제로 육군 규정과 국방부 규정으로 정해진 사항임에도 불구하고 군인들이 잘 몰라서 억울한 일을 당해도 항의나 보상 요구를 하지 못하는 경우가 많다는데 공감했기 때문이다.
팀빌딩으로 실력 있는 분들이 들어오셔서 총 7명의 팀이 꾸려졌고, 현업에서 일하시는 능력있는 멘토분도 배정받게 되었다. 그 이후로 우리 팀이 목표한 아이디어를 구현하고 본격적으로 개발할 수 있는 1달이라는 시간이 주어졌다.

온라인 해커톤 및 프로젝트 진행

팀원 모두가 현역 병사다 보니 훈련 일정도 있고, 남는 개인정비 시간을 쪼개가며 참여했던 해커톤이라 협업하기가 쉽지만은 않았다. 또, 싸지방 컴퓨터로 온라인 IDE를 사용해야 하는 등 열악한 개발환경의 문제도 있었다. 나도 외박 나가있는 동안은 거의 모든 시간을 개발에 쏟아부었던 것 같다.
멘토님으로부터 전해받은 몇 가지 팁을 남겨놓자면,

  1. 최종 평가는 발표자료(프레젠테이션)과 시연영상으로만 진행된다.
    데모에 자잘한 오류가 있더라도, 시간이 없으면 영상에 드러나지 않을 정도로만 수정하는 것도 좋다. 또한 발표는 멘토가 진행하셨기 때문에, 팀이 전하고자 하는 메세지를 프레젠테이션에 최대한 많이 담아야 한다.
  2. 병사 개개인을 타겟으로 한 주제보다, 전체적인 ‘군’에 도움을 줄 수 있는 주제가 좋다.
    이 프로젝트로써 군의 어떤 문제를 긍정적으로 해결할 수 있는지가 강조되어야 한다.
  3. 개발문서 (Github README.md 포함) 를 구체적으로 쓰고, 이미지를 많이 첨부하면 좋다.
    우리 팀의 경우에는 GitBook도 활용해서, 미처 시연영상에 담지 못한 내용까지 상세히 설명해 두었다.

후기

  1. 군 생활동안 대회에서 의미있는 상을 하나 정도는 받고 싶었는데, 육군창업경진대회마저 광탈하면서 아쉬웠던 터라 과기부 장관상(1등상)은 믿기 어려울 정도로 뿌듯한 소식이었다. 또 처음으로 참여해본 해커톤 형식의 대회였는데(사실 무박2일, 2박3일로 진행되는 대부분의 해커톤과는 조금 다르지만) 좋게 끝나서 다행이다. Expo, React-Query같은 새로운 기술 스택도 배울 수 있었고, 인사이트를 공유할 좋은 팀원들도 만날 수 있었다. 이런 분들과 협업하면서 완성이라는 하나의 목표를 위해 다 같이 고민하고 해결해나갔던 과정 자체가 참 재미있어서, 대회를 준비하는 한 달 남짓 시간동안 행복했던 것 같다.

  2. 요즘 군대가 많이 좋아졌다고들 하지만, 아직도 여러 군인이 부대 내 선임 ∙ 상관으로부터의 부조리, 성추행, 괴롭힘으로 정신적 피해를 호소하고 극단적인 선택을 한다. 몇몇 지휘관은 본인의 출세를 위해 덮고 숨기기 급급하며, 수사는 물론 배상조차 제대로 진행되지 못하는 경우가 다반수다. 이런 이슈가 터지고 뉴스를 볼 때마다, 원했던 원하지 않았던 국방의 의무를 다하기 위해 입대한 사람들이 대체 왜 이런 비극을 겪어야 했는지 분노하지 않을 수 없었다. 그리고 모두가 가만히 있으면 아무것도 바뀌지 않기에, 여느 ‘냄비근성’처럼 외면하면서 넘어가고 싶지 않았다. 해커톤에 제출한 하나의 데모 앱에 불과하겠지만, 나는 나만의 방식으로 이 문제를 해결하기 위해 고민했고 노력했다는 사실에 의미를 두고 싶다. 그리고 작은 변화의 바람이라도 함께하는 사람들이 많아지고 군 수뇌부부터 노력한다면, 조준우 일병, 이예람 중사같은 사고가 이제는 다시 일어나지 않을 수 있을 것이다.