안드로이드 할 줄 모르는 고등학생이 반년만에 대회 수상, 소프트웨이브 출품, 서비스 운영까지

김성한·2025년 12월 8일
post-thumbnail

1. 배경

때는 2025년 4월쯤이다. 대구소프트웨어마이스터고에서는 고등학교 2학년이 되면 본격적인 나르샤 개발을 시작한다.

나르샤란 학교에서 약 8개월 간 기획부터 디자인, 개발까지 모두 학생들끼리 할 수 있게 각종 비용을 학교에서 지원해주고, 산학선생님을 통해 멘토링을 진행할 수 있는 등 프로젝트 환경을 조성해주면서 서비스를 만들고, 이 결과물로 평가를 하여 수상하는 행사이다. 상위 3팀은 서울에 올라가 소프트웨이브를 경험할 수 있게 해주기도 한다.

우리는 이 나르샤 프로젝트에서 지역 유적지를 퀴즈로 익히는 서비스인 '레거시'를 개발하기로 계획했다.


2. 왜 안드로이드 개발자가 되었나

우리 프로젝트는 구글맵 위에 대한민국 유적지들을 띄우고, 그 유적지에 대한 퀴즈를 풀면서 땅을 점령하는 기술을 구현하면 된다. 그다지 어렵진 않았다. 프로젝트는 딱 깔끔하고 좋았다.
(보라색은 아직 점령하지 않은 유적지, 노란색은 점령한 유적지)

하지만 문제가 생겼다. 우리 팀은 총 7명으로 구성이 되어있다.
백엔드는 3명으로 딱 좋았지만, 웹 3명에 iOS 1명으로 팀이 이루어져 있었다.

우리 프로젝트는 앱이 메인이기에 앱이 중요했다. 하지만 현 앱을 할 수 있는 사람이 iOS 개발자 한 명만이 있었기 때문에 앱이 불안정한 상황이었다. 그래서 웹 1명이 앱으로 떠나가야하는 상황이 나타난 것이다.

그래서 리액트 네이티브 경험이 있고 자주 사용해본 내가 앱으로 가기로 결정했다. (사실 자가선택임)
그리고 우리는 리액트 네이티브로 개발을 하기로 했다. 그런데...

내 머릿속에 아픈 기억들이 지나갔다. 리액트 네이티브를 사용하다가 터져버린 프로젝트가 한 두개가 아니라는 것을... 나는 이 악몽을 진짜x10 잊지 못한다. 너무나 사고가 많았기 때문이다.
또한 프로젝트가 Firebase, Google Map 등 여러가지 라이브러리가 들어가기 때문에 앱 자체가 결코 가볍지 않다. 리액트 네이티브를 쓰다가는 프로젝트가 터져버릴 수도 있을 것 같다.

뭐 어떡하기는 결정해야지. 그냥 당당하게 얘기했다.

"저 안드로이드 할게요."

마침 산학선생님도 안드로이드 개발자 출신이고 (근데 xml만 하실줄 아신다), 또 새로운 도전을 해보는 것이 재밌을 것 같기 때문에 안드로이드를 선택했다. 😀
뭐 7개월만에 완성해야한다고? 뭐 어쩌라고. 안될 거 있음?


3. 제출까지 약 D-200, 드디어 Jetpack Compose의 존재를 알다.

앞서 말했듯이 나는 웹 개발자다. 웹 말고는 다 모른다. 아무것도 모른다.
자 그럼 무엇을 해야할까? '이제 무엇으로 개발해야하나?' 이거부터 찾아봐야한다.
검색 결과 Android Studio를 통해 개발을 하고, Kotlin을 사용한다는 것을 알게 되었다.

와 그럼 이제 됐다. 이거 빨리 배울 수 있겠는데? 라며 Kotlin을 배울 준비를 하고 있었는데...
여기서 그라데이션 충격을 받았다.

(1차 충격 - 뭘로 만들어야 됨..?)

(2차 충격 - 뭐지? 직접 배치해서 개발하는 건가?)

(3차 충격 - 코틀린 문법 하나도 모름)

난생 처음보는 화면에 소름이 와.. 말이 안된다. 심지어 안드로이드는 옛날 자료들이 진짜 많아서 다 믿을 수도 없다.

그래서 일단 무작정 뭐든 찾아보고 시작했다. 그래서 발견한 사실

