개발자의 길: 고등학교 3년의 성장 이야기

끊임없는 도전과 성장을 이룬 소중한 3년의 여정

임세현
10 min readJun 24, 2024

이전 글에서도 언급했듯이, 나에게 있어 개발은 하나의 도구다. 내가 가진 아이디어를 세상에 알리기 위한 도구다. 이번 글에서는 고등학교 3년간의 여정에 대해 이야기해보고자 한다.

JUST DO IT! 일단 해보는거야

중학교 졸업이 다가오고 있었고, 나는 개발이라는 도구가 꼭 필요했다. 그렇게 무작정 구글링을 하기 시작했고, 16살의 나는 KG아이티뱅크라는 개발자 양성을 목표로 하는 교육 기관에 들어가게 되었다. 평일엔 학교에 가고 주말엔 친구와 함께 노량진에 가서 코딩을 공부했다. 4개월 동안 Python, C, C++, Java 등의 프로그래밍 언어를 공부하며 본격적으로 개발을 시작했다.

주변에는 비슷한 나이대의 사람도 없었고, 배우는 내용의 수준이 높아 겁도 먹었지만, 개발이라는 도구가 꼭 필요했다. 내 머릿속의 무형의 아이디어를 시각적으로 구현하고 싶었다. 그렇게 학생 정보 조회 같은 간단한 시스템을 구현하며 재미를 붙이기 시작했고, 본격적으로 프로그래밍을 공부하기로 결심했다.

부모님께 수능 공부나 대학 직학 대신 SW 인재 양성을 목표로 하는 대덕소프트웨어마이스터고등학교에 진학하겠다고 말씀드렸다.

소프트웨어 전문 마이스터고의 입학

설레는 마음으로 대덕소프트웨어마이스터고등학교에 입학했다. 같은 관심사를 가진 친구들을 만나고, 개발을 본격적으로 배울 수 있다는 생각에 내 꿈에 한층 더 가까워지는 느낌이었다. 학교에서는 개발자 양성을 위한 커리큘럼이 준비되어 있었고, 이미 개발을 공부하고 있는 선배들이 있다는 것이 좋았다.

나는 DMS(Dormitory Management System)라는 기숙사 시스템을 개발하는 동아리에 들어가 개발에 대한 기초 지식을 배우며, 안드로이드 개발자로서의 길을 선택하게 되었다. 당시 안드로이드를 선택한 이유는 항상 사람 곁에 있는 기기가 모바일이고, 한국에서 점유율이 가장 높기 때문이었다. 무엇보다 내가 개발한 결과물이 바로바로 보인다는 점이 가장 좋았다.

입학 전 배웠던 Java 지식과 멋진 동아리 선배들의 멘토링으로 고등학교 1학년부터 GitHub도 만들고 안드로이드 개발을 본격적으로 시작하게 되었다. 머릿속에는 항상 가치 있는 모바일 애플리케이션을 만들어, 마인크래프트 서버를 만들며 느꼈던 내 아이디어로 만든 것들이 사람들에게 이로움을 주는 것을 바랐다. 이러한 생각은 훗날 안드로이드 개발자로서의 커리어를 시작하게 만들었다.

잠깐의 방황과 해커톤 참여

고등학교 1학년 1학기가 끝날 때쯤, 나는 잠깐 방황했다. 이 학교에 올 때 추후 비즈니스를 하기 위한 내 개발 역량을 강화하고자 했다. 남들과 똑같은 길이 아니라 특별한 길을 가길 원했다. 학교라는 울타리 안에서 편한 길을 가고 있던 중, 내 길을 다시 바로잡아준 사건이 있었다.

나는 1학년 여름방학 때 2021 Hello New() World라는 해커톤에 참가하게 되었다. 당시에는 GPV(Gambling Prevention Vaccine)라는 도박 예방 앱을 통해 본선에 진출했다. 본선에서는 코로나 방역 평점 서비스를 통한 올바른 방역 문화를 만들고자 했다. 결과는 수상하지 못했지만, 이 경험은 나에게 큰 깨달음을 주었다.

전국적으로 출전한 대회에서 다른 팀들은 디자인, 개발, 기획 등 전공적인 측면에서 우리 팀보다 훨씬 더 견고한 프로덕트를 만들었다. 우리는 학교의 우물 안 개구리였다는 것을 깨닫게 되었다. (더닝 크루거 효과가 떠오른다..)

