如何找到好的产品?(下)


如何找到好的产品?(下)
周鸿祎

“如何找到好的产品?它必须满足三个条件:刚需、痛点、高频。”

无论是行业大佬,还是一个小的创业者,你听完了我讲的需要做的只有一件事,就是怎么找到一个产品,利用这个产品去吸引用户。

如何让你的产品可以积累用户,可以黏住用户和用户连接,其中最重要的就是体验,但是用户体验是第二步,最重要的就是你要找到一个用户的刚需和痛点,这是我反复强调的。

就像我刚才说,我们内部有人做了电子捕鼠器,配置都很高端,唯一需要的就是把老鼠抓了放进去,还有你们很多人看到的现在各种智能硬件,摸起来光滑,但是忽略了一个前提,我不想买这个东西,因为没有需求。没有需求解决的不是痛点,就是伪需求。做产品最大的限制不是体验不好,体验不好可以改,最大的问题就是伪需求。

还有一些产品有没有需求呢?有,但是没有它,用户也可以过,所以我管它叫痒点。眼中钉、肉中刺,你们按照这个标准对,任何伟大的战略都是从这么一个小点开始切入。有人老吹牛说想战略,我告诉你战略就是找到这个用户的痛点和刚需,然后做一个产品解决它。至于解决的好和更好,这是体验的问题。

理论上如果说用今天我们手机座机行业的文案标准,那个捕鼠器绝对是温文尔雅,豪迈大方。用了403不锈钢做的铁门,杀老鼠的刀片和吉利刀片利用一样的大马士革钢,上了六遍漆,让老鼠很容易摔倒,我们可以做一个PPT,我专门开一场发布会,为一个捕鼠器讲两个小时。而且我还告诉你,我可以对付美国大仓鼠,欧洲的老鼠,而且支持蓝牙。我做了一个手机App,如果说抓住了老虎会把视频发给你。但是问题还不是你需要抓个老鼠放进去,而是,大哥还是买猫吧。

以前做产品我老忽略了本质,所以我谈了很多如何改善体验的方法,今天我要回归本原,想出一个主意以后要问自己是不是刚需,是不是痛点。还有一些人自己想象了一个场景,这个场景在生活中很少发生。上门修锁是不是刚需?是刚需,是不是痛点?绝对痛,但是它的频度太低。这种情况下,你这种产品就很难替你凝聚用户。

其实对很多的大企业,我都说你要忘掉原来的商业模式,你要忘掉你原来丰富的产品线。所有的战略都要归结成从用户角度出发寻找一个需求,一定是中等以上的频度,痛点、刚需。这个服务可以非常不起眼,但是它一定是对用户有价值的。

我再举两个例子,今天小米手机做的相当成功,小米现在什么都卖了。很多人谈做手机必谈生态链,这个错误在哪里?你们买手机是因为这个吗,不是,你还是冲着配置、颜值、性价比。所以小米最早做起来的原因才是它真正破局的点,一旦它破了这个局,它后续的东西都是一种很自然延续的发展。

什么是痛点?想用双核,所有的双核手机苹果卖六千,三星卖四千五,国产的卖三千,小米1999,这就是痛点。第一代的小米手机有设计吗?雷总说没有设计就是最好的设计,所以人家拼的不是颜值和工艺。你们分析很多公司的时候,不要分析它走到今天成功是因为什么,一定要看他们第一个产品是怎么做的,这种产品的分析才有价值。

微信今天是一个特别伟大的产品,但是你们看看张小龙曾经的一篇自述,他讲了微信最早做出来,当时也找了很多的点但是都没有突破,它的突破点是什么呢?摇一摇,那是他们快速获得第一批忠诚用户的点,这是刚需,高频。一个婚介公司是世纪佳缘,但是不是太大,因为你只能找一个,找到了就不能再去了,低频。

咱们接着讲facebook,facebook做到后来产品经过不断的演化。刚开始的时候,你的产品不要试图解决所有人的问题,你可能只解决一部分人,你就解决一个最大的问题。消费者选择你的产品是特别简单的,我拿你干什么,给我创造什么价值。回答这个问题,你的公司就成功一半,剩下的就是执行力的问题,持续改进的问题。

很多人写商业计划书的时候容易犯一个错误,老喜欢重论革命形势,或者就是重论各种概念,计划书里说了半天O2O,SNS,闭环,流程,这些话如果你的用户听不懂,投资人也不会投资你。你把他当成一个用户,这个产品面对什么人解决他们什么问题。

比如说我们很多的产品经理,他在日常生活中是一个优秀的用户,到一个餐馆吃饭不满意一定会拍桌子,下载了一个App五秒钟不会用,你一定会卸载,但是自己做产品的时候,突然就改变了,觉得要教育用户,觉得我的产品就是这么设计,就是这个流程。我说什么年代,当年的PC年代软件难用,电脑是专业活,如何21天学会用XXX软件的书卖出好多本。现在,还希望用户到中关村创业大街买一本叫21天学会利用周鸿祎做的智能捕鼠器?笑话。好的产品要有一个特征,要特别的简单。

不要小看这个,很多人发短信说老周,我做了一个可以颠覆腾讯的东西,我一般礼节性的回一下,谢谢。第二条短信说你想知道吗,我说在这儿发两句话吧,他说两句话说不清楚,我得见你,给我两个小时。我一般不再回了,很简单的,再牛掰的产品,你如果说利用两三句话说不明白,你的用户不会为他买单。

今年BAT再难用的产品媒体都关注,你没有这样的机会,你在面对第一批用户的时候,实际上只有两三句话的机会,让用户听了你的话就觉得我想用这个东西。如何让人对你的产品一见钟情,再谈我怎么在产品里做细节和交互体验的提升。超出用户的预期,让用户尖叫,让用户觉得很惊讶,让用户疯狂,让用户变成你的粉丝,这是日久生情。

很多人学互联网模式学歪了,他们学到了很多表象,上门给你送一只鸡,利用大奔找几个美少女上门给你送。他们觉得这就是体验,是惊喜。但是有一个前提,我是不是每天都要吃鸡,这是不是我的痛点和刚需以及高频。体验没有产品重要。

我刚才说的捕鼠器,大家嘲笑需要把老鼠塞进去,这都不是笑话,那是用户参与感好不好。真正的问题是因为现在大家家里都没有老鼠,为什么你要买捕鼠器呢?需求就不存在。你们想想有多少智能硬件的发布会都是跳过伪需求,假定说用户热爱我的产品,用户会每天都用,然后谈你的材质和工艺,谈你的外形,这都是错的。

不是免费,是倒贴钱

刚才讲了半天产品,我顺道多讲一点商业模式问题,免费不是一个忽悠人的模式,免费是互联网里非常重要的一个建立用户手段。免费商业模式里面最重要的一句话就是羊毛出在猪身上,我非常相信这句话。今天免费不仅大行其道,现在大家倒贴钱。

原来我们产品跟市场传播是分开的,经常有人做了一个产品再给市场,市场设计卖点然后炒作,这是不对的。我认为今天做市场的人自己至少要变成半个产品经理,要和产品经理一起想。今天好的做传播的人,他一定了解用户的想法,所以一定可以成为优秀的产品经理。

反过来,今天任何一个产品经理都得学会在朋友圈里卖面膜,都得学会发微信,发微博,直接跟用户对话。如果说他不能把他产品的想法让用户简单的理解和传播共鸣,他做出来的产品一定很难用。所以以后我觉得公司的架构可能会有一个产品小组,产品小组里像踢球一样,会有分工,有前场,有后卫、有中锋,但是每一个人的使命都可以上前踢球射门,也就是说每个人都可以成为产品经理。

好的产品的最大心得――小白模式

做好的产品,我给大家分享我自己最大的心得“小白模式”,心理学的话来说就是同理心,你可以设身处地从用户的角度想,这是最重要的。我们每个人都很自大,我们只能顺应用户的习惯。一般刚出来的产品很难强求用户,文案是这样,产品也是这样。看过很多产品的交互,我觉得所有错误在内部骂产品,都是它们不能从用户角度出发。