아! XML을 사용하구나!

-> 근데 이거 4년 전에 대체제가 나타났다.

비교를 하자면 그런 느낌이다.
React 안쓰고 아직 jQuery쓰는 사람 꼴이 된 거다.

일단이렇게 하루 배우고 기숙사에 가서 같은 동아리 친구에게 만든 결과물을 보여줬다.
(내심 나름 잘해서 칭찬받을 준비하고 있었음)

그리고 그 친구가 뱉은 한 마디

-> "요즘엔 XML안쓰고 Jetpack Compose 쓰는데?"

앞서 그라데이션 충격을 받고 또 충격을 먹었다. 걍 모든 걸 접고 싶었다. 뭐가 너무 많다.
'아... 그냥 지금이라도 웹 한다고 할까'라고 생각했다.
이러다간 올해 최고의 모먼트를 달성할 수 있을 것 같았다. (Negative)

하지만 한번 뱉은 말은 꼭 지키는 법. 지난 날 다 잊고 다시 출발하기로 마음먹었다.


4. 외로운 안드로이드 적응기, 그리고 대성공

금주에 학교를 마치자 마자 바로 카페로 달려가서 코틀린 공부와 Jetpack Compose 공부를 하기 시작했다.
주변에 Android를 하시는 선배도 없고, 또 친구에게 물어보기에는 친구도 바쁘고 지금 전공도 서버로 틀고 있는 중이라 혼자서 해결해야했다. 참고로 이번 나르샤를 하는 전교생 중 Android는 나밖에 없다.

우선 Kotlin을 해야하는데, Kotlin을 하는 거 집중적으로 파보고 싶어서 인강을 들었다. (설명 잘하심)

조건문, 반복문 등 이런 거는 다들 비슷할 거니 안배우고 넘어갔고, 함수, data class 등 언어별로 다를 문법들만 골라서 효율적으로 공부를 했다. 여기서 다행인 점은 확실히 Java, JavaScript와 비슷하고, 특히 Java라고 생각하면서 배우니까 공부하기 정말 편리했다.

이게 짧은 시간 같지만, 약 일주일동안 공부를 했다. 머리가 안좋아서 모르는 부분이 있으면 반복하면서 듣고, 파일 뜯으면서 분석했다.

그렇게 Kotlin도 했겠다. Jetpack Compose를 배워보자. 자 이제 문법이 이해가 되겠지 ??

다행이도 문법이 그나마 눈에 들어왔다. 근데 여기서 문제점이 생겼다.
파일구조가 너무나도 이상하게 생겼다. 이해가 안된다. 그래서 학교 끝나고 기숙사로 가서 어쩔 수 없이 그 친구에게 가서 물어봤다. 그러니 친구가 잘 설명해 줬고 그제서야 좀 이해하게 됐다. 또한 동아리에 Android 레포지토리가 있는데 그거 참고해서 하라고 조언도 해 줬다. 평소에 Github를 잘 안봤는데 이 때부터 남들 깃허브 참고하는 습관이 생겼다.

여기까지 약 1개월정도가 흘렀고, 로그인 디자인이 나와서 로그인 뷰를 짜기 시작했다. 평소에 뷰 짜는 건 자신이 있어서 금방 할 수 있을 것 같았다.

그렇게 해서 클로드와 함께 로그인 뷰를 만들었다. 나의 첫 안드로이드 경험은 대성공이라 볼 수 있을 것 같다.
(당시 사진이 없습니다ㅠㅠ)

그렇게 1달 동안 Jetpack Compose를 여러번 만져보고 다른 사람들이 만든 Github를 참고해보니, 이제 다른 걸 참고하지 않아도 뷰를 짤 수 있는 정도가 됐다.
1달동안 카페에서 혼자 공부하니 나온 결과이다. 엉덩이가 너무 아팠다.


5. 적응기 끝, 1차 시연 시작, 그리고 좌절

나르샤는 평가를 통해서 점수를 얻고, 그 점수로 최종 순위를 매기는 식이다. 이번엔 첫 순위 경쟁 시간이다.
이번 평가는 시연과 발표다. 발표는 내가 안하지만 '시연'이라는 큰 행사가 기다리고 있다.

한 달 남았다. (현재 6월 말, 평가 7월 중순)

