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