我的路由器做的很成功,为什么?我终于领悟到做硬件和做软件有一个差别。软件基本都免费,下载无成本,软件难看好看都是图标文字。如果用户用起来觉得功能不错,又是他的刚需,有的时候体验差一点用户可以容忍。你反正软件可以升级,实在不行了用户可以卸载,所以很多人做软件的人第一次做硬件,他们都忽略了这一点。

因为硬件你用户买回家就基本上很难再改动,所以用户要真金白银的买一个硬件,颜值特别重要。我应该找四种人,一种人就是设计师,就是在做硬件的产业设计师特别重要。你的颜值,你的工艺完全决定了用户是不是会一见钟情。我举一个例子,最近观察到用苹果笔记本的人越来越多,苹果笔记本哪一点做的好?很多人买回家也是装了一个WindowsXP在用,那个颜值就是比较好。

当时我们做路由器的时候,他们第一版的设计做了像鹅卵石,设计者本人觉得像鹅卵石,我看起来像肥皂盒。这里分享一个经验,我的经验是跟小米学的,在拿不定设计意见的时候,我们还是看看苹果怎么做的。

但是要跨界,比如说你可以照着苹果笔记本设计一个路由器,你可以照着苹果路由器设计一个手机。世界上有一些产品人家有很好的设计,刚开始还是要学习的,所以我新版的路由器照着苹果笔记本的样子,利用同样的铝合金外壳,感觉颜值很高。因为用户的心理是如果说一个卖一百块钱的东西看着一定要像五百块钱,注意啊,这也是很多互联网的硬件前辈的真谛。看着要逼格要高。

做路由器时,我和他们讲,要尽可能把价格做低。你觉得路由器超过一百你会买吗?大部分人不会买,我们按照89元的定价,花相应的成本在外观和用户感受上。

所以刚才我们谈到了体验为王,硬件给别人的体验是需要让用户可以感知到,感知不到的体验你说完了用户就忘掉。你给用户讲双频,为什么很多用户感受不到双频。特别简单,很多人的设备不支持双频,5G的信号好,但是遇到墙就弱了。所以尽管你不断的宣传5G是未来的标准,但是实际上很多人没有感知。

而且这里我都犯了一个错误,我原来特别想强调路由器的辐射问题,有没有辐射?我真的不知道,因为感知不到。但是我们打安全健康牌,做了一个低辐射模式,把信号调到最低。这个功能受到少数孕妇欢迎,结果我拿了一台路由器回家,怎么没有信号呢?这时候我非常的愤怒,这个时候已经不是理性的周鸿祎,作为一个感性小白用户的周鸿祎,我的路由器怎么没有信号,信号怎么这么弱呢?我早就把辐射问题扔在九霄云外。所以第二版路由器我说信号一定要强。

我们把这个路由器定名字是大户型路由器,这个也是一个体验的问题,今天起名字一定要直观,为什么叫大户型路由器。第一,什么是大户型,大家觉得可以定义吗?在香港40平米叫400尺也是豪宅。所以你做几十平米的屋子都觉得是大户型可以买。第二,大户型是每个人都向往的目标,所以你买不起大户型,可以买得起大户型的路由器。有一个公司东施效颦,他们给路由器起了一个名字别墅型路由器,这个名字过了。因为大部分的人肯定明确的知道自己住的不是别墅,别墅不是今天的幻想。

所以起名字也好,做产品功能定义也好,所有的依据我和我底下的产品经理争论,我都是站在用户的角度说,用户会怎么着。

儿童手表做到第三代,终于找到了痛点

我们在硬件上的争论比软件多。特别是涉及到工艺、材质、外形,有没有屏幕,有没有键盘。最后所有的选择都是来自于用户怎么看,而不是你做出一个产品想创造一个新的门类,妄图教育用户,教育用户不是不可以的,需要有一个漫长的过程,需要足够的广告投入,需要足够强大的市场行销。但是对今天很多的初创公司条件不具备,如果想做一个爆款单品,你想一炮而红,一定不要挑战用户的常识。

我们做儿童手表第三代,前两代我们的产品经理犯很多错误。最早设计的时候,他们希望满足0岁-10岁小孩的需求,大家觉得这个想法对吗?0岁小孩跟10岁小孩胳膊的大小都不一样的,你为了满足所有这些人的需求,最后这个表可以做的很大吗?这个表做的很小,就意味着电池很小,我们最早的电池只有200毫安。意味着你的待机时间只有一天,每天都要充电。

所以这就变成了最致命的问题,为什么今天很多手环大家也戴不下去了。有一次忘了充电,觉得不戴也无所谓,所以我们在儿童手表上电的问题非常困扰,内部争论的非常厉害。你说把电池做到500毫安手表必然就要大,手表大有人说3岁小孩戴不了,我们做到第三版的时候,我们决定手小的孩子我们不管了,我们必须把电池做到500毫安以上,必须待机超过三天。我们通过大电池和软件的优化才解决待机问题。

很多的时候我们发现用户反馈里面每天要充电是一个问题,真的用户很反感每天充电吗?其实不是,为什么?而且手表原来最大的问题就是产品定位的问题,我们当时主打的卖点是什么,孩子防丢防诱拐防走失,这个点对不对?非常好,非常对,在座只要是父母会买,但是问题就是买的人是我的用户吗,不是,用户是孩子。所以孩子的角度这个手表给了他什么价值,有价值吗?对孩子来说是他被迫戴上的,他没有乐趣,就看时间,所以他觉得没什么用,他就没有动力充电,他又不是用户,父母可能又经常忘了。

这就是前两代产品非常尴尬的地方,结果到第三代我们终于解决了这个问题,因为我们原来也是内部争论,所以很多争论我认为都是脱离用户的两方人很自我的争论,得不出好的结论。

其实我们的手表就是一个手机,我们的手表是假定很多的学校不让小孩带手机,太小的孩子不能给他手机,所以说它有电话的功能。但是很多人争论说小孩没有打电话的需求,他们就把这个打电话的功能给屏蔽掉了。我们做到第三版的时候突然发现,安全是一个基础需求,但是安全不是一个体验点。

因为毕竟中国有再多走失小孩的案例,但是对每个人来说遇到的概率是比较低的,很多人至少今天没有遇见过。没有遇见的事情没有发生,他没有体验,父母一周最多定位孩子两次,我们发现很多父母在孩子上学的时候反而不用,因为他知道孩子在学校。这一版我们把打电话的功能恢复了,就是父母可以随时拨一个电话到手表,就像一个真正的电话小孩可以跟父母回答,小孩遇到任何的情况,哪怕就是想爸爸了,想妈妈了,他按一个键可以直接的给爸爸妈妈打电话。

这个功能变成今天第三代儿童手表最主要的核心功能,不仅仅是一个安全的工具,成了一个沟通的工具。所以我们发现才真正把体验为王做出来,因为小孩子有体验,小孩子从我们做的实验来看使用频度和黏性产生了指数级的上升。

即使在新加坡等不会出现小孩诱拐的安全地方,很多的父母也会希望每天能够关心孩子,打电话问情况,因为沟通是基本需求。我们产品经理历经三代,最后绕了一个很大的弯子,重新回到了我说的痛点、刚需、高频和简单。丢孩子是痛点,防丢也绝对是刚需,但是频度太低,通信是刚需,是痛点,又是高频度的应用。

所以今天我们的手表就是三个功能,跟孩子随时保持通信,加上小孩一键呼救,再加上随时定位小孩防走丢。过去带防丢手表和同学在一起没有办法秀的,所以你的产品就不能再产生推荐。

有人置疑,当时为什么不做打电话的功能。这是一个很重要的经验分享,理由就是因为电池小,小孩老打电话会把电耗完了,这个逻辑听着是对的。但是是误入歧途。

现在小学生的电话沟通需求也很强烈。怎么解决待机问题,继续把电池做大吗?很多小孩学会了自己充电,我们给他做一个小的充电宝随身携带。