나는 고작 로그인 화면을 만들고, Retrofit을 활용한 카카오톡 로그인 통신까지만 성공했다. 여기서 문제는...


홀리몰리.
의존성 오류가 터져버렸다!!!!!

우리의 주요창인 구글맵을 사용하는 부분에서 의존성 오류가 터져버린 것이다.
여기서는 클로드와의 쇼부를 봐야한다.
그렇게 해서 약 3일간 온갖 스트레스를 받으면서 의존성 오류를 고쳤다. 해결책은 분명했다.
안드로이드는 버전 관리가 매우x3000 미세해서 의존성 버전을 진짜 잘 맞춰야한다. 만약 버전이 안맞는다면 무언갈 버리고, 다른 대체제로 갈아타야한다.

'왜 사람들이 Native 언어를 안할까'라는 답변을 여기서 발견했다. 진짜 힘들다. 3일동안 생고생했다.
그래서 이를 통해서 얻은 거라도 있을 거 아니냐?
-> 없다. 시간 낭비만 했다. ㅎ

이 고비를 넘기고, 다음부터는 나름 간단한 내용들이었다. 우리의 1차 목표는 구글맵 위에 유적지 목록을 띄우고, 그 유적지를 확인하고, 또 BGM을 추가해서 신선도를 높이자는 계획이다.
그렇게 해서 다음과 같은 화면들을 만들었다.
(랭킹은 실제 개발 사진이고 나머지는 목업이다.)

또한 BGM도 직접 만들어서 넣었다.

이렇게해서 1차 시연 준비를 알차게 끝냈다.

그렇게 평가 당일이 됐다.

다행히도 평가 때 버그가 안났고 (왜냐하면 기능을 보지 않았다... 그 사람들이) 정말 좋은 칭찬들을 많이 받았다. 그리고 수많은 학생들의 피드백도 받았다. Android를 배운지 2달, 아니 시작한지 2달. 이렇게 여러개의 기능을 만들었고, 3학년 선배들의 수많은 앱 크래시 내기 수법에도 꿋꿋하게 버텨서 정말 뿌듯했다. (어떤 선배 5분동안 연타만 하고 가심)
또한 아이디어 피드백에서 지자체와 협업해보라는 말을 엄청 많이 듣고 갔다.

그래서 몇등을 했냐!

10팀 중 5등을 했다..?
5등이면 나쁘지 않은 등수처럼 보이지만, 우리는 불만족했다. 분명 심사위원들에게 많은 칭찬을 듣고, 심지어 피드백 한 마디 듣지도 못했는데 5등이다? 이거는 솔직히 불만족스러운 결과이다. 이때 결과때문에 한동안 고생을 했다. 이때부터 '나르샤 순위에 신경쓰지 말고 그냥 프로젝트 완성에 신경쓰자'라는 마인드로 개발을 하기 시작했다.

그렇게 한 학기가 끝나고 방학에 들어갔다.

방학 때는 리팩토링을 했다. 기존의 엉망진창이던 파일들을 클린아키텍처로 변경했고, 필요 없고 쓸 데 없는 코드들을 모두 정리하였다. 이를 통해서 개발 환경을 조금 더 편하게 진행했다.
이렇게 리팩토링을 하니까 kotlin문법과 더 친해졌다.

그리고 여름방학 캠프를 통해서 프로젝트 친구들과 모두 모여서 2주간 개발을 진행했는데, 솔직히 학기 중에 힘들었어서 개발 안하고 밥 얻어묵고 잠만 잤다.


6. 나르샤 2차 평가 시작, 안드로이드와 친구(?)가 되다.

안드로이드를 개발을 시작한지 약 4개월이 되어가고, 날씨도 점점 더워졌다.
방학 때는 다른 웹 프로젝트를 리팩토링을 하느라 나르샤에서 손을 떼 놓은 상태였다.

이제는 나 혼자 AI의 도움을 쓰지 않고도 프로젝트를 진행할 수 있는 숙련도를 갖게 되었다. 계속 하다보니 Jetpack Compose도 이제 너무나도 익숙해졌다.

익숙해진 가장 큰 계기는 내가 내 코드를 직접 리팩토링하면서 다시 읽어봤기 때문인 거 같다. 내가 왜 이런코드를 썼는지, 이 코드는 어떤 기능을 하는지 알 수 있는 가장 빠른 길인 것 같다.

