애플 디벨로퍼 아카데미/챌린지 회고

[애플디벨로퍼아카데미] Challenge 6

여성일 2025. 12. 30. 17:19
728x90
팀빌딩이 끝나다!

 C1부터 C4까지 거의 쉴 틈 없이 챌린지를 진행해왔다. 처음에는 힘들었지만(I인 나는 매번 기가 빨렸다..), 매번 새로운 주제와 방식으로 챌린지를 진행하다 보니 이제는 익숙해진 것 같다. 다행히도 C5는 개인 정비 시간으로 조금 쉬어가는 느낌으로 진행했다. 

 

 그동안의 챌린지는 개인 챌린지이거나, 아카데미에서 랜덤으로 팀원이 정해지는 방식이었다. 하지만 이번 C6는 달랐다. 처음으로 직접 팀 빌딩을 하는 방식이었고, 나는 내가 직접 팀을 구성하기로 했다.

 

 아카데미 생활을 하면서 같이 해보고 싶다고 생각했던 러너들이 있었다. 이번 기회에 같이 챌린지를 해보고 싶다는 생각이 들었고, 같이 하고 싶었던 러너들에게 바로 컨텍을 했다. 조금은 이슈가 있었지만, 우리 팀은 비교적(?) 빠르게 팀 빌딩을 마무리할 수 있었다.

 

우리 친해질 수 있을까

 팀 빌딩을 마무리하고, 뒤숭숭한 분위기와 어색함을 조금이라도 풀어보고자 브릿지 기간에 팀원들끼리 맛있는 것도 먹으러 가고, 카페도 다녀왔다. 우리 팀은 총 6명인데, 그중에 주니만 E였다. 그래서인지 서로 친해지기 전까지는 다들 말수가 거의 없었고, 어색한 공기가 계속 흘렀다.

 

 며칠 뒤에는 우리끼리 술자리를 한 번 더 가졌다. 이번에는 어떻게든 분위기를 살려보겠다는 다짐으로, 홍이랑 미리 이야깃거리도 준비해 갔는데 망했다. 지금도 팀원들이 놀린다...

 

 그런데 걱정과는 달리 챌린지를 본격적으로 진행하면서 금방 친해졌다. 물리적으로 계속 붙어있어서 그런가? 아무튼 팀원들 모두 이렇게까지 친해질 줄은 몰랐다고 한다! 

 

기획은 너무너무너무너무너무너무 어렵다

 기획 단계는 정말 많이 어려웠다. 아카데미 챌린지를 진행해오면서 매번 기획을 해왔지만, 이번 C6의 기획이 가장 힘들었다고 느껴진다. 지금 와서 되돌아보면, 마지막 챌린지라는 생각 때문에 결과물을 반드시 잘 만들어야 한다는 욕심이 컸던 것 같다. 괜히 볼륨이 커야 할 것 같고, 뭔가 더 있어 보이는 기획이어야 한다는 강박도 분명히 있었다.

 

 그 욕심과 강박 때문에 우리는 정말 많은 기획 회의를 했고, 그만큼 정말 많이 기획을 엎었다. 아이디어가 나왔다가도 조금만 고민해보면 부족해 보였고, 다시 처음으로 돌아가기를 반복했다. 거의 매일 야근의 연속이었고, 이 시기에 팀원들 모두가 많이 지쳐 있던 것 같다.

 

 기획 주제도 계속 바뀌었다. 아동미술에서 시작해 종이접기, 날씨까지 여러 방향을 거쳐 갔고, 고민 끝에 우리 팀은 '뉴스'를 대주제로 정하게 되었다.

 

BI Stop

 우리 팀은 빅아이디어(BI)에 대한 혐오가 생겼다... 매번 기획을 엎을 때마다 "찐막으로 새로운 BI 고?" .... 그래서인지 우리 팀은 어느 순간부터 BI라는 단어만 나와도 한숨부터 쉬게 되었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ...

 

 그 흐름 속에서 탄생한 우리 팀 이름이 바로  New BI Stop이었다. 이 팀명에는 두 가지 의미가 있는데, 첫 번째는 말 그대로 새로운 BI 그만! 이라는 뜻이고, 두 번째는 우리 팀의 주제가 뉴스인 만큼, 'New' BI 'S'top = News라는 뜻이다. 

 

 홍이 지었는데 생각보다 잘지었다.. 김윤홍 굿

 

