- 디자인패턴
- Apple
- Combine+UIKit
- TOSS
- Split View
- 야곰아카데미
- Accessibility
- Human Interface Guidelines
- GOF
- HIG
- 애플
- DiffableDataSource
- IOS
- LanguageGuide
- 앱개발
- github
- 전달인자 레이블
- WWDC
- orthogonalScrollingBehavior
- lineBreakMode
- iTerm
- 애플사이다
- Swift
- UILabel
- iPad
- lineBreakStrategy
- 스위프트
- UIKit
- Keychain
- CollectionView
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Today
- Total
애플사이다의 iOS 개발 일지
야곰아카데미 <iOS 커리어 스타터 캠프> 후기 - iOS 앱개발 부트캠프 본문
2022년 4월, 야곰아카데미의 <iOS 커리어 스타터 캠프> 4기 (6개월 과정)를 수료하고 후기를 남긴다.
*프로그래밍 기초를 다루는 <Swift 코드 스타터 캠프> 후기는 이 링크를 참고
결론부터 말하자면, iOS 개발자가 되기를 꿈꾸는 분들께 망설임 없이 이 과정을 추천하고 싶다.
야곰아카데미 덕분에 6개월 동안 즐겁게 공부했고, 유능한 개발자가 되기 위한 태도와 사고방식을 배울 수 있었다.
그리고 이전과 비교가 안될 정도로 성장했다고 생각한다. 캠프에 참여하지 않았다면 이 정도 실력을 쌓는 데 최소 2~3년은걸렸을 것 같다.
캠프의 특징과 장점, 아쉬운 점을 정리해봤다.
1. 앱 개발에 관심을 갖게 된 계기
나는 "일을 통한 성장"을 중요시하는 편이다.
공대를 졸업하고 국제기구에서 1년, 국내 발전소에서 5년간 근무를 했다.
안정적인 환경이었고 일은 편했지만, 내가 하는 일의 효용감을 거의 느낄 수 없었고
지속적으로 성장하며 전문성을 쌓을 수 있는 일을 하고 싶다는 갈증이 계속 커졌다.
그러던 와중, 모바일 앱을 통해 건강관리/교통/금융/가사노동/문화컨텐츠 등 다양한 분야에서 ✨ 사람들의 일상이 바뀌는 것을 목격했다.
개발자라는 직업을 알아볼수록 서비스를 기술적으로 구현하는 주체적인 역할을 수행하면서
새로운 기술을 스터디하며 꾸준히 성장할 수 있다는 점에 매력을 느꼈다.
그동안 주변에서 일을 통한 성장은 불가능하다, 배부른 소리다, 라는 말을 들어왔는데
결국은 성장이 가능하다고 믿는 사람들을 동료로 두고 살고싶다는 생각에 퇴사를 하게 됐다.
2. 야곰아카데미를 선택한 이유
처음에는 회사를 다니며 1년간 독학을 했다. 그러면서 여러 어려움을 겪었다.
iOS 앱 개발이 하고 싶었지만 다른 언어에 비해 Swift는 입문용 교육자료가 부족했다. 그리고 기초개념을 배운 뒤에는 어떻게 프로젝트를 진행할지 잘 그려지지 않았다. 컴공 비전공자라서 CS 관련 강의를 들더라도 앱 개발과 어떻게 접목시켜야 할지 막막했다.
이런 문제들을 야곰아카데미에서 모두 해결할 수 있었다.
- 🍎 <커리어 스타터 캠프>는 iOS 개발에 특화된 교육과정이다.
Swift를 심도 있게 이해하고, Apple의 철학과 iOS 신기술을 탐구하고, 앱 개발에 필요한 컴퓨터 하드웨어 기초를 공부할 수 있다.
이론뿐만 아니라 직접 프로젝트를 진행하며 실무에 필요한 지식을 배울 수 있다. - ✏️ 야곰과 야곰아카데미 구성원들은 교육과 학습에 진심이다.
단순히 "지식을 기계적으로 머리에 집어넣는 것"이 아니라, "유능한 개발자의 사고방식을 기르는 것"에 초점을 맞춘다. 핵심 내용만 짚고 건너뛰는 식이 아니라, 기초부터 차근차근 쌓아가는 방식으로 학습하고 스스로 문제를 해결하는 습관을 들이는 것을 중요시한다. - 💻 100% 온라인으로 학습하고 소통한다.
장소에 구애받지 않고 내 상황에 맞출 수 있어서 좋다.
2021년 9월에 1개월간 <코드 스타터 캠프>를 들으며 야곰아카데미를 겪어봤기 때문에 망설임 없이 <커리어 스타터 캠프>에 지원했다.
개발을 이제 막 시작했더라도 <코드 스타터 캠프>를 듣고 나면 <커리어 스타터 캠프>의 지원 과제를 통과할 수 있는 실력은 갖추게 된다.
*프로그래밍 경험이 적은 비전공자라면 <코드 스타터 캠프>를 먼저 듣는 것을 추천한다.
Swift 문법과 프로그래밍 기초를 다루며, 직장과 병행도 가능하다. (💪 개발은 천재들만 하는 게 아니라는 용기도 얻을 수 있다!)
3. <커리어 스타터 캠프>의 장점
야곰아카데미의 교육철학, 학습 측면, 운영 측면에서
6개월간의 캠프 생활 동안 느꼈던 장점은 아래와 같다. (너무 많음 주의)
#1. 🧪 배우고 + 익힌다.
주 2회 Zoom으로 학습활동을 진행하며 실무에 필요한 주제를 배운다. 이와 동시에 캠프 내내 2~4주 기간의 팀 프로젝트를 진행하는데, 학습활동에서 배운 이론을 대부분 프로젝트에 바로 써먹어볼 수 있기 때문에 온전히 내 지식으로 만들 수 있다. 3년 동안 배울 내용을 6개월 만에 독파하는 거라서 학습량이 방대한데, 직접 내 손으로 코드를 짜보면서 확인하지 않으면 금방 까먹는다.
#2. 🧐 개발 과정에서 생기는 의문을 해결하는 방법을 배운다.
누구도 답을 직접 알려주지 않기 때문에 검색 능력이 좋아진다. 특히 Swift Language Guide와 Apple에서 개발자를 위해 만든 Developer Documentation나 HIG 문서 등의 공식문서를 어떻게 검색하고 활용하는지 터득하면서 개발이 덜 막막해졌다.
한 번은 학습활동 시간에 "함수는 타입인가요?"라는 질문을 했는데, 야곰이 다시 반문해서 되게 당황했던 기억이 난다. Swift Language Guide와 Language Reference를 한참 뒤지고, 다른 캠퍼들의 도움을 받아서 "함수 타입은 타입이고, 함수 자체는 타입이 아니다."라는 답을 얻게 됐다. 이때 하도 삽질을 했던 덕분에 타입 개념에 대해 확실히 이해하고 기억하게 됐다.
#3. 😇 코드 리뷰가 고퀄이다.
프로젝트를 진행할 때마다 코드 리뷰를 받는데, 리뷰어 대부분 현직 개발자인 데다가 캠프 선배기수라서 이미 동일한 프로젝트를 경험해봤기 때문에 캠퍼들의 고민에 대한 이해도도 높고, 세밀한 피드백을 받을 수 있었다. 프로젝트마다 담당 리뷰어도 바뀌기 때문에 리뷰어분들의 관심사에 따라 코드 레벨의 코딩 컨벤션, 가독성, 문법에 대한 조언부터, 구조 레벨의 의존성 주입, 아키텍처, 추상화 등에 대한 의견까지 다양한 관점에서 고민해볼 수 있어서 매우매우 좋았다. 리팩토링 과정은 늘 험난했지만, 그 과정에서 눈부시게 성장할 수 있었다. 정해진 답으로 유도하는 방식이 아니라 내가 작성한 코드에 대해 논리적인 근거를 들어 설명하는 것을 훈련할 수 있던 것도 좋았다.
#4. 🧩 개발 입문 단계에 적절한 수준의 학습 콘텐츠가 있다.
보통 iOS를 공부할 때 Apple의 WWDC 자료나 GitHub 예제 코드를 참고하는데, 너무 쉽거나 너무 어려운 경우가 많다. 그런데 야곰아카데미에서 공유되는 학습컨텐츠들은 다르다. 매주 학습활동 내용을 바탕으로 크루분들이 기존 자료를 보완한 컨텐츠를 제공해주기 때문에 캠프에서 뒤처지지 않고 끝까지 수료할 수 있었다. 특히 비동기 프로그래밍이나 Core Graphics 같은 주제가 난이도가 높았는데, 학습컨텐츠 덕분에 수월하게 이해할 수 있었다. 이 자료들이 없었다면 캠프를 수료할 수 있었을까... (교육전문가 코다🧪, 스토리텔러 오동나무🌳 복 받으실거에요) 그리고 심지어 학습컨텐츠가 이해되지 않을 때 적극 질문을 받아주시는 서포터분들도 따로 있다. (척척박사 스티븐⚾ , 수박🍉 성공하실거에요)
#5. 🙌 개발자에게 필수인 협업 능력을 기른다.
원칙상 모든 팀 프로젝트를 "짝 프로그래밍"으로 진행한다. 한쪽이 Navigator가 되어 코드를 불러주면, 다른 한쪽이 Driver가 되어 코드를 작성하는 방식이다. 처음에는 로직을 고민하는 동시에 말로 설명하는 게 정말 어렵다. 하지만 적응하고 나면 팀원끼리 소통이 쉬워져서 정말 많은 지식을 공유하고 얻어갈 수 있다. 세세하게 코드를 짚어나가야 해서 시간은 오래 걸리지만, 팀원과 특정 코드나 네이밍을 반드시 써야하는 근거를 찾아가며 진행할 수 있는 것도 좋았다.
또 대부분의 프로젝트를 2~3명의 팀 단위로 진행하다보니 팀원과 의견이 다를 때, 팀원과 짰던 코드에서 문제를 발견했을 때, 리뷰어에게잘 질문하는 방법 등 여러 상황에 대해 대처할 수 있는 실무에서 중요시되는 소프트스킬과 협업 태도를 자연스럽게 기를 수 있었다. 또 개인적으로 좋은 기회가 있어 후배 기수의 리뷰어로 2개 프로젝트의 코드 리뷰를 진행했었는데, 리뷰이에게 가이드를 제시할 때 고려할 점과 다른 사람의 코드를 읽을 때의 어려움을 배울 수 있었다.
나보다 훨씬 수준이 높은 팀원과 프로젝트를 진행할 때도 많았는데, 그때마다 따라가기 벅찼지만 프로젝트를 마친 뒤에는 스스로 봐도 실력이 좋아진 걸 체감할 수 있어서 뿌듯했다. 사실 캠프 내내 협업을 하는 게 부담스러울 때도 있었는데, 서로 도움을 줄 수밖에 없는 환경이기 때문에 자연스럽게 고마워서라도 더 공부하고 알려주려고 노력하게 됐던 것 같다. 캠프 중반에는 이렇게 강도 높은 협업에 지쳐서 개인 프로젝트를 하고 싶다는 생각이 간절해지는데, 막상 개인 프로젝트를 시작하는 즉시 후회하게 되는 신기한 경험을 하게 된다. 😂
#6. 🛠️ 학습능률을 극대화하는 학습 툴을 활용한다.
개발 아카데미답게 여러 가지 툴을 적재적소에 사용한다. 메가스터디 인강처럼 단순히 사이트에 업로드된 강의를 듣고, 질의응답을 할 수 있는 수준이 아니다. 모르는 내용은 커뮤니티 게시판, DM, 회의실 등의 여러 채널을 통해 캠퍼들과공유하고 같이 고민할 수 있다. 그리고 TIL, TWL을 통해 다른 캠퍼들이 매일 어떤 내용을 공부하는지 볼 수 있어서 나에게 부족한 부분을 채울 수 있었다. 또 프로젝트는 GitHub을 통해 협업하기 때문에 모든 팀의 진행상황을 알 수 있고, 문제 상황이나 해결방법이 담긴 PR과 README도 모두 공개되어 있어서 의지만 있다면 끝도 없이 배울 수 있었다. 커뮤니티를 통해 자료구조/알고리즘 등의 주제나 IT분야 책을 정해서 함께 공부하는 스터디 그룹도 캠퍼들과자체적으로 운영할 수 있어서 좋았다.
선배기수로부터 기록하지 않으면 모두 잊어버린다는 조언을 하도 많이 들어서 매일 기록을 남기려고 노력했다. 캠프 기간 동안 작성한 TIL이 총 80개, 블로그 글이 총 30개 정도 되는데 보고 있으면 정말 뿌듯하다. 그런데 기록해도 까먹기는 한다. 초반에 내가 쓴 글을 읽어보면 귀신이 쓰고 간 것 마냥 그렇게 새로울 수가 없다. 😂
#7. 💬 개발에 진심인 사람들이 모인 커뮤니티가 있다.
야곰아카데미 구성원 전체가 참여할 수 있는 커뮤니티를 통해 양질의 정보를 얻을 수 있다. 개발 관련 정보는 물론이고, Apple 이벤트를 같이 보거나, 테크캐스트를 통해 비전공자 개발자, 소통, 1인 개발 등 다양한 주제에 대해 이야기하는 장이 만들어지기도 한다. (갓 써머☀️ 덕분에 따뜻했어요) 사실 그냥 디스코드 회의실에서 잡담하거나 힘들다고 한탄만 하더라도 너무 재밌었다...
캠퍼 동기들도 어려운 개념을 조리있게 설명해주는 캠퍼, 기록을 잘하는 캠퍼, 학습 속도가 빠른 캠퍼, 스터디를 잘 리딩하는 캠퍼, 창의적인 알고리즘을 짜는 캠퍼, 멘탈을 챙겨주는 캠퍼, 검색과 질문을 잘하는 캠퍼, GitHub 천재 캠퍼... 등등 다들 각양각색의 강점이 있어서 배울점이 정말 많았다.
그외에도 교육이 진심인 야곰이 정기적/비정기적으로 캠퍼들의 고충과 건의사항을 듣고, 늘 개선하려고 노력하시는 모습을 보게 되는데 여기서도 많은 감동과 자극을 받았다. 조..존..존경해요.. 특히 특정 주제가 어렵다고 하는 캠퍼가 많으면 특강을 해주시기도 했다. 고민되는 점이 있으면 적극 말해도 좋은 것 같다.
4. 아쉬웠던 점 (껄무새 주의)
Swift 문법을 최대한 많이 공부하고 들어올걸
캠프를 시작하는 시점에는 캠퍼들 간에 수준 차이가 꽤 났었다. 개인적으로 Swift 기초문법만 간신히 공부한 수준이었는데, 캠프에 들어와 보니 다른 분야지만 이미 개발 경력이 있는 캠퍼도 있었고, Python, Java 같은 다른 프로그래밍 언어를 꽤 오래 공부했던 캠퍼도 있었다. 결국 팀 프로젝트를 하다 보면 모르는 사람이 아는 사람을 통해 배우는 식으로 같이 성장하게 되기 때문에 캠프 후반으로 갈수록 Swift 문법에 대해서는 수준이 비슷해진다. 하지만 캠프 기간 동안 하루 종일 컴퓨터 앞에 앉아있어도 시간이 부족하기 때문에 Swift 문법에 익숙한 상태로 들어왔다면, 더 많은 것을 얻어갈 수 있지 않았을까 하는 아쉬움이 남는다.
학습활동 예습에 더 시간을 쏟을걸
학습활동이 일방적인 강의 형식이 아니라 캠퍼들끼리 답을 알아가도록 되어있기 때문에 예습을 하지 않고 참여하면 소외될 수밖에 없다. 특히 공식문서를 보면서 이해가 안 되는 부분을 야곰에게 직접 질문할 수 있는 소중한 시간이기 때문에 최대한 예습을 하려고 노력했다. 하지만... 가끔 네트워크나 관계형 데이터베이스 같은 비전공자가 쉽게 접근하기 어려운 주제를 다루는 날에는 조용히 듣기만 했다.... 지금 생각해보면 시간 여유가 있는 주말에 주제를 확인하고 미리 다른 캠퍼들과 얘기를 나눠봤다면, 더 활발하게 참여할 수 있었을 것 같다.
휴식 시간을 의식적으로 가질걸
학습활동 내용을 모두 소화하지 못하면, 프로젝트 팀원에게 폐를 끼치게 될 것 같아서 조급한 마음이 들 때가 많다. 그래서 잠자는 시간과 휴식 시간을 줄여서 계속 공부를 하게 되는데, 사실 공부할 내용이 방대하기 때문에 공부가 끝이 없다. 6개월이 짧은 시간이 아니고, 캠프 후반으로 갈수록 난이도가 높아지기 때문에 힘 조절이 필요하다. 2개월마다 1주씩 방학기간이 있기는 하지만, 적어도 주말 중에 하루, 적어도 반나절은 다 내려놓고 쉬는 게 좋은 것 같다.
5. 야곰아카데미를 통해 뼈에 새긴 것
- 남과 비교하지 말고, 과거의 나와 비교하자.
- 키워드를 한 문장으로 설명할 수 있는 수준이 될 때까지 공부하자.
- 코딩은 글쓰기와 비슷하다. 협업에서는 화려함보다 가독성이 중요하다.
- 이 코드에 대한 근거가 있나?
- '왜'에 대해 고민했나?
- 모든 것을 마스터하는 것이 아니라, 그때그때 내가 모르는 것을 파악하고 탐구하자.
- 콘솔에 찍힌 에러 메시지에 답이 있다.
6. 마무리하며
캠프를 시작하자마자 나는 코딩 천재가 절대 아니라는 것을 깨달았고,
끝까지 마치지 못할까 봐 걱정했는데 버티다 보니 6개월이 지나가 있었다.
3년 치 학습분량을 6개월 과정으로 압축했기 때문에 하루하루 정신없이 보내야 했고, 그래서 개발하는 재미를 잃을까 봐 걱정했는데
캠퍼 동기들과 리뷰어분들, 서포터분들, 크루분들과 야곰 덕분에 아직은 개발이 너무 재밌고 계속 배워가고 싶다.
지금은 만들어보고 싶은 앱이 있어서 캠프 동기와 프로젝트를 진행 중이다.
무사히 앱을 출시하고, 하반기에는 오랫동안 흠모해온 회사에 취업하기를 바라고 있다.
- Reference
🍎 포스트가 도움이 되었다면, 공감🤍 / 구독🍹 / 공유🔗 / 댓글✏️ 로 응원해주세요. 감사합니다.
'iOS' 카테고리의 다른 글
[인디 앱개발] ✨ 앱 기획부터 출시까지 참고한 링크 - 앱 기획, 디자인, 개발, 배포 준비 (2) | 2022.07.20 |
---|---|
[CollectionView] 배너 하단에 PageControl 구현 - FooterView에 넣기 (0) | 2022.06.15 |
[CollectionView] estimatedHeight 사용 시 is stuck in its update/layout loop 에러 발생 (0) | 2022.06.13 |
[WWDC 2019] Accessibility Inspector - 앱의 Accessibility 구멍을 찾아보자 (0) | 2022.01.04 |
[WWDC 2016] Typography and Fonts - 글꼴 관련 용어 및 업데이트 (2) | 2021.12.15 |