时隔2年,把这篇文章拿出来,稍作修改。
本文仅从个人作为一个三流跑偏程序员的角度思考,而且对待产品的认知和思维也比较初级,实现方式也比较草根,没法与真正的大型项目相提并论,其中有些观点也可能是错误的,希望不要对他人产生误导。
关于这个问题,每个人都有自己的答案,一个人的不同阶段,也有不同的答案。
其实完成这样一个任务并不是特别困难,只需要毅力与时间,但对于如何成功完成我至今没有答案,还在摸索中。
下图是我回忆自己开发过程中大概涉及到的解决方式,条条大路通罗马,每个人都需要选择适合自己的,仅作参考。
当我头脑中有了一个想法并想实现它的时候,流程如下
1.简单的调研。
前提条件是你没有优秀的技术团队,没有流量资源,没有雄厚的资金支持等先天优势。
那么如何验证自己的想法是否靠谱呢,可以借助很多方式,如果你的产品没有自己的流量来源而是要和一众产品厮杀,可以试试如下方式。
微信指数小程序,搜索下关键字微信指数,如果指数达到了你的心理预期,则需求存在。
七麦数据,蝉大师等三方网站搜索下关键词,看下同类应用中出色产品的下载量,大概能估计出这类产品的市场份额。
各大应用平台关键字搜索同类产品,国内市场仅作参考吧,App Store,Google Play上看下竞品下载量,还有评价,评价里会有很多有价值的信息,对你完善产品很有帮助。最好可以下载一些竞品,用一用。我平时比较喜欢看看应用市场,看一看排行,评价。
这里也许有人会说,我的想法独一无二,目前市面上还没有同类产品,那我觉得该恭喜你,如果你的产品逻辑ok,何不按照自己的思路实现出来交给市场验证。但绝大部分想法都会有同类产品已经出现,除非你是世界上少数的聪明人。
如果同类产品非常多,说明大方向没错,但是很多人已经走在了你的前边,这时就要考虑要么你的产品足够优秀,可以脱颖而出,但对于一个人来说难度较大,要么你的产品有自己的唯一不可替代性。毕竟一个很残酷的事实是,关键词搜索流量的相当大比例只给了第一页。
如果同类产品非常少,但是评价很少,说明用户量不大,需要慎重,如果评论很多,则需求存在。而且评价还有一个非常重要的用处,可以分析自身和竞品的缺陷与优势,取长补短,帮助自己完善想法。
2.初步构思。
经过初步的验证,想法ok,便可以构思产品,我习惯用思维导图来梳理和完善逻辑,发现问题。
构思产品的初步模型,确定UI,能设计流程图最好,借助墨刀,Axure RP 等,或者采用你喜欢的方式,我其实是没有做设计流程图这一步的,能力有限,而且不太喜欢在这上花太多时间。
我也喜欢在站酷上找相关素材,不单单会提供素材,在产品上也会有启发。
3.技术选型。
2017-2019年采用的方式一直是服务器用nodejs,客户端用react native,这样的原因是开发语言学习上不需要花太多的时间,只要会js,就基本可以上手。客户端使用rn没有使用原生的原因也是因为rn就可以满足我的产品需求而且性能还不错,节省时间成本。但不得不承认我在rn上花了很多时间去填坑,2019年之后开始使用flutter,对于2者的好坏,我不做评论,选择适合自己的,我的情况是目前新产品都是用flutter开发,旧项目也有几款使用fluter进行了重写,比较习惯使用flutter。
对于app前端跨平台语言的选择上,需要考虑,性能是否ok,与原生的交互,使用的人数,文档的完善度,社区活跃度,学习成本,综合考虑选择适合自己的就好。
4.开始编写
app端涉及的包括UI,数据存储,网络,推送,异常捕获,数据统计,云控系统,版本控制,当然有些产品还需要某一方面极强的专业性。我的原则是能用三方的尽量用三方,把时间节省出来,而且我不认为自己实现的会比市场上验证的三方更好。但我不会因为时间问题而去省去其中某一部分,尤其是数据统计,看似可以忽略却对产品后续至关重要,我每天都会看下统计数据。
服务器端我不敢提及太多,因为服务器端我基本都是自学的,很初级,紧紧停留在能用的阶段,说实话,我希望有一天我的技术支撑不了我的产品,那说明用户已经达到了一个量级,那时我会去寻找优秀的人帮助。
编写过程中,首先保证稳定性,可扩展性,如同武侠片中,我更喜欢稳扎稳打,简单有效而不是眼花缭乱的招式,我可以在实现方式上偷懒,但是我不会在功能逻辑上偷懒,尽量在设计功能上做到最大化的动态控制,这里忽略了安全性,原因是我对安全性方面理解还不是很透彻。
语言本身只是一种工具,更重要的是思路,有了思路后要做的就是使用相应的语言实现方式,毕竟语言都是给人用的,不存在会与不会的问题,学习时间长短确实是有差别的。
对于遇到难题,可以解决但需要花时间的问题,假如有其他方式解决,我会选择退而求其次,有些也可以从设计上作出让步,这也是我喜欢一个人编程的原因之一。
第一个版本上线时间节点很重要,尽量只完成核心功能,这样做好处是缩短开发周期。可以尽快让市场去验证,而且用户反馈可以让你及时作出调整,还能调动你的积极性。至今仍然谨记曾经一位老大说过“小步快跑”。
我觉得这比把一个产品做的自己觉得完美再上线更好。而且开发周期越长,人的耐心会越小,很容易出现半途而废。打磨产品本就是一个漫长且磨人心智的过程,如果能获得用户反馈,无论认可或者批评都会给人很大动力。
现阶段,我基本不会去提前做技术储备,基本都是遇到了问题才会去网上找实现方式,而且选择的大都是简单初级的方式,这确实比较low。
5.产品完成,部署服务器,申请域名,准备上线。
苹果审核涉及到技术网址,隐私政策,而且谁都希望自己都app最起码有个下载页,对于提高产品都逼格是有帮助的,所以最好申请个心仪的域名。还有就是如果有小程序端需要支持https的域名。服务器的选择,我使用的是阿里云和腾讯云,都是最低配置的,还是一样选择适合自己的。
关于服务器的运维是需要了解学习一下的,服务器部署,更新,重启,查看错误日志。即使有人可以帮忙,最好也还是自己来维护会比较方便及时。
很高兴,终于到了提交这一步,目前安卓渠道原则上都需要软著,正常申请周期3-5个月,涉及支付等敏感功能等还需要公司资质,这些最好也都提前了解下。
提交平台,app store , google play 不需要软著,google play应用如果包含极光推送需要接入专门的google play版,包含优量汇广告的应用也会被拒绝。国内市场对软著要求比较严格,审核周期一般都比较快,没问题一天以内,部分市场拒绝盒子类app审核,应用截图有改动必须及时更换。如果能申请某个平台的首发对初始流量获取也帮助很大。adroid平台众多,其他渠道我了解不多。
内测的话,蒲公英和fir.im都是不错的选择。
6.产品上线,刚刚开始
当app过审,用户开始下载使用,服务器一条条日志输出,一个产品的生命才刚刚开始,当我看到后台一条条日志输出时,觉得那就像流动的血液。至此也就是完成了从0到1的过程,后边是从1到100,我觉得相比于从0到1,从1到100才是给我们最大到挑战,这也是我一直在摸索和学习到阶段。
aso可以帮助更好获得流量,如果你的产品关键字优化到第一页会有可观的流量。
切勿重技术轻运营,没有孰轻孰重。
尽可能找到好的流量获取入口,有效地引流。
7.有时也许可以改变一种方式
验证一个想法没有必要非得依赖app,毕竟开发周期比较长,可以尝试使用小程序去验证,周期会缩短,甚至有些想法完全可以通过社群等简单方式去论证,当可行后再开始也许更合适。
之前有看到过国外产品的经历,产品支出,开发者只做了一个官网,询问用户是否感兴趣,感兴趣的用户可以留下自己的邮箱,当看到有一定数量的人开始关注之后开始真正做这款产品。
8.个人开发门槛也在升高
相对于前几年个人开发的门槛也在升高,app在国内应用市场发布需要软著,我申请了几次,不需要费用,但是每次大概等上3个月。虽然找中介速度很快,但是费用这块也是问题,单单只是一个app还好,但是开发的多了,这个费用也不少。服务器费用,域名费用,图床费用,开发者账号费用等等。
除了软著之外,还需要icp备案,部分还需要电子软著,后边我再开发的新产品,只能是先发布AppStore,Google Play,感觉数据可以再申请软著发布在国内安卓市场,部分市场已经不允许个人资质发布社区类应用。
还有比较致命的一点是,穿山甲,优量汇等广告平台,都需要企业资质,而且创建广告位需要软著,这起码对于我来说比较难搞。
虽然种种限制,会让市场正规化,是好事,但是同时确实会影响到一部分像我这样的人。
9.活下去才有希望
很多不错的产品,可能因为没有找到盈利点,不能维持长期生存而半路腰斩。我们在尽量完善产品的同时,争取让它能够活的更久。现在,同类型产品众多而且差距不大,即使你的产品中途停运,用户也能迅速找到替代品。
其实目前对于产品盈利这块,我也没有做的很好,唯一的盈利方式就是广告,而用户对广告又很反感,这个找不到完美的解决方式,只能尽量平衡,好在,相对于团队开发,个人开发效率专业度虽然处于下风,但是维护成本相对低很多,在产品没有太好起色的时候,能够撑的更久。
以上是我总结自身的一点点经验,希望可以对你有所帮助。