为什么?因为他有了刚需,他为了这个刚需就开始容忍你的缺点。今天苹果在原来4寸屏幕的时候,它的电永远是不够的,为了美观乔布斯牺牲了电池,所有用苹果的人都必然带着一个充电宝,方便吗?不方便,但是今天我们所有人容忍了不方便都带了一万毫安的充电宝,都养成了习惯。还是因为手机满足了你的刚需和痛点,这种强大的拉力使你可以容忍产品的缺点。

没有完美的产品,你每天做产品经理都是在做不断的选择,其实很多时候选择一定要在用户最痛的点上进行突破,如果用户接受了最痛的点,其它的点都可以容忍,我们不再增加500毫安大电池,再重的话戴在手上就不舒服。用户喜欢这个功能我们会做一个儿童的充电宝,或者说儿童的充电书包,书包里放一块电池,手表和书包一接就可以充电,这不是完美的方案,但是用户可以接受。我们忽略了用户最本质的需求,所以我们做了很多功能都没有打动用户。

如何找到好的产品?(上)


如何找到好的产品?(上)
周鸿祎

我不知道大家想听什么,比如说有两大部分可以讲,高大上的我们讲转型互联网。今天的主题是产品创新,我就讲讲微观的。我在我们的行业里,战略比不上两位马总,我从骨子里本质上还是一个产品经理,可以分享一些做产品的心得。

最近互联网有一个很不好的风气,猫三狗四开始装教主,说我是如何成功的。我经常讲成功是偶然,失败是必然。大家的愚蠢上是有共性的,很多人在失败上会犯同一个错误。当你了解别人的产品是如何失败的,你才能在自己做产品的过程中避开这些暗礁。

+互联网还是互联网+?

大家最近都在谈互联网+,我理解大概有两种用互联网的方法,一种是+互联网,一种是互联网+。这两个有什么不一样?

+互联网:很多人希望把传统行业跟互联网结合,这是一种术,比如说我在互联网开一个店卖东西,在互联网上打广告,甚至是你在互联网上雇水军黑老周,云计算,大数据,这些做法都叫+互联网。因为没有改变某一个行业或者说产品的本质,你只是利用互联网把它改的更加有效率,不会产生爆炸性的指数级的变化。这种做法是传统企业转型互联网最简单的,所以说今天这不在我们的话题之内。

今天热门的互联网+有什么不一样呢,我的理解就是利用互联网的思维,去指导一个产品或者一个行业去改变它的产品体验,看待用户的方式,它和用户的连接方式,改变它的商业模式,从而产生真正的资源重新配置,产生化学反应甚至是核反映的效果。

连接的力量

过去,很多传统大咖看不上互联网,认为是一群毛孩子忽悠国外VC的钱在国内乱烧。行业里有一位我比较尊重的老朋友丁磊,2000年互联网泡沫破碎,他为了给自己和大家打气弄了一个广告,当年我没有看懂。过了10年我终于理解,那个广告道出了互联网的真谛――网聚人的力量。网络之所以牛,因为网络把很多东西连在一起。

大家今天谈一个词“连接”,你要考虑你的产品如何能够真正把很多东西连接在一起。这个东西可以是人,可以是企业,也可以是信息。只有理解了连接,你才会理解为什么很多行业会被颠覆。UBER为什么这么热,因为它改变了连接关系。为什么微信会比QQ牛,因为他真正把人连在一起。

下一个趋势是什么?

有两种思路创新和做产品,一种是站在过去看现在,一种是站在现在看未来。当你创业,当你要创新,你一定要做未来的事情。未来的事情有两种,要不就是别人没有做过的事情,要不就是把别人做过的事情换一种别人想不到的方式去干。所以我认为只有做一件今天大家可能都不看好,但是明天后天有可能起来的事情,你才可能获得巨大的成功。

未来我觉得有两个趋势,一个趋势IOE(Internet of Everything)或者O2O,我觉得更多的就是面对服务业讲的。利用互联网把很多服务业来进行改造,无论今天的上门服务还是打车、定餐等等所有东西这是一大块。

还有一个趋势IOT(Internet of Things),把今天很多的物理器件变成智能设备,把它们和云端连接在一起,意味着今天你所有看到的东西都可以被智能化,无线化,移动化、云端化。我特别不喜欢一个词“物联网”,被很多人庸俗化成一个传感器的网络。

如果说仅仅是一个传感器没有价值,重要的就是每一个设备都是智能的,它采集数据,做出一些智能的判断,再把数据反馈到云端,然后云端汇总成大数据,大数据再产生一些结果再反馈给各个智能设备。所以说今天在我的眼里,在IOT的世界里面所有的东西都是手机。你们想想未来手表是不是手机,眼镜是不是手机。

前几天我看了一个行业大老,我说智能汽车就是四个轮子的苹果,他一听特别的激动,他说我早就这么认为,但是大家不认同。所有的东西你可以认为都是手机,所以说今天做手机也不一定就要造放在耳朵边上的东西,谁说五年以后手机还是这样呢?手机有可能变成这样的。

今天所谓的车联网,当你坐车的时候,你真的需要再把手机打开吗?可能车本身就变成了智能的系统,车有屏幕,车也可以跟你对话。车子里有全套的通信系统,回到家里把手机一放,家里到处都是智能设备,有摄象头,有电视,有音响各种的家电设备。包括你身上穿戴的各种东西,我一直在想能不能做一个可充电的皮带,在皮带里装满了电池。

我们公司的员工创造性特别高,有一个员工做了一个智能捕鼠器,有特别多的智能功能,比如手机可以遥控,可以把老鼠电死,掐死噪音把它震的口鼻出血。但是有一个缺点,就是需要抓老鼠放在捕鼠器,但是对智能设备来说这不是缺点。

前一段时间GE所有的航空发动机里装上一个智能的设备记录发动机的运转数据。同时,会把数据汇总到GE总部,通过大数据告诉航空公司,你的这个发动机有一点问题,跟其它的数据曲线不一样。

这里不仅意味着很多的设备可以智能化,最重要的就是很多硬件产品的用户体验将会被重新改变,商业模式会被改变。换句话说,以后大部分产品,特别是3C产品,除了苹果以外,卖硬件赚钱的机会都会没有。以后的很多设备只是会变成连接。

用户还是客户?

很多企业转型互联网,他们恨不得在一夜之间引刀自宫,结果最后就流血而死。很多人说我们知道,马总给我们讲了连接,我说连你个头,你连接谁?他们就无语了。还有很多的企业说老周我有大数据,我说您那一个硬盘的数据,不叫大数据。最重要的就是转换一个概念,你们原来心中只知道有客户,而不知道有用户。在座的诸位知道用户和客户的差别吗?其实不是简单付不付钱作为代表。

传统行业我和大家讲,产品业务很复杂,商业模式特简单,谁掏钱就是它的客户。它们心中如果只有客户的概念转型不了互联网,为什么?你要建立用户的概念,用户有几个特征。第一,用户不见得向你掏钱。更重要的就是用户要经常性的用你一个什么服务或者产品,连接,交互,这些才是用户的条件。所以做客户容易,做用户难。

如果你有了用户,后续的牌就胡打胡有理。所以用户至上不是一句空话,如果说互联网总结四个字的话我就是用户至上,没有用户的概念怎么连接,所有的连接、大数据等等都是空谈,你就无法建立你的商业模式。

所以很多人一上来就老想说我在互联网里怎么赚钱,我不是不爱钱,我和你们一样的爱钱,但是如果你在互联网上刚开始想怎么赚钱,就想着弄客户,你可能就没有用户。各位想想到底有客户关系还是有用户关系。

很多人讲如何和用户交朋友,如何让用户参与,怎么搞社群,这些都没错。这些方法都很好,但是前提是你得有一个产品或者服务,把用户吸引过来。我举几个例子大家就可以理解用户的价值为什么要高于客户。

滴滴和快的的例子,最早他们做的是打车生意,在打车过程中出租车公司会向滴滴付钱吗?打车的人会向它付钱吗?没有一个人是它的客户,但是它解决了两个问题。打车是不是刚需?打不到车是不是痛点?打车还是比较高频次的业务,解决了一部分用户或者80%的用户高频、刚需和痛点。

