Apple Developer Academy @ POSTECH

[회고] Apple Developer Academy @ POSTECH 3기 30주차 회고

Xerath(제라스) 2024. 10. 1. 23:48
728x90
반응형

서론

안녕하세요. 개발자 제라스입니다~!👋🏻 🤖 👋🏻

 

벌써 회고를 주기적으로 시작한지 30주차가 되었네요...!

감회가 새롭고 막...벅차오르고 막...흑흑...

이러진 않구요,

뭐 그냥저냥 똑같습니다 예...ㅋㅋㅋㅋㅋㅋ

 

다만, 그래도 뭔가 꾸준히 해왔다는 것에 늘 만족하고,

한 주씩 정리하면서 어떤 성장을 해왔는지 정리하다보니 아주 좋은 것 같습니다 ㅎㅎ

 

이번주는 매크로 프로젝트를 하면서 고민에 고민에 고민을 얹어서

하루하루 고민의 탑을 올라가던 느낌이었습니다.

(마치 초딩 때 메이플 오르비스 탑을 올라가는 듯한...허헣허)

오르비스 탑에 갇혀서 2달 넘게 아무것도 못하다 접었다는 슬픈 전설이 있어...

 

그리고 요즘 또 많이 보고 있는 App Intents와 ShazamKit...!

너무 재밌어서 WWDC 보고 정리하는 시간이 오래 걸려도 계속 공부하고 싶어지네요ㅎㅎㅎ

(공부하다보니 App Intents. 요놈 진짜 기대되긴 합니다...)

 

그럼 30주차 회고를 시작해보겠습니다~!!👶🏻👶🏻

우리가 신경쓸 건 아키텍쳐가 아니야(+ Apple Team Review) - Macro 4주차

이번주는 크게 두 사건이 저에겐 중요했습니다.

하나는 애플팀 리뷰고,

다른 하나는 프레임워크에, 아키텍쳐에 종속적이지 않은 개발을 하자는 토의였습니다.

 

애플팀 리뷰는 저번 '들랑날랑'이라는 MC2 프로젝트를 하면서 만났던 릴리와 진행을 하게 되었어요...!(갓...릴리)

우리의 "유튜브 플레이리스트를 Apple Music 재생목록으로 커스텀하는 걸 도와준다"는 기획을 너무 좋게 봐주셨고,

그 중 우리가 놓치고 갈 뻔했던 Apple Music에서의 재생목록 편집방식보다 나은 기획에 대한 부분을 짚어주셨습니다.

그리고 외국에서 사용하는 SongShift라는 어플에 대한 앱 분석에 대해서도 말씀을 해주셔서 너무 유익 그 자체...!

인도네시아 멘토 '릴리'의 한국 방문 리뷰.

 

새로운 제안을 강하게 해주시거나 우리의 기획을 흔들어 놓는 리뷰 멘토들도 계시다고 들었는데,

갓릴리...말 나올 정도로 기획의 과정을 모두 살펴보면서도,

수정보단 더 나아갈 방향을 제시해주셨습니다.👍🏻👍🏻👍🏻

 

이 덕분에 팀 내 UX 리서치 과정도 제대로 짚어둘 기회를 만들 수 있었고,

앞으로 팀 동료 '길래'가 맡을 UX 리서치로 디자인에서의 개선을 기대할 수 있게 되었습니다 ㅎㅎㅎ

(분석의 대가, 강길래 화이팅~~~!!)

 

이렇게 Apple Review까지 끝나고 난 뒤엔 저희 팀은 Iteration 설정을 명확히 했어요!

이제 개발과 디자인이 들어갈 시점인데,

다같이 이번 Iteration1에서 구현할 부분을 제대로 Align하지 않았었기 때문쓰...!

 

그래서 가장 먼저, CBL의 기획 과정에서 가장 마지막에 늘 존재하는 'App Statement'를 다음과 같이 정했습니다.

유튜브 영상 플레이리스트에서 원하는 노래를 추출해
빠르고 간편하게 사용자 맞춤형 플레이리스트를 만들어주는 앱

 

이렇게 App Statement를 정하고 나선 제가 전 날 정리해둔 1차/ 2,3차 Iteration들을 토대로

추가적인 구현을 적어보았습니다!

1차 / 2,3차 Iteration 정리

이렇게 하고나니 저희가 이전부터 정해둔 10/11(= 1차 Iteration 완료 날짜)까지 어떤 것들을 할지 명확해졌습니다~!!

 

 

그 후엔 다같이 SwiftLint 목록을 정하기두 했구,

Git에서의 협업 방식(git flow 방식 커스텀, Issue, PR template 설정 등)도 다같이 맞추었습니다.

 