또 알게된 사실이 있는데, 웹, 앱 할 거 없이 프론트 문법은 모두 다 비슷하다.
특히나 이게 가장 신기했다. iOS코드를 공부해본 적이 없었는데, 읽힌다. 이유는 잘 모르겠는데, 뭔가 다 비슷하다. 그래서 자기가 웹이나 앱을 너무 잘해서 할 일이 없다고 하면 이런 다른 프론트 스택을 공부해보는 것도 정말 좋은 경험이 될 수 있을 것 같다. (하지만 앱은 영원히 고통 받을 수도 ㅎㅎ)

거두절미하고 다시 대회 얘기를 해보자면, 방학이 끝나고 한 달 뒤에 곧바로 나르샤 2차 평가 기간이다. 그래서 빠르게 일 작업을 해야한다. 이번에는 여행을 갈 때 유적지를 스탬프 형식으로 걸어다닐 수 있게 하는 '코스' 기능과, 직접 길을 걸어다니면 땅따먹기처럼 땅이 확보가 되는 기능을 만들게 됐다. 어려운 기능이 아닌 CRUD만으로 이루어진 기능들이다보니, 이번 2차평가를 여유롭게 준비할 수 있었다. 아 참고로 2차평가는 영상 평가이다.

추후에 도전과제, 인벤토리도 만들었고, 카드팩 기능도 만들게 되었다. 이렇게 해서 하나의 서비스를 완전히 구축하게 되었다. 또한 화면엔 안보이지만 포켓몬고처럼 주변에 유적지가 근처에 있다면 Firebase를 통해 알림이 가게 만들기도 했다. 2차 평가는 리팩토링이나 이런 규칙들을 다 정확하게 해 놓은 덕분에 빠르게 만들 수 있었고, 나 같은 마감기한 불안자들은 웬만해서 마감 1주일 전에 미리 다 만들어 놓는다.

그렇게 시간이 흘러 2차 평가를 하게 되고... 결과는...!

그렇다. 또 5등이 나왔다. 이렇게 우리는 수상과 점점 거리와 멀어지고, 소프트웨이브는 더 멀어져서 그냥 공모전에 나가서 상을 타기만을 바래야겠다는 마인드로 개발하기 시작했다.


7. 나르샤 결과발표와 배포 작업

그렇게 시간이 흐르고, 최종 제출일 까지 당장에 1달이 남게 되었다. 10월 25, 26, 27, 28일 그 중 26일은 시연 평가, 최종 발표날인데, 이 날은 대구 AI EXCO 박람회에서 부스를 운영함과 동시에 옆 세미나실에서 평가를 진행하는 행사이다. 이 날 국회의원, 심지어 대통령까지 온다.

2차 평가 이후에 크게 기능 추가가 이루어진 부분은 없다. 기존에 작동을 안하던 기능들을 서버 연동해서, 완벽한 구현을 이루고, 또 디자인과 뷰를 수정하여 프로젝트를 깔끔하게 완성하는 것이 목표이다. 또한 배포를 해서 교내 사용자를 모으고, 피드백도 받을 예정이다.

이게 말로만 이렇게 말하면 '어? 별 거 없네?' 라고 생각을 하겠지만, 생각보다 버그가 엄청나게 많았고, 또 뷰가 다른 휴대폰에서 깨지는 일도 발생해서 시연 전날, 아니 시연 당일날까지 수정을 했다.

그리고 사람들이 우리의 플랫폼을 직접 즐길 수 있도록 원스토어에 앱을 등록하여 사람들이 사용할 수 있게 준비를 하려고 했다. 하지만..

알 수 없는 이유로 계속 REJECT 당했다. 그래서 박람회에서 배포를 못했다. (무한후회중 ㅠㅠ)

그렇게 대회 당일날이 찾아왔고, 나는 평가위원들 앞에서 시연을 맡았다. 대사를 적는 것 보다는 목차를 적어서 그것들을 연결시키는 식으로 발표를 진행했고, 말을 절지 않고 성공적으로 발표를 했다. 그리고 다른 친구가 발표를 진행했고, 그것 역시 성공적으로 마치게 되었다.

이제 진짜 마지막, 최종 결과 발표만 기다리고 있다. 그래서 결과는...