跟这些用户建立连接,这些用户和出租车司机原来有连接吗?没有连接。但是现在和打车软件建立连接以后,有了这么多用户,你发现它再下一步往专车走,天下所有小租车公司,或者说有车愿意出租的人,最后都会成为它的客户。前提是因为它连接了很多用户,所以你去看互联网里很多模式到今天的颠覆,都是用户战胜客户。

我们再说互联网电视。今天买了一台电视,买回家以后在历史上和电视厂商还有关系吗?你们家再不换电视,五年之内见不到它。客户价值就是一次性挣了你一笔钱,仅此而已。所以每年对这些企业来说,因为没有连接,所以说当它做了一个新产品以后怎么办?它又得从零做起,又得再打一轮的广告,兄弟们你们的40寸电视过时,我们推出了41寸的电视。周而复始。

所以互联网对电视业的冲击不仅仅是说把电视机加了一个智能设备,最重要的就是电视机以后的销售没有硬件利润。卖电视不再是一个生意,你把电视买回家,服务才刚刚开始。你买电视的决策,取决于里面有没有好玩的游戏,有没有好看的动作片。对传统的电视机厂商是多么大的挑战。你想一下用户和客户的变化。跟传统的行业老板来说,这是一个巨大的变化,不挣钱了。

你可以看到很多企业没有领会到这个本质,还是在做客户关系。只不过在客户关系里加了一些互动,召开客户见面会,这些其实没有改变连接的本质,客户还是觉得你没有给他提供什么持续而有价值的服务。所以我们为什么要从客户转成用户?

道理很简单,因为你只有拥有的用户你才能真正在用户的基础之上,你才能往后走建立粉丝。有了粉丝用户的参与感和用户的社群才能做起来,而且以后的生意,我们说每一个企业都会互联网化,这意味着什么,不仅意味着客户用户化,还意味着会成为一个服务业的企业。

特斯拉最本质的革命不是它前面的那个大Pad电脑,那个操纵特别的不方便。特斯拉改变了车厂和消费者的关系,特斯拉每一个买车的人都是它的客户,这是没有问题。传统车从4S店提走以后,你和车厂还有关系吗?没有。所以你就是客户,但是以后所有的智能汽车就是4个轮子的手机,这个手机时刻和造车公司的服务器连接。

不光有OTA的升级,可能还有各种信息的推送,各种互联网服务。所以将来大家想象一下,每一个造汽车的公司都要变成互联网的导航服务商,可能是一个生活服务指南提供商,或者一个开车时候的音乐电台服务提供商,你会觉得意外吗?一点都不意外,所以这就是连接。

原来我觉得最牛的行业是运营商,为什么说运营商最牛掰呢?因为它又是客户,又是用户,你每一个月交话费买套餐,是不是客户?但是你每天都在打电话发短信、上网,你离不开它的服务,运营商把服务断一分钟你都受不了。你每天都在利用运营商的服务,但是为什么我经常说到微信干掉了运营商呢,你每天在手机里,你大量用的都是微信服务,你和运营商之间的距离越来越远,大家跟运营商之间真的就没有用户关系,还只剩下客户关系。如果以后都像我们设想的那样免费wifi无处不在,你连那个SIM卡都不需要。

所以要通过现象看本质,你就可以理解为什么微信干掉了运营商。将来在这个价值链里面,离用户越近时间越长年度越高的厂商是最有价值的,不然永远是拿利润最微薄的部分。

今天的运营商为什么会出现如此大的变化,因为他们没有搞清楚用户和客户的区别。这两个词一字之差理念非常不一样,所以曾经记得有一段运营商提了一个问题,你的微信收费吗?这是传统的思路,传统思路就是你提供了某一个服务,你就一定要收费,你要收费你就是要把它变成客户。其实马化腾需要收费吗?马化腾现在每年微信投入几十亿,给大家提供免费的通信服务,让你们每个人每天花5个小时在上面,你们都离不开。我想不用都不能,因为你们都用了。有了用户以后互联网的规律是什么呢?胡打胡有理,插根扁担都开花,在上面做什么不好。我几年前演讲的时候就说老马比你老婆还了解你。

封神榜

Edsger Wybe Dijkstra 封神理由:
Algo60之父
算法大师
业界评价:
Rob Pike 封神理由:
Unix之父
UTF-8缔造者
业界评价:
Bill Joy 封神理由:
Unix之父
C语言之父
业界评价:
Ken Thompson 封神理由:
Unix之父
B之父
UTF-8编码发明者
ed作者
Go之父
业界评价:
Anders Hejlsberg 封神理由:
Turbo Pascal之父
Delphi之父
C#之父
业界评价:
Doug Cutting 封神理由:
Lucene作者
Nutch作者
Hadoop作者
业界评价:
Richard Stallman 封神理由:
GNU项目发起人,引起了业界革命
Emacs作者
GCC作者
GDB作者
GMake作者
业界评价:
Linus Torvalds 封神理由:
创造了Linux的开源开发模式,推动了整个编程世界的飞跃
Linux之父
业界评价:
“他简直优秀得无与伦比。”
Dennis M. Ritchie 封神理由:
BSD之父
vi作者
csh作者
Java规范作者之一
业界评价:
David Cutler 封神理由:
VMS首席设计师
Windows NT首席设计师
业界评价:
John Carmack 封神理由:
计算机图形领域大师
多款设计游戏的作者
业界评价:
Donald Knuth 封神理由:
The Art of Computer Programming作者
TeX作者
业界评价:
Jon Skeet 封神理由:
Stack Overflow总排名第一
业界评价:
如果他的代码没有通过编译的时候,编译器就会道歉。
Jeff Dean 封神理由:
Google搜索引擎幕后大神
业界评价:

导致惨重代价的Bug

导致惨重代价的Bug

纪念“瞳”解体事件

千年虫事件
在上个世纪,软件行业初期,计算机硬件资源十分昂贵,很多软件为了节省内存会省略掉代表年份的前两位数字”19”,或默认前两位为”19”。按这个规则,1999年12月31日过后,系统日期会更新为1900年1月1日而不是2000年1月1日,这样可能意味着无数的灾难事件,导致数据丢失,系统异常或更加严重的灾难。

幸好大家发现的早,最终全球花了上亿的美元用来升级系统,没有引起毁灭性后果。

水手1号探测器
1962年7月28日,水手1号空间探测器发射升空,但由于程序编码中的轨道计算公式是错误的,导致火箭轨道偏离预定路线。最终在大西洋上空自爆。

南极臭氧层测绘事件
1978年,NASA启动臭氧层测绘的计划。但在设计时,用于该计划的数据分析软件忽略了和预测值有很大差距的数据。直到1985年,才发现南极洲上方的臭氧层空洞,但是英国科学家先发现的。直到NASA重新检测它们的数据,才发现这一错误。在修正错误后,NASA证实南极臭氧层的确有个很大的空洞。

反导系统误报事件
1980年,北美防空联合司令部曾报告称美国遭受导弹袭击。后来证实,这是反馈系统的电路故障问题,但反馈系统软件没有考虑故障问题引发的误报。

1983年,苏联卫星报告有美国导弹入侵,但主管官员的直觉告诉他这是误报。后来事实证明的确是误报。

幸亏这些误报没有激活“核按钮”。在上述两个案例中,如果对方真的发起反击,核战争将全面爆发,后果不堪设想。

辐射治疗超标事件
1985到1987年,Therac-25辐射治疗设备卷入多宗因辐射剂量严重超标引发的医疗事故,其罪魁祸首是医疗设备软件的Bug。据统计,大量患者接受高达100倍的预定剂量的放射治疗,其中至少5人直接死于辐射剂量超标。

AT&T网络终端事件
1990年1月15日,纽约60万用户9个小时无法使用电话服务。原因是,AT&T交换机从故障中恢复后,就会发送一条特殊的小时给临近的设备,但在新版本软件中,这条消息会导致电话交换机重启。于是,每6秒,所有交换机都会重启一次。最后,将程序换回了上一个版本,解决了问题。

宰赫兰导弹事件
在1991年2月的第一次海湾战争中,一枚伊拉克发射的飞毛腿导弹准确击中美国在沙地阿拉伯的宰赫兰基地,当场炸死28个美国士兵,炸伤100多人,造成美军海湾战争中唯一一次伤亡超过百人的损失。

