개인 챌린지
첫 챌린지가 끝나고 브릿지를 거쳐 드디어 두 번째 챌린지가 시작되었다. C2는 C1과 달리 개인 챌린지로, 베이직 스킬을 학습하는 과정이다. C1에서는 개발을 할 기회가 없어서 아쉬움이 남았지만, C2에서는 드디어 앱을 개발할 수 있다는 생각에 설렘을 안고 챌린지를 맞이하게 되었다.
C2 목표
욕심내지 않기
SwiftUI, 디자인이 처음인 상태에서 화려한 결과물을 만드는 것보다는, 테크와 디자인 모두에서 기술적인 성장을 이룰 수 있는, 작지만 의미 있는 결과물을 만드는 것을 이번 C2 목표로 설정했다.
C2에서 이루고 싶은 것
나는 C2에서 이루고 싶은 목표를 분야별로 설정했다.
⚙️ Tech
1. 단방향 통신 구현
SwiftUI에서 MVVM을 사용해야 할지에 대해 고민을 굉장히 많이 했다. 주변 테크 러너들에게 "이번 C2에서 MVVM 사용하시나요?"라고 물어봤을 때 다들 "네! 당연하죠"라고 답했다. MVVM은 분명 많은 개발자들이 선호하는 아키텍처였지만, 나는 SwiftUI의 선언적 UI 패러다임에서 MVVM을 사용하는 것에 대한 의구심을 가지고 있었다.
여러 아키텍처 패턴을 조사하고 SwiftUI의 특성과 더 잘 맞는 방식이 무엇일지 고민한 결과, 단방향 통신을 구현해보기로 결정했다. 주변의 많은 러너들이 MVVM을 선택한 상황에서, 나는 이번 기회에 새로운 접근법을 시도해보는 것도 의미있는 경험이 될 것이라 판단했다. 그래서 단방향 통신을 개인적인 목표로 설정하고, 이를 바탕으로 앱을 구현하기로 했다.
2. ViewModel에 대해 다시 생각해보기
단방향 통신을 구현해야겠다고 결심한 것과 비슷한 맥락에서, ViewModel에 대해서도 다시 한 번 고민을 했다. SwiftUI에서 Binding을 지원하는데, 굳이 ViewModel을 사용해야 할까? SwiftUI에서 ViewModel은 그냥 파일을 하나 더 만드는 것이 아닐까?
3. SwiftData를 사용한 CRUD 구현
UIKit에서 CoreData와 Realm을 사용해 CRUD 기능을 구현해본 경험은 있었지만, SwiftUI에서 SwiftData를 사용한 CRUD 구현은 처음이었다. SwiftUI는 최신 프레임워크이고, 그에 따라 데이터 관리 방식도 많이 달라져서 SwiftData를 어떻게 활용할지 고민이 많았다. SwiftData가 어떻게 동작하는지, 그리고 그것이 SwiftUI와 어떻게 잘 통합될 수 있는지에 대한 이해가 필요했다.
4. SwiftUI에서 좋은 코드란 무엇인지 생각하고 적용하기
나는 항상 좋은 코드가 무엇인지 고민한다. 코드의 품질은 유지보수성, 가독성, 확장성 등을 고려한 결과물이어야 한다는 점에서 중요하다. 특시 SwiftUI에서의 좋은 코드는 선언적 UI를 기반으로 한 직관적인 코드 작성과, 데이터 흐름을 명확하게 유지하는 것이 핵심이라고 생각했다.
처음에는 SwiftUI에서 어떻게 좋은 코드를 작성할 수 있을지 고민했지만, 그 과정에서 ADA 코드 컨벤션이 있다는 것을 알게 되어 아카데미 코드 컨벤션을 최대한 지키는 것을 목표로 삼았다.
✏️ Design
1. 디자인 이론 학습하고 적용하기
디자인을 처음 접하면서, 디자인 이론에 대한 이해가 부족하다는 것을 느꼈다. 단순히 앱을 만들기 위해서는 기능적인 측면뿐만 아니라, 사용자가 어떻게 앱을 경험할지를 고려한 디자인이 중요하다는 것을 알게 되었다. 그래서 디자인 이론을 학습하는 것이 필요하다고 생각했다.
게슈탈트 디자인 이론, 무드 보드, 디자인 용어, 레이아웃 등 기본적인 디자인 이론을 배우고 이를 내 앱에 적용하는 것이, 단순한 미적 요소를 넘어서 사용자의 경험을 더 향상시킬 수 있다는 점에서 중요한 목표라고 여겼다. 좋은 디자인이란 사용자가 자연스럽게 앱을 사용할 수 있도록 돕는 것이기 때문에, 이 이론들을 체계적으로 배우고 실제로 적용해보는 것이 중요한 학습 목표가 되었다.
2. 디자인 툴 사용하기
디자인 툴을 사용하는 것은 내게 새로운 도전이었다. 그동안 코드 작성은 많이 해왔지만, 디자인 툴을 제대로 다뤄본 경험은 부족했다. 그래서 디자인 툴 사용을 목표로 삼은 이유는, 앱을 개발하면서 UI/UX를 구체적으로 설계하고 시각적으로 표현하는 능력을 키우고 싶었기 때문이다.
툴을 사용하면 아이디어를 시각화하고, 프로토타입을 빠르게 만들 수 있으며, 팀원들과 협업할 때 피드백을 주고받는 데에도 유용하다. 또한, 좋은 디자인을 구현하기 위해서는 디자인 툴을 능숙하게 다루는 것이 필수적이라는 점에서 이 목표를 설정했다.
🙋🏻♂️ Personal goals
1. Tech만 집중하지 않고, Design에도 집중하기
나는 아무래도 개발자이기 때문에 자연스럽게 Tech에만 몰두할 것 같다는 우려가 있었다. 그래서 디자인에도 집중하는 것을 목표로 삼았다.
2. AI 사용을 최소화하기
AI가 코드 작성을 도와준다는 점에서 편리하지만, 가끔 "AI 때문에 개발자가 없어지지 않을까요?"라는 말을 들을 때마다 자존심이 상했다. 개인적으로 AI는 코드를 짜주는 기계가 아니라 학습을 돕는 도구로 봐야 한다고 생각한다.
C2에서 기술적 성장을 이루려면, AI에 의존하기보다는 내가 스스로 문제를 해결하고, 깊이 있는 지식을 쌓는 과정이 필요하다. AI를 적절히 활용하는 것은 좋지만, 내 자존심과 성장에 대한 욕심으로 AI 사용을 최소화하는 것을 목표로 했다.
내가 만들 앱은?
C2는 솔루션 컨셉 + 베이직 스킬을 바탕으로 개인 앱을 개발하는 챌린지이다. 처음에는 C1에서 진행한 우리 팀 솔루션 컨셉인 '관심 릴레이북'을 선택했지만, 챌린지 기간과 학습 상태 등을 고려하여 주제를 '오실완'으로 변경하기로 했다.
내가 개발한 앱은 Sticky라는 앱이다. 이 앱은 사용자가 자신의 실수나 실패를 웃음으로 승화시킬 수 있도록 돕는 간단한 앱이다. 실패나 실수를 너무 심각하게 받아들이지 않고, 그 순간을 유머로 풀어내고 기록하는 것이 핵심 기능이다.
디자인은 어려워
앱을 개발하기 위해 처음에는 간단하게 Feature List와 와이어 프레임을 작성해야 했다. Feature List는 그동안 많이 작성해본 경험이 있어 큰 어려움 없이 진행할 수 있었다. 하지만 와이어 프레임을 작성하고 Hi-fi 디자인을 제작하는 과정에서는 많은 어려움이 있었다.
먼저, 나는 디자인에 대해 아는 것이 전혀 없었다. 무드보드가 무엇인지, Lo-fi와 Hi-fi가 무엇인지, HIG(Human Interface Guidelines)가 무엇인지, 게슈탈트 디자인 이론이 무엇인지 모두 처음 접하는 개념들이었다. 이 모든 것이 낯설어서 처음에는 혼란스러웠다.
다행히도 세션 시간에 디자인 GA 시간이 마련되어 있었고, 그 덕분에 기본적인 디자인 이론과 용어들을 어느 정도 이해할 수 있었다. 하지만 완벽하게 이해하기까지는 시간이 좀 더 필요했다. 와이어 프레임과 Hi-fi 디자인을 만드는 과정에서 그 이해도가 조금씩 쌓였지만, 여전히 디자인 툴을 다루는 데 있어 미숙함이 있었고, 화면을 구성하는 데 있어서 더 많은 고민이 필요했다. 디자인 경험이 부족한 상황에서 Hi-fi 디자인을 만들기 위한 과정은 예상보다 길고 복잡했다.
이번 C2에서 가장 재밌었던 경험은 앱에 사용할 스티커를 내가 직접 그린 것이었다. 마침 아이패드와 애플펜슬이 있었고, 어도비 프레스코를 활용해서 그림을 그려보기로 했다.
어도비 프레스코는 처음 사용하는 툴이라, 브러쉬 설정이나 기본적인 설정 방법을 몰랐다. 그래서 주변에 있는 디자인 러너들에게 도움을 받아 설정을 마친 후, 본격적으로 그림을 그리기 시작했다. 주말에 메인랩에서 시간을 가는 줄 모르고 그림을 그리며, 점차 툴에 익숙해지고, 나만의 스티커를 디자인하는 재미에 빠져들었다.
+ 친한 러너가 "iL 밑에 사진 깔고 라인 드로잉 하면 되잖아요, 그걸 왜 보고 따라 그리세요?"라고 말했을 때, 정말 충격이었다. 내가 그림을 보면서 따라 그린 이유는, 정말 그 방법을 몰랐기 때문이다. 🥲
코드 리뷰 스터디
나는 개인적으로 가장 빠르게 성장할 수 있는 방법이 코드 리뷰라고 생각한다. 다른 사람의 코드를 보고 배우고, 서로 피드백을 주고받으며 지식을 얻어가는 과정에서 더 많은 것을 깨닫게 되기 때문이다. 코드 리뷰를 통해 잘못된 점을 고치고, 더 좋은 방식으로 코드를 작성하는 방법을 배우면서, 점점 더 딥다이브하게 되는 느낌을 받았다.
마침, 라마가 나에게 코드 리뷰 스터디를 같이 하자고 제안해 주었고, 이번 C2에서는 코드 리뷰 스터디를 시작하게 되었다. 서로의 코드를 리뷰하면서 더 나은 방법을 고민하고, 실제로 다른 사람의 관점에서 문제를 바라보게 되면서 많은 것을 배울 수 있었다.
그래서 목표는 달성했어?
이번 C2에서 설정한 Tech, Design, 그리고 Personal 목표들을 돌아보면, 어느 정도 잘 지켰다고 생각한다. 각각의 목표를 달성하기 위해 고민하고 실행한 과정을 되짚어보면, 처음에 세운 계획들이 실제로 내 성장에 큰 도움이 되었음을 느낀다.
먼저, Tech 분야에서 목표한 단방향 통신 구현, SwiftData를 이용한 CRUD 구현, 그리고 좋은 코드 작성은 어느 정도 달성했다. MVVM 아키텍처를 사용하는 대신, 단방향 통신을 선택하면서 새로운 접근 방식을 시도했고, 이를 통해 SwiftUI의 특성에 맞는 더 깔끔한 코드 작성 방법을 배웠다. SwiftData를 활용해 CRUD 기능을 구현하면서는 새로운 프레임워크에 대한 이해도를 높였고, 그 과정에서 좋은 코드가 무엇인지 계속 고민하며 코드 품질을 개선해나갈 수 있었다.
디자인에도 신경을 썼다. 처음에는 디자인 이론에 대해 잘 알지 못했지만, 게슈탈트 디자인 이론이나 무드 보드 등을 학습하면서 디자인의 중요성을 깊이 이해하게 되었다. 이를 바탕으로 앱에 실용적인 디자인을 적용할 수 있었고, 디자인 툴 사용 경험을 쌓으며 UI/UX 설계를 더 구체적으로 진행할 수 있었다. 이러한 경험들은 단순히 미적 요소를 넘어, 사용자 경험을 고려한 디자인이 얼마나 중요한지 깨닫게 해주었다.
마지막으로, Personal 목표인 Tech와 Design을 모두 고르게 신경 쓰기와 AI 사용 최소화는 특히 중요하게 생각했던 부분이다. AI를 적절히 활용하면서도, AI에 의존하지 않고 스스로 문제를 해결하려고 노력했다. 이 과정에서 더 많은 문제 해결 능력을 기를 수 있었고, 디자인에도 집중할 수 있는 기회를 만들었다. 개발만큼 중요한 디자인을 간과하지 않으려 노력했고, 그 덕분에 테크와 디자인을 균형 있게 발전시킬 수 있었다.
결론적으로, 이번 C2에서 내가 설정한 목표를 어느 정도 달성했다고 생각한다. 비록 완벽하게 모든 목표를 이룬 것은 아니지만, 그 과정에서 배운 점들이 나의 성장에 크게 기여했다고 느낀다. C2를 통해 얻은 경험과 지식을 바탕으로, 앞으로 더 나은 개발자가 될 수 있을 것 같다.
iL 한번 내보자
내가 아카데미에서 가장 얻어가고 싶은 것 중 하나가 바로 프레젠테이션 스킬이다. 사실 많은 사람들 앞에서 말하는 것은 그렇게 긴장되지 않지만, 내가 전하고자 하는 의도를 명확히 전달하는 것에는 어려움이 있다. 생각은 머릿속에 정리가 되어 있어도, 말로 풀어내는 데 있어서 미흡함을 느꼈다.
이번 챌린지의 마무리는 개인 프레젠테이션이었다. 그동안 많이 고민했었고, 준비하면서 어떻게 하면 더 효과적으로 내 생각을 전달할 수 있을지 고민했다. 발표를 준비하는 동안 조금씩 자신감도 생겼고, 말하는 방식이나 흐름을 더 신경 쓸 수 있었다. 결과적으로 발표를 마친 후, 내가 전달하고자 했던 메시지가 명확하게 전달된 것 같아서 만족스러웠다.
이번 프레젠테이션을 통해, 내가 말하고자 하는 바를 더 잘 표현할 수 있는 방법을 조금씩 익혔다는 생각이 든다. 앞으로도 계속해서 이 부분을 발전시키고, 자신감을 가지고 더 나은 발표를 할 수 있도록 노력해야겠다.
Care & Support
이번 C2를 하면서 아카데미의 문화 Care & Support의 진정성을 정말 많이 느꼈다. 아카데미에서는 경쟁자가 아니라 동료로 함께 성장해 나가는 분위기가 확실히 존재했다. 디자인에 대한 스킬이 부족했던 나는 디자인 멘토와 디자인 러너들에게 정말 많은 도움을 받았다. 다들 바쁠 텐데, 언제나 선뜻 다가와서 알려주고, 본인이 잘 모르는 분야가 있으면 공부해가며 도와주는 모습에 깊은 감명을 받았다.
나 역시 테크 스킬이 부족한 러너들에게 최대한 내 지식을 전달하려고 노력했다. 우리는 경쟁자가 아니라 같이 성장해나가는 동료니까, 그저 그 이유였다.
이 과정에서 나는 누군가를 돕기 위해 더 깊이 공부하고 교차검증을 하는 과정을 거치며 나도 많은 성장을 할 수 있었다. 다른 사람에게 가르칠 때, 자신도 더 명확히 이해하게 되고, 그만큼 자신의 실력을 다듬을 수 있다는 것을 실감했다.
이러한 상호 지원과 피드백의 문화가 아카데미를 특별하게 만든다고 느꼈고, 앞으로도 계속해서 이런 문화를 이어가며 함께 성장하는 동료들이 있다는 것에 감사하게 생각한다.
+ 나의 페어 무민 최고였어요! 무민이 페어여서 정말 행복했어요 👍
Personal Mentor
🌼 Daisy
이번 브릿지 기간에는 퍼스널 멘토와 1:1 멘토링을 할 수 있는 세션이 있었다. 내 퍼스널 멘토는 비빔인간 데이지인데, 데이지의 꽃말 그대로 정말 사랑스러운(?) 멘토다. 🤣 사실 그동안 퍼스널 멘토와 깊이 있는 대화를 나눌 기회가 많지 않았는데, 이번에 대화를 나누면서 조금 더 가까워진 것 같다.
데이지와의 1:1 멘토링을 통해 정말 많은 인사이트를 얻었다. 디자인 감각을 어떻게 키울지에 대한 구체적인 조언부터, 다음 C3에서는 어떻게 접근해야 할지에 대한 방향성까지 명확하게 잡을 수 있었다. 특히 CBL을 어려워하는 나에게 CBL을 쉽게 이해시켜주고, 학습 방법에 대한 팁도 아낌없이 알려주셨다.
데이지는 언제나 우리 크루의 고민을 공감해주고, 구체적인 해결책을 제시해주며, 더 나아가 우리 크루끼리의 친목을 위해 항상 노력하는 최고의 퍼스널 멘토다. 데이지의 조언과 따뜻한 배려 덕분에 이번 브릿지 기간에 큰 힘을 얻을 수 있었다. 데이지와 함께 성장하는 과정이 정말 감사하고, 앞으로도 더 많은 배움과 성장을 경험할 수 있다는 생각에 기대가 된다. 훌륭한 멘토와 함께라서 정말 행운이라고 느낀다.
+ 데이지가 연휴에 숙제 3개 내줬어요 😠
마무리
벌써 C2가 끝나고 브릿지 기간에 접어들었다. 이번 C2에서 Tech, Design, 그리고 Personal 목표들을 차근차근 달성하며 많이 성장할 수 있었다. 단방향 통신 구현, 디자인 이론 학습, 그리고 프레젠테이션 스킬까지 다방면에서 발전을 이룬 것 같다.
이제 브릿지 기간 동안 충분히 쉬고, 다가오는 C3를 준비할 수 있는 여유를 가질 생각이다. C3에서는 새로운 목표와 도전이 기다리고 있을 테니, 이 시간을 잘 활용해 다음 단계로 나아갈 준비를 하겠다.
'애플 디벨로퍼 아카데미' 카테고리의 다른 글
[애플디벨로퍼아카데미] Challenge 1 (0) | 2025.03.30 |
---|---|
[애플디벨로퍼아카데미] Prelude (2) | 2025.03.17 |
[애플디벨로퍼아카데미] D-7 (0) | 2025.03.05 |
[ADA🍎] 2025 애플 디벨로퍼 아카데미 4기 상반기 모집 최종 합격 후기 (테크) (17) | 2024.08.09 |