[테킷 앱스쿨3기 iOS] SwiftUI 첫번째 대규모 프로젝트 회고

김형준·2023년 9월 3일
0

테킷iOS

목록 보기
4/4
post-thumbnail

이번에 첫번째로 진행한 대규모 프로젝트가 끝났다.
처음으로 KPT 방식으로 회고하며, 두번째 프로젝트에서 더 나은 방향으로 나를 개선해보려 한다.

회고

Keep

  • 이번이 처음으로 SwiftUI 프로젝트로 협업을 진행했는데, 우리 등록뷰 팀은 협업과 소통이 원활하게 이뤄져서 좋았다. (서로의 진행상황을 주기적으로 업데이트하기 위해 잡담이라도 하는게 좋은 것 같다)

  • 우리가 기획한 기능 구현은 모두 구현해서 좋았다. 100% 동작되는 기능구현은 아니지만, 구현을 하기 위해서 서로가 모르는 것을 공유하는게 이번 프로젝트에서 가장 큰 성과이자 성장인 것 같다.

  • 하루에 커밋을 계속 업데이트 해서 좋았다. (첫날에 커밋을 미루고 한번에 해서, 충돌 이슈를 겪었기에...)

Problem

  • Git convention이 익숙치 않고, Branch 및 Rebase 하는법을 몰라서 뒤늦게 배웠다.

  • Core Location을 처음 이용하면서 위치(위도,경도)를 가져왔지만, 주소로 변환하는 것에 어려움을 느꼈다.(CLGeocoder를 활용해서 문제를 해결하는데 시간이 걸렸다)

  • 전체 팀 인원이 너무 많아서 자기가 속한 팀이 아닌 이상 진행상황을 공유할 수 가 없었다. 기획이 분명하지 않아서 시간을 너무 많이 소비했다. 결국 만들어진 버튼의 스타일과 색상도 다 달라서 소통의 중요성을 느꼈다.

  • FireBase를 사용하면서 너무 많은 에러를 경험했다. 특히 Storage에 업로드한 이미지 때문에 전역폭이 무료용량을 계속해서 초과하면서, 이를 위한 해결방법을 모색하기 위해 너무 고생했따.
    결국 저장소에 이미지의 품질을 최대한 낮추는 방식으로 2567402 bytes → 829175 bytes로 300% 가까이 줄였지만, 궁극적인 해결은 이미지 캐싱을 공부해봐야 알 것 같다.

  • Async 즉 비동기 처리에서 문제를 경험했다. 비동기 작업이 끝난 값을 배열에 담아 return해야하지만 return이 먼저 되고 비동기가 나중에 처리되면서 결국 원하는 값이 안들어가는 문제가 발생했다.
    이를 해결하기 위해 Task, Async await를 공부하면서 Do Catch, Try await 등도 같이 공부하면서 비동기를 공부한게 좋았다.

  • 다른 팀과 공유해야 하는 ViewModel이 늘어나면서(특히 알림팀) 서로 무작정 객체 생성 문제가 발생했다. 이를 해결하기 위해 StateObject -> Environment 로 바꿔주면서, EnvironmentObject으로 원하는 데이터에 편하게 접근하도록 했다.

Try

  • Git의 활용 방법을 더 자세히 알고 싶다. Git convention을 보다 준수하면서 , commit 및 conflict 해결을 잘해서 보다 프로젝트에 온전하게 시간을 투자하고 싶다.

  • async 비동기 처리 동안 ProgressView로 상태를 알려주는 것을 넣어주면 사용자 입장에서 좋을 것 같다.

  • Human Interface Guidelines 을 정독하고 다음 프로젝트에 적용하고 싶다. (⭐️ 사용자 입장에서 사용에 불편을 안느끼게 개발에서 디테일이 중요함을 느낌)

  • 개발에서도 마찬가지로 API Design Guidelines 적용하고 싶다. 개발에서는 코드로 소통하기 때문에 변수 네이밍, 파일 분리와 같은 Convention 규칙을 확실히 정해놓는게 생산성 향상에 큰 도움이 되는 것 같다.

  • 추가 공부사항 : Human Interface Guidelines, API Design Guidelines, Closure 캡쳐, Environment(/.dismiss), PhotoPicker, PhothUI, CoreLocation, Async await, OnChange, OnAppear.

리팩토링

리팩토링은 코드에서 로직을 빠르게 찾고 쉽게 읽을 수 있게 한다. 즉 유지보수를 위한 품질 향상을 목표로 해야한다.

  • 먼저 수 네이밍, 띄어쓰기, 파일분리 같은 코드이 가독성을 높여주는 작업을 진행 완료했다. 특히, 중복되는 코드를 하나로 합치고, 접근제어 설정해주고 불필요한 print문도 다 제거해줬다.
  • 전체적인 에러처리를 간단히 했지만, 조금 더 디테일하게 하는 방법을 적용시키고 싶다. (개발자 입장에서 에러처리가 아닌, 사용자도 에러를 화면에서 분명하게 볼 수 있게 해야한다)

소감

처음 프로젝트를 진행하면서 1인분도 못할까봐 걱정이 앞섰다. 하지만, 기능 하나를 구현하면서 느끼는 성취감이 너무 큰 보상이며 재밌었다. 새로운 기술 스택도 경험하면서 비록 모르는것들 투성이에 복사하면서 시작했지만, 점점 코드를 프로젝트에 맞게 수정하면서 나만의 코드로 바뀌면서 성장함을 느꼈다. 나중에는 팀 전체가 모두 쓸 수 있는 Toast Message를 만들어 공유하기도 하면서, 프로젝트가 정말 개발 실력을 성장시키는데 있어서 큰 공부라는 것을 느꼈다.

두번째 프로젝트는 나이키 앱 클론코딩에 참여했다. 더 많이 배울 수 있는 어려운 파트를 먼저 나서서 참여해보고 싶은 동기부여도 생겼으니 기대된다.

개인 프로젝트도 얼른 해봐야지...! 🫠

그럼 다음 2번째 프로젝트 회고에서...🫡

profile
기억보단 기록, 느리더라도 꾸준히

0개의 댓글