在后来的调查中发现,由于一个简单的计算机bug,使基地的爱国者反导弹系统失效,未能在空中拦截飞毛腿导弹。当时,负责防卫该基地的爱国者反导弹系统已经连续工作了100个小时,每工作一个小时,系统内的时钟会有一个微小的毫秒级延迟,这就是这个失效悲剧的根源。爱国者反导弹系统的时钟寄存器设计为24位,因而时间的精度也只限于24位的精度。在长时间的工作后,这个微小的精度误差被渐渐放大。在工作了100小时后,系统时间的延迟是三分之一秒。

对一般人人来说,0.33秒是微不足道的。但是对一个需要跟踪并摧毁一枚空中飞弹的雷达系统来说,这是灾难性的——侯赛因飞毛腿导弹空速达4.2马赫(每秒1.5公里),这个“微不足道的”0.33秒相当于大约600米的误差。在宰赫兰导弹事件中,雷达在空中发现了导弹,但是由于时钟误差没有能够准确地跟踪它,因此基地的反导弹并没有发射。

Intel奔腾处理器浮点错误
1993年。Intel奔腾处理器在计算特定范围的浮点数除法时,会发生技术错误。Intel最终花费了4.75亿美元来为用户置换处理器。

飞行事故
1993年,瑞典的一架JAS 39鹰狮战斗机因飞行控制软件的Bug而坠毁。

1994年,苏格兰一架吉努克型直升飞机坠毁,29名乘客全部罹难。然而最初指责声都指向飞行员,但后来有证据表明,直升飞机的系统错误才是罪魁祸首。

死Ping
1995-1996年,由于没有进行足够的校验,在收到特殊构造的Ping包时,会导致Windows设备蓝屏并重启。

阿丽亚娜5型运载火箭事件
1996年6月4日,阿丽亚娜5型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整个过程只有短短30秒。(原计划将运送4颗太阳风观察卫星到预定轨道)

阿丽亚娜5型运载火箭基于前一代4型火箭开发。在4型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,因为在4型火箭系统中反复验证过,这一值不会超过16位的变量,而5型火箭的开发人员简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。发射后这个64位带小数点的变量被转换成16位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,因而不得不选择自毁,4亿美元变成一个巨大的烟花。

火星气候探测者号事件
1999年9月,火星气候探测者号在火星坠毁。火星气候探测者号的目的为研究火星气候,花费3亿多美元。探测者号在太空中飞行几个月时间,接近火星时,探测器的控制团队使用英制单位来发送导航指令,而探测器的软件系统使用公制来读取指令。这一错误导致探测器进入过低的火星轨道(大约100公里误差),在火星大气压力和摩擦下解体。

火火星极地登陆者号件
1999年12月,火星极地登录者号在火星坠毁,原因是设计缺陷导致其在达到行星地表之间就关闭了主引擎,最终撞毁。

辐射治疗超标事件
2000年11月,巴拿马美国国家癌症研究所,从美国Multidata公司引入了放射治疗设备及软件,但其辐射剂量计算值有误(软件本身运行医生画四个方块来保护患者健康组织,但医生需要五块,于是医生自己想办法欺骗了软件,殊不知该操作方式将放射剂量进行了加倍处理)。部分患者接受了超标剂量的治疗,至少有5人死亡。后续几年中,又有21人死亡,但很难确定这21人中到底有多少人是死于本身的癌症,还是辐射治疗剂量超标引发的不良后果。

北美大停电事件
2003年8月,由于GE的一个监控软件,没有有效的通知操作人员有一个地方电站断掉了,电力缺口导致了多米诺骨牌效应,最终导致了加拿大安大略州和美国八个州断电,影响到了5千万人,总损失达60亿美元。

丰田普锐斯混合动力汽车召回事件
2005年10月,丰田宣布召回16000辆锐斯混合动力汽车。这次召回的原因是“发动机熄火意外”及“警示灯无故开启”。本次召回的根本原因不是硬件问题,而是汽车嵌入式编程代码的问题。

东京证券交易所事件
2005年12月,J-COM公司上市,开盘价格61.2万日元一股,日本瑞穗证券的一个交易员接到了客户委托“请以61万日元的价格,卖出1股J-Com的股票”。但交易员输入成了“以每股1日元的价格,卖出61万股”。由于交易系统限制,交易系统自动调整为“以57万日元,出售61万股”。

2分钟后,操作员发现操作失误,执行了3次撤单操作全部失败。J-COM股票一路狂跌,瑞穗证券拼命拉高到77.2万日元,仅此一项,瑞穗证券一共损失了约270亿日。但仍引起了很大的连锁效应。

更大的问题是,J-COM的股票一共只发行了14000多股,但卖出去的可远不止这么多。最后经过协商,瑞穗证券用每股91万日元的价格,现金清算了股民手上的9万多股,全部损失,扩大到400多亿日元。

然后瑞穗证券状告东京证券和富士通,官司打了十年。最后判定,以当日瑞穗证券电话联络东京证券的时间点为分界线,之前全部由瑞穗证券承担,之后产生的损失由东京证券承担70%瑞穗证券承担30%。富士通及程序员没有收到罚款。

恩,痛定思痛,决定开始开发了新的交易系统,开发商仍然是富士通。

Gmail故障
2009年2月份Google的Gmail故障,导致用户几个小时内无法访问邮箱。据Google反馈,故障是因数据中心之间的负载均衡软件的Bug引发的。

温州7.23动车事故
2011年7月23日,甬温线浙江省温州市境内,由北京南站开往福州站的D301次列车与杭州站开往福州南站的D3115次列车发生动车组列车追尾事故,造成40人死亡、172人受伤,中断行车32小时35分,直接经济损失近2亿元。

上海铁路局事后反馈,“7·23”动车事故是由于温州南站信号设备在设计上存在严重缺陷,遭雷击发生故障后,导致本应显示为红灯的区间信号机错误显示为绿灯。

骑士资本事件
2012年8月1日,骑士资本的技术人员,在1台设备中部署了错误版本的应用(一共8台,7台正常),该设备触发了n年前的代码,在一个小时内就执行完了原本应该在几天内完成的交易,导致错误的买入卖出,直接将公司推向了破产的边缘,投资人紧急注资4亿美元才得以幸免,最终损失高达5亿美元。

12306订票助手拖垮GitHub
2013年1月15日,GitHub受到中国大陆的DDOS攻击,网站几乎被拖垮。

最后发现,是由于春运期间,各大浏览器厂商集成了一位网友iFish(木鱼)的“订票助手”插件,帮助春运大军抢票回家。但该软件的早期版本,直接引用了GitHub的Raw File而不是静态文件,并且在访问文件失败时,每5S会重试一次。这样,抢票大军的每一个人,没5S都会向GitHub发送一次请求,造成对GitHub的DDOS攻击。

OpenSSL Bleeding Heart漏洞
2014年4月,谷歌和芬兰安全公司Codenomicon分别报告了OpenSSL存在重大缓冲区溢出漏洞。在OpenSSL心跳扩展的源码中,没有去校验缓冲区的长度,导致攻击者可以直接获取网站的私钥信息。这次漏洞的影响面很广,几乎所有厂商都在打补丁和更新私钥及证书。

Twitter丢失400万活跃用户
2015年2月,Twitter在在季度财报中指出,苹果iOS8升级后出现的漏洞让Twitter至少损失了400万用户。首先是iOS8和 Twitter的兼容性问题流失了100万用户,Safari流览器升级后的共用链接功能无法自动升级,这一问题流失了300万用户,另外还有100万iPhone使用者在升级系统后忘记了Twitter密码,导致无法使用而离开了Twitter。

日本天文卫星“瞳”解体事件
2016年03月,日本天文卫星升空不到一个月(仅正常工作3天),就解体了,该卫星造价约19亿人民币,并搭载了多国的观测设备。
首先,由于干扰,追星仪发生了故障,启用了备用的陀螺仪。
但是,陀螺仪也有故障,导致没有旋转的卫星开始加速旋转,并达到阀值。
然后,为了阻止卫星旋转,卫星开始反向喷气,但程序员把喷气的方向搞反了,卫星越转越快,最终解体。

