싸지방없는 군대에서 B2C 경험하기
메모장 코딩으로 시작한 개발
2024-05-07 · 15분 · 조회 5군대
누군가에게는 무료하고 끝없는 시간일진 몰라도
누군가에게는 평소 하지 못했던 것들을 시도 할 수 있는 특별한 시간이 되기도 한다.
이 글은 내가 군대에서 싸지방 없이 메모장으로 코딩을 시작하며 경험했던 첫 개발 프로젝트를 공유하고 그 과정에서 얻었던 배움과 느낀점을 기록하고 싶어 작성한다.
제목에 나오는 ‘B2C’의 소비자는 다름 아닌 내 전우들이었다.
군대에서의 경험을 바탕으로 작성된 글이며, 직접적인 코드가 포함되어 있지 않습니다.
입대 전의 나
나는 그저 평범한 컴공과 대학생이였다.
학업보다는 술자리, 동아리 활동 그리고 서울 문화를 즐기는데 시간을 쏟았다.
코딩보다는 사람들과 어울리는 게 더 좋았고, 개발은 학점 때문에 억지로 배우는 기술 정도로만 여겼다.
군대에서의 첫 전환점
2020년 04월, 코로나와 함께 어느 여단의 통신병으로 입대했다.
군대의 일상은 단조롭고 반복적이었다. 단절된 사회 속에서 끝없는 무료함은 피할 수 없는 현실이였다.
그러던 중 당직을 서며 접한 공군 인트라넷, 그 안에는 엑셀로 구현된 장비검색 도구들과 간단한 코드로 돌아가는 게임들이 있었다.
특히, 인기 있던 2048게임은 전우들 사이에서 엄청난 히트를 치고 있었다.
이걸 보며 문득 생각이 들었다.
나도 무언가 만들어볼 수 있지 않을까?
그렇게 코딩을 시작하게 되었다.
열악한 환경에서의 메모장 코딩
내가 근무했던 부대에는 싸지방이 없었다. Github, VSCode, Stack-Overflow 같은 환경은 꿈도 꿀 수 없었다.
대신, 통신병들 사이에서 전설처럼 내려오던 1000페이지의 javascript책(자바스크립트 완벽 가이드)과, 자기개발비용으로 구매한 HTML&CSS책 (Do it!)이 내 유일한 도구였다.
그렇게 메모장을 열고, 한 줄 한 줄 코드를 써내려가기 시작했다.
첫 프로젝트 : 지뢰찾기
앞서 말했듯이, 당시 공군 인트라넷에서 가장 인기 있던 게임은 2048이였다. 단순한 게임이지만 많은 당직병이 몰입할 수 있었다.
이를 보며 나도 단순하면서도 재미있는 게임, 군대 컴퓨터에서는 사라진 Windows의 기본 게임인 지뢰찾기를 만들어보기로 했다.
▲ 참고했던 Windows10의 지뢰찾기
MVP 기능
아래와 같은 기능들을 2개월 정도의 시간을 들여서 만들었다.
게임 기능
- 랜덤 지뢰 배치
- 지뢰 클릭 시 게임 종료
- 주변 지뢰 개수 표시
- 지뢰 없는 칸 자동 열기
- 모든 칸을 열면 게임 종료
사용자 인터렉션
- 좌클릭 : 칸 열기
- 우클릭
- 1번 : 깃발 꽂기
- 2번 : 물음표 표시
- 3번 : 초기화
개발 / 구현
아쉽게도 코드를 갖고오진 못했지만, 어떻게 구현했는지는 기억에 어렴풋이 남아있다.
▲ 구현했던 간략한 그림
2차원 배열을 이용한 데이터 관리
- bomb array : 지뢰 정보 관리
- table array : 화면 UI 관리
로직과 UI 업데이트
- 게임 시작 시, 지뢰를 랜덤으로 계산하여 bomb array에 저장, table의 value에 업데이트
- 주변 지뢰 개수를 계산하여 table label에 업데이트
- 클릭 이벤트마다 table array를 업데이트(value, label를 확인하며)하고 화면에 repaint
폭탄 연쇄 반응
- 재귀 함수로 클릭한 칸의 주변 8칸을 탐색하며 지뢰가 없는 칸은 자동으로 열리도록 구현
우클릭 기능
- table label에
flag,question값이 들어오면 직접 그린 svg를 화면에 출력주말 당직 하루종일 깃발과 물음표를 svg로 직접 그리는데 시간을 많이 썼던 기억이 난다.
피드백 및 개선
첫 MVP를 완성한 후, 전우들에게 피드백을 받았다.
받은 피드백
- 난이도, 지뢰 개수, 판 크기 설정이 있었으면 좋겠다.
- 점수제도가 있었으면 좋겠다.
- 시간이나 클릭횟수, 일시정지 기능까지 있으면 좋겠다. (당직을 위해...)
- 첫 클릭시에는 지뢰가 없는 칸이 열리도록 해주면 좋겠다.
- 양쪽 마우스로 클릭하면 주변에 지뢰가 있는 칸들을 자동으로 열어주는 기능이 있으면 좋겠다.
적용한 개선점
- 설정 기능 : 게임 시작 시 판의 칸 수(N*N), 지뢰 개수를 설정하거나 난이도를 설정해서 게임을 시작할 수 있게 하였다.
- 점수 제도 : 난이도, 클릭 횟수, 지뢰 개수, 시간을 고려한 점수 계산과 localStorage를 활용해 명예의 전당 기능을 추가했다.
- 첫 클릭 보장 : 첫 클릭 시에 지뢰가 있다면, 다시 지뢰를 재배치 하는 로직으로 수정하였다.
- 양쪽 마우스 클릭 : 왼쪽 클릭 후 시간 내에 오른쪽 클릭 시 주변에 있는 칸들을 열도록 추가하였다.
결과 및 배운 점
완성된 지뢰찾기는 생각보다 전우들이 매우 즐겁게 플레이 했다.
당직 시간마다 내 게임을 플레이하는 전우들을 보며
내가 만든 것이 사람들이 즐겁게 한다
라는 뿌듯함을 느낄 수 있었다.
이 경험은 나에게 무언가를 만들어낼 수 있다라는 자신감을 심어줬고, 이후에도 개발에 끈을 놓지 않게끔 해준 프로젝트였다.
완성작을 사진으로 꼭 보고싶다면 "Mail" 로 연락주세요!
두번째 프로젝트 : 연명부
지뢰찾기를 완성한 후, 나는 또 다른 개발을 하고 싶었다.
당시 목표는 애니팡 처럼 강력한 인터렉션과 애니메이션이 있는 것들을 만드는 것이였다.
그러나 그보다 내 눈길을 사로잡은 것은 바로 부대에서 사용하던 연명부였다.
연명부란?
여기서 말하는 연명부는 개인 정보가 담긴 민감한 문서가 아니라, 전우들의 "짬게이지"를 확인할 수 있는 엑셀 시트였다.
하지만 그 엑셀 파일은 너무 느리고, 검색과 필터 기능도 부족하여 사용하기가 매우 불편했다.
또한 새로운 사람들을 추가하려면 엑셀 기술들이 필요했고, 전역자의 정보를 삭제하거나 옮기는 것도 번거로운 작업이였다.
그래서 전우들이 더 편리하게 사용할 수 있는 웹사이트 연명부를 만들어보자는 결심을 하게 되었다.
기획 단계
지뢰찾기와 다르게 연명부는 기획단계가 필요했다.
디자인도 생각해야하고, 엑셀에 있는 기능들도 구현해야 했다.
따라서 PPT로 대시보드 형태의 기획을 그려보았다.
▲ 그 당시 기억을 회상하며 그려본 것개발 / 구현
작성중입니다.
결론
군대에서의 개발 경험은 단순히 코딩 스킬을 배우는 것을 넘어,
사용자를 이해하고 문제를 해결하는 과정 자체가 얼마나 큰 성취감을 줄 수 있는지를 깨닫게 해준 소중한 경험이었다.
제한된 리소스와 환경 속에서도 주변의 문제를 해결하고, 누군가에게 즐거움을 줄 수 있는 것을 만들어냈던 경험은 나에게 깊은 영향을 주었다.
니즈를 파악하자
지뢰찾기와 연명부 프로젝트 모두, 내가 아닌 전우들이 실제로 필요하고 원하는 것을 고민하며 시작되었다.
사용자들이 겪고 있는 불편함을 관찰하고, 그것을 해결할 방법을 구체적으로 고민하는 과정에서 사용자의 입장에서 생각하는 사고방식이 얼마나 중요한지 배웠다.
단순히 기술적으로 뛰어난 것이 아니라, 니즈를 충족하는 프로덕트를 제공하며 가치를 전달할 때 비로소 진정한 의미를 가진다는 깨달음은 이후 나의 개발 철학에 큰 영향을 주었다.
제한된 환경속에서도 효율적인 해결 방법을 찾자
인터넷도, 최신 개발 도구도 없던 환경에서 나는 메모장과 몇 권의 책만으로 프로젝트를 완성해야 했다.
이런 제한된 상황에서도 필요한 것을 만들어내기 위해 창의적으로 문제를 해결하는 방법을 자연스럽게 익혔다.
“완벽한 환경은 없다”는 사실을 받아들이고, 주어진 조건 안에서 최대한의 결과를 만들어내는 경험은 이후 도전에 대한 두려움을 없애는 데 큰 힘이 되었다
자신감을 갖자
군대에서 개발을 시작할 때, “이런 환경에서 뭘 할 수 있겠냐”며 의심하거나 부정적인 반응을 보이는 사람들도 있었다.
하지만 작은 아이디어라도 실행에 옮기면, 그것이 누군가에게는 의미 있는 변화를 만들어낼 수 있다는 것을 체감했다.
내가 만든 지뢰찾기와 연명부는 전우들에게 실질적인 즐거움과 편리함을 가져다주었고, 이는 내가 새로운 것을 시도하고 창의적으로 무언가를 만들어낼 수 있다는 자신감을 심어주었다.
시간을 소중히 하자
처음엔 무료하다고 느껴졌던 시간들이 개발을 시작하면서 부족하게 느껴지기 시작했다.
- 휴대폰 게임과 잠에 쏟아붓던 개인정비 시간이 코딩 유튜브를 보고, 책을 읽고, 무언가를 구상하는 시간으로 바뀌었다.
- 대부분의 전우들이 싫어하던 금/토요일의 당직조차 나에겐 코딩을 할 수 있는 소중한 시간이었다.
- 심지어 내가 대신 당직을 자청하기도 하며, 개발에 몰입할 시간을 만들어갔다.
이 경험을 통해 시간을 어떻게 활용하느냐에 따라 인생의 방향이 바뀔 수 있다는 사실을 몸소 느꼈다.
군대라는 환경이 아니었다면 이런 도전을 해볼 기회가 있었을까?
그때의 경험은 단순히 기술적인 성장을 넘어, 개발자로서의 철학과 태도를 정립하게 해준 값진 시간이었다.