프로젝트 내용 분리를 위하여 새로운 글로 추가 업로드 처리하였다.
해커톤 자체 선발 및 참가 후기는 아래의 이어지는 글에서 확인할 수 있다.
[이어지는 글]
2021.10.13 - [IT] - [Review] 2020 군장병 온라인 해커톤 선발 후기
2021.10.14 - [IT] - [Review] 2020 군장병 온라인 해커톤 참가 후기
협업 환경
우리 팀의 경우 협업 툴로 Trello를 사용하였다. 이외의 Notion이나 Slack 등의 다양한 툴의 사용도 고려 대상에 있었으나, Trello를 사용한 가장 큰 이유는 협업 툴의 사용 경험 부재였다.
또한, 팀원이 같은 부대 소속이기에 익숙하지 않은 협업툴 사용으로 굳이 추가적인 시간을 소요할 필요가 없다고 생각 하였으며, 직관적인 툴을 사용하는 것이 원활한 협업에 도움이 될 것이라고 판단 하였다.
또한 Branch 전략으로는 기능별로 분기하여 개발하는 방식으로 진행하였다.
프로젝트에서의 역할
프로젝트에서 나의 역할은, "전반적인 프로젝트 문서 및 자료 작성, 레퍼런스 코드 서치, 카카오톡 등 메신저 API 연동, 마스크 인식 및 이름표 검출 코드 개선 참여" 이었다.
당시 같은 팀원이 컴퓨터비전 학부연구생으로 활동했던 경험이 있었기 때문에 레퍼런스 코드는 함께 찾은 뒤, 스켈레톤 코드를 팀원이 작성하면 그에 덧붙여서 작성하며 프로젝트를 진행하였다.
이후에 장애가 생기는 부분은 함께 구글링 하며 해결해 나갔다.
프로젝트 주요 내용
진행한 프로젝트 명은 CoVIsion으로, 부제로는 COVID-19 Detector이다.
프로젝트 주 목적은 단순히 체온을 체크하고, 마스크 미착용을 좀 더 효과적으로 식별하는 데에 있으며, 이러한 목적으로 군복의 이름표 식별과 이상자 식별 시 자동 보고하는 서비스를 제공하는 것 이었다.
프로젝트와 관련된 내용은 아래의 Github를 참고하는 것이 더 도움이 될 것 이라고 판단된다.
https://github.com/osamhack2020/IoT_COVID19-Detector_CO-vision
관련 상세 사항은 GitBook을 참고하면 된다.
https://co-vision.gitbook.io/co-vision/
배운 점
1. 오픈소스 경험
사실 이제까지 오픈소스 프로젝트를 진행해 본 적이 처음이었기 때문에 해당 프로젝트를 통해 오픈소스를 정말 많이 활용해 본 것 같다.
특히 인상적이었던 것은 오픈소스를 활용할 때는 라이센스 문제와 관련해 정말 조심해야 하는 부분이 많다는 점을 다시 한 번 깨달을 수 있었다.
더불어, GitBook을 처음으로 사용하면서, Github에서의 README와 GitBook의 분리로 좀 더 오픈소스 프로젝트 답게 진행할 수 있었다.
이 과정에서 멘토님의 말이 기억이 남는데,
"오픈소스 프로젝트는 오픈소스의 본 목적대로 README도 작성되어야 한다" 였다.
이 말은, 사실상 오픈소스 프로젝트를 보는 사람은 다른 곳에 해당 소스를 사용하기 위해 보는 것이라는 것이다.
이는 곧 프로젝트의 README에 다른 불필요한 말은 삭제하고 프로젝트의 목적, 사용 방법, 라이센스만 README에 작성하고 이외의 개발 계기, 활용 방법, Architecture, 사용 범위 등은 GitBook으로 분리하는 이유가 되었으며,
명확하게 개발 문서를 작성하는 것이 어떤 것을 의미하는 것인지에 대해 깨닫는 계기가 되었다.
동시에 Github에 공개되어 있는 여러 오픈소스 프로젝트를 검색하면서 굉장히 많은 개발자들이 오픈소스로 개발을 진행해 나가고 있다는 것을 알 수 있었다.
물론, 해당 오픈소스 프로젝트가 중단된 경우도 많았기 때문에 난항도 겪었지만 동시에 여러 오픈소스를 병합하여 사용하면서 코드 리딩 능력도 쌓아갈 수 있었다.
2. 협업 능력
이전에 협업 경험은 사실상, 어느정도 서로의 개발 실력 수준과 친밀도가 존재하는 상태에서 협업을 진행하였으며, 다른 사람과 복잡한 개발을 진행한 경험이 없었기 때문에 별도의 협업 툴의 필요성을 느끼지 못했었다.
그러나, 원하는 목적과 그에 걸맞는 기능을 추가를 계획하며 협업 툴의 필요성을 느끼고 Trello를 선정하여 협업을 진행 하였다. Trello가 직관적이기 때문에 사용에 큰 어려움은 없었지만, 그럼에도 어떻게 프로젝트 계획을 분리하고 진행해 나갈 지에 대해 생각해보고 분담해보는 경험을 할 수 있었다.
또한, 다른 오픈소스 프로젝트를 보면서 효과적인 협업툴 사용이 무엇인지 배워갈 수 있는 경험 이었다.
이 해커톤을 진행하면서 실제로 Notion을 사용하진 않았지만, 다른 참가자들의 협업툴 활용 모습을 보고 Notion을 이후 프로젝트에 적극적으로 활용하는 계기가 되었다.
협업하면 또, 빠질 수 없는 것이 다른 사람의 코드 이해이다. 사실상 협업하며 가장 문제가 되는 부분이라고 생각되는데, 그렇기 때문에 최대한 주석을 자세히 작성하고 또, 팀원의 코드에 주석을 자세히 달면서 이해하려고 노력하였다.
내가 작성한 코드가 아니더라도 내가 작성한 코드처럼 다른 사람들에게 설명할 수 있을 정도가 되도록 주석을 작성하였다. 해당 과정을 거치면서 타인의 코드 작성 스타일에 대한 수용과 동시에 코드 리딩 능력을 키울 수 있는 경험이었다 생각한다.
물론 이외에, 코로나 19로 인하여 팀원과 얼굴을 볼 수 없는 견우와 직녀 신세가 되기도 하고 그에 따라, 협업 방식의 변화와 극복했던 경험도 예상치 못한 상황에 대한 대처를 배울 수 있는 경험이었다.
3. 컴퓨터 비전 분야 경험
사실, 이전에 개발 경험은 웹, 안드로이드 애플리케이션 개발 경험 정도였으며 컴퓨터 비전 분야는 전혀 손 대본적이 없었다. 그러나, 해당 프로젝트를 진행해보면서 살짝이나마 컴퓨터 비전 분야에 발을 담굴 수 있는 계기였다.
해당 분야로 프로젝트를 진행하면서 패스트캠퍼스의 딥러닝 강의를 수강하여 이론적인 부분도 쌓기 위해 노력하였다. 물론, 해당 강의로 컴퓨터 비전과 관련된 이론적 내용을 충분히 습득할 수 있다고 생각하진 않으며 당시에도 동일한 생각 이었다.
그러나 분명히 내가 사용하는 라이브러리의 원리가 어떤 내용을 기초로 하는 지 알고 사용하는 것과 모르고 사용하는 것은 알게모르게 사용 방향에서 차이가 난다고 판단하였기에 강의를 수강하였고, 실제로 이러한 경험은 대학교 복학 후, "데이터 분석" 이라는 과목을 수강하는 학문적인 부분에서 긍정적인 영향을 미쳤다고 생각한다.
이론적인 내용을 습득함과 동시에 오픈소스 라이브러리를 어떻게 활용하는 지 예제들을 실습하는 과정을 거칠 수 있었다.
4. 문제 해결 경험
프로젝트 목적 자체가, 이상자를 실시간으로 식별하는 것이 1차 목적을 두고 있다. 그런 면에서 파이썬을 주력 언어로 사용한 것은 속도 측면에서 실시간 검출로 활용하는 데 장애물이 되었다.
이러한 부분을 해결하고자, 최대한 사용자 입장에서 과부하를 줄이기 위하여 노력하였고,
부대마다 상이한 상황을 고려하여 1. 라즈베리파이와 컴퓨터 모두 있는경우, 2. 컴퓨터만 있는 경우, 3. 라즈베리파이만 있는 경우로 나누어서 사용 환경을 나누어서 제공하도록 하였다.
또한, 군 특성상 개발 당시 라즈베리파이와 같은 제품군들을 부대 내로 가져올 수 없었기 때문에 이러한 부분을 최대한 온라인으로 해결할 수 있는 한에서 설계하려고 노력하였으며, 이러한 상황들을 거치면서 앞서 제시한 사용 환경에 따라 동작 방법을 나누는 계기가 되었다.
개발을 진행하면서, 매우 많은 문제들을 마주할 수 있었는데, 이러한 상황들은 Github 검색 능력과 구글링의 능력.. 그리고 다른 사람 코드를 나의 코드로 만들 수 있는 능력을 키우는데 많은 도움을 주었다.
사실 개발자의 가장 중요한 능력은 창의적으로 문제를 해결하는 것뿐만 아니라, 이미 나와 있는 것을 자신의 프로젝트에 적재적소로 잘 활용하는 것이라고 생각하기 때문에 해당 프로젝트를 진행하면서 이러한 능력을 키울 수 있다는 점에서 정말 좋았다.
이외에 시연 영상등의 불가피한 부분은, 휴가를 이용하여 외부환경에서 기기를 구매하거나 대여하여 연결하고 촬영하는 등의 노력을 기울였으며 이러한 부분은 사실 어느정도 환경적인 부분에서 도움을 받았다고 생각한다.
마치며
군에서 개발을 할 수 있는 경험은 보직을 SW개발병으로 가지 않는 이상 복무하면서 정말 흔치않은 기회라고 생각하며, 그러한 기회가 찾아왔을 때 자신이 개발자가 될 생각이 있다면 이러한 기회를 놓치지 않고 최대한 잡아야 한다고 생각한다.
물론, 군대 내부 특성상 참여가 불가능에 가까운 경우도 있다. 그러나, 해당 경험은 적어도 나에겐 큰 경험의 기회였고, 이러한 경험을 열정이 있는 개발자들이 최대한 할 수 있었으면 하는 마음이다.
해커톤에 선발되어도 개발을 진행하면서 다른 팀과 비교해 불공평한 부분이 있다고 생각되는 부분이 분명히 있을 것이다. 이런 부분을 개인이 변화시키기는 어렵겠지만, 최대한 이겨내기를 응원하고 싶다.
'ETC > 회고록' 카테고리의 다른 글
[Review] Google I/O Extended Seoul 2023 참석 후기 (0) | 2023.07.31 |
---|---|
[Review] 2020 군장병 온라인 해커톤 참가 후기 (0) | 2021.10.14 |
[Review] 2020 군장병 온라인 해커톤 선발 후기 (0) | 2021.10.13 |
[정보기기운용기능사 실기] 2021년 2회 정보기기운용기능사 실기 후기 (4) | 2021.07.24 |