🥈 2등을 했다!! (2등 2팀, 1등 1팀 - 석차 3등)
예상도 못했다. 분명 5등만 계속하다가 갑자기 석차 3등으로 올라가다니.. 노력 끝의 결과가 이루어져서 너무 기분이 좋았다.
석차 3등 안에 들었기 때문에, 소프트웨이브에 나갈 수 있는 기회가 생겼다. 그래서 문제 수정 후 원스토어에 배포를 했고, 서비스를 본격적으로 론칭할 수 있게 되었다.

그리고 간략하게 AI EXPO 박람회에 대해서 잠깐 후기를 말하자면, 힘들었다.
우선 모르는 사람들과 대화하는 거 자체가 MBTI가 E, F인 내 입장에서도 말하기 조금 부담스러웠기도 했고,
갑자기 회사 대표님이 와서 설명을 듣는다? 이거는 너무 부담스러웠다...
그래도 내 설명을 잘 들어주시고, "잘 들었습니다~" 이 말 해주셔서 기분이 좋았을 때도 있었다.

그리고 캐릭터들도 가끔씩 있다ㅏ.. 예를 들자면..
우리 팀명이 자세히 보기인데 우리 부스를 방문한 이유가 자기가 '자세히 보아야 예쁘다' 이 문구를 좋아해서라고...


8. 소프트웨이브에 가다

이제 마지막 섹션, 소프트웨이브 출품에 대한 얘기이다.
나르샤가 끝나고 프론트 쪽에서는 이벤트 기능 추가 말고는 추가적인 개발을 안했다. (사실 2시간만에 만듦)

아까도 말했듯이 우리학교에서는 나르샤 석차 순으로 세 팀이 갔다. 사전준비 포함해서 총 4일동안 갔다.

가서는 별 거 크게 한 건 없고, 우리 프로젝트를 소개하고, 피드백, 조언 등을 받은 것 밖에 없다.
또한 유저 수를 많이 모았다!!

기존에 약 70명? 언저리던 유저 수를 약 90명 가까이 모은 것이다. 그래서 나는 약 100명에 가까이 되는 서비스를 직접 개발하고, 운영해본 것이다. 헤헷
또한 토스, 삼성전자, 심지어 육군사관학교!! 까지 정말 다양한 곳에서 소프트웨이브를 관람하러 왔다.
그리고 우리 학교 졸업생 선배님들도 많이 만났다. 또 지금 취업나간 8기선배들도 보았다. 너무 반가웠고 진짜 다들 너무 잘 살고 계시는 거 같아서 내가 다 기분이 좋다.

또 다양한 회사들도 보았는데, 주제가 AI라서 그런지 AI를 주로 다루는 회사 제품들이 많아서 세상이 한순간에 많이 바꼈다는 것을 많이 느꼈던 것 같다.

이건 번외 얘기인데 첫눈도 봤다.

대구에는 눈이 2달에 한번? 정도 오는데 진짜 1년치 눈 다 봐서 너무나도 신기했다.


소감

내가 여태까지 살아온 18년 인생 중에 가장 열심히 살아왔던 해였던 것 같다. 평소에 개발자를 그만 해야되나 많이 생각했었는데, 그래도 꾹 참고 주말에도 이렇게 열심히 개발을 했다 보니 너무 좋은 결과물이 나와서 뿌듯했다.
그리고 다시는 안드로이드는 안건드린다. 진짜 너무 힘들다. 자료도 너무 없고, 의존성문제가 너무 심하다.
올해 발롱도르는 내꺼다.

12개의 댓글

comment-user-thumbnail
2025년 12월 16일

글 재밌게 읽었습니다. 낯선 기술을 보람차게 습득하시는 과정이 되게 좋네요. 수고하셨습니다

1개의 답글
comment-user-thumbnail
2025년 12월 16일

용기가 정말 대단하네요... 저는 expo + rn 개발하면서 너무 많이 문제가 발생해서 골치 아팠던 적이 있어... 아직 용기 내지 못하고 있습니다ㅜ

1개의 답글
comment-user-thumbnail
2025년 12월 16일

참잘했어요👍

1개의 답글
comment-user-thumbnail
2025년 12월 19일

수고했어요~

1개의 답글
comment-user-thumbnail
2025년 12월 19일

iOS의 세계로 오지 않으시렵니까..?

1개의 답글
comment-user-thumbnail
2025년 12월 20일

공기업의 세계로 오지 않으시렵니까?

1개의 답글