程序员职业生涯巡礼

最近杂七杂八写了一些东西,其实主线一直围绕了程序员职业生涯这个主题,也是我春节读书思考的一些成果。文章比较长,断断续续发在了 MacTalk 上,但总归不是一篇完整的东西。今天重新整理修订,形成了一篇完整的文章,题目就是:关于程序员职业生涯的八点感想。

说的是程序员,其实很多东西是相同的,如果你也在互联网行业,应该会有点帮助。

一、程序员是个好职业

工作了十几年,到今天为止,我依然认为程序员是这个时代很好的职业。是不是最好,不敢确认,毕竟没离开过互联网行业,就像你只懂中文就很难说中文是世界上最好的语言一样。不过最好的之一,总归是有的。无论程序员自嘲也好,被误解也罢,甚至被其他领域的人黑到了喜马拉雅山的高度,但不可否认的是,大部分程序员都是在空调房里敲敲键盘就有可能冷不丁改变了世界,并且,大部分时候,我们都让这个世界变得好了一点点。与很多职业相比,程序员的投入产出比都算高的,稍有智力门槛,也没比其他行业高多少。而这个时代,给了程序员们大展宏图的机会,给我们足够的自由度去创造我们想要的东西。

至于传说中的「程序员职业病」,其实和程序员这个职业并没有多大关系。越来越多的互联网公司为员工提供了各种福利,免费的健身房,舒适的桌椅,香浓的咖啡,甚至一些娱乐设施。自己不运动,其实很难怪到这个职业头上。另外,程序员的工作也「并没有想象的那么辛苦」,所以,遇到头脑清楚逻辑清晰又喜爱计算机并且没有远大的志向进入其他领域的年轻人,我总是对他们说,来做个程序员吧,这是个能让你的生活变得精彩的职业。

二、程序员是一个具备长久生命力的职业

我大学刚毕业的时候,程序员还是一个稚嫩的职业,那个年代,身边的人们没见过35岁以上的程序员。于是很多人告诉我,程序员是吃青春饭的,你在国内见过35岁的程序员吗?我说,没有。

就是嘛,所以要尽早转行呀……

这种话听得着实不少,事实上也真的有很多程序员早早转行了,我没转不是因为内心强大,而是比较单纯。35岁,听起来像光年一样的距离,谁会考虑那么遥远的事情。所以我什么都没想就继续编程了。

35岁转瞬即至,除了过了个普通的生日之外,什么都没有发生。我依然在活蹦乱跳的编写程序,偶尔向周围稍稍四顾,身边的朋友要么在某个技术领域成为行家里手,要么在做产品的同时写书分享,有的设计出了千万人使用的软件,有的则成为了一个纯粹的管理者,经营着上千人的机构。这些人从前是程序员,现在也是。

随着互联网行业的成熟,程序员在成为风口浪尖人物的同时,也逐渐规范和传统化,与其他行业的工程师一样,程序员们在自己的领域有深耕,有转化,有思考,有沉淀,稳步前行。

毫无疑问,程序员是一个具备长久生命力的职业。

三、程序员不一定要写一辈子程序

以前人们总是说年龄大了就不要写代码了,或者说写不动代码了。现在多少有点矫枉过正,比如 CTO 怎么能不写代码呢,写代码可是一辈子的事呀。在我看来,这个问题根本没什么可以争论的,一个阶段一种做法。如果你写代码是最有价值的,就去写代码。如果你做产品是最有价值的,就去做产品。如果你去管理公司是最有价值的,就去管理公司。去年参加极客邦硅谷行的时候和七牛云的创始人许式伟聊天,我说老许你还在写线上代码么?老许说,不碰代码半年多了,我需要从更高的层面上去把握七牛的方向、人和事。

老许比我牛得多,是一位非常资深的程序员,热爱编程,可以说写了半辈子代码,即便如此,在这个阶段,显然有比写代码更重要的事情等着他。前一阵子看过一篇文章「扎克伯格开发笔记:打造 Jarvis 的日子」,扎克伯格在文章里写到:

2016年我给自己制定了一个挑战:打造一个像钢铁侠里 Jarvis 那样的家庭 AI 助手。

在这一年里,我打造了一个可以通过手机和电脑进行对话的 AI 系统。它能够控制我家里的灯光、温度、电器、音乐和安防系统,而且这个 AI 还能了解我的品味和习惯,可以学习新的词汇和概念,甚至可以逗我的女儿 Max 开心。Jarvis 是由 Python、PHP 和 Objective-C 编写的,运用了包括自然语言处理、语音识别、面部识别以及强化学习在内的人工智能技术。

扎克伯格是为了编程而编程么,显然不是。除了保持技术的敏感度,他主要是为了了解人工智能发展的现状。通过挑战熟悉 Facebook 的工程师们使用的内部技术,同时了解智能家居。而且,这些工作仅仅占用了他很少一部分时间。