============================================================
注:本文主要是整理了系统Bug导致的惨痛代价,没有记录下面几种情况(设计失败,设置失误,黑客攻击)
*从计算机诞生以来,众多失败的软件项目,没有加到列表中
*1982年,苏联天然气管道爆炸事件,涉及植入恶意代码,没有加到列表中
*2013年8月,光大证券在向客户演示时连接了正式数据库,导致股市震荡,被罚款5.2亿,主要是管理问题,没有加到列表中
*2015年5月,携程数据库崩溃事件,官方反馈是由于黑客攻击导致,而且没有披露细节,所以没有加到列表中

10 types of programmers you’ll encounter in the field


10 types of programmers you’ll encounter in the field
by Justin James

Programmers enjoy a reputation for being peculiar people. In fact, even within the development community, there are certain programmer archetypes that other programmers find strange. Here are 10 types of programmers you are likely to run across.

#1: Gandalf
This programmer type looks like a short-list candidate to play Gandalf in The Lord of the Rings. He (or even she!) has a beard halfway to his knees, a goofy looking hat, and may wear a cape or a cloak in the winter. Luckily for the team, this person is just as adept at working magic as Gandalf. Unluckily for the team, they will need to endure hours of stories from Gandalf about how he or she to walk uphill both ways in the snow to drop off the punch cards at the computer room. The Gandalf type is your heaviest hitter, but you try to leave them in the rear and call them up only in times of desperation.

#2: The Martyr
In any other profession, The Martyr is simply a “workaholic.” But in the development field, The Martyr goes beyond that and into another dimension. Workaholics at least go home to shower and sleep. The Martyr takes pride in sleeping at the desk amidst empty pizza boxes. The problem is, no one ever asked The Martyr to work like this. And he or she tries to guilt-trip the rest of the team with phrases like, “Yeah, go home and enjoy dinner. I’ll finish up the next three week’s worth of code tonight.”

#3: Fanboy
Watch out for Fanboy. If he or she corners you, you’re in for a three-hour lecture about the superiority of Dragonball Z compared to Gundam Wing, or why the Playstation 3 is better than the XB 360. Fanboy’s workspace is filled with posters, action figures, and other knick-knacks related to some obsession, most likely imported from Japan. Not only are Fanboys obnoxious to deal with, they often put so much time into the obsession (both in and out of the office) that they have no clue when it comes to doing what they were hired to do.

#4: Vince Neil
This 40-something is a throwback to 1984 in all of the wrong ways. Sporting big hair, ripped stonewashed jeans, and a bandana here or there, Vince sits in the office humming Bon Jovi and Def Leppard tunes throughout the workday. This would not be so bad if “Pour Some Sugar on Me” was not so darned infectious.

Vince is generally a fun person to work with, and actually has a ton of experience, but just never grew up. But Vince becomes a hassle when he or she tries living the rock ‘n roll lifestyle to go with the hair and hi-tops. It’s fairly hard to work with someone who carries a hangover to work every day.

#5: The Ninja
The Ninja is your team’s MVP, and no one knows it. Like the legendary assassins, you do not know that The Ninja is even in the building or working, but you discover the evidence in the morning. You fire up the source control system and see that at 4 AM, The Ninja checked in code that addresses the problem you planned to spend all week working on, and you did not even know that The Ninja was aware of the project! See, while you were in Yet Another Meeting, The Ninja was working.

Ninjas are so stealthy, you might not even know their name, but you know that every project they’re on seems to go much more smoothly. Tread carefully, though. The Ninja is a lone warrior; don’t try to force him or her to work with rank and file.

#6: The Theoretician
The Theoretician knows everything there is to know about programming. He or she can spend four hours lecturing about the history of an obscure programming language or providing a proof of how the code you wrote is less than perfectly optimal and may take an extra three nanoseconds to run. The problem is, The Theoretician does not know a thing about software development. When The Theoretician writes code, it is so “elegant” that mere mortals cannot make sense of it. His or her favorite technique is recursion, and every block of code is tweaked to the max, at the expense of timelines and readability.

The Theoretician is also easily distracted. A simple task that should take an hour takes Theoreticians three months, since they decide that the existing tools are not sufficient and they must build new tools to build new libraries to build a whole new system that meets their high standards. The Theoretician can be turned into one of your best players, if you can get him or her to play within the boundaries of the project itself and stop spending time working on The Ultimate Sorting Algorithm.

#7: The Code Cowboy
The Code Cowboy is a force of nature that cannot be stopped. He or she is almost always a great programmer and can do work two or three times faster than anyone else. The problem is, at least half of that speed comes by cutting corners. The Code Cowboy feels that checking code into source control takes too long, storing configuration data outside of the code itself takes too long, communicating with anyone else takes too long… you get the idea.

The Code Cowboy’s code is a spaghetti code mess, because he or she was working so quickly that the needed refactoring never happened. Chances are, seven pages’ worth of core functionality looks like the “don’t do this” example of a programming textbook, but it magically works. The Code Cowboy definitely does not play well with others. And if you put two Code Cowboys on the same project, it is guaranteed to fail, as they trample on each other’s changes and shoot each other in the foot.

Put a Code Cowboy on a project where hitting the deadline is more important than doing it right, and the code will be done just before deadline every time. The Code Cowboy is really just a loud, boisterous version of The Ninja. While The Ninja executes with surgical precision, The Code Cowboy is a raging bull and will gore anything that gets in the way.

#8: The Paratrooper
You know those movies where a sole commando is air-dropped deep behind enemy lines and comes out with the secret battle plans? That person in a software development shop is The Paratrooper. The Paratrooper is the last resort programmer you send in to save a dying project. Paratroopers lack the patience to work on a long-term assignment, but their best asset is an uncanny ability to learn an unfamiliar codebase and work within it. Other programmers might take weeks or months to learn enough about a project to effectively work on it; The Paratrooper takes hours or days. Paratroopers might not learn enough to work on the core of the code, but the lack of ramp-up time means that they can succeed where an entire team might fail.

#9: Mediocre Man
“Good enough” is the best you will ever get from Mediocre Man. Don’t let the name fool you; there are female varieties of Mediocre Man too. And he or she always takes longer to produce worse code than anyone else on the team. “Slow and steady barely finishes the race” could describe Mediocre Man’s projects. But Mediocre Man is always just “good enough” to remain employed.

When you interview this type, they can tell you a lot about the projects they’ve been involved with but not much about their actual involvement. Filtering out the Mediocre Man type is fairly easy: Ask for actual details of the work they’ve done, and they suddenly get a case of amnesia. Let them into your organization, though, and it might take years to get rid of them.

#10: The Evangelist
No matter what kind of environment you have, The Evangelist insists that it can be improved by throwing away all of your tools and processes and replacing them with something else. The Evangelist is actually the opposite of The Theoretician. The Evangelist is outspoken, knows an awful lot about software development, but performs very little actual programming.

原文地址:
http://www.techrepublic.com

10种你会遇到的程序员


10种你会遇到的程序员
作者: Justin James
译者: 来自网络,抱歉没查到准确出处

程序员素来就被认为是一个奇特的人群。实际上,就算在程序开发者社群本身之中,也有一些特别的人群能让其他程序员觉得很奇怪。在这我列出10种你可能遇到过的程序员,你能想出更多么?

#1:甘道夫
这种程序员看起来,就像是在《指环王》里扮演甘道夫的最佳候选人。他(甚至是她)有着快要到膝盖的胡子,一顶看起来傻傻的帽子,在冬天可能还会穿一件披风或者是斗篷。对于团队来说幸运的是,此人对自己工作的熟练程度就像甘道夫一样。但不幸的是,他们要经常忍受甘道夫长达数个小时的故事的折磨,而内容主要是关于他或者是她是如何不得不在雪地中上山下山,以把打好孔的纸带送到计算机房。甘道夫类型的程序员是你的究极武器,但是你会总是希望能把他们排到后面,只在快要绝望的时候才向他们寻求帮助。