열등감 때문이었을까, 결과에 대한 실망 때문이었을까. 나는 정확히 설명할 수 없는 어떤 감정을 느꼈고, 홀린듯이 개발 공부에 매진하게 되었다. 평소 작은 습관의 힘을 믿던 나는 이 시점부터 1일 1커밋을 시작했고, 여러 프로젝트와 활동에 나를 몰아넣으며 안드로이드를 중점으로 백엔드, 디자인, 기획 등 다양한 분야를 공부하게 되었다.

1일 1커밋의 시작

성심당과 진행한 첫 기업 프로젝트 — SimTong

성심당(주식회사 로쏘) 사내 인프라넷 서비스 — SimTong

고등학교 2학년이 시작할 무렵 나는 ComIT라는 기업형 고등학생 연합동아리에서 활동했다. 성심당으로 유명한 주식회사 로쏘와 프로젝트를 진행할 수 있는 기회가 생겼고, 우리는 그 기회를 놓치지 않고 잡았다.

진행한 프로젝트는 로쏘의 사내 복지 서비스인 심통이다. 일정 확인, 휴무표 작성, 사내 투표, 사내 중고 거래 등 사내 직원 복지와 편리성 향상을 목표로 진행되었다. 나는 해당 프로젝트에 Android팀의 Leader로 참여하였다. 유능한 구성원함께 기업과 지속적으로 소통하며 프로젝트를 성공적으로 출시하였고, 긍정적인 반응들을 얻을 수 있었다.

고객의 요구사항이 지속적으로 변경되었고, 기술적으로 이를 쉽게 대응하기 위해 안드로이드 팀 내에서 논의가 끊임없이 이루어졌다. 거시적으로 3번의 대규모 업데이트가 예정된 프로젝트였고, 앱 내 비즈니스 로직이 다수 존재하고 변경될 것으로 예상되어 Clean Architecture를 적용하기로 논의하였다. 또한 Multi Module을 적용하여 각 도메인별로 관심사를 분리하였다. 이러한 노력으로 계속해서 변하는 요구사항에 신속하고 빠르게 대응할 수 있었다.

또한 개발자로써 개발만 할 뿐만 아니라, 기술에 대한 이해를 바탕으로 풀고자 하는 문제들을 함께 파해쳐나갔다. 개발자의 역할과 책임은 단순 개발을 넘어서, 개발 이해도를 바탕으로 특정 문제를 해결하는 것에 있는 것에 있다는 생각을 가지게되었다. SimTong은 개발자로써 역할과 책임(R&R)에 대해서 알려준 고마운 프로젝트이다.

우리의 서비스를 전국으로 — DMS

고등학교 2학년이 끝나갈 무렵, 나는 선배들로부터 오래전부터 개발되어 온 기숙사 관리 시스템을 유지보수하는 임무를 맡게 되었다. DMS(Dormitory Management System)기존의 아날로그 방식의 기숙사 업무를 디지털화하여 편리한 기숙사 경험을 제공하는 것이 목표인 프로젝트이다.

우리 팀은 DMS 프로젝트를 소프트웨이브 행사에 전시했다. 놀랍게도, 많은 다른 학교 관계자들이 우리 시스템을 자신의 학교에서도 사용해보고 싶다는 반응을 보였다. 이에 우리는 프로그램을 다양한 환경의 학교에 적용 가능하도록 추상화하는 비즈니스 모델을 논의하기 시작했다.

DMS 프로젝트에서 나는 개발자보다는 기획자이자 스크럼마스터로 참여했다. 여러 클라이언트(사감 선생님 및 관계자들)와 인터뷰를 진행하여 요구 사항을 분석하고, 이를 바탕으로 시스템을 설계하여 기능 명세서를 도출했다. 이 과정에서 고객과 지속적으로 소통하며, 다양한 상황과 계속해서 바뀌는 요구사항에 신속하고 효과적으로 대응해야 했다. 또한, 12명의 팀원들이 최대한 역량을 발휘할 수 있는 환경을 조성하는 것 역시 중요한 과제였다.