그리고 가장 중요한 기술스택(with Architecture) 선정과 그로 인한 Foldering 구성요소.

 

이거를 가지고 저희는 단방향 아키텍쳐에 대한 학습을 해보고자 UIKit + RxSwift + ReactorKit을 선택했습니다.

엥??? 갑자기?

 

네... 이게 사실은 많은 토론도 했고, 어느정도 다같이 의견 공유를 통해 의견을 맞춘 결과였습니다.

지금 보면 그저 학습한 것들을 적용하고 싶은 욕망의 항아리에 불과하지 않았나 싶은 결과...!

 

근데...!!!

저희 팀은 그걸 다시 뒤집어버렸습니다..!

 

사실 저는 이번 프로젝트를 하면서 많은 기술적 도전도 도전이지만,

아키텍쳐를 잘 써보는 과정을 거쳐보려고 했어요~

4명이라는 개발 팀원과의 협업에서 중요한 것은 협업방식이라는 생각을 했기 때문에요!

 

아니 그럼 왜 UIKit이냐?

그러게요 ㅋㅋㅋㅋㅋㅋㅋ

는 아니고,

팀 내 개발 회의 중 단방향 아키텍쳐를 SwiftUI에서 TCA를 활용하는 것보단

UIKit에서 경험을 하는게 더 이상적이라는 의견으로 생각이 모아졌기 때문입니다.

 

근데...! 그러다가 큰 전환점을 지난주 금요일에 맞이하게 됩니다.

팀원들과 회의들이 끝나고 잠시 통집에 맥주 한잔하러 갔다가 재작년 1기 러너인 '코인'을 만났습니다.

작년 12월에 우연히 네부캠 동료 분 찬스로 1기 알럼나이 행사에 갔을 때 알게 되었던 분이죠...!!

 

그래서 잠시 시간을 내어 같이 한 잔하며 이런저런 얘기들을 하게 되었는데,

1. 제가 너무 이유없이 프레임워크를 선택하고, 아키텍쳐들을 선택하려 했다는 점

2. 그것이 지금 중요한 걸까? 사실은 다른 부분(ex. 트러블 슈팅)이 프로젝트를 하며 더 중요하다는 점.

3. 프레임워크에 종속적이지 않은 개발자가 되어야 한다는 조언

등등을 얘기해주셨습니다.

 

지금까지 저는 프로젝트를 여러번 해오면서 아키텍쳐에 대한 고민을 늘 해보고 있었습니다.

다만, '그것이 과연 중요할까?'

특히, '협업이긴 하지만 이 정도 작은 규모의 프로젝트를 하면서 그것에 집중하기보단 다른 성장거리가 많지 않을까?'

이런 생각들을 잊고 진행하게 되었던 것 같습니다.

 

'협업 == 아키텍쳐' 라는 말보단

'프로젝트 == 성장' 이란 말이 더 중요하다고 생각하기에

많은 고민을 끝으로 지난주 일요일 저녁 팀원들을 불러모아 함께 얘기들을 나누게 되었습니다.

그 과정에서 개발 속도를 높이고 예쁘고 아기자기한 패션 개발이 아닌 정말 깊은 트러블 슈팅을 해보고,

그 속에서 깨지고 부서지면서 배워보고자 했습니다.

 

너무나도 팀원들이 고맙게도 제 생각에 인게이지되어 주었고,

그 과정에서 이번 매크로 프로젝트에서 우리의 성장과 트러블 슈팅,

그리고 ChatGPT에 안 나올 법한 영역들을 포기하지 말고 해내보자는 우스갯소리도 나누었습니다 ㅋㅋㅋㅋㅋㅋ

 

그 후 우리팀의 UseCase를 기반으로 Iteration1에서 해야할 부분들을 다음과 같이 정해보았습니다.

Iteration의 가장 핵심은 Converting하는 과정이다.

 

지금은 너무 만족스러운 개발을 하고 있습니다.

App Intents도, ShazamKit도 WWDC를 보면서 새로운 영역을 알아가는 느낌이 들어요😄😄

덕분에 요새는 재밌게 학습하면서 적용을 해보는 시간들을 보내고 있습니다 ㅎㅎ

App Intents와 ShazamKit

이 친구들 얘기를 더 해보자면, 최근 WWDC 스터디에서도 그렇고, Macro 개발을 하면서도 그렇고

App Intents가 적용이 될 수 있는 부분들이 많이 보입니다.

사실 최근에는 Control Center가 커스텀이 가능해지면서 그 쓰임새가 커졌고,

Apple Intelligence가 나오면서 Shortcut, Spotlight 등의 기능들에서

그 가치가 높아질 것이라고 기대를 하고 있거든요.

 

그래서 요즘 한창 이 App Intents를 파보는 중입니다.