我们去上海吧!

 챌린지를 진행하다가, 누군지는 정확히 기억나지 않지만 "여행 고?"라고 했다. 우리 팀원들은 그 말에 "고?" "고?" "고?" 하다가 상하이를 가게 되었다.

 

 챌린지 일정 때문에 흐지부지 해졌다가, 누군가 숙소를 알아보고 있고, 어느 순간부터는 비행기 표를 예매하고 있었다. 그리고 정말로 갔다! 我们去上海吧!

 

 다행히도 여행은 모든 게 완벽했다. 숙소도 좋았고, 밥도 맛있었고, 그냥 모든 순간이 완벽했고 재밌었다. 마지막 날에는 디즈니랜드를 갔다. 사실 크게 기대는 안 했는데, 내가 제일 재밌게 놀았다.

 

 트론이랑 렉스 레이서를 탔는데, 트론은 탈만했다. 근데 렉스 레이서는 진짜 기절할 뻔했다. 나랑 홍은 놀이기구를 잘 못 타서(이안도 잘 못타는 것 같은데 본인은 잘 탄다고 함) 타는 내내 정말 무서웠고, 하루종일 소리만 질렀던 것 같다.. 근데 주니랑 지나랑 지구는 우리 소리 지르는 것 보고 놀리기만 했다. 

 + 그리고 팅커벨인지, 백설공주 테마였는지는 정확히 기억나지 않지만 어쨌든 어트렉션을 탔는데, 롤러코스터였다. 나는 무서워서 안전바를 꽉 붙잡고 있었는데 지구가 갑자기 롤러코스터는 손 놓고 타야한다면서 내 손을 안전바에서 뽑아버렸다. 에혀 신지두

 + 주니가 쓰고 온 주디 모자가 어느 순간 내 머리에 씌워져있던데 왜일까? 

 + 상하이 가기 전 지구랑 전갈꼬치 내기해서 이겼는데, 상해에 전갈 안팔아서 결국 못맥임 까비

 + 일이안홍의 맨즈나잇 재밌었다..! 정말 많은 이야기가 오고갔다

 

환승연애 멈춰

 나 빼고 전부 환승연애 본다.. 원래 이안이랑 지나도 잘 안 보는 것 같았는데, 환스라이팅 당하더니 결국 나만 빼고 다 보게 됐다. 솔직히 가끔 쇼츠로 뜨는 건 재밌는데 그 정도인가 싶긴 하다. 그래도 환연 덕분에 주니 집에도 놀러갈 수 있었다~

 

탭탭 - TapTap

 더 쓸 이야기가 많지만, 이제는 본격적으로 프로젝트 이야기를 해보려고 한다. 우리 팀은 사파리 익스텐션을 활용한 뉴스 스크랩 앱을 개발했다. 처음 기획 단계에서부터 뉴스라는 대주제를 정했고, 실제로 구현할 방법을 고민하다가 사파리 익스텐션을 활용하는 아이디어가 나왔다. 

 

 솔직히 나는 처음에는 조금 회의적이었다. 사파리 익스텐션은 Swift가 아니라 JS와 CSS로 개발해야 했고, 우리가 원하는 기능을 과연 사파리 익스텐션으로 구현할 수 있을까 하는 의구심이 들었기 때문이다. '기술적으로 가능할까?'라는 생각이 계속 머릿속을 맴돌았다. 

 

 그래서 결국 기술 검증은 필수였다. 우리 개발팀은 사파리 익스텐션을 실제로 테스트하며 검증 작업을 진행했고, 여러 시행착오 끝에 결국 개발이 가능하다는 결론을 내렸다. (추석연휴 녹아버림)

 

1. 사파리 익스텐션 개발

JS와 CSS는 생소한 언어였다. 사파리 익스텐션을 개발해야 하는 데다, 동시에 네이티브 앱도 구현해야 했기 때문에, 공부를 하면서 개발하기에는 물리적인 시간이 부족하다고 판단했다. 그래서 우리는 AI를 활용한 바이브 코딩으로 사파리 익스텐션 개발을 진행했다.

 

 단순히 “A 기능을 구현해줘”라고 스크립트를 작성하는 것이 아니라, “A기능을 구현하려고 하는데, 이런 사용자 흐름을 만들고 싶고 이런 구조로 동작했으면 좋겠어. 같이 설계부터 해보자”라는 식으로 스크립트를 작성하여 개발을 진행했다. 이렇게 스크립트를 작성한 이유는 명확하다. AI가 만들어준 코드를 그대로 복사해 붙여넣는 방식은 단기적으로는 빠를 수 있지만, 시간이 지날수록 유지보수와 버그 대응이 어려워질 가능성이 높다고 판단했기 때문이다.

 

 특히 사파리 익스텐션처럼 iOS 앱과 웹 환경이 맞물리는 구조에서는, 전체 흐름을 이해하지 못한 채 코드만 가져다 쓰면 작은 수정 하나에도 큰 코스트가 들 수 있다고 판단했기 때문이다.

 

 하지만...! 이렇게 개발했음에도 불구하고 우려했던 일이 쇼케이스 일주일 전에 발생했다. 네이버 뉴스가 웹페이지 업데이트를 진행하면서, 사파리 익스텐션이 다루는 웹 요소들이 달라져버린 것이다. 초반에는 하나하나 대응하며 수정했지만, 이렇게 모든 웹사이트에 개별 대응하는 방식은 효율적이지 않다고 판단했다.

 

 그래서 현재는 한 번에 대응할 수 있는 구조로 리팩토링을 진행 중이다. TapTap 업데이트 많관부

 

