토이 프로젝트를 하면서 겪은 8가지 실수 :: 마이구미
이 글은 토이 프로젝트 배포를 앞두고 그 과정중 느꼈던 것들을 회고한다.
글로 남기고 싶은 기술적인 내용도 많은 주제가 쌓여있다.
그리고 배포를 하고 운영하면서 많은 것들을 경험하는 것들도 포스팅 주제가 될 것이다.
이건 추후로 미루도록 하고...
여기서는 기술적인 내용보다는 본인의 경험으로 누군가 토이 프로젝트를 보다 효율적으로 하는 바램과 다음에는 똑같은 실수를 하지 않기 위해 히스토리를 남기는 목적이다.
전체적은 글은 본인이 겪은 8가지의 실수를 중심으로 이야기를 이어간다.
이 모든건 개인 경험과 기준이라는 것을 인지하길 바란다.
- 첫번째 실수 - 정해졌으니 이제는 만들면 돼!
- 두번째 실수 - 최신 기술로 만들어야해!
- 세번째 실수 - 디자인 어떻게 하지?
- 네번째 실수 - 재미로 같이 만들어요!
- 다섯번째 실수 - 일단 개발하면서 필요한 페이지들을 추가하자!
- 여섯번째 실수 - 이미지 리사이징 서버는 필수지!
- 일곱번째 실수 - 사용자 고려를 하지 않은 개발자 마인드
- 여덟번째 실수 - 잘 나가는 쿠팡, 네이버, 카카오, 당근마켓 서비스를 참고하자!
토이 프로젝트를 시작한 계기
우선 본인은 IT 업계에서 5년정도 일하고 있는 프론트 개발자이다.
개발자라면 누구나 회사 업무가 아닌 그럴싸한 토이 프로젝트를 꿈꾼다.
본인도 신입으로 일하는 시절부터 토이 프로젝트를 다짐하곤했다.
토이 프로젝트를 하려면 무엇이 필요할까?
당연히 무엇을 만들고 싶은지를 정해야한다.
본인은 똑똑한 사람이 아니라... 항상 똑똑해지고 싶었다.
그래서 알고리즘이나 창의력 문제 같은 것을 자주 풀곤 했다.
하지만 특히 창의력 문제의 경우에는 성냥, 바둑판, 바둑알, 동전 등 뭔가 준비물이 필요했다.
그래서 이걸 웹이나 앱으로 PC 나 모바일에서 풀면 좋겠다는 생각으로 시작했다.
(이게 5년전이다. 지금은 5년이 지났다...)
첫번째 실수 - 정해졌으니 이제는 만들면 돼!
무엇을 만들고 싶은지 정해졌지만, 여러 이유로 쉽게 시작하지 못했다.
그러다가 신입 4개월이 지날무렵, 어느정도 적응을 해서 프로젝트를 시작하게 되었다.
하지만 블로그도 시작하고 알고리즘 문제도 풀고 업무도 해야하고 하고 싶은 게 굉장히 많았다.
그렇게 우선순위를 높게 잡지 않은 탓에 하는둥 마는둥 하게 되었다.
자연스럽게 토이 프로젝트는 잊혀져갔다.
무엇을 만들지는 정했지만 다른 것들은 전혀 준비가 되지 않았다.
두번째 실수 - 최신 기술로 만들어야해!
또 몇개월 시간이 흘러, 다시 시작하겠다는 마음을 먹었다.
이때 당시는 한창 jQuery 를 쓰고 있었을 시절이다.(React.js 존재하긴 했으나, 지금처럼 대중화되지 않음)
개발자라면 언어, 라이브러리, 프레임워크 등을 선택하는 고민을 할 것이다.
당시 본인은 부끄럽지만 처음에 이렇게 했다.
"jQuery 는 어차피 자바스크립트 껍데기잖아. 난 바닐라 자바스크립트로 구현할거야"
실제 업무가 크로스 브라우저 지원이 중요한 서비스였음에도, 저런 귀여운 생각을 하곤했다.
jQuery 사용하지 않고 토이 프로젝트를 시작했다.
그렇게 개발을 하다가 템플릿 관련 작업에 많이 사용중이라는 얘기를 듣었다.
"요즘에 많이 사용하는 Handlebars.js 를 도입해서 템플릿 관련 작업을 쉽게 하면 좋을거야"
handlebars.js 도입하게 되었다.
기존 로직의 리팩토링으로 시간을 소모하게 된다
그리고 또... 자연스럽게 첫번째 실수를 반복한다.
그러다가 다시 시작하겠다고 마음을 먹었다.
이 당시에는 Vue.js 를 사용하고 있었다.
"핫한 Vue.js 로 작업하면 공부에도 좋고 더 효율적일거야"
그렇다. 당연히 모든 코드를 Vue.js 로 다시 작업했다.
첫번째 실수를 또 몇번 거치다가... 프레임워크에 대한 고민이 시작되었다.
이미 React 는 대중화되었고, Vue.js 에 대한 관심이 시들시들해지는 상황이었다.
"Vue.js 보다 React 에 익숙한게 커리어에 나을거야"
그래서 React 를 공부하였고, 다시 React 로 작업했다.
결국 계속 프로토타입만 찍어내면서, 쳇바퀴 돌듯 같은 실수를 반복했다.
그리고 사실 무엇을 만들고 싶다라는 생각보다는 오로지 개발자 역량을 위해 했던 것 같다.
이게 이해 안가는 행동일 수도 있으나... 드문 이야기는 아니다.
본인도 그랬고, 최신 기술을 추구하는 사람은 의외로 꽤 많다.
이렇게 아마 작년까지 반복했던 것 같다.
그리고 작년 11월에 진심으로 프로젝트를 집중하게 되었다.
세번째 실수 - 디자인 어떻게 하지?
프로젝트를 시작하면서, 계속 발목을 잡았던 건 디자인이다.
부트스트랩 같은 라이브러리는 사용하지 않았기에, 개발 초기에는 항상 이쁘지 않은 페이지들을 봐야했다.
그게 마음에 들지 않아, 구글링이나 다른 앱들을 보면서 그때그때 조금씩 디자인을 입혀나갔다.
이것이 엄청난 시간을 낭비했다.
기능 좀 구현하다가 디자인 입히고 이 과정을 반복했고, 디자인을 입혀도 시간이 지나 더 괜찮은 UI 가 있으면 바로 교체했다.
너무나 비효율적인 모습을 보고, 지인 분들 중에 디자인을 해주실 디자이너분을 찾아보게 되었다.
네번째 실수 - 재미로 같이 만들어요!
만들고 싶은 것을 만들고 있었고, 다른 측면에서 어느정도 계획은 있었지만 구체적인 계획은 없었다.
재미로 만드는 건데 디자인 도와주실 수 있는지를 요청한다는 것 자체가 사실 욕심이었다.
아무리 잘 설명하고, 그런 의도가 아니었어도 듣는 입장에서는 결국 똑같이 들릴 것이다.
제가 이렇게 개발하고 있는데 개발자라서 디자인을 못하니까 이것 좀 해줄 수 있어요?
너무나 상대방에 대한 실수이고, 본인의 욕심이었다.
누군가에게 도움을 요청을 하려면 제대로된 계획이 뒷받침되어야한다.
단순 본인의 욕심이 강하다고 느껴진다면, 스스로 배우자.
그래서 본인은 직접 디자인 툴을 공부하기 시작했다.
원하는 아이콘과 이미지를 만들고 로고를 만들었다.
그렇게 만들어진 것들 중 하나가 지금의 로고다!
원하는 아이콘, 이미지 그리고 플레이스토어 등록에 어차피 필요한 일이었다.
진작 디자인을 조금이라도 다룰 수 있었으면 모든게 달라졌을 것이다.
다섯번째 실수 - 일단 개발하면서 필요한 페이지들을 추가하자!
개발을 진행하면서 필요하다고 느끼는 페이지들을 계속해서 추가했다.
그러다보니 굳이 필요없는 페이지, 기능들이 점점 늘어만 갔다.
그리고 이것들을 구현하기 위한 디자인도 필요했고, 결국은 세번째 실수인 디자인 적용 작업을 반복했다.
결국 습득한 디자인툴로 와이어프레임처럼 각 페이지 UI 을 미리 정의했다.
처음부터 와이어프레임 같은 것을 만들어 놓고 시작했으면, 많은 시간을 절약할 수 있었을 것이다.
여섯번째 실수 - 이미지 리사이징 서버는 필수지!
PC, Mobile 모두 지원하겠다는 포부를 가지고 있었다.
그로 인해 자연스럽게 이미지 리사이징 서버가 필요했다.
이 외에도 많은 것을 고려했다.
- 업데이트 알림 메일, 회원가입 알림 등 많은 메일 템플릿이 필요해
- presignedUrl 을 사용하는데 이건 한번 사용하고 나면 만료되도록 해야해 (관련 글)
- 사용자 화면 스크린샷 기능이 필요해
- SPA 페이지 SEO 지원 (관련 글)
- 다국어 지원
- 기타 등등
필요한 기능이고, 있으면 좋은 기능이지만, 우선 오픈하고 해도 충분한 것들이다.
이런 것들을 대응하다보니 이슈가 하나라도 나면 엄청난 시간이 투자되었다.
일곱번째 실수 - 사용자 고려를 하지 않은 개발자 마인드
간혹 개발자 욕심으로 UX 기능을 넣은 것들이 존재했다.
내부 테스트 과정에서 기교를 부렸던 기능들이 오히려 혼란을 주고 있다는 것을 느꼈다.
사용자를 기준으로 다시 작업하니 훨씬 깔끔한 코드와 더 나은 UX 기능으로 두가지 모두 개선되었다.
여덟번째 실수 - 잘 나가는 쿠팡, 네이버, 카카오, 당근마켓 서비스를 참고하자!
본인이 만들고자 하는 서비스는 잘 나가는 위와 같은 서비스와는 다르다.
이러한 서비스들을 참고하다보니 굳이 필요하지 않는 기능들이 추가되었다.
가치에 집중하면 복잡해질 필요도 그럴 일도 없다는 것을 뒤늦게 깨달았다.
이외에도 엄청나게 많을 것이다.
가장 후회되는 건 정말 심플하게 만들고 빠르게 완성했어야하는 아쉬움이다.
그래도 이번 토이 프로젝트를 통해 전체적인 측면에서 많은 것들을 배우게 되었다.
그리고 더 많은 것들이 기다리고 있을 것이라 기대된다.
이 회고를 시작으로, 운영하면서 많은 것들을 경험하여 하나하나가 포스팅 주제가 되었으면 한다.
*현재는 내부 테스트 중이고, 배포가 된 후에 웹과 앱 링크를 남겨놓도록 하겠다.
모바일 최적화에 최적화 되어있지만, PC 에서도 사용 가능하다. (실시간으로 업데이트 중이다...)
현재는 PlayStore 에만 올라가있고, 빠른 시일 내에 AppStore 에 올릴 예정이다.
(많이 미숙하니 많은 관심과 도움을 주신다면 굉장히 기쁠 것이다...)