앞으로 어떻게 적용될지 모르겠지만 WWDC에서의 표현인 '마찰(앱과 앱간의 전환의 복잡도)을 줄여준다'는 점을 생각하면

앞으로 앱들에서 다방면으로 쓸모가 생기지 않을까 하는 생각이 듭니다.

 

ShazamKit은 사실 이번 Macro 프로젝트에서 사용하려고 학습 중이에요.

근데, 막 Catalog, Signature 이런 것들을 알게 되니 너무 신기하더라구요 ㅋㅋㅋㅋㅋ

ShazamKit이 돌아가는 것이 단순히 소리를 쭉 비교하는게 아니라

어떤 노래에 대한 Signature들을 가진 Catalog와 비교해서(Signature가 크기를 1/10까지 줄여준다고 하니...ㄷㄷㄷ)

노래를 찾아낸다는 사실이 너무 신기했습니다.

뭔 노랜지 알기도 힘든 Signature 소리를 Shazam에 딱 들려주니까 바로 찾아내는 것도 참 신기하더라구요 ㅋㅋㅋ

앞으로 ShazamKit도 배워두고 잘 써보다보면 재밌는 앱들을 많이 만들 수 있지 않을까요 ㅎㅎㅎ 

팀에서 어떤 구성원이 되는 것이 좋을까?

이번주 제 머릿속을 떠돌아다니면서 밥 먹으면서, 혼자 걸으면서, 자기 전..

고민을 툭툭 때리는 시간을 가지게 한 주범입니다 ㅎㅎ

어떤 팀원이 되어야 할까?

 

어릴 때 초딩 때를 생각해보면

조별 활동을 하라고 해서 팀 활동을 오래 하면 '착한 친구와 나쁜 친구'

딱 요죵도로 나눴잖아요 ㅋㅋㅋㅋㅋㅋㅋ

 

근데 이게 점점 대학생이 되고 어른이 되고 나니까

단편적으로 사람을 바라보지 않게 되고,

거기서 어떤 팀원으로서 역할을 하는게 가장 많은 팀원들에게 좋은 팀원일지 고민하게 되었어요.

 

의견을 잘 안내고 남의 결정만 따르면 팀이 한정된 결정들만 하게 되고,

너무 자기 주장이 강하기만 하면, 팀원들의 의지를 상실시키죠.

남의 생각을 너무 받아들이면 우유부단하다고 느껴지고,

너무 안 받아들이면 돌 같은 사람으로 느껴지면서 대화를 피하고 싶어지고...

 

이렇게 단순히 착하다, 나쁘다로 갈리던 시야가 많은 팀플 경험을 쌓아가면서 넓어지다보니

든 생각.

역량검사와 같은 선택지

이런 그림과 같은 선택지 + 그 정도에 있어서 어떤 곳에 내 가치관들을 두어야 가장 이상적인 팀원이 될 수 있을까?

마치 메이플스토리 스탯창처럼...

 

어떤 성향에 있어서는 어느 정도로 가지고 있어야 할까를 많이 고민해보았어요

근데 결론은 늘 '잘 주장하되 남의 것에 더 관심을 갖고, 작은 것들도 챙길 중 아는 착한 사람이 되자'로 종결 ㅎㅎㅎ

이외에도 내 경험을 자랑하며 강요하지 말 것, 팀에 많은 것을 기여할 것 등등 그 요소들을 생각해보았습니다.

사실 지금도 너무 좋은 팀원들을 만나서 함께 잘 맞춰나가고 배려 넘치는 팀 분위기가 형성되었는데,

앞으로는 더 세밀하게 챙기며 팀을 위하면서 배워나가보려구요~!!

다음 주의 나에게

다음주엔 이제 드디어 찐 개발이 한창일 시간입니다.

현재 ShazamKit을 적용 중인데 Youtube API를 갖다쓰기가...참...어렵네요...

영상 소유자가 아니면 음원이나 영상이 추출이 안되니 ㅠㅠㅠ

일단 이 부분을 조금 더 다른 방식으로라도 구현해보고,

기술적으로도 ffmpeg, yt-dl 등을 쓰든, 추가적인 기획 회의를 통해 다른 방식을 의논하든 결정을 해봐야겠습니다.

 

그리고 2달 전부터 픽스해두었던 팀 Medio의 MT가 수요일에 있습니다 ㅎㅎㅎ

하...벌써 그게 2달 전이라니 ㅋㅋㅋㅋㅋㅋㅋㅋ

시간이 미친 거 같아요...

너무 빨라...

 

암튼 이번주도 너무 알찼던 한 주였는데 31주차도 재밌고 가치있는 한 주를 보내면 좋겠습니다.

728x90
반응형