2. 사파리 익스텐션과 네이티브 앱 간의 통신

사파리 익스텐션 데이터를 네이티브 앱으로 전달해야 하는 과정도 큰 도전이었다. 이를 위해 쉐어 익스텐션과 앱그룹을 활용했고, 데이터를 안전하게 전달할 수 있는 구조를 설계했다. 개발 초기에는 DB 구조 설계, 데이터 포맷과 전송 방식 때문에 여러 번 시도와 실패를 반복했지만, 팀원들과 논의하고 테스트를 통해 수정해가면서 결국 안정적으로 통신할 수 있게 되었다.

 

3. 디자이너와 개발자의 좋은 협업이란 뭘까..

 디자이너가 의도한 디자인을 최대한 구현하고 싶었지만, 기술적 제약이 많다 다 반영하기는 어려웠다. 이번 챌린지에서도 디자이너와 어떻게 하면 좋은 협업을 할 수 있을까에 대해 많은 고민을 했던 것 같다. 이번에는 디자이너가 바로 와닿을 수 있는 시각적/체감적 구현을 제공하는 방식으로 협업을 진행했다. 예를 들어, 디자이너가 햅틱 기능을 원했는데, 햅틱에도 세기가 다 다르다는 문제가 있었다. 그래서 나는 여러 개의 버튼을 만들어 각 햅틱 세기를 체험할 수 있는 간단한 테스트 앱을 제작했다. 덕분에 디자이너가 실제로 손으로 느끼면서 원하는 느낌을 바로 확인할 수 있었고, 개발 과정에서도 의도와 구현 사이의 간극을 줄일 수 있었다.

 

 기술적인 부분에 대해서 자세히 기록하고 싶지만, 이번 글은 챌린지 회고이기에 여기서는 다루지 않겠다. 기술적인 내용은 우리 테크 블로그에 상세히 기록하려고 하니 많관부!!

 

드디어 쇼케이스!

아카데미의 꽃, 드디어 쇼케이스를 진행했다. 정말 많이 준비했다. 지지주(지구지나주니)는 매일 디자인 수정, 쇼케이스 기획, 동선 설계, 부스 꾸미기까지 정말 고생이 많았다. 덕분에 부스 운영은 성공적이었다고 생각한다. 

 

 개인적으로 쇼케이스를 진행하면서 기술적으로 설명할 때가 가장 재미있었다. 방문객들이 개발 과정이나 구조에 대해 질문해 주시면, 티키타카하며 답변하는 과정 자체가 재밌었다. 개발자끼리 서로 이해하고 의견을 주고 받는 순간들이, 그동안의 고생을 보상해주는 느낌이었다.

 

 많은 피드백도 주셨다.

1. 문장 단위보다 원하는 부분을 하이라이팅 할 수 있으면 좋겠다.

2. 공유 기능이 있으면 좋겠다.

3. MacOS로 확장 가능하면 좋겠다

등 정말 다양한 의견을 주셨다. 그 외에도 PIP 온보딩, 쉐어 익스텐션, 사파리 익스텐션 등 앱 자체에 대한 긍적적인 피드백도 많이 받았다. 쇼케이스를 준비하며 힘든  순간도 많았지만, 결과물을 실제로 보여주고, 반응을 확인할 수 있었던 경험은 정말 최고였다!

 

+ 탭탭 유튜브 데뷔하다

2분 35초부터 탭탭!

 

무엇을 얻었나요?