우리가 처음 사용했던 폭포수 모델은 요구사항을 쉽게 수용할 수 없는 단점이 있었다. 특히 학업과 병행하는 상황에서 개발팀의 시간은 절대적으로 부족했다. 따라서 우리는 폭포수 모델과 애자일 방법론의 장점을 결합한 Agile Hybrid를 도입하기로 결정했다. 사전에 기획 단계를 철저히 진행하여 안정성을 높이고, 이후 개발 스프린트를 통해 개발자들의 시간을 효율적으로 보장했다.

KPT 회고의 흔적들…

집단의 성장을 위해서는 팀원들이 효율적으로 일해야 하고, 방해 요소를 파악하고 합리적으로 제거하는 것이 중요하다고 생각했다. 이를 위해 KPT 회고를 진행하여 팀원 모두의 의견이 반영될 수 있는 환경을 만들었다.

DMS는 기획자로서의 시선과 나보다는 구성원 모두가 목소리를 낼 수 있는 환경을 조성하는게 중요하다는 점, 조직의 특성에 맞는 문화가 상당히 중요하다는 점을 알려준 고마운 프로젝트이다. (이런 생각은 훗날 12명으로 구성된 안드로이드 스터디를 만드는 계기가 되었다)

기술도 제대로 공부해보자 — Duckie

Duckie

고등학교 3학년을 시작할 무렵, 나는 안드로이드 개발자로서 Android에 대한 기술 역량을 높이기 위해 여러 아티클을 찾아보며 공부하고 있었다. 특히 Jetpack Compose를 중점적으로 공부하고 있었는데, 때마침 자주 보던 블로그인 성빈랜드에서 팀원을 모집한다는 소식을 듣게 되었다. 그렇게 나는 유능한 팀원들과 안드로이드를 진득하게 공부하고 싶어 덕키 프로젝트에 참여하게 되었다.

덕키는 덕력고사(덕질 관련 문제)를 풀고 공유할 수 있는 콘텐츠 기반의 SNS였다. 팀원은 총 8명으로, 안드로이드 개발자만 4명으로 구성됐다.

팀원들이 많다 보니 각자의 코드 스타일이 달랐고, 이는 곧 코드의 일관성 및 가독성 저하로 이어졌다. 이를 해결하기 위해 컨벤션을 도입했고, 컨벤션을 지키기 위한 커뮤니케이션 비용을 줄이기 위해 고민했다. 결국 우리는 기술적으로 Lint(코드 분석 도구)를 커스텀해 별다른 노력 없이 컨벤션을 지킬 수 있도록 했다. 이 과정에서 관련된 자료가 없을 때 대처하는 방법과, PSI(Program Structure Interface)와 UAST(Unified Abstract Syntax Tree) 같은 IDE가 코드를 인식하는 구조에 대해 이해할 수 있었다. (관련 아티클 보러 가기)

프로덕트를 개발하는 과정에서는 Clean Architecture, Multi Module, Dynamic Feature Module, MVI, Jetpack Compose 같은 다양한 기술을 공부했다. 그중 기억에 남는 것은 Jetpack Compose의 안정성이었다. Recomposition을 최적화하기 위해 skippable 상태 유지, StableMarker 사용, donuthole-skipping 등 여러 방법을 적용해 사용자들에게 더욱 빠르고 안정적인 앱을 제공할 수 있었다. 그 외에도 여러 기술적인 이슈를 겪으며 성장할 수 있었다.

성공적으로 앱을 출시하고 지속적으로 업데이트해 유저 2,000명(Android + iOS), 덕력고사 응시 수 10만 건이라는 성과를 창출할 수 있었다. 덕키는 안드로이드 개발자로서 기술적인 성장을 크게 도와준 프로젝트였다.

위에서 언급한 프로젝트 이외에도 다양한 대회, 프로젝트, 스터디 등을 진행했다. 하지만, 글이 지루해지는 감이 있어 다음에 기회가 된다면 이야기해 보도록 하겠다. 더 궁금하다면 언제든지 커피챗을 신청해도 좋다!

정말이지, 고등학교 3년 동안 개발에 매진하며 많은 것을 배웠다. 소중한 고등학교 친구과 선생님, 유능한 프로젝트 팀원들, 끝까지 나를 응원해준 모든 이들에게 감사하는 마음을 전하며 나의 고등학교 이야기를 마친다. 앞으로도 계속될 나의 여정을 지켜봐 달라! 다음 글에서는 취업 후 1년동안 느낌 점들을 이야기해보겠다.

--

--