#2:烈士
对于任何其它职业来说,烈士其实就是一个工作狂而已。但是在开发者的领域,烈士完全进入了另外一个范畴。工作狂至少会回家洗澡睡觉,而烈士们却会以睡在桌子底下的空皮萨盒子堆之中为荣。而问题是,根本就没人要求烈士们像这样工作。而且他或者她总是想用这样的措辞来使团队中的其他人感到内疚,“好的,你们回家吃完饭吧。我会在今晚会完成相当于3个星期的工作量的。”

#3:玩家
小心玩家。如果他或者是她注意到了你,你很有可能就要接受3至4个小时关于龙珠z与高达谁更强、或者是playstation 3 与xbox 360哪个更好的演讲。玩家的桌子上总是堆满了明信片、动作人偶、以及其他各种各样相关的装饰品,大部分可能都是从日本进口的。玩家们不光是很难相处,他们有的时候实在是太多时间在这些东西上(无论是在办公室内外),以至于他们根本就不明白他们什么时候该干老板雇他们做的工作。

#4:文斯 内尔(一个比较有名的摇滚歌手)
这个40岁的家伙就像是颠三倒四的回到了1984.运动型爆炸头,发皱泛白的牛仔裤,还有一条大围巾。文斯还会在工作时间坐在办公室哼着Bon Jovi 和 Def Leppard的歌,这本来也不是很糟,如果《Pour Some Sugar on Me》不是如此的有感染力的话。

总体来说,和文斯一起工作是很有趣的,实际上他有丰富的经验,只是永远长不大而已。但是如果文斯决定用他或者是她的摇滚风格来处理自己的头发和生活的时候,情况就会变得很棘手。因为和一个每天都带着宿醉未醒的人一起工作,相当困难。

#5:忍者
忍者是你们团队当中的重要人物,但是却没人能意识到这点。就好象传奇刺客一样,你不知道忍者是什么时候工作的,但是你总是在第二天早晨发现他们的成果。于是你急忙打开源代码控制系统,然后发现在临晨4点,忍者提交了一份代码,解决了一个你已经研究了一个星期的问题,而你之前甚至都不知道忍者大人知道你所作的项目的存在。明白了吧,当你还在一次次的开会的时候,忍者一直在工作。

忍者是如此的隐蔽,你甚至都不知道他们的名字,但是你知道每一个他们参与的项目都进行的更顺利。不过,注意点,忍者是孤胆战士,不要试图强迫他们在一个严格的等级和文档制度下工作。

#6:理论家
理论家知道一切编程需要知道的东西。他或者是她可以花4个小时去探讨一个很冷僻的语言,或者去证明你写的代码是如何的不完美并且有可能会在运行的时候多花3纳秒。问题在于,理论家根本就不知道什么叫软件开发。当理论家写代码的时候,他的代码是如此的“优美”,以至于我们这些凡人根本就看不懂。他或者她最喜爱的技术就是递归,每一个代码块都被使用到了极致,而代价就是工程进度和可读性。

理论家还很容易分心。一个花一个小时就能完成的工作,理论家们往往需要三个月。因为他们认为当前的开发工具不够好,所以他们必须开发一些新的工具来构建新的库从而构建一个全新的系统来迎合他们的高标准。理论家可以成为你最好的团队成员,前提是你能让他专注于你们所做的工程本身,而不是把时间都花在究极排序算法上。

#7:代码牛仔
代码牛仔是一种无法阻止的天性。他或者她几乎总是一个厉害的编程者,并且总是能以别人2至3倍的速度完成工作。问题是,这些代码至少有一半都靠偷工减料得来的。代码牛仔认为把代码提交到源码控制系统太麻烦,把配置信息存贮在代码之外太麻烦,和其它人交流太麻烦……你懂我的意思吧。

代码牛仔的代码就好像意大利面条一样搅在一起,因为他或者她工作的事如此之快,以至于必要的重构都没有做到。很有可能的是,七页长的核心功能代码也许看起来就像是教科书上关于“不要这么做”的示例,而这些代码居然还神奇的可以运行。代码牛仔绝对没办法和别人一起工作。而且,如果你让两个代码牛仔进入同一个工程,那这个工程一定会失败,因为一个总是被另一个人对代码做的修改而干扰,他们总是拼命的在开枪射击自己搭档的脚。

当按时完成一个工程比把这个工程做好更重要的时候,把一个代码牛仔加入进去吧,这个工程会在截至日期之前完成的。代码牛仔其实就是一个吵闹版的忍者。只是忍者像做外科手术一样精准的编码,而代码牛仔像一只难以控制的公牛,会把所以挡在它面的东西顶翻。

#8:伞兵
你知道那些电影吧,就是指挥官带着机密作战计划被空降到敌人战线之后。在软件开发中,这样的人叫伞兵。伞兵是你对一个将要失败的工程的最后援助。伞兵们缺乏在一个长期任务上工作的耐心。他们最大的价值是拥有快速学习一堆完全陌生的代码并且使用它们工作的惊人能力。其他程序员也许要花几个星期或者其几个月来熟悉一个工程,以便可以有效的参与其中;伞兵们只需要几个小时或者几天。伞兵快速学会的东西也许不能让他们编写核心代码,但是,没有足够的时间形成一个固定的见解可能会帮助他在整个团队失败的地方取得成功。

#9:庸才
“足够好了”,这就是你从一个庸才那能听到的最好的话。他或者是她总是花更多的时间写出比团队中其他任何人都更差的代码。“缓慢,刚刚符合要求”就是对庸才所作的项目的描述。但庸才们总是能做的“足够好”,以至于刚好不会被解雇。

当你面试这种人的时候,他可以告诉你很多他到参与过的项目,但却很少提到他们到底在这些项目里做了什么。筛出这些庸才的方法很简单:问一下他所做工作的细节,他们会突然得了健忘症。但是,一旦让这种人进入你的组织,你可能要花好几年才能再摆脱他们。

#10:传教士
无论你在用哪种编程环境,传教士总会坚持认为如果你把现有的工具和工序抛弃掉并换成其它的一些东西,会对你有很大的帮助。传教士实际上就是理论家的反面。传教士总是直来直去,对软件开发很了解,但却很少真正的去编码。

传教士有一颗项目经理或者部门经理的心,但却缺乏足够的知识或者经验来完成这个跳跃。所以在传教士最终成为一个纯管理者角色之前,其他人不得不一直忍受传教士们对于彻底革新工作环境的尝试。

浅析SOA框架演化

说到SOA的兴起,已经是几年前的事情咯。

按我的理解,SOA框架的演化,主要按四条路来进行的:

第一条路,就是从CORBA衍生,可以作为CORBA的替代品。
这一条路上,典型代表为ICE、Thrift,Avro,ProtocolBuffer+GRPC
其典型行为是,定义idl,对每种语言提供编译器及运行库,然后提供RPC调用功能

第二条路,就是语言框架需要
这一条路上,主要代表为DCOM,EJB,DUBBO,最初目的都是为了给语言框架提供更好的分布式功能。
其典型行为是,语言或框架本身不具备改功能,对其进行了扩展。自身对原语言框架依赖比较严重。

第三条路,就是HTTP中新规范的出现
这一条路上,主要代表为SOAP,REST。
其典型行为是,每种语言都有多种实现,定义schema,每种语言会有多种库支持,最后通过HTTP通讯进行调用

第四条路,就是功能整合
这一条路上,主要代表为WCF,各类ESB产品
其典型特征为:提供多种SOA解决方案

具体使用的时候,其实大家可以看到,这些框架都是万变不离其宗。
那就是,都需要接口描述语言(无论是IDL、WSDL还是什么),都提供良好的支持功能开发较为简单,都是SOA框架解决通讯问题,对于开发人员透明。
大家具体使用是,根据实际情况选取即可。

如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?


如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
作者:猫爱吃鱼不吃耗子(转自知乎)

你去饭店,坐下来。
“服务员,给我来份宫保鸡丁!”
“好嘞!”
——————这叫原始需求

