앱 150개 이상 만들며 QnA 정리
안녕하세요! 프로그래밍좀비 입니다. 최근 블로그 포스팅에(https://soulduse.tistory.com/106#comment20129916) 한 중학생 분의 질문을 받게 되었고, 질문의 내용이 괜찮은듯하여 이에 대한 제 답변을 정리 & 공유하며 앱 개발에 대한 궁금증을 해결해보고자 합니다.
(사실 초등학생~고등학생까지 조카가 있는데 제가 명절때나 만날일이 있으면 코딩으로 먹고살만하다며 넌지시 권유(?)해봐도 혼자서 하는 말처럼 늘 끝나버리고 말았는데 아직 중학생임에도 이런 질문을 주셨다는거에 너무 기특하기도하고 멋진것 같아서 글을 작성하게 되는것도 있는것 같네요 🤣)
질문 내용
답변 정리
Q1. 앱 아이디어는 어디서 얻나요?
1. 일상에서 영감 얻기
저의 경우 생활 속에서 끊임없이 "이런 앱이 있으면 어떨까?"라고 생각하는 습관을 가지고 있습니다. 샤워를 하다가, 놀다가, 일하다가, 여행을 하다가 떠오른 아이디어를 즉시 기록하는 습관이 있어서 작업을 하다보면 어느새 할일 리스트가 가득 차있게 됩니다.
(feat.제 개인 Jira 아이디어 기록창고)
이런 일상의 순간들이 간단해 보일 수 있지만, 때로는 가장 창의적이고 혁신적인 앱 아이디어로 이어질 수 있습니다. 개발 중이거나 완성된 앱 이후에도, 기록해둔 아이디어 목록을 다시 검토하여 실제로 개발하고 싶은 아이디어를 선택하는 과정은 끊임없는 창의력의 원천이 됩니다. 시간이 지나고보니 너무 과했거나, 정말 형편없는 아이디어라는 생각이 들면 별도의 취소 History 항목에다가 쌓아둡니다 😂(혹시나 미워도 한번 다시 볼 수도 있으니..)
2. 시장 조사를 통한 아이디어 발굴
구글 플레이스토어와 앱스토어를 정기적으로 확인하는 것은 시장의 최신 트렌드를 파악하고, 어떤 종류의 앱이 사용자들 사이에서 인기를 얻고 있는지를 이해하는 데 도움이 됩니다. 신규 출시되어 인기를 얻고 있는 앱들을 직접 다운로드하여 사용해보고, 그 안에서 어떤 점이 사용자들의 관심을 끌었는지, 어떻게 하면 더 나은 기능이나 콘텐츠를 추가할 수 있을지 고민해보는 것이 좋습니다. 이는 기존 아이디어를 개선하거나 새로운 아이디어를 창출하는 데 큰 도움이 됩니다. 특히 기존앱을 벤치마킹 하는거라면 그 앱의 리뷰를 꼼꼼히 확인해보는것도 좋은 팁입니다. 사람들이 어떤 불평을 가지고 있는지 파악할 수 있으니까요! (불평을 해결한다? => 내가 더 우위에 설 수 있다)
3. 확장 가능한 아이디어 개발
단순한 일회성 아이디어보다는 다양한 주제를 다룰 수 있고 확장 가능한 아이디어를 개발하는 것을 추천합니다. 예를 들어, 특정 중학교 커뮤니티 앱을 만든다면, 이를 다른 중학교로 확장할 수 있는 구조를 고려하여 개발하는 것이 좋습니다. 이런 접근 방식은 초기 아이디어에서 시작해 다양한 버전이나 다른 대상을 위한 앱으로 발전시킬 수 있는 기회를 제공합니다.
Q2. 150개의 앱을 만들면 앱의 퀄리티가 떨어질 수 있지 않은가요?
결론부터 말씀드리자면 제가 만든 앱중에는 퀄리티가 정말 형편없는 앱도많고, 제 기준에서는 퀄리티가 나쁘지 않은 앱도 꽤 있습니다. 하지만 시간이 흐를 수록 평균 퀄리티는 꾸준히 상승하게 됩니다.
150개의 앱을 개발하면서, 개발 기간과 퀄리티는 다양했습니다. 여기에는 단 하루 만에 개발된 앱부터 여러 달에 걸쳐 개발된 앱까지 포함됩니다. 이 과정에서 얻은 주요 교훈은 다음과 같습니다.
기능 재사용의 중요성
앱 개발 속도를 높이면서도 퀄리티를 유지하는 핵심 요소는 이미 개발해 놓은 기능의 재사용입니다. 예를 들어, 한 앱에서 개발한 커뮤니티 기능을 다른 앱에도 적용할 수 있다면, 개발 시간을 대폭 줄일 수 있습니다. 이런 방식으로 기존에 만들어둔 '도구'들을 활용하면, 새로운 앱 개발 시 기존의 노력을 다시 활용하여 효율성을 극대화할 수 있습니다.
ex) A앱에서 커뮤니티 기능을 2개월이 걸려서 개발을 완료했는데, 전혀 다른 주제의 B앱에서 동일한 커뮤니티 기능이 필요하다면 반나절이면 기능 붙히기 가능! => 만들어 놓은 커뮤니티 기능이 퀄리티를 고려 하여 만들었다면 B앱에서 사용하게 됐을때 자연스럽게 개발 속도는 빠르지만 퀄리티도 상승하게 된다.
퀄리티와 개발 속도의 균형
개발 속도가 빨라질수록 퀄리티가 반드시 떨어지는 것은 아닙니다. 오히려, 잘 구성된 기능 라이브러리와 컴포넌트를 활용함으로써 더 빠르게, 그리고 때로는 더 높은 퀄리티의 앱을 개발할 수 있습니다. 이는 개발 과정에서 축적된 경험과 자원을 기반으로 합니다. 개발한 앱과 기능이 많아질수록, 그리고 이를 효율적으로 재사용할 수 있는 시스템을 구축할수록 개발 속도와 퀄리티 모두를 향상시킬 수 있습니다.
결론
150개의 앱 개발 경험은 단순히 숫자의 문제가 아니라, 개발할때 내가 만드는 코드를 어떻게 재사용할 수 있을것인가에 대해 생각하고, 항상 범용적으로 사용할 수 있도록 사고하면서 만들면 좋습니다. 기능의 재사용은 개발 과정을 가속화하고, 동시에 다양한 프로젝트에서 일관된 퀄리티를 유지할 수 있는 기반을 마련합니다.
아래 2개의 사진들을 상세히 공개할수는 없어서 블러처리 하였지만, 앱, 서버 모두 필요한 범용적인 기능들을 왠만하면 모듈화를 진행하였고, 간단하게 한두줄이면 필요한 기능이 뿅하고 생성, 삭제될 수 있도록 구현하였습니다. 그리고 안드로이드의 경우 기본 템플릿 베이스 앱을 만들어두고 Git에서 관리하고 있으며, 여기에 많은 기능들이 들어가 있어서 전혀다른 신규 앱을 만들더라도 빠르게 만들 수 있게 됩니다.
Q3. 앱 만들때 하나의 언어로 만들었는지?
저의 경우 기본적으로는 Android + Kotlin 베이스로 앱을 만듭니다. 예전에 Flutter를 잠깐 이용해서 Android + iOS 모두 개발해본적은 있지만 생각보다 iOS는 출시와 검수에 대해 엄격한 편이라 그런지 저와 맞지 않는다고 판단하였고, 다시 익숙한 Android + Kotlin 조합으로 앱을 만들고 있습니다. 서버는 Kotlin + Spring boot + Jpa + Mysql 조합으로 사용하고 있습니다.
그리고 제가 아래와 같은 상황이라면 아래와 같이 할 것 같습니다.
상황 | 선택 |
나는 Android만 개발 할거야 | Android + Kotlin |
나는 iOS만 개발 할거야 | Swift |
나는 Android, iOS 모두 개발 할거야 | Flutter |
Q4. 사용한 프로그래밍 언어와 학습 방법은 무엇인가요?
저의 경우 야생 학습법(?)으로 학습 했습니다. 거의 대부분은 필요한 기능을 만들고싶다면 구글에서 검색해서 하나하나 따라해보고, 유튜브도 검색해보고, StackOverFlow에서 질문도 하고, 누가 이미 올려놓은 질문과 답변을 보면서 문제를 해결해 나가는식으로 공부를 했습니다.
저의 경우 그때그때 상황에 맞는 것을 찾아서 배우는게 스타일에 맞아서 그리 한건데, 각각의 장단점이 있기 때문에 본인이 어떤 학습 스타일을 가지고 있는지 판단해보고 결정하는게 좋을것 같습니다.
나는 하나를 배우더라도 기본부터 체계적으로 단계를 밟아가며 배우고 싶다면,
1. 인프런 - 인터넷 강의를 통해 내가 배우고자 하는 강의를 들으며, 처음부터 차근차근 제대로 다지는 방법
2. 개발 서적을 통해 학습 - 입문자라면 가장 얇고 쉬운 책부터 접근하는 것을 추천.
체계적인거 모르겠고, 당장 기능 하나하나 만들면서 배울래(야생학습법)
1. ChatGPT라는 강력한 선생님(?) 활용하기 - 내가 뭘 만들고 싶은지, 내가 뭘 알아야 하는지, 내가 작성한 코드가 잘 만든게 맞는지, 충분히 GPT와 대화를 나누면서 질문하는 형태로 공부해봐도 좋을것 같습니다.(유료버전 GPT4 추천)
2. 생각보다 유튜브에도 좋은 정보들이 많습니다. (조코딩, 빵형의 개발도상국, 코딩애플, 생활코딩, 등등...) (참고)
학습방법엔 정답이 있진 않은것 같아, 한번씩 경험해보시고 본인에게 맞는 방법을 선택하길 추천합니다.
기타
(질문자 분이 중학생이셨으니 ㅎㅎ) 영어와 수학은 정말 제대로 배워두시면 앞으로 개발을 할때 많은 도움이 됩니다. 전 어릴때 왜 수학이 중요하고, 영어를 배워야하는지 모르는 상태로 커서 공부를 제대로 안했는데, 이게 개발일을 하다보니 꽤나 중요합니다.
특히 영어와 수학중 하나를 꼽으라면 영어!
이유는 개발 하다보면 참고해야될 자료가 거의 대부분 영어로 되어있는 경우가 많습니다. 영어를 잘 할 수 있게되면 더욱 지식 습득이 수월해질수 있으니 큰 도움이 되겠죠!
Q5. 수익화 관점에서 앱을 만들기 위해서 어떠한 방식으로 공부하는것을 추천하는지?
우선은 대단한 기능을 만든다는 것보다는 최대한 단순하고 간단한것 부터 만들어볼것을 추천합니다. 제가 작성한 글에도 적었지만,
https://soulduse.tistory.com/106
6개월 동안 만든 앱보다 1일 걸려서 만든 앱이 수익이 훨씬 많이 벌리는 경우와 같은 상황이 생각보다 많이 발생합니다.
앱의 퀄리티가 높다 == 앱의 수익이 증가한다 (X)
앱 개발에 공을 들인 시간이 길다 == 앱의 수익이 증가한다 (X)
수익화 관점에서 생각 해봤을때 앱 개발에 있어서 가장 중요한 점은 복잡하고 대단한 기능을 가진 앱을 만드는 것이 아니라, 사용자에게 가치를 제공할 수 있는 간단하고 실용적인 앱을 빠르게 출시하는 것입니다. 자기 자신이 아직 개발 초보자라면 더욱더 이러한 방식으로 앱 개발을 접근해야 하며, 다음과 같은 이유에서 추천됩니다
간단한 앱의 중요성
- 개발 속도와 학습: 복잡한 기능을 가진 앱을 개발하기 위해 많은 시간을 투자하기 전에, 간단한 앱을 만들고 출시해보는 경험은 빠른 피드백과 학습 기회를 제공합니다. 이 과정에서 개발자는 실제 사용자의 반응을 바탕으로 더 나은 앱을 개발하는 데 필요한 지식과 경험을 쌓게 됩니다.
- 수익 창출: 앱의 퀄리티와 수익성은 반드시 직접적인 관계가 있는 것은 아닙니다. 실제로, 간단하게 만든 앱이 복잡하고 시간을 많이 투자한 앱보다 더 많은 수익을 창출하는 경우가 종종 있습니다. 이는 앱 개발에 있어서 퀄리티보다 사용자가 원하는 핵심 가치를 제공하는 것이 더 중요할 수 있음을 의미합니다.
- 동기 부여와 지속 가능성: 복잡한 앱 개발에 매달리다 보면 쉽게 지치고 포기할 가능성이 높아집니다. 반면, 간단한 앱을 만들어 실제로 수익을 창출해내는 경험은 개발자에게 큰 동기부여가 되며, 개발 공부와 실습을 지속적으로 이어가는 원동력이 됩니다.
실행 전략
- 공부와 실습 병행: 개발 능력이 아직 초보 단계에 있더라도, 복잡한 기능 개발에 앞서 사용자에게 가치를 제공할 수 있는 간단한 앱을 만들어 보는 것이 중요합니다. 이를 통해 실제 앱 출시 과정을 경험하고, 초기 수익 창출을 목표로 하는 동시에 개발 실력을 점진적으로 향상시킬 수 있습니다.
- 동기부여 유지: 앱 개발 과정에서 작은 성공을 경험하는 것은 큰 동기부여가 됩니다. 하루에 단 $1이라도 벌 수 있는 앱을 만드는 것이 그 시작점이 될 수 있으며, 이는 지속적인 개발 활동으로 이어질 수 있습니다.
우선적으로 위와 같이 작은것 부터 시작하여 나중에 내가 실력이 향상하고, 개발 속도가 더 붙었다면 조금씩 복잡한 앱도 도전하고 더 많은 사람들이 사용할 수 있는(많은 트래픽을 받을 수 있는) 앱을 만들어보는 순으로 해봐도 좋을것 같습니다.
마치며
요즘 부쩍 개인앱 개발 관련해서 관심이 많아진것 같습니다. 개인앱 개발을 통해 부가적인 수익을 올리고, 내가 원하는걸 마음껏 만들어볼 수 있다는 것은 분명 정말 매력적인 일임에는 틀림없다고 생각합니다.
하지만 개발을 통해 수익화 까지에는 분명 개발 학습이라는 허들이 존재하며, 그 지식을 안다고 해서 끝이 아닌 앱을 만드는 과정이 필요하며, 정말 열심히 노력해서 환상적인 멋진 앱을 만들고 출시했다고 하더라도 수익화에 실패하는 경우도 정말 많습니다.
하지만 반대로 생각해보면 어떨까요? 누구나 쉽게 접근할 수 있는(허들이 없는) 경우는 금방 블루오션이 레드오션이 되기 마련입니다. 그렇기에 내가 개발을 잘 할줄 알고, 개인앱을 만들 수 있다면 이런 허들이 누군가에겐 커다란 장벽이되기 때문에 여전히 앱 개발시장은 좋은 환경이라고 생각합니다.
물론 제가 생각하는 레드오션(ex. 유튜브, 스마트스토어, 쿠팡 등등).에서도 분명 승승장구 하시는 분들도 계십니다. 앱개발 시장도 마찬가지로 블루오션이라고 하더라도 레드오션에서 살아남아서 성공하겠다 라는 마음으로 접근 해야 한다고 생각합니다.
누구나 처음은 힘들고 결과는 미미할 수 있습니다. 저도 개인앱 개발을 처음 시작했던 2017년 1년동안 개인앱에 많은 시간을 쏟고 몰두했지만 결과는 어땠을까요?
1년중 가장 최고 수익은 고작 $3.71달러에 불과 했습니다.
1년동안 죽어라 고생했지만 전체 벌어들인 수익은 $40.85 밖에 되지 않았습니다.
당시 초보 개발자였던지라 실력이 없었고 당연히 생산성또한 형편없는 수준이었습니다. 그래서 이를 극복하기 위해 나를 갈아넣는 전략밖에 할게 없었습니다. 그러한 과정의 기억을 떠올려 보면 (현재의 아내이자 전 여자친구와 주말 데이트를 포기하고, 친구들과의 약속을 취소하였으며, 거의 대부분의 욕구를 배제한채 원룸에 혼자서 우두커니 개발만 했던 시간이었습니다.) 하지만 전 하루 $3.71 벌렸을때, 내가 노력 했는데 이것밖에 안되네라고 생각한게 아닌, 공짜로 커피한잔을 마실 수 있게 되었다며 엄청 기뻐했던 기억이 납니다. 그렇게 시간이 흘러 금액이 하루 $5달러가 되고 $10달러가 되고 점진적으로 상승할때마다 그 수익금이 동기부여가 되어, 예전에는 아메리카노 한잔이었는데, 이제는 점심한끼, 시간이 더 지나서는 하루에 1치킨 가능! 오... 이제는 드디어 1일 1족발도 먹겠다라며 더욱 스스로를 격려하고 그런 마음들이 쌓여 이러한 과정이 힘듦이 아닌 재미 또는 즐거움, 뭔가 모를 한줄기 희망같은 느낌으로 바뀌게 되면서 개인앱 개발을 지속할 수 있는 힘이 되었던것 같습니다.
얼마전 성공으로 가는 지름길 이라는 글을 작성했는데 모든지 한번에 되는건 없다고 생각합니다.
https://soulduse.tistory.com/131
실패하지 않는 방법은 될때까지 계속 하는 것이라는 말이 있듯이 포기하지 않고 꾸준히 하다보면 원하는 목표를 모두 이룰 수 있을꺼라 생각하며 글을 마무리 합니다.