相关阅读:
马云:我不懂技术,但我尊重技术(附演讲全文
鹿晗关晓彤公开恋情,是如何把微博服务器搞炸的? 附大型网站高可用架构和解决方案
互联网技术(java框架、分布式、集群)干货视频大全,不看后悔!(免费下载)
文章有点长,但是看完肯定有巨大收获,特别是针对想从事互联网行业想开发一个自己APP的人,这是我从自己多年外包和自己开发产品累计研发成本过千万的情况下得出的经验。
先说结论
腾讯开发微信花的成本应该超过10个亿,真的技术难度很大,如果交给一个全栈工程师去做,可能要做1万年。下面详细的讲解和分析为什么成本这么高,都高在哪里。
本人之前就是做APP软件外包行业的,前后外包的APP开发上线过上百款,涉及领域从电商,教育,金融,物联网,医疗都有。去年开始转型,开始真正的开发了一款属于自己公司的互联网产品,期间真正的体验了一把给自己做产品跟做外包的巨大差别,也能足够说明为什么腾讯开发微信成本如此之高。
腾讯的微信开发成本高,大致可以分为这几种原因,以下会一一详细说明:
1. 功能的反复修改造成成本庞大,研发的过程中可能会不断的推翻之前的想法。
2.不同手机不同操作系统版本号,手机型号兼容性问题调试
3.庞大用户基数情况下的高并发问题的处理
4.有些功能不是你想开发就开发(比如消息推送),还要跟第三方手机厂商洽谈才能做,简单来说可能要给第三方厂商钱。
1. 功能的反复修改造成成本庞大,研发的过程中可能会不断的推翻之前的想法。
我以前做外包公司的时候,大部分客户APP项目的开发成本都在50万以内,以二三十万之间的价格比较多,以最基本的注册登录功能为例。一般这种二三十万开发的注册登录安卓,IOS,加上后台的开发总耗时一般在2到3个工作日(3个工程师一起协同办公的情况下),包括写代码和调试bug的时间。遇到繁琐或者客户要求比较高的,可能反复改动下来总耗时一般不超过一周。
而我们真正在给自己做一个APP作为自己的互联网产品去运营的时候,我们光一个注册登录,就改了不下100次,前后总耗时保守估计超过50个工作日,花在光一个注册登录上的工程师的工资成本保守估计超过10万。
那么是什么原因造成了我们给自己做APP产品的时候,要改100次以上,前后耗时要50个工作日,同时光一个简单的注册登录工资成本要花十几万呢?
给大家简单看一下我们产品的注册登录页面,说说这里面的门道。
乍一看之下我们的注册登录页面功能,支持手机短信注册登录,邮件注册登录,微信授权登录,国际短信注册,仿佛也没什么复杂的。
但是其实这里面的门道非常非常复杂,我挑几个典型事情说一下。
现在APP很流行做QQ或者微信的授权登录,因为做了授权登录后,用户可以更低成本的跳过注册流程直接使用你APP的服务,这样提高了APP用户的使用率。
但是这么做,是不是绝对的是好事呢?
这么做或许对用户来说是好事,但是对APP平台方来说不一定是什么好事。这么做会导致一个很蛋疼的问题,就是你获取不到用户资料(用户的手机号),微信授权登录的时候,微信并不会把用户的手机号或者是微信号给你,只会给你一个用户的微信昵称。这个东西并不能联系到用户本人。
那么用户的手机号有多重要呢?拿到用户的手机号,可以很大程度上提高用户留存率!你们应该经常收到探探,王者荣耀,淘宝之类APP的短信,这些短信都是通过各种方式召回唤醒你这个暂时流失的老用户,或者是提醒你出了什么新功能新活动鼓励你去消费。
你只要一段时间不上线,探探就会给你发最近2小时又有几个美女小姐姐喜欢了你,让你过来看看。而王者荣耀会给你发什么诸葛亮新皮肤上线了之类的短信,召回和唤醒用户让用户去玩。
如果没有用户手机号,那就无法发送短信的,那就根本就做不到这一点。这是一种重要的提高用户活跃度和留存率的方式。
哪怕就是不为了提高用户的留存,如果用户反馈了什么问题和bug亟待解决,你也无法通过手机联系到用户去帮他解决问题。因为微信授权登陆你是什么有效的用户资料都拿不到的。
我们开始先是把微信授权登录按钮做的很大很显眼,后来就发现超过90%的用户都是用微信授权登录,不用手机号或邮箱注册。于是我们觉得这样很操蛋,不行,要想办法把微信的按钮搞的不是那么显眼。那么这个按钮到底放到哪里也很讲究,太小了用户找不到的话,可能也会导致注册率降低,很多人嫌麻烦可能就不注册了。太大了呢,就全是微信授权登录的。
那么就要不断的去尝试到底放在什么位置刚好,既希望用户通过手机号或邮箱来注册,同时希望他忽略微信。但是如果他一定要找微信又能找得到。
可能这么一个东西就够你调整五六次反复去尝试。
同时很多人可能做了微信授权登录又让用户首次的时候必须要强制绑定手机,这种机制也可能会引发用户反感,繁琐的流程可能会导致用户放弃注册或卸载APP。那么如何去设计注册登录提高注册率,每个细节都成了一个很值得琢磨和尝试的问题。
同时又比如说短信注册这块,你的APP支持不支持国际短信可能难度又差了N倍。如果你有海外用户的话,那么可能你还需要国际短信注册。同时又可能有些短信通道发送短信速度过慢,或者特定条件下无法发送出去,到达率低等。那么这时候还要设计一套机制来保证短信的发送率和到达率。
比如一般的短信通道是不接召回短信的,那么你还要有路子搞到能发召回短信的通道。以我们自己的产品为例,光短信通道就对接了3家,在不同的条件下用不同的通道来发送短信,搞这么复杂的目的是为了保证短信的发送速度和到达率以及其他的一些特殊情况。
光一个注册流程诸如此类的细节问题就不低于十几种。每种解决起来背后都要经过大量的尝试和成本。每一个文案,每一个按钮摆放的位置,颜色,都是经过大量的实验得出的结果,而不是拍脑袋得出的。
那么这么做有什么用呢?
我之前跟很多其他运营APP的公司聊过,很多人的下载到注册率只能达到70到80%,低的只有60%,我们一开始的下载和注册率也只能达到75%到80%之间。而经过一系列长期的优化,现在可以达到95%左右的下载到注册率。稳步提升了15%左右的注册率。
这意味着,如果同样的100万人下载我的APP,原来只有75到80万会注册成功去尝试我后续的APP服务,并可能长期留下来成为我的用户。而现在100万用户里会多出来15万人尝试并成为我的用户。
你说我这时间和精力花得值不值?
虽然回过头来在看,如果我们在研发的过程中想法不出现偏差,直接是像素级抄袭别人的东西那成本肯定低得多,因为不同自己思考为什么,也不存在反复推翻自己的过程。好比我原来注册登录花了十几万,那如果是有现成的抄袭的话可能2万成本就能搞定。但是你要想清楚,每个产品的特点都不是不一样的,不同APP的用户特性也决定了注册登录页面设计成什么样子才合适,别人的不一定适合你。
Ps:有兴趣的人可以研究下知乎的注册登录页面,也是暗藏玄机,任何大公司的APP产品,可以说注册登录页面几乎每年都在优化。其目的都是不断的尝试进一步提高产品的下载到注册率。你们多下载几个大公司的APP就知道了。
我们作为一个小公司,光一个注册登录都做了十几万,而一个大公司可能光琢磨一个注册登录反复修改下来成本花上百万也正常。而我们之前做外包项目呢?一个注册登录撑死跟客户收个5000块,一般两三天搞完。这些细节有成本有预算去考虑吗?
而且这还只是一个注册登录,一个用户体验称得上好的软件既要平衡用户体验又要把用户引导像你需要的程度,那就需要每个功能都反复斟酌尝试。用户体验要好这六个大字,花多少钱都不为过,所以这也就是我前面说的,大公司的APP可能每个功能都是改过几百次上千次的。
别人都说,大繁至简,但是在这里我想说一句,大简也至繁。
2.不同手机不同操作系统版本号,手机型号兼容性问题调试
微信作为一个国民级应用,在不同手机上的兼容性是做的很好的。但是这不代表这件事简单,大家肯定经常发现各类APP在手机上出现闪退,卡死,黑屏的情况。一般越是小公司做的东西越可能会这样。
IOS还好,国内光主流的安卓机型就有几百款,如果你要你的软件在每款手机上都能完美运行,不出现太多的闪退。那光把测试机型买齐就要上百万。买齐了后任何一个功能都要在不同品牌,不同操作系统版本号的手机上去测试。
又可能你的APP在华为P8上不会闪退,但是可能华为P9就会闪退,甚至可能打都打不开。也就是说不光是跨厂商,即使是同一个厂商生产的不同机型都可能会出现不同的问题。但是用户可不管你那么多,你APP如果频繁闪退,面临的必然是被卸载的结局。
还有一点很重要的要告诉大家的是,相对于买齐各类手机来测试的硬件成本来说,这个成本只是九牛一毛,真正高昂的是测试人员和你测出来后还要修复bug的程序员的工资成本。你不可能测出来bug不修吧?
一般大公司的产品,背后可能光测试人员都几十个人,每年发工资几百万甚至上千万。
小的APP开发商无法很好的做到这点,一般也就搞个十几台手机测试就了不起了,有些甚至只在自己一个人的手机上测试一下。所以也就导致了闪退频发。并不是你把功能代码写完了,就万事大吉了。各种兼容性问题如果要解决好,绝对是够你喝一壶。
3.庞大用户基数情况下的高并发问题的处理
这个问题前面的人说的都很多了,我就不说太多。简单来说同样一个功能,你1万日活和1亿日活的时候,会导致功能实现方式和成本上根本的变化。
微信在例如搜索等功能的研发成本上,并不是简单的一个付出了多少人员工资成本的问题。微信作为腾讯系的核心产品,里面用到的技术并不一定仅仅来自于微信团队自身的积累。腾讯在开发其他产品上的技术完全可以支援和嫁接过来,那么之前研发别的产品上的技术研发成本在微信里相当于是不需要走弯路了。
但是不是每个公司都有技术可以拿过来嫁接的,别人有不代表你有。
完全不可同日语。当然很多小公司一般根本不会遇到这个问题,所以也不需要考虑。
4.有些功能不是你想开发就开发(比如消息推送),还要跟第三方手机厂商洽谈才能做,简单来说可能要给第三方厂商钱。
大家应该都知道APP下拉框的消息推送功能。而消息推送要做好绝对是一个很坑爹的东西。基本小公司的消息推送都不是自己做,而是用环信和腾讯的一些第三方的系统来对接实现。当然你会看到腾讯和环信这些公司的官网上,会写着一些5分钟,三行代码对接之类的话。
不懂的人很容易误以为APP的消息推送功能实现起来真的只要3行代码五分钟搞定。因为这些第三方的公司只是相当于发送推送信息的通道,但是你APP具体的推送机制,在什么情况下推送还是要你自己来设计的。而设计这个东西对很多APP来说就非常复杂了。
以知乎为例吧,有人给你点赞了推送,有人关注你了推送,有人私信你了推送等等等等。这里可能就分为十几种到几十种情况,并且还不是来了消息就推送这么简单,因为如果来一条信息你就推送一条。那么遇到晚上用户睡觉了你还一直推送可能就会导致用户关闭推送功能甚至是卸载APP。同样哪怕是白天,过于频繁的推送也可能会导致用户反感,那么这时候设计一套合理的推送机制就很有挑战。
既既要用户能收到你的推送来提高APP的打开使用率,又要不导致用户反感是非常难的。这时候可能还要设计当多种推送条件都达成的时候,只推送其中部分消息。你也要考虑,你想以推送的形式告诉用户的东西是很多的,但是又不可能个个都推。那么这时候还要深入考虑如何去取舍。
En.......最后你以为你把机制搞清楚了就万事大吉了?
这只是个开始,这么说吧,你后续还会遇到一系列更操蛋的问题。比如你会发现IOS的推送还好,用户基本都能收到。但是安卓的用户却老是根本收不到你的推送。这是为什么呢?
因为不同的安卓手机厂商可能在系统上就限定死了你必须要用他提供的推送接口,否则是推不过来的,你的程序在后台运行的时候会被系统本身杀死而导致你的推送信息发不过去。那么这时候你又要针对不同的系统去开发不同的推送功能。
最最蛋疼的是,有些厂商比如OPPO,你想做都做不了。我们之前就发现我们用户里面很活跃的一款机型OPPO R9,发现在OPPO R9这款机型上,大部分APP一安装,默认就是禁止推送的状态。只有小部分的例如微信,QQ,微博,知乎这样的APP的推送是默认开启的。而哪怕是百度贴吧,快手这样的大公司的APP的消息推送默认也是被禁止的状态。
从这点看知乎还是很牛逼的,能做到跟微信QQ微博一样让OPPO默认开启他的推送。至于这是怎么做到的,我暂时还不清楚,但是在官方并没有明确的文档来告诉你怎么搞。
我怀疑可能是这个事情要给OPPO钱,或者要去找他们谈才可以。而小公司在这点上根本是无能为力的。
对于有些人说注册登录是小功能,应该好好把时间用在做产品上的我做个解释。
注册登录不是小功能,是最最基本的功能,你你APP的门槛。如果连最基本的注册登录都做不好?怎么保证其他的功能可以做得好?又何来产品体验好只说?
对于一个互联网公司来说,每一分钱都是应该花在刀口上的,现在这个年代获取一个用户的平均成本已经相较于移动互联网刚起来那会比如2012年上升了几百倍。获取任何一个用户都来之不易,很多APP现在获取一个用户的成本早已高到了十几元甚至几百元一个下载,如果控制不好下载到注册的转化率。会导致你大量推广的钱白白浪费,因为在注册这步就有大量的用户流失,那相应的APP的留存率和日活跃肯定也会随之被拉低。
同样的我想说一句,现在是2017年,人不能活在过去。2012年那会你随便做个什么东西可能都能获得大量用户和大量好评,因为那会稀奇还什么都没有。你的用户体验再查,UI界面再难看,功能在不好用,可能用户都可以接受。因为那会大家都差不多这水平,都很差。
但是现在已经2017年了,大部分APP的用户体验相较于2012年那早已不可同日语,BAT这类大公司投入的天量研发投入已经把整个市场的门槛和平均水平大大提高。用户对你的要求和预期早已不是2012年那样了。
现在你再把一些2012年做的东西拿到2017年来看,那可能是一坨大便。那么越是后期去创业,市场和用户对你的要求也越高,因为基本需求已被满足,蛋糕也被分得差不多了。那么现在杀出来的,一定更有可能是各种细节都能优化的非常好的,只有细节的堆砌才能决定所谓的用户体验好。
用户体验好 这五个大字,岂是那么容易得来的?不优化打磨产品各种细节,你的日活和留存率从哪里来?指望天数掉馅饼?
看完本文有收获?请转发分享给更多人
欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,我们只聊互联网、只聊架构,不聊其他!打造最有价值的架构师圈子和社区。
本公众号覆盖中国主要首席架构师、高级架构师、CTO、技术总监、技术负责人等人 群。分享最有价值的架构思想和内容。打造中国互联网圈最有价值的架构师圈子。
长按下方的二维码可以快速关注我们
如想加群讨论学习,请点击右下角的“加群学习”菜单入群