实际情况也是这样,与我一起成长起来的七零后程序员,差不多有超过一半,他们的工作重心已经不再是编码,而是其他工作事务,另外一半则依然以编程为主要任务。这两种状态,都是很好的存在。

四、入行三五年

以我并不丰富的程序员阅历来看,入行三到五年的经历对程序员以后的职业生涯有非常重要的作用。互联网时代学习环境开放,资料浩如烟海,很多大学生在走出学校大门的时候,很可能在某项专业技能上已经达到了很高的水准,但是这三到五年的探索,依然是不可或缺的。

很多人喜欢制定学习计划,但这些计划大都无法执行下去。不是计划出了问题,而是人学习和提升的方式很难按部就班,很多时候我们都是在摸索前行。就像你今天按计划要耕完一亩田,作业进行到一半的时候,你发现一块土质的异常,于是深挖下去,用镰刀割去杂草,用铁锹铲除泥土,用钻头钻出深洞,最后发现了一口油井。如果你按照计划耕完这一亩田,可能永远发现不了那口井。

我相信每个人身体里都有某种特质,这种特质让你在某个领域取得成就的可能性远远大于其他,这种特质也能让你异于他人。但是,人们并不是生来就知道自己擅长干什么的,需要花时间去寻找,找到它,然后去做自己最擅长的事情,这对你漫长的职业生涯是一笔巨大的财富。

需要五年这么久的时间吗?依我个人的经历,恐怕更长也说不定。无论程序员也好,软件工程师也罢,叫着简单,领域知识却是浩如烟海。进入现代互联网阶段,程序员的领域细分到了令人发指的程度,比如 XX 语言工程师,前端工程师,后端工程师,架构师,大数据工程师,安全工程师,运维工程师,移动开发工程师,DBA 等等,叫法繁复,甚至职能重叠,这些角色最初都叫做程序员,最终他们像一棵大树,枝条粗壮,蜿蜒生长,然后在树冠分开,并结出了各种各样的果实。同时,每个细分的领域又会衍生出浩瀚的领域知识。

比如编程语言,常用的编程语言就有几十种,静态语言,动态语言,脚本语言,函数式编程,面向对象编程,过程式编程等等,从平台角度,Java VM 上有 Java,Scala,Groovy,Clojure,Jython,Ceylon 等,.Net 平台上有 C#,J#,F#,VB.Net,VC#,ASP.Net,移动平台有 iOS,Android,Windows Phone……

即便我们把目光聚焦在一门语言或技术上,Java,你也不可能仅仅掌握它的语法特性和函数库,然后写写业务表单和增删改查就完了。Java 的虚拟机、性能、并发编程、Jit 技术、垃圾收集、集群、分布式、异常、日志服务,还有大量的 Java 平台开源项目,都需要深入了解。除此之外,一些数据结构和算法也是程序员们应该掌握的内容,比如栈、队列、链表,二叉树、红黑树、B 树,散列表,排序算法,查找算法,最小路径,最小生成树等等……

这么看来,五年的时间并不长是不是?

当然,还有一种可能,你花费了五年的时间,发现自己并不适合做程序员,虽然这听起来有点悲哀,但也不失为一件好事,因为你还有时间转型啊。程序员几乎可以转型为其他任何角色,反过来却很难。我们听说过很多优秀的产品经理,创业者,管理者最初都是程序员,却很少听说哪个顶尖的程序员是从产品经理转过来的,有吗?反正我不知道。

关于程序员技能树,推荐一个 GitHub 项目,极客邦组织发起的 StuQ 程序员技能图谱:

[https://github.com/TeamStuQ/skill-map]

内容之全宛若九阴真经,勤加练习,必有大成。

五、程序员与产品

以前写过很多程序员和产品经理的故事,比如:产品经理和程序员的爱恨情仇、技术人员转产品经理靠谱吗、最可怕的产品经理、硅谷不需要产品经理等。其中有对程序员和产品经理的调侃,也有他们的自嘲。在很多人眼中,产品经理做需求,程序员做实现,似乎是一对冤家对头,比如最新的段子是这样的:

产品经理失踪了,程序员第一时间到警察局报警。警察对程序员说:你先冷静一下,你这样一直笑没办法做笔录。

其实根本不是这样,一个好的产品,一定是程序员和产品经理一起努力协作的结果,甚至,很多技术人员本身就是这个产品的产品经理,有的即负责技术又设计产品,有的干脆是从程序员转成了产品经理。张小龙在刚并入腾讯的时候负责 QQ 邮箱,那时候他觉得自己应该做一个管理者,产品的事情让团队的人去做就行了。「说老实话,我个人没有太关注它的体验,几乎很少参与到产品的设计中,结果出了大问题」。之后张小龙彻底改变风格,重回一线。「从极简版开始,我真正投入去做一些我自己掌握的产品体验,我怎么说就怎么做,任何一个元素要改都必须得到我的同意才行,我会全程参与到这个产品的每一个功能体验中」。最后始有微信。

张小龙是那个时代南方最好的程序员 —— 或之一。

马化腾对技术和产品的重视程度也由来已久,他在2008年的公开演讲中就说:产品和服务是需要大量技术背景支持的,我们希望的产品经理是非常资深的,最好是由做过前端、后端开发的技术研发人员晋升而来。好的产品应该交到一个有技术能力、有经验的人员手上,这样会让大家更加放心。如果产品经理不合格,让很多兄弟陪着干,结果发现方向错误,这是非常浪费和挫伤团队士气的。

如果你是个程序员,如果你热爱你的正在研发的产品,一定要参与到产品的方方面面中来,彻底了解产品的逻辑、体验、交互和用户心理,每一次版本发布后去观察用户的反馈,收集产品数据,与产品经理反复探讨和确认每一个细节。事实上,无论产品经理和设计师做到何等的事无巨细,最终软件是由程序员写出来的,这个产品必定天然携带了这些程序员的特质和元素,如果程序员在每一行代码中倾注了自己的情感,这个产品就是个有情感会呼吸的产品。如果程序员只是实现产品的工具,那做出来的东西也是没有生气的,苍白的。

只有程序员和产品经理同时全情投入,才有可能做出最好的产品。

六、你不是一个人在编程

有些人因为性子略显孤单,觉得编程不需要和人打交道,于是选择了这个行业。他们的口头禅是:能不能不打扰我,我只想一个人安静的编程。

不能!

在软件开发领域,最初级的程序员可能与机器相聚的时间更多一些,但凡开始进入状态,我们都是更多的与人而不是计算机打交道。即使我们编写的代码,也是给人使用,然后才会考虑计算机的心情。如果不是这样,一直用汇编写程序不也挺好?有人说那不是很难吗?如果一直是汇编打天下的话,自然会有各种平台和技术资料、社区来支撑这种技术,而且,你也不会用到 Java,Python 这样的语言,你咋会知道汇编难呢?前辈们会教育你,根本就没有简单这回事!

所以,无论你是多么优秀的程序员,都需要与人打交道,开会、讨论、争吵、发邮件驱动、微信里交流,如何让事情变得跟有效率,如何让别人同意你的观点,如何让别人被说服的时候感觉更舒服而不是挫败,等等,这些都是程序员需要学习和掌握的技能。

事实上,哪个行业都需要与人打交道,程序员也不例外,因为,你从来就不是一个人。

七、专业性很重要,但也别太「专」了

程序员一看就是个很专业的工种,但是正如前面所述,这个领域的技术用浩如烟海来形容豪不为过,我们穷尽一生也无法掌握其万分之一。人们常说先做专才,再做通才,也就是所谓的 T 字型人才,既有某个领域的专业知识,同时知识技能广泛,为人处世,大开大合。古代开国皇帝大抵都是这种,雄才大略又武艺高强,上马砍人,下马治国,一通百通。所以程序员必须首先具备专业技能,才能在这个残酷的领域里存活下来,不要没干两年就想着去管理,抛弃专业知识。翻一翻互联网招聘职位列表就知道了,一百条里面99条是各种各样的工程师,好容易有一条是管理性质的,一看是总经理,您能胜任吗?

所以,专业技能是需要优先考虑的,等你真正成了技术大拿,自然知道怎么去扩展横向知识。

但是您也别太专了,以至于成了偏门技术。我有个朋友一直在国外生活,他的技术栈就是大型机 —— MainFrame,每天和 JCL(Job Control Language)、COBOL 等技术打交道,工作机会不多,但这个专业的人员更少。找工作倒是不难,但是看不到上升的空间,每次换工作都得换城市,为了一个更好的职位,甚至需要从美国辗转到日本,每次被折腾的死去活来,换方向代价有太大,薪水还会降很多,进退维谷。

选技术方向,不要让自己处于这种境地。

八、没什么职业规划,往前走,就是规划

每个人都希望做好职业规划,赢在起点,然后按部就班的往前走,一步一步,迈向人生巅峰 —— 其实根本没这回事,世界上不存在完美的职业规划。我自工作以来,经历过不少重大选择,大部分则是被时代的浪潮和机遇推着往前走。从结果来看,很难说清楚好坏。因为不够强大,更多时候,我都无法和命运抗衡,喜欢计算机和编程,就留在了互联网这个行业里默默努力 —— 现在看起来,也并没有比别人努力的更多。然后遇到一些机会,就迎了上去,仅此而已。

也不存在什么赢在起点的事情,如果你是老老实实经历了中国教育的所有阶段,你不得不承认,你已经没那么优秀了。等到进入工作状态,你会惊奇的发现,我靠,自己竟然是个普通人??

牛人去哪了?暗黑的教育体系无耻的创建了各种科大少年班,网罗了中国最聪明的一批孩子。当我们在中学瞎晃的时候,他们已经大学毕业了,当我们在大学谈恋爱的时候,他们已经博士或博士后毕业了。等你真正开始工作的时候,你会发现重要的职位已经被安姐朱赟、道哥翰清这样的神童占据了,即使不那么重要的职位,比如产品总监,也被次神童邱岳这样的人霸占着……

这么写你们可能会觉得我有点悲观,其实根本不是,我是个天性乐观的人,并因此遭受过很多不公正待遇。比如,大家都知道我的字典里根本就没有悲观两个字,因为他们把我的字典抢走了……

我们年轻的时候,经常有人说:
像你这种程序员我见得多了
懂点编程就以为能够横行天下
其实行走江湖是一件很痛苦的事
会编程,有很多事情不能做
你不想种地吧
又不耻去打劫
更不想抛头露面在街头卖艺
那你怎么生活?

我们只能踏踏实实的写好每一行代码,做好每一个产品,然后等待时间的力量,万一是大器晚成呢?

新 MacBook Pro 适合开发吗?

还是得程序员说了才行。

今何在在悟空传里写到:「我不知道为什么因为失去而忧伤,为什么为了时光短暂而忧愁。我要去找到那力量,让所有的生命都超越界限,让所有的花同时在大地上开放,让想飞的就能自由飞翔,让所有人和他们喜欢的永远地在一起。」

现在看起来,这显然是不现实的,哪一条都做不到啊。

那我们活着还有什么乐趣呢?我觉得,除了个人成长,认识世界,就剩下买买买了呗。我有一个程序员群,其中两个程序员的理想是买岛。每次聊到最后,他们就会说,反正是要买岛的。我说这一点你们和我一个杭州的朋友倒是很像。他们不是说说而已,连岛上的设施都构想了很多,淡水处理厂,海底电缆,飞机场,发电系统。我问,一个岛得多少钱啊。他们说,我们查过,500万刀,就可以买一个过得去的岛。不过这是几年前的数据了,不知道最近行情如何。我算了一下,说,加油!然后就去搬砖了。

我买岛的理想在那次出海一次之后就破灭了,所以现在买台 Mac 就很开心。上周我的新 MacBook Pro 到了,我选择的配置是15寸,2.7G,16G 内存,高配显卡和 1T 固态硬盘,考虑到未来颠沛流离的日子,这个 Mac 应该能跟我几年了。

用了一周,写点体会。

我是个比较一根筋的人,从2008开始使用银色的 Mac,到今天一直选择银色。新 MBP 看起来就像大号的12寸 New Macbook,嗯,我的 MacBook 也是银色。比老款轻了一点,薄了一点,不过因为我现在成天拿着 MacBook 到处跑,所以入手还是很重。新 MBP 比旧款小了一圈,因为屏幕的边缘变窄了,视觉上带来的感受是,屏幕变大了,其实没大,但两台 MBP 一起看,新的确实有种一望无际的感觉,这是个错觉。

人生会有多少错觉呢?没人知道。

新 Mac 的硬件配置不说了,性能非常强劲,开了几十个应用,Safari 的标签页开了几百个,各种虚拟机、Docker能开的全给他开了,依旧快的无与伦比,依旧切换顺畅,依旧每个 App 都无与伦比。国外科技评论人 Jonathan Morrison 对 13 英寸不带 Touch Bar 的 MacBook Pro 做了评测,他找了价格便宜量又足(硬件配置更高)的 Windows PC 笔记本,去处理 1080P 的视频(用 Premiere 和 Final Cut Pro X 进行高比特率 H.264 导出),PC 花的时间是8分多,Mac 是1分23秒。

所以,性能方面没什么可担心的,优化过的16G 内存也完全够用,macOS 的内存机制之前写过,不再多言。

屏幕更加细腻了,亮丽了,同样的画面,同样的亮度,同样的分辨率,新 Mac 比旧款清晰,明亮,官网说:「它采用比以往亮度更高的 LED 背光组件,并且提升了对比度,因此呈现出来的黑色更加深邃,白色更加明亮。更大的像素孔径和可变的刷新率,使它比上一代机型能效更高。」这是真的。所以,如果你是设计师、调色和影像编辑,而且不差钱,就来一台,不会后悔的。

原有的巧克力键盘变成了碟式键盘,样子和12寸的 MacBook 没啥区别,就是键程稍长了一些。在 12寸的 MacBook 上打字,你就像敲击一块钢板,在15寸的 New MacBook Pro 上呢?像敲击一块木板。如果你想体验机械键盘那种绕指柔的感觉……那你为啥不外接机械键盘呢?还是那句话,买。

我机械键盘和碟式键盘都能用,不挑食,毕竟已经在钢板上写过很多字了,能屈能伸。

触控板大的惊人,偶尔低头,你会发现键盘下方几乎都是触控板,吓的都不会打字了。有了这款触控板,基本上就告别了鼠标和 Magic Keyboard,你差不多可以在上面踢场足球。但是大有大的坏处,就是容易误触。我打字的时候手掌的半块肉会贴在触控板上,不过苹果在这方面做了误触处理,如果肉多,就什么都不做。但是,如果你竟然穿了件长袖T恤,袖子会隔开你的手掌和触控板,肉若隐若现,就特别容易发生误触。所以我现在都是捋起袖子干活,好在公司够热,也就这么过来了。

续航中规中矩,因为 MBP 上用的东西都比较厚重,所以正常使用10小时就别想了。当然,苹果非常鸡贼的用了「最长10小时」这个说法,您啥都不干对着屏幕发呆一整天,当然可以10小时,没意义。正常使用,可以抗5-6小时吧。散热不错,键盘的左右下方都比较凉快,Touch Bar 附近是散热区,触手温热,但是温度完全可以接受,长时间使用也没有过热的现象。

Touch ID 和 Touch Bar 是这次升级带来最大的亮点。

MacTalk-屏幕快照 2016-11-23 下午8.52.05副本 11:23:2016

Touch ID 是那种没有的时候没什么,一旦拥有就再也离不开的功能。Touch ID 可以通过指纹的方式解锁 Mac、进行 Apple Pay 和 购买 iTunes Store、App Store 上的资源。当然了,在我国,iTunes Store 已经没什么可购买的了,所以 Touch ID 主要的用途就是解锁,实用性比 Apple Watch 解锁强 12.5 倍。Apple Watch 解锁首先你得有块表吧,其次还需要忍受解锁不成功和解锁缓慢的缺陷,而 Touch ID 可以一触即开。我设置了拇指、食指和中指三个指纹,基本上可以应对躺着、坐着和站着等使用场景。这时候肯定有人会问,中指什么时候用呢?开心的时候,或者悲伤的时候,都可以用。

Touch Bar 则毁誉参半。苹果公司是一件很有意思的公司,做减法的时候基本上是刀刀见血,毫不留情,比如砍接口……算了这个我们一会再说,但是做加法,比特么耕牛还慢。人家各种超极本都基于多点触控做成全屏幕触摸了,苹果时隔多年,只是加了一个细细的触控条!不过这一点倒是对我的胃口,因为我使用笔记本特别讨厌别人戳我的屏幕,满屏幕指纹在飞会让我崩溃。

Touch Bar 的功能网络上介绍的很多了,很多程序员问新 Mac 是否适合研发,疑问也主要集中在这条 Touch Bar。我用了一周,可以说没什么不适应的。esc 变成了虚拟键,但是常年存在,而且做了触控范围处理,左上角敲击的时候基本上可以一击必中。另外运行和调试用的功能键 F 系列,也可以通过左下角的 fn 随时呼出来。所以,无论是你打开 Vim,XCode 还是 IntelliJ,都可以正常编程、运行和调试,完全没什么可担心的。如果你外接了机械键盘,Touch Bar 就像不存在一样,没什么可说的。

Touch Bar 功能非常丰富,充满科技感,mac OS 的原生应用对 Touch Bar 有很好的支持,尤其是影音、照片、Keynote 等等。自定义功能也很方便。打开系统偏好设置 – 键盘,下面有个自定义控制条,点开就可以进行全局定义。比如我把锁屏键拖到了常规使用位置,离开座位时轻触即可。每个适配了 Touch Bar 的 App 的显示菜单栏,都有自定义 Touch Bar 的选项,大家可以根据自己的习惯设置。

怎么写,也得自己试用了才好啊……如人饮水,冷暖自知!

关于 Type-C 接口的问题,上次我在「Touch Bar」中写过了。总之,如果无线能够解决你的所有问题,那么你只需要接电源就可以了,如果不行,那就买转接口。一般情况下,USB-C 数字影音多端口转换器和USB-C 至 USB 转换器这两条线基本能解决大部分问题,如果你有更多要接的外设,自己看着办吧。

Type-C 接口虽然不分正反面,但是插接非常生涩,既不如原来的雷电接口,与吸附式 MagSafe 电源的使用体验,更是相差十万八千里。这一代如果能够保留 MagSafe 和一个 USB 口,应该是大家喜闻乐见的结果,可惜,苹果并不听我的。

硬件说完了,后续就是迁移系统的事情。篇幅太长,有机会再写吧。

写了这么多,这款崭新的 Mac 是否值得买呢?其实我觉得吧,还是要去多挣点钱,钱挣多了,很多事自然就变了……

微信的演进和未来

之前写了一篇「微信为什么会成功」,原本是没有续篇的,不过收到的大量回复又引发了我一些新的思考。另外,Tony (腾讯前 CTO 张志东)在读过这篇文章后,给了我一些意见和想法,价值深远。毫无疑问 Tony 和 Allen(张小龙)都是具备大智慧的人,我觉得有必要把这些意见和想法,通过这篇文章传递出去。

微信发展到现在,差不多成了移动社交和互联网生活领域的巨无霸,体量惊人,牵一发而动全身。功能繁多,业务复杂。虽然微信一直遵循简约至上和用完即走的原则,一些功能入口隐藏的很深,但是我们掀开这些藩篱去探求宏大的微信世界时,你会发现,微信的功能已经数不胜数。

消息、语音、视频、群、通讯录、公众号、朋友圈、购物、游戏、卡包,点进钱包这个导航,其中蕴藏了和支付相关的无数功能,理财通、生活缴费、红包、城市服务、微信红包……还有大量的第三方服务。这还不包括从微信衍生出来的微信读书、微信电话本、企业微信,还未正式发布的公众平台移动版。等等。

即便如此,随便抓个用户,不是产品经理,依然能提出一车皮的需求。比如:

为什么不做朋友圈分组查看?
为什么没有收费群的功能?
文章应该有付费阅读的选项
朋友圈热文的入口太深,希望提前
联系人什么时候能够突破5000的限制?
为什么不做订阅号和服务号的「App Store」,搜狗的微信搜索首页都是「段子手、私房话、养生堂、八卦精」,为什么要让他们做微信号搜索?
我写的这么好为什么没人知道?原创流量从哪里来?
直播这么火,为什么微信不做直播?
语音问答这么火,微信为什么不做「值乎」「分答」这样的功能?
微信为啥没有驾驶模式?
Mac 版微信怎么还不更新?
……

类似这样的功能,我可以轻松写出100个,微信的产品经理有没有考虑过?我估计每个这样的需求他们都做过反复评估,各种纠结,各种痛苦。对于产品研发来说,增加功能是最简单的,看起来也最容易获得加分。但是,设计上的完美并不是没有东西可加,而是没东西可减。

我曾经问过 Allen,支付宝有经费群,微信为什么不做收费群?适合内容创业啊。龙哥的回复是:

群内做一种通用的缴费功能,是有可能的,但还没有极简的方案,所以还没上。
但是不会做一种付费才能进入的群,一是场景不普遍。群更多对应社交,专门的垂直用途的群,可能不是微信应该做的。二是群加重用户负担,现实里面人处理不了那么多社交关系,简单社交好一些。

朋友圈分组查看也是,微信方面始终认为动辄上千联系人的微信用户是对微信的一种「乱用」,是非典新用户。典型用户应该只有几十或一百多个联系人,查看朋友圈的信息流完全不是负担,也不需要分组。只要加上分组查看这样的人工手段,必然会干扰自然的信息流,这是可能是微信比较忌讳。

不过微信体量到了现在这个程度,每个人有几百个联系人也不是什么新鲜事了(2016年3月的数据显示,超过半数的微信用户微信好友的用户数占比最高),增加这样一个有效的过滤信息噪音的手段,是否可以重新提到议事日程上了呢?也许只有 Allen 知道。

有时候我觉得,适度的去满足一些重度用户的需求,没准会有新的创新思路出来呢。事实上微信内部团队一直在做各种各样的产品尝试,包括付费阅读、语音问答这样的功能,最终因为没有找到「极简的方案」方案,并没有上线,包括内测了一个多月的公众平台移动版,依然在内测中。

如何找到极简的方案来改进攻能,如何处理极度复杂的业务和海量数据,应该是微信需要解决的问题。

简约这东西可能是世界上最艰难的事。有时候通过简单的技术和管理,可以创造出简单的用户体验。有时候又不尽然。一个人在一种情形下觉得简单的东西,换一个人或换一种环境,简单就有可能变成复杂。尤其是用户量达到几亿的量级,想做到简约和节制,就难上加难。

同时,微信也已经足够复杂了。功能的堆叠和海量用户,让微信成了一个庞然大物。每次看到复杂的事物,我都会想到《泰塔尼克号》的拍摄过程。每次观影我都惊叹于詹姆斯·卡梅隆对整个电影庞杂结构和繁复场景的把控。从一张船票开始,到船舱的狂欢,爱情的萌动,背叛与阴谋,撞击冰山,船体断裂,逃生,救助,到每一个小人物的刻画,娓娓道来,栩栩如生,在宏大的场景中刻画了细致入微的情感。就像你刚刚种植了一棵树苗,它就迅速成长为一个参天大树,树根伸向地底直达岩石,树冠延展到苍穹,然后暴风骤雨和雷电袭来,大树轰然倒地,每一个树叶的飘零,露珠的飞溅,枝丫的断裂,树根的崛起,全部被细密的展现出来,让人叹为观止。

当微信团队面临几亿用户的时候,项目和产品的复杂度是呈几何级增长的,大量的项目和产品线会交织进行,你需要抽丝剥茧,层层推进,确保重要和紧急的项目保质保量的按时完成。你就像一个杂耍演员,在复杂的环境中把多种因素抛向空中,将它们反复排列,直至形成最佳组合,同时确保每个因素小球都不会因为你的倏忽轰然落地……这是多么有挑战的一件事啊,同时危机重重!

除了简单和复杂,还有微信的社会属性和连接性。这两点是 Tony 反馈给我的。Tony 说:

从社会的角度上看,2亿用户和6亿用户是完全不一样的场景,6亿用户面对整个社会的复杂度,如老年用户、县城用户/农村用户,不少人群的信息真伪鉴别能力、自我保护能力是很弱的,关系链过多、信息量过多、均会形成新的延伸问题,有待团队的产品演进;

另一方面,就是互联网+的生态,微信原有的 API 尚有待演进,需要团队具备更敏感和更有力的节奏。

Tony 是有胸怀、远见卓识的企业家,他能够看到普通用户看不到或不关心的场景。根据2015年的微信用户数据报告,超过60岁的微信用户就有上千万,更何况县城用户/农村用户。当一个产品用户总量到了6、7亿的规模,这部分用户的需求就变得迫在眉睫。我想我们都会有个「家人群」,群里面大部分文章都是这样的:

80岁看着像50岁!国家级中医每天坚持3件事
「饿死」癌细胞,也要走对路!
三大穴位最养肝,碰一碰就有效
……

如何让这样的用户也能获取到科学的,有效的信息,同样是微信面临的社会性问题。

另外,无论大家是否承认,微信现在已经像个移动互联网生活的操作系统了,如何更有效的设计和利用开放平台的 API,在规则之内,给第三方开发厂商更大的自由度,连接软件、连接硬件、连接人、连接物、连接世界,这将是微信的未来。

这一篇不会再有续篇了。关于微信的主题,总是过于宏大,我自己完全无法掌控,只能传递一些讯息,就像即将驶离海港的巨轮发出了汽笛的鸣响,您听见响动就好。

再次感谢微信,她改变了我的生活,让我拥有了更多的朋友和读者。因为微信,我写了更多的字,看了世界上更多的风景,认识了生命中不可思议的人。微信应该有更好的未来,我们也是。

微信为什么会成功?

tumblr_o1l249LzcK1teue7jo1_1280

无数的人写过这个话题,我面试产品经理的时候也常常会用这个问题和他们交流。周日午睡梦醒,Airbnb 的朱赟博士突然在微信上问起了这个问题,我试试在不看任何资料的情况下,写一写自己的直观感受。

微信的成功有两个大的前提,第一这是腾讯的产品,第二这是张小龙的作品。脱离了这两点去理解微信,都是片面的和偏颇的。在腾讯内部做项目,只要是正式发布的产品,基本上都是千万或上亿级别用户的体量。你要是做了个产品,只有两千万用户,都不好意思和别人打招呼说自己是腾讯的产品经理。而张小龙,在经历了 Foxmail 的个人软件巅峰和 QQ 邮箱的洗礼,已经大成。在产品领域,张小龙成了一个睿智的思考者和实践者,他需要一款伟大的产品来实现自己的想法。

这两年,我博览了群书和群山,路过了死亡之谷和罪恶之源,现在终于可以坐下来喘口粗气了 —— 张小龙

2010年,微信立项。

在我看来,微信的 1.0、2.0 和 3.0 均属于寻找方向、试错和突破的过程,在这个阶段,微信分别推出了免费消息、语音通讯、视频和查看附近的人,腾讯基于 QQ、QQ 邮箱等内部资源强势推广,微信用户开始以每天几十万的速度增加,用户数量突破一亿。

如果微信就此走上功能堆叠的通信工具之路,那它无法成为一个平台和生态,也就不会是现在的微信。为什么微信没有成为米聊的加强版?因为微信有张小龙啊。

很多人说微信的转折点是语音,是查看附近的人,在我来看,这些都是不具备突破和创新性的,真正的创新来自微信4.0,在这个版本里,微信推出了基于熟人社交的「朋友圈」功能,这个功能在任何其他产品形态里都没有出现过。自此以后,微信开始进入自我创新和蜕变之路,变得无比自信,在社交领域,再也无人能够与微信比肩。

张小龙带领着微信团队,像一个孤绝的高手,开始探索产品和人性的终极奥秘。而其他的公司和人,已经无法望其项背。

朋友圈完全不同于微博,这是一个熟人社交的领域,只要在微信上有朋友,你就可以发表信息,展示照片,并获得赞、评论、朋友间的问候和调侃。朋友圈最初的创意不知从何而起,不过读了2011年前后张小龙在饭否上发布的几千条信息,我感觉那时候他就在以朋友圈的心态玩饭否,而不是微博形态。关注 gzallen 这个帐号的只有寥寥数十人,除了他的朋友,没人知道这个 ID 就是大名鼎鼎的张小龙。

创意虽好,真正去打造产品,却是无比艰深。有时候你只能像一个无助的船长立在船头,看着远处不详的海潮交汇,浪起云涌,却不知道正确的航向在哪里。山重水复疑无路,唯有等待火花迸现的那个瞬间。Tony (腾讯原 CTO 张志东)在「克制的力量」一文中这么描述朋友圈的诞生:

克制一方面是尊重用户,另一方面就是让产品团队,要在每个细节都要求更美更合理。在克制的团队工作,绝对不会轻松,更不会轻易成功。微信团队在3年前设计朋友圈的体验时,一支十来人的小分队,纠结了许多个日日夜夜,尝试了数十版,內部版本号从 A 到 Z 用尽了,无数阵痛之后才打磨出一个让小伙伴们喜爱的好作品。

朋友圈一出,微信彻底确立了移动互联网时代生活方式的产品方向,但真正的创新尚未开始。

人们用微信的消息、语音、视频进行交流,通过朋友圈展现自己的生活状态和思维片段,人们习惯了阅读和写140个字的短信息,有没有重拾写作和阅读乐趣的可能性呢?

2012年8月,微信公众平台正式上线,通过微信、订阅和推送的方式,重启这个时代个人作者的社交写作之路。同年9月,小道消息差不多成为第一个技术人的公众号,12月,MacTalk 也加入了这个平台。随后大批的喜爱写作和阅读的人入驻了微信公众平台。公众号通过一种强关联把写作者和读者的情感连接在一起,这是以往任何一款软件都没有做到的。一个优秀的原创作者,写一篇文章会收到上百条评论,这种互动,在这个信息碎片漫天飞舞的年代,尤其可贵。

不止于此!

微信公众平台随后推出了服务号和开放平台,微信几乎变成了一个操作系统,每一个公众号都是一个自具形态的软件,感知用户,给出反馈,自我发展,并连接一切。

自此,微信横刀立马,一扫天下!

2014年,微信几乎是以必须进入的态势推出了支付功能。2015年春节,微信支付联合商家以「摇红包」的形式送出了5亿金额的现金红包,一举奠定了微信在支付领域的地位,并告诉支付宝,说,兄弟,我来了。到目前为止,无论是否承认,微信支付是唯一可以和支付宝分庭抗礼的支付产品。

朋友圈、公众号、支付之后,开创性的创新似乎已经落下帷幕,微信进入了微创新时代。

可以说微信是这个时代最伟大的互联网产品之一,改变了人们的生活,也改变了我的生活。我作为一个深度用户,非常幸运目睹了这个产品的成长过程,感谢微信的团队。

微信的成功有很多外部因素,但最主要的源动力来自微信内部的创新、节制、不打扰用户,还有默默的坚守。做过社交和阅读类产品的人都知道,在我们这个时代,一个好的产品会被阉割的不像样子,锤子便签也不能幸免。我想微信用了足够的耐心、聪明和规则去保持了产品的完整性,这非常不容易。

微信有一个非常可怕的团队,他们坚信自己在做伟大的事业,就像冰山下涌动的暗流,生生不息,充满力量,推动着微信这座巍峨的冰山缓缓前行。任何时候,我在微信及其衍生产品上遇到任何麻烦,只要找微信的人,他们都会拉一个微信群即时解决问题。

任何时候!

如果你在抱怨自己的产品没做好,那你最好想想,你做了什么,没做什么,做对了什么,做错了什么。

怎么减少编程中的 bug?

Go

为什么要编程?因为代码没在那里。创造一个世界是如此让人着迷,Linux 的创始者 Linus 这样表述对编程的喜爱之情:

对于喜爱编程的人来说,编程是世界上最有趣的事,比下棋有趣得多!因为你可以自己制订游戏规则,而你制定什么样的规则,也就会随之出现与此规则相符合的结果。

在电脑世界中,你就是创世者,你对所发生的一切拥有最终的控制。

你可以建筑一个这样的房子,有一个活板门,既稳固又实用。但是每个人都可以看出一个仅仅以坚固实用为目的的树上小屋和一个巧妙地利用树本身特点的美妙小屋之间的差异。这是一个将艺术和工程融为一体的工作。编程与造树上小屋有相似之外……

每个热爱编程的人都在编写代码的过程中享受着创造的乐趣,但是,伴随着编码的快感,bug 总是如影随形,开发无止境,bug 随身行。bug 是每个程序员没法绕开的障碍,它们就在那里,修复一个,增加一个,似乎永不减少,永远存在。

Continue reading

当有人向你反馈了一个bug之后

IMG_8026

最近一直想写一篇 bug 相关的文章。昨天晚上打开 Reeder 翻阅的 RSS Timeline,结果发现了这篇「When someone gives you a bug」,作者是一位前端程序员,名叫 RobotJoe。原文网址:

When someone gives you a bug

开始写文章之后我发现每次想写一个主题的时候,从会有合适的素材时不时蹦出来,非常神奇。

故事讲得荡气回肠催人泪下,我一年前就读过中文译文,这次看起来依然心酸不已。于是找了一篇译作(译者已经不可考),重新意译、校对和排版,推送给大家。读完这篇文章,你大概就能理解为什么程序员明明知道创业维艰,成功率极低,还是奋不顾身的跳入创业的大熔炉里,岁月竞逐,情怀不改。

嗯,其实「每个人创业的成功率都很低」这种事,只是没人到处说而已。

Continue reading