내 인생에서의 첫 프로젝트를 마무리했다. 사실상 개발을 1월부터 8월까지, 약 8개월이라는 시간을 이 프로젝트와 함께 했다. 프로젝트를 진행하면서 많은 것을 배웠고, 많은 것이 달라졌다. 계획 없이 이 프로젝트에 참여한 내가 참 다행이라는 생각을 요즘 한다.
SUWIKI는 시간표와 강의평가가 묶여 있는, 학교 재학생들을 위한 앱이다. 프로젝트 구성원은 iOS는 1, AOS 2, 웹 3, 백 2로 구성되어있었고, 당연히 프로젝트도 처음이고 구성원도 혼자인 나는 많은 문제를 겪었었다. 그리고..
솔직히 내가 잘했다고는 말을 못하겠다. 코드들이 엉망이고, 리펙토링 하기도 어려운 지경의 기능들도 존재하기 때문이다. 그리고 이런 식으로 기능을 구현해도 되는지.. 많은 부분에서 부족함을 느끼긴 했다. 하지만 처음부터 모든 걸 잘하기는 사실상 욕심이다. 일단, 그동안의 생각들을 최대한 정리해보자.
1월, 개발 시작
정말 어디서부터 어떻게 시작해야할 지 답이 안 나왔다. 안드로이드는 시간표 기능이 이미 만들어져 있었고, 나는 그 시간표 앱을 최대한 따라 개발을 하려고 했다. 하지만 처음부터 끝까지 너무 어려웠다.
많이 포기하고 싶었고, 방향도 잡지 못하고 있었다. 검색에 가장 많은 시간을 투자했고, 검색해서 찾은 기능들을 하나하나 프로젝트에 꾸겨 넣는 느낌으로 개발을 진행했다. 사실 뭔가 이루어지는 것은 없었는데, 재미있었다. 뭔가 제대로 만들어 본 것도 처음이고, 나중에 삭제된 기능들이 있기는 하지만 기능 하나하나가 재미있었다.
그러다가 어쩌면 할 수도 있겠다 라는 생각을 갖게 되면서, 개발중인 기능들에 기반한 배경 지식을 최대한 많이 찾으려고 노력했다. 내 삶에서 가장 검색을 많이 했던 한 달이 아닐까 싶다. 가장 답답했던 것은 사실 iOS 개발자가 주변에 아예 없고, 교내에는 나 혼자였던 것 같다. 그래서 야곰 아카데미 - 코드 스타터 캠프도 같이 진행을 했었는데.. 방향성을 잘 찾을 수 있게 된 좋은 경험이었다.
기능적으로는 시간표 앱에 걸맞는 기능도 만들지 못한 채 라이브러리를 이용하여 시간표 같이 생긴 무언가를 뷰에 올렸었을 뿐이다.
2월, 어쩌면
사실 2월에는 어쩌면 이라는 생각을 가장 많이 한 것 같다. 어쩌면 나도 만들 수 있겠다. 어쩌면 쉬운 문제였겠다.. 등등.. 물론 실력은 많이 부족했지만.
2월에 겪었던 가장 큰 이슈는, Realm 데이터베이스를 사용하기 위해 패키지를 추가해야 하는데, 내가 xcode package manager와 코코아팟 둘 다 이용하여 라이브러리를 추가하는 바람에 찾아도 나오지 않는 버그를 맞이했다. 해당 문제로 인해 1-2주간은 개발 진척이 없었던 것 같다.
이유는 유저가 추가한 강의를 유저의 핸드폰에 저장을 해야 앱을 재실행하여도 추가한 강의들을 불러와 시간표를 확인할 수 있는데... 저장하는 작업조차 진행이 안되니 다음 과정이 진행될 리가 없었다.
그러다 우연히 해당 문제점을 발견하고, 개발 속도가 급격히 빨라졌다. 부족한 내가 시간표 앱을 거의 다 완성 시킨 것이다..! 강의 시간 중복 체크, 저장 후 불러오기, 강의 시간 문자열 처리 등 다양한 문제에 직면했지만 98% 이상의 강의 데이터에는 문제가 생기지 않도록 해결했다.
이 부분을 리펙토링 해야 하는데... 다음 기능 개발에 혈안이 돼있어 진행하지 못하고 있다.(현재도)
3월, 첫 앱 배포
우여곡절 끝에 수위키의 이전 버전인 수타 앱을 앱스토어에 배포했다. 그러나...
홍보할 방법도 마땅치 않고, 이미 개강이 2주나 지난 바람에 사람들이 기존의 앱을 사용하지 더 이상 다운로드를 할 이유가 없었다. 디자인 적으로도 매우 부족했고, 굳이 사람들이 수타를 써야 할 목적을 내가 만든 수타에서 발견하지 못했다. 다운로드 수는 60 - 90명 정도 되었던 것 같다.
내가 많이 부족한 것을 받아들이고, 그다음 주 기능인 강의평가 기능을 진행했다. 프로젝트를 진행하면서 같이 진행했던 코드 스타터 캠프 덕분에 뭔가 눈이 떠진듯한 느낌을 받았고 뭔가 그럴듯하게 개발을 진행해보자! 해서 MVC 패턴을 적용시키며 개발을 진행하려 했다.
시간표 기능을 만들 때에는 API를 사용할 일이 없어 혼자 독고다이로 진행했는데, 강의평가는 로그인도 필요하고 유저가 글을 쓸 수 있도록 만드는 것이 목적이기 때문에 API를 사용해야 했다.
당시에 API 명세서를 보는 것도 처음이었고, 통신을 하는 방법에 대한 개념이 아예 없었기 때문에 어려웠다. 하지만 역시 차차 적응했고.. 1월에 향상된 검색 실력이 빛을 발했다.
큰 어려움을 느끼지 못한 채 개발을 진행했다.
4월, 토큰 재발급
4월에는 .. 토큰 재발급하는 로직 관련해서 처음 느껴보는 어려움을 겪었다. 이 문제를 직면하면서 나는 URL Session에 대한 개념이 많이 부족하고, 토큰 인터셉터라는 생소한 용어 등 어떤 공부를 좀 해야겠구나. 라는 생각이 들었다.
시간이 꽤 오래 걸렸지만, 자동으로 토큰을 재발급 하는 로직을 구현했고 신기했다. 내가 따로 API 호출을 하지 않아도 인터셉터가 알아서 토큰이 만료되었는지 확인해주는구나.. 라이브러리는 신인가..라는 생각도 했다.
그리고 디자이너의 참여로 인해 프로젝트의 디자인도 퀄리티가 좋아졌다 라는 생각과 함께.. 나만 열심히 하면 되겠다 라는 생각을 했다.
이후 어느 정도 프로젝트도 구색을 갖추게 된 것 같다.
5~7월 중순, 그냥 개발
해당 기간에는 학교 기말고사도 껴있고, 축제도 껴있고.. 이런저런 핑계들과 함께 기능들을 계속 개발했다. 뭔가 커다란 이슈는 없었지만 강의평가를 나는 MVC 패턴을 적용해서 진행하고 싶었으나 생각처럼 잘 안된 것 같다. 개념은 부족한 상태에서 적용을 하려다 보니 MVC 패턴이 아닌 MVC 패턴의 구조로 진행을 한 느낌이랄까..? Controller에 너무 많은 기능을 부여했다. 나의 기초가 부족한 것이겠지.
그래도 서비스는 거의 다 완성이 되었고, 마무리가 돼가고 있었다.
7월 중순~8월 초, 테스트 및 배포
iOS는 apk 파일처럼 배포를 할 수가 없어 내가 최대한 많이 테스트해보려고 했고, 그 문제들을 하나하나 찾아가 보완을 좀 진행했다. 그리고 악명 높기로 유명한 앱스토어에 배포를 진행했는데.. 이게 웬걸.. 한 번에 통과했다. 기분은 역시 좋았다.
하지만 프로젝트를 진행한 초중반 기간처럼의 자신감은 사라졌고, 많이 부족하고 배울게 많다는 것을 동시에 느꼈다. 처음부터 잘하려고 하는 것은 욕심이지만. 많이 아쉬웠다.
프로젝트를 진행하며 느낀 문제점
1. 팀원의 부재
- 나는 다른 파트와 달리 혼자 개발을 맡았다. 협업을 하지 않고 진행하다 보니 발전하는 느낌도 들지 않고 혼자 머물고 있는 느낌이 강하게 들었다.
- 어떠한 문제에 직면하게 되면 해결 방법을 혼자 찾았다. 혹은 타 파트의 팀원에게 도움을 요청했다. 만약 같은 팀 내에 회의를 할 수 있는 사람이 있었다면 어땠을까?
2. MVC 패턴 적용의 미흡
- MVC 패턴의 개념은 알고 있으나, 이것을 어떻게 적용해야 될지가 너무 어려웠다. 특히 model 부분에서 어떤 작업들이 이루어져야 하는지 어려운 것 같다. 이 부분은 내가 앞으로 공부를 하면서 보완해가야 할 문제이다.
3. 생각 없는 코드, 구제 불가
- 물론 첫 프로젝트이기도 하고, 경험도 없는 나였다. 그래서 그런지 내가 알아볼 수 없는 코드들도 존재하고, 리펙토링 하기 어렵겠다고 생각하는 코드들이 많았다. 그런 코드가 있는 파일을 누르기도 전.. 내가 쓴 무지성의 코드를 봐야 한다는 생각에 피로감이 몰려오기도 했다.
수위키를 통해 느낀 것은 ..
1. 기본기가 중요하다
- 겉핥기식으로 아는 것이 너무 많다. 정리하고 정리하여 내 것으로 만들고 그렇게 하기 위해서 모든 수단과 방법을 동원하자. 기본기가 없는 것이 스노우볼이 굴러가는 바람에 프로젝트의 유지보수에 문제가 생길 수 있다. 기초부터 탄탄하게 해야 한다. 개인기를 사용하기 전에 리프팅을 하지 못하면 무슨 소용이 있겠는가.
2. 외부로 나가자
- 주변에서 iOS 개발자를 찾지 말고, 다양한 외부 활동을 찾아보고 발전하자. 애초에 많은 사람들이 선택하지 않는 iOS라는 파트기에... 내가 빠르게 발전하고 나가자.
3. 인내심
- 조급해하지 말자. 그래 봤자 공부한 지 1년도 안되었다. 남들보다 잘하려고 하는 것은 좋지만, 노력하지 않고 잘하려고 하는 것은 욕심일 뿐이다.
4. 사람을 돕자
- 서로서로 돕자. 아무것도 아닌 나를 바라는 것 없이 도와주었던 누군가들처럼 나도 바라지 않고 돕자. 대신! 오지랖과 도움의 경계선을 잘 찾아서.. 커뮤니케이션을 잘하자!
많이 부족했던 내 첫 번째 프로젝트 SUWIKI의 정식 개발은 끝났다. 앞으로 수위키에서는 유지 보수와 리펙토링 정도에만 시간을 사용할 것 같다. 너무 뜻깊고 소중한 시간들이었고 삶의 터닝 포인트였던 것 같다. 방향을 잘 잡았고, 많이 배웠다. 자만하지 말고 앞으로 많이 발전하는 내가 되었으면 좋겠다.
2022 - 08 - 22 기준 437명.. 2000명을 목표로..!
SUWIKI
[WEB] https://suwiki.kr/
[Android] https://play.google.com/store/apps/details?id=com.kunize.uswtimetable
'잡담' 카테고리의 다른 글
[잡담] 2022.09 ~ 2023.02 회고 (0) | 2023.06.13 |
---|---|
[잡담] 그간 포스팅을 하지 않은 이유 (0) | 2023.06.13 |
[잡담] 한달만의 포스팅 (0) | 2022.06.29 |