大厨做到一半。
“服务员,菜里不要放肉。”
“不放肉怎么做啊?”
“不放肉就行了,其它按正常程序做,不就行了,难吗?”
“好的您稍等”
——————中途需求变更

厨房:
大厨:“你大爷,我肉都回锅了”
服务员:“顾客非要要求的嘛,你把肉挑出来不就行了吗”
大厨:“行你大爷”
然而还是一点点挑出来了
——————改动太大,部分重构

餐厅:
“服务员,菜里能给我加点腐竹吗?”
“行,这个应该简单。”
——————低估改动成本

厨房:
大厨:“你TMD,不知道腐竹得提前泡水?炒到一半才说?跟他说,想吃腐竹就多等半天”
服务员:“啊你怎么不早说?”
大厨:“早说你MLGB我怎么知道他要往宫保鸡丁里放腐竹”
然而还是去泡腐竹了
——————新需求引入了新研发成本

餐厅:
“服务员,还是把肉加回去吧”
“您不是刚说不要肉吗”
“现在又想要了”
“…好的您稍等”
——————某一功能点摇摆不定

厨房:
大厨:“日你啊,菜都炒过火了你让我放肉?还好肉我没扔”
服务员:“客户提的要求你日我干嘛?”
大厨:“你就不能拒绝他啊?啊?”
服务员:“人家是客户嘛。”
——————甲方是大爷

餐厅:
“服务员!服务员!”
“来了来了,你好?”
“怎么这么半天啊?”
“稍等我给您催催啊”
——————改动开始导致工期延误

厨房:
大厨:“催你M催,腐竹没泡好,我还得重新放油,他要想吃老的也行,没法保质保量”
——————开发者请求重新排期

餐厅:
服务员:“抱歉,加腐竹的话得多等半天,您别着急哈”
“我靠要等那么久?我现在就要吃,你们能快点吗?”
“行…您稍等”
——————甲方催活

厨房:
大厨:“我日他仙人板板,中途改需求又想按期交付,逗我玩呢?”
服务员:“那我问问,要不让他们换个菜?”
大厨:“再换我就死了”
——————开发者开始和中间人pk

餐厅:
“服务员,这样吧,腐竹不要了,换成蒜毫能快点吗?对了,顺便加点番茄酱”
——————因工期过长再次改动需求

厨房:
大厨:“我日了狗啊,你TM不知道蒜毫也得焯水啊?还有你让我怎么往热菜里放番茄酱啊??”
服务员:“焯水也比等腐竹强吧,番茄酱往里一倒不就行了吗?很难吗?”
大厨:“草。腐竹我还得接着泡,万一这孙子一会又想要了呢。”
——————频繁改动开始导致大量冗余

餐厅:“服务员,菜里加茄丁了没有?我去其它饭店吃可都是有茄丁的”
“好好好您稍等您稍等”
——————奇葩需求

厨房:
大厨:“我去他二大爷他吃的是斯里兰卡三流技校炒的宫保鸡丁吗?宫保鸡丁里放茄丁??”
服务员:“茄丁抄好了扔里边不就行了吗?”
大厨:“那TM还能叫菜吗?哪个系的?”
服务员:“客户要,你就给炒了吧。”
大厨:“MB你顺道问问他腐竹还要不要,我这盆腐竹还占着地方呢不要我就扔了”
——————奇葩你也得做

餐厅:
“服务员,还要多久能好啊”
“很快,很快…”
“再给我来杯西瓜汁。”
“…好”
“我再等10分钟,还不好我就走了,反正还没给钱。”
“很快,很快…”
——————黑暗前的最后黎明10分钟后

“咦,我上次吃的不是这个味啊?”
从厨房杀出来的大厨:“我TM就日了你的狗…”
——————最终决战

——————
你=客户
服务员=客户经理+产品经理
大厨=码农
请自行转换…
——————
注:以上场景已极度夸张,实际生产生活中码农和PM是和睦友好的相亲相爱的一家人
——————
注:对于做2C产品的公司,你=公司大boss

转自知乎,原文链接

浅析海量小文件的存储

海量小文件(LOSF,lots of small files)的存储是很多公司都遇到的难题,不管是互联网公司(如社交网站)还是传统的IT企业(如医疗IT的PACS厂商),都会遇到这个难题。

问题的根源在与,无论是文件系统还是网络传输,小文件都需要很多额外操作,如
1、数据布局没有优化,寻址次数大大增加,寻道时间及旋转延迟大大增加,从而每秒的输入输出量 (IOPS,Input/Output Per Second) 、数据吞吐量(Throughput)都明显下降
其实很简单,大家考虑下,拷贝一个1G的文件,和拷贝一个都是零散文件的1G文件夹,其速度差距如何,就清楚了
2、网络通信开销增加,网络延迟变大
其实很简单,大家考虑下,网络传一个1G的文件,和传一个都是零散文件的1G文件夹,其速度差距如何,就清楚了
3、分布式存储,网络交互次数增加,数据存储位置频繁变化,网络通信增加,速度变慢
其实也不难,比如,从一个服务器上拉取10000个文件,与从10个服务器上拉取10000个文件(每次都要问下,下一个文件存储在那个服务器上),谁快谁慢,就清楚了

大家应对这个问题时,采用的方法无非是4种:
1、砸硬件,用硬件性能提升,让传输效率提供
2、用缓存,通过缓存,减少磁盘访问次数,减少交互环节,提高传输效率
3、改变存储策略
4、减少询问次数,比如一次通信,找到1000个文件的地址,400个在服务器A,600个在服务器B,不按文件顺序,而是先从A取400个,再从B取600个,通信就会减少很多,速度就会有所提升(但业务场景要合适才行)

这里主要说一下第3点。
传输一个都是零散文件的1G文件夹时,我们可以这样做,先压缩一下,然后再传递,再解压,发现很多时候居然会节约时间。
也就是说:
压缩+传输压缩文件+解压用的时间 < 直接读取并传送零散文件的时间

但如果直接存储压缩文件,那压缩我们只需要上传时做一次,平时读取时,其实为:
传输+解压用的时间 < 压缩+传输传输压缩文件+解压用的时间 < 直接传送零散文件的时间

那如果压缩和解压的时候,我们只做归档,不做压缩岂不是更节约时间?
传输+归档读取用的时间 < 传输+解压用的时间 < 直接传送零散文件的时间

恩,对了,其实大家的解决方案就是,将大量小文件,写到一个大文件里,这样读取效率就飞一样上来了。
无论是Facebook的Haystack还是淘宝的TFS,用的都是类似的方案。(实际上要复杂的多,请参考论文”Finding a needle in Haystack:Facebook’s photo storage”)

那HDFS呢?当然也支持咯,但要写代码处理一下,大家可以自行找一下Hadoop Archive, Sequence file, CombineFileInputFormat等。

互联网后面10年的重点

当今互联网,已经基本解决了吃、穿、用、住、行、娱乐的问题。

下馆子吃,已经被大众点评、美团、饿了么等刮分完毕。
不下馆子吃、穿、用,各大商城都在做,被淘宝、京东、亚马逊、一号店等刮分完毕。
住、行被携程、艺龙、滴滴快的、神州等刮分完毕。

旅游类的娱乐项目,很大一部分开支为吃、住、行。除去这一部分,组团、自由行等也已经慢慢向成熟市场变化,包括马蜂窝等很多都在做。
非旅游类的娱乐项目,在大众点评、同城等也有了立足之地,更何况这铺天盖地的购票软件咯。

上述市场,一些已经局势明朗很难有大的变化,一些仍是杀得难解难开,一些还待开发。

依据互联网的长尾效应,后面大家要做的是差异化竞争,现在国内互联网巨头中,还没有特别好的、在红海中的差异化竞争案例。大家刚刚从实体店的红海杀到了互联网的蓝海,并正在把互联网蓝海杀红。我相信这方面还是有很多可以做的事情的。

另外,当一个人吃、穿、用、住、行、娱乐的问题解决了,就会有更高的追求。按以往的历史规律,医疗、健康、教育、艺术、科技、政治的需求会逐渐增强。而且,当下各大公司正在努力向医疗领域进军,互联网这10年,应该是医疗健康的十年。