1. 개발적으로 많은 성장을 이뤘다.

 이번 챌린지를 통해 TCA, Tuist, AppGroup, ShareExtension 등 이전에는 다뤄보지 못했던 기술들을 정말 많이 다뤄볼 수 있었다. 새로운 기술을 적용하면서 시행착오도 많고 아쉬운 점도 많았지만, 그 과정에서 얻은 경험이 굉장히 값졌다. 특히 TCA와 Tuist는 아직도 학습 중이고, 이해를 깊게 하기 위해 계속 공부하고 있다. 

 

개인적으로 아쉬운 점도 많았다. 우리가 TCA를 도입한 이유는 명확해야 한다고 생각했기 때문이다. 개인적으로 기술이나 아키텍처, 디자인 패턴은 타당한 이유가 있어야 의미가 있다고 생각한다. 처음 설계할 때, 단위 테스팅을 해보고 싶고, 단방향 통신의 장점을 경험하고 싶다는 학습적인 이유로 TCA를 선택했었다. 그 과정에서 개발팀 모두가 많은 고민을 했었다. '과연 짧은 시간 안에 단위 테스팅과 TCA 학습을 병행하면서 개발할 수 있을까?' 

 

 역시 예상했던 우려가 현실로 나타났다. 생각보다 TCA의 러닝 커브가 높았고, 데드라인 압박 때문에 재대로 된 단위 테스팅을 진행하지 못한 점이 아쉬웠다. 게다가 TCA 버전 업데이트로 많은 부분이 수정되면서, 공식 문서가 완전히 업데이트되지 않아서 레거시 코드와 최신 코드가 섞여 복잡한 구조가 되어버렸다.

 

 이러한 아쉬움은 나뿐만 아니라 개발팀 모두가 공유하는 부분이었고, 현재는 구조 개선과 단위 테스팅을 통한 리팩토링을 진행 중이다.

 

2. 개발 뿐만 아니라 기획 면에서도 많은 것을 배웠다.

 이번 챌린지는 모든 과정을 우리끼리 진행했기 때문에, 내/외부 QA나 유저 피드백을 직접 경험해볼 수 있었다. 또, 디자인 QA도 같이 진행하며 수정 사항을 반영하는 과정은 그동안 경험하지 못했던 부분이라 새로웠다. 사용자 경험과 기능 구현 사이의 균형, 실제 피드백을 바탕으로 한 수정 경험은 앞으로도 큰 도움이 될 것 같다.

 

3. 좋은 사람을 얻었다.

진부하지만, 정말 사실이다. 매번 챌린지를 진행할 때마다 좋은 사람들을 얻는다. 이번 팀도 예외가 아니었다. 홍, 이안, 지나, 주니, 지구와 함께하면서 서로 성장해나가는 과정은 정말 즐거웠다! 우리 팀만큼 많이 놀러간 팀도 없을듯.. ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아카데미 마지막 챌린지를 우리 팀과 마무리할 수 있어서 정말 행복했다. 

 

4. 좋은 프로젝트를 얻었다.

마지막으로, 좋은 프로젝트를 얻었다는 점이다. 탭탭은 아카데미가 끝난 후에도 계속 유지보수를 이어가기로 했다. 이번 챌린지에서 끝나는 것이 아니라, 앞으로도 발전시켜나갈 수 있다는 점이 기대가 된다.

 

부산 고?

 자.. 쇼케이스가 끝나고 "여행 고?" .. 바로 부산으로 갔다. 지나가 숙소를 찾았는데 진짜 너무너무너무너무 좋았다. 매번 느끼는 거지만 국내 여행지는 부산이 최고인 것 같다. 

 

 부산에서 방어를 먹었는데, 솔직히 무슨 맛인지는 잘 모르겠고, 막장이 맛있었다. 아마 막장 맛으로 먹는게 아닐까? 우리 팀원들이 참 착한게 방어를 못먹는 나를 위해 족발을 시켜줬다. 멋진 소녀소년들

 

 + 누가 내 팩을 훔쳐갔을까? 유력한 용의자는 이안 or 지나인데 누구냐

 + 꼬치의 달인으로 까불던 주니를 혼내줬다. 

빠이!

 C6는 정말 재밌고, 배운 것도 많은 챌린지였다. (아카데미에 와서 해외여행까지 갈 줄 누가 알았겠어..) 팀원들과 고민하고(저녁 메뉴 고민을 제일 많이 한듯), 개발하고, 쇼케이스 준비하고,  여행까지 다녀오면서 느낀 모든 순간들이 정말 소중하다. 앞으로도 이 팀원들과 즐겁고 의미 있는 경험을 계속 쌓아가고 싶다!