2023 Mobile Application Developer’s Conference (MADC) 후기 + 이런 저런 생각
Jetpack Compose, Swift UI, Flutter 등 선언형 UI라는 공통점을 바탕으로 모바일 개발자들이 한 곳에 모였습니다. 후기 겸 행사에 다녀온 뒤 든 이런 저런 생각을 공유합니다.
![2023 Mobile Application Developer’s Conference (MADC) 후기 + 이런 저런 생각](/content/images/size/w1200/format/webp/2024/04/1-bviqbg11bjxciifgcodaga.png)
Jetpack Compose, Swift UI, Flutter 등 선언형 UI라는 공통점을 바탕으로 모바일 개발자들이 한 곳에 모였습니다. 후기 겸 행사에 다녀온 뒤 든 이런 저런 생각을 공유합니다.
2023년 12월 첫 주말 건국대학교 학생회관에서 열린 Mobile Application Developer’s Conference (이하 MADC) 행사에 다녀왔다. MADC는 올해 처음 열리는 행사로, 키노트를 통해 행사가 열리게된 계기와 취지에 대해 설명을 들을 수 있었다.
![](https://kmpedia.dev/content/images/2024/04/1-ugt0sktj-zg_lzrxmhyx6g-jpeg.jpg)
Jetpack Compose, Swift UI, Flutter 등 선언형 UI라는 공통점으로 많은 부분이 닮아있는데 ‘각 개발자들이 모여서 이야기 나눠보는 행사 어떨까’라는 생각으로 시작이 되었다고 한다.
개인적으로도 비슷한 부분이 많다고 느껴진 경험을 소개해보자면, Jetpack Compose가 없던 시절 Flutter를 튜토리얼 정도만 찍먹한 적이 있었다. 튜토리얼 시 처음 접하는 개념이 StatefulWidget
, StatelessWidget
인데 당시엔 샘플을 돌려봤을 뿐 그런 사소한 키워드들의 설명이 크게 의미가 와닿지 않았다. 그런데 나중에 접하게 된 Jetpack Compose에서 Composable에 대해 설명할 때도 Stateful
, Stateless
라는 키워드가 사용되었고 어렵진 않지만 아주 중요한 개념에 대해 쉽고 익숙하게 이해할 수 있었다.
또한 간단한 iOS task를 수행할 일이 있었는데 그 때 접한 Swift UI에서 modifier를 chain하여 쓰는 패턴도 Compose의 modifier와 닮아있어 자연스럽게 사용할 수 있었다. (언어 자체의 문법이 익숙치 않은 부분은 눈치껏 코드들을 읽어보면서 사용…)
모바일 뿐만 아니라 프론트엔드 개발 경험도 도움을 주었는데, 나는 이전에 vue.js를 이용한 프론트엔드 개발을 했었다. vue.js의 한글 문서 기준 ‘선언적 렌더링’ 이라는 키워드가 나오는데, 큰틀에서 모바일의 ‘선언형 UI’와 다를 게 없었다. vue.js를 써봤던 경험은 후일 Jetpack Compose를 적용하는데도 큰 도움을 줬다.
![](https://kmpedia.dev/content/images/2024/04/1-snozjbumk47ln_pusatpka.png)
위는 세션 목록인데 행사의 모토에 맞는 내용들이 차례로 나와서 편하게 들을 수 있었다. 아는 내용이든 잘 모르는 내용이든 ‘그렇구나…’하면서 고개 끄덕이면서 들었다.
중간에 같은 기능을 하는 TODO 앱을 각자의 방법으로 구현하여 여러 개념들과 엮어 발표했는데 이 행사에 아주 잘 맞는 방식이었다고 생각한다. 아래는 코드들을 볼 수 있는 github 링크이다.
Github — Mobile App Developer Conference (링크)
Compose 관련 발표들은 많은 공감을 하며 재밌게 들을 수 있었다.
나의 Compose 적용 썰을 살짝 풀어보자면… Compose 1.0 stable 발표였던 2021년 7월 무렵 Compose를 프로덕션 앱에 100% 적용했다. 과감했던 선택으로 효용을 챙기고 목표를 이뤘지만 오직 Compose라 생긴 문제도 많이 있었다.
힘든 일도 많았지만 어떤 새로운 기술의 등장부터 deep하게 빠져들었던 것은 좋은 경험이었다. 당시엔 Compose를 국내에서 사용하는 레퍼런스가 없다보니 Google Issue Tracker나 Android Source Code를 뒤적이며 개발했던게 많은 도움이 되었다. 문제가 해결되는 과정을 commit의 변경사항, 코드리뷰 등으로 살펴보며 얻는 것이 많았다. 문제가 발생한 원인과 그것을 해결한 방법, 재발 방지를 위한 테스트 코드 등 꽤 볼 것이 많았다. 그렇게 alpha 버전을 1개 올릴때마다 문제가 하나씩 해결되는 것을 보며 생생한 신기술 개발의 현장에 있다는 느낌이 좋았다.
그런 측면에서 사실 이번 행사가 끝나고 KMP(Kotlin MultiPlatform)가 마음 속에 들어왔다. 이번 행사에서 KMP는 깍두기이자 레퍼런스, 일자리 등등 아무것도 없는 불모지 밈으로 쓰였지만 새로운 기술이 발전되는 과정에 적극 참여해본다면 얻는 것이 있을 것이다. (물론 밥벌이는 딴 것으로 마련해야…😂)
미지란 개척하기 위해 있는 것 — Kimin Ryu
말은 이렇게 하지만 multiplatform 개발을 위해선 iOS든 데스크탑이든 다른 플랫폼에 대해 학습해야하고, 그 리소스가 정말 없다보니 막막한 게 현실이다🥲
![](https://kmpedia.dev/content/images/2024/04/1-kxxn_jfak6t--qoe2znocg-jpeg.jpg)
세션 2 파트 1은 안드로이드 네이티브, iOS 네이티브, 플러터, KMP 대변인들이 나와 서로를 디스하며 각자의 장단점을 잘 드러냈다. (정말 즐겁게 들었다 ㅋㅋ)
이 세션에선 사용 중인 기기(안드로이드 or 아이폰)에 대한 내용도 있었는데 개인적인 생각을 좀 보태보자면, 좋은 개발자가 되기 위해서는 자신이 개발하는 플랫폼에 맞는 기기를 우선적으로 써야 한다고 생각한다. 이유는 아래와 같다:
- 플랫폼에 대한 이해 —플랫폼에 대한 이해는 문서로만 할 수 없다. 실제 사용자가 되어 체험을 해봐야 플랫폼에 대한 이해를 높이고, 그 플랫폼을 사용하는 사용자의 경험에 대한 이해도 높아진다. 그저 에뮬레이터, 근무시간에 잠깐 테스트 기기를 쓰는 경험 정도로는 부족할 것이라 확신한다.
- 사용자와 같은 환경 — 이젠 해결되었지만 삼성키보드에서 한글 입력에 문제가 있어서 급히 수정을 했던 경험이 있다. 이 문제를 일찍 발견하지 못한 이유는 모두가 에뮬레이터를 주로 사용했기 때문이다. (픽셀의 G Board에서는 발생X)
또한, 안드로이드는 갤럭시 A시리즈 및 중국산 태블릿 등 저사양 기기들이 많이 보급되어있어 종종 ‘앱이 너무 느리다, 끊긴다’ 이런 피드백이 들어온다. '̶Y̶o̶u̶T̶u̶b̶e̶도̶ ̶스̶크̶롤̶ ̶버̶벅̶이̶는̶데̶요̶?̶'̶라̶며̶ ̶저̶사̶양̶ ̶기̶기̶ ̶탓̶을̶ ̶할̶ ̶수̶도̶ ̶있̶었̶지̶만̶ , 저사양 기기를 구입해 사용 해보며 어느 정도 개선을 할 수 있었다. 이땐 프레임 드랍률 같은 숫자는 참고만 하고 실제 사용성을 눈으로 확인하는게 더 유효했다. 이렇게 다양한 사용자들의 환경에 스스로를 놓아보고 개선하고자 노력하는 과정에서 배우는 것이 많았다. - 자신이 만든 앱에 대한 접근성 — Out of Sight, Out of Mind라는 말이 있듯이 실제 자신이 만든 앱을 자주 사용하지 않는다면 사소한 버그나 개선 요소들을 발견할 기회가 없는 것이다. 자신이 고객이 되어 자신의 제품을 사용할 때 더 좋은 제품을 만들 수 있는 것은 너무 자명하다고 생각한다.
‘안드로이드 개발자면 아이폰이지~’ 라는 밈이 있을 정도로 아이폰을 참 많이 쓰신다. 강하게 주장을 써두었지만 결국 내가 전하고 싶은 것은 앱을 사용하는 실제 사용자 경험에 얼마나 관심이 있냐는 것이다. 안드로이드 개발자이신 필주님이 아이폰을 사용하게 된 계기에 대해 농담반 진담반으로 ‘iOS의 좋은 것을 배워 안드로이드 개발에 적용해보고 싶어서’라고 말씀해주셨는데 같은 맥락이라 생각한다.
![](https://kmpedia.dev/content/images/2024/04/1-hgijua4hjzr1qnzmcbr0ng-jpeg.jpg)
세션 3의 part 1은 주니어, part 2는 시니어 개발자들을 모시고 토크쇼가 진행되었다.
part 1은 주니어들을 대상으로 한 토크쇼였는데 이런 저런 다양한 이야기를 들을 수 있어서 좋았던 것 같다. 짜임새도 너무 좋았고, 사회자 분의 진행 능력이 출중하셔서 즐겁게 들을 수 있었다.
part 2는 시니어 개발자 분들의 인사이트를 들을 수 있었다. 코드팩토리, skydoves, 김정님 모두 각자의 영역에서 많은 개발자들에게 좋은 영향을 주시는 분들이셔서 너무 좋은 이야기들을 들을 수 있었다. 막바지에 ‘왜 우린 이런 거 없냐’ 자조하시는 15년차 기획자? 디자이너?가 무대로 즉석 섭외되어 한탄하시는 것도 유쾌했다😄
행사를 열자고 마음이 모인 것이 8월 말이었다고 하는데, 다양한 커뮤니티의 경력직(?)분들이 기여해주셔서 이렇게 짧은 시간 내 완성도 높은 행사가 진행될 수 있었던 것 같다. 행사 전날 현장 일손이 더 필요하다하여 감사하게도 스태프로 참여할 수 있었다. 짧은 시간이었지만 내가 기여할 수 있는 부분들을 찾아 힘을 보탰다.
컨퍼런스의 좋은 점 중 하나는 동기부여가 된다는 것이다. 경험상 이런 동기부여는 한 2주 정도 지속되는데 마음 속 불씨가 사그러들기 전 실행에 옮기는 것을 추천한다. 내년 행사는 어떤 컨셉일지 모르겠지만, 개인적으론 이 컨퍼런스의 스피커로 서보고 싶다는 목표가 생겼다. MADC가 내년 뿐만 아니라 쭉쭉 이어나가는 행사가 되길 바라며 후기 + 잡생각 글을 마친다.
![](https://kmpedia.dev/content/images/2024/04/1-dcjbz4vpia1ge3llivgghg-jpeg.jpg)