如何「收集」知识

MacTalk-L1000537 7:21:2018

这些年杂七杂八写了很多东西,总会有读者问,你是从哪获取到这些知识和信息的?写了六年还不够你得瑟的,怎么没完没了了?早期写东西是因为之前的十几年积累了很多素材和想法,输出到一定程度,就需要重新去收集知识和素材、学习、进化,然后再次输出。这个阶段并不是串行的,而是并行的。大家会看到,很多习惯写作和分享的人,一般都是持续输出,生命力长的作家,作品也是一本接着一本,不敢长时间的中断。停下来容易,但是重新上路,就需要更大的驱动力才行。这也是很多人无法坚持的原因。

很多人会说,知识并不重要,重要的是对知识的理解和运用,但前提是你得有这个知识库才行,如何管理自己的知识库呢?估计每个人都有自己的办法。我也有,办法虽然很土,对我来说还有些效果,分享给大家。

收集知识对我来说大概有两个阶段,开始的时候目的性极强,比如想学习 Linux,买的书和上网找的资料都是 Linux 相关的,然后进行整理和消化吸收。后来功利性没这么强了,无论是技术、文学、传记、影像,看着好就会把一些片段或入口保存自己的知识库里。当然,任何时候都有需要针对性的知识的时候,比如写推荐算法的文章,还是得去找到特定领域的资料以确保自己写的内容是相对严谨的。

读书

构建知识库就像建一座摩天大楼,开始的时候要把根基打好,结实、端正、坚韧,有人过来踹一脚,能做到不动如山。知识是金字塔,地盘越坚实,越容易构建上层建筑。如何打好基础呢,当然是读书喽,这个阶段如果东一榔头西一棒槌去追击一些知识碎片,效果反而很糟。

人们常说,买书如山倒,读书如抽丝,大意就是买的容易读来难,最终买了个收藏知识的幻觉。我对此倒是不以为然,买书肯定是好事不是坏事,但你别想着买了的书能全部读完,凡事都有转化率,买了,就有可能读,不买,那可能真的永远不会读。况且有些书是用来收藏的,有些是用来当参考手册的,有很少一部分是买了需要立刻读完的。

如何阅读一本书呢?这是个可以写本书的话题,简单来说,要对阅读进行层次划分,同一本书,因为性质和场景不同,我们可以简读,速读,精读,甚至可以用学者的方式阅读。什么是学者的方式?就是知识拆解和重新组合,安姐在她的极客时间专栏里谈到了编程语言的学习,别人去学怎么使用,她想的是语言是怎么实现的,类型系统是什么,计算能力的边界在哪。学者方式的阅读也是类似。知其然,而知其所以然。

有的人遇到看不懂的图书和文章就会觉得作者写的烂,遇到浅显解惑的内容又会认为作者肤浅,却从来不考虑自己的需求场景、阅读方式和理解问题。有的人希望快速阅读一本书,有的人希望找到好书,有的人则希望能够通读并拆解一本书。读书时要找到自己的定位。

好记性不如烂笔头

光读书当然是不够的,想学以致用,还需要用自己的方式建立人和知识的连接。我的方式就是写下来。无论是读纸书还是电子书,我都喜欢在读的过程中里写写画画。读完之后,如有必要,就会把纸书里写的文字和划线部分,电子书里的摘要和评论,全部记录下来,甚至写成一篇文章。书里有些内容特别好的,我会把原文在电脑上重新敲一边,以便随时阅读。

柯南在刻画福尔摩斯这个人物的时候,创造了记忆宫殿这个类比,其实普通人也是类似的记忆模式,写下来的过程就相当于你把某些知识放到了记忆宫殿的阁楼,阁楼多了,也就形成了宫殿和记忆图谱,用的时候自然可以按图索翼,追根溯源,最终把这些知识连接起来。

构建知识库,就像酿酒,无论原材料多好,挂着霜的原产地葡萄也好,深山老林的矿泉水也罢,最终出来的得是酒,而不是汽水。知识的发酵也是如此。

至于这些知识放哪,如何分门别类的管理,每个人处理方式都不一样。我一般用 Ulysses 写比较正式的、可能发布的东西,用 Evernote 记录碎片化的、非正式的信息。这方面很多人比我做的更好更系统,后面再说。

稍后读,而不是稍后再也不读

除了系统性的读书,我们还会从现在的付费专栏、微信公众号的文章,以前的 RSS 和博客上汲取知识,这些相对碎一点的内容,基本上都会提供收藏或者稍后读功能。大部分人看着好点击了收藏或者稍后读之后,这些知识就消失了,因为大部分人稍后也不读……直到有一天你突然发现自己有了一个一眼看不到尽头的阅读列表和堆积成山的 PDF,然后开始梦想到一个人迹罕至的森林小木屋里苦读一年以期迎头赶上 —— 对了,要是每天清晨沿着林中小溪散步时会有人带来食物并带走垃圾就更好了。围笑。

我自己把稍后读的内容分成两类,一种是当做参考消息的,收藏起来,将来能搜索到就行。另一种则是真正希望稍后读的。对于第二种,我会每天拿出固定的半小时把这些文章找出来过一遍,有价值的内容写上价值所在,做个标记放入我的知识库,读完了了的,干脆删除了事,防止信息干扰。

稍后读的工具挺多的,比如 Instapaper、Pocket、Evernote、Send to Kindle 等等,选择适合自己的就好。

因为资质平平,我在构建知识库的过程,差不多遵循的原则是日拱一卒、不期速成。现在看来,虽然学的慢,但也不是学不会,于是有了这些年的输出。

《程序员练级攻略》推荐必读书籍清单(上)

左耳朵耗子在极客时间开了一个专栏,写了快一年了,文章中涉及了很多计算机经典图书。我们的运营妹子整理了一部分出来,是为(上),我看了一下,大部分自己也读过,确实是好书。一并推荐给大家。

必读书籍清单链接地址:https://time.geekbang.org/column/article/10793

关于读书,我为微信读书写了个寄语,写完发现,字写得不如原来好看了,很显然是写得少的原因。以前上学时很强调练字,字写得难看了会不好意思。现在都无纸化办公了,面试很多九零后的时候,发现简历上的字写得像小学生。

这时候,一般字挺拔的,我就录取了。

微信读书寄语

台湾之行,顺便说个事

这个博客很久没更新了,因为写作重点基本上是在微信平台上。不过微信始终是个第三方平台,它的改变往往是不可预期的。所以我最近改变了主意,准备重新复活这个随想录,内容会比较自由一些。

不知道这个 Blog 还有多少读者,不过我只管更新就好了。

上个月极客邦 TGO 鲲鹏会台北分会成立,我去了一趟台湾。以前看了很多台湾的书和电影,真正踏上这个岛的土地还是第一次,不过台北这次给我留下的印象,几乎和我想象中完全一致。

天空高远,多云,空气干净,湿润,拧一把感觉能出水。街里热的像一团火,屋里冷的像一块冰,酒店和会场估计只有十几度,我睡觉是要关掉空调的。台北的建筑远远比不上北京的现代化,但是韵味厚重,色彩不张扬,充满底蕴,无论是国父纪念馆,101高塔还是夜市小吃街,都有些历史的味道弥漫开来。去故宫博物院和士林官邸就不用说了,仿佛历经当年的历史瞬间。

很多人说台湾在移动互联网时代是缺失的,除了硬件过于赚钱之外,和台湾的地域和环境都有关系。在台北走几步路就可以找到好吃的,出租车多得像大陆的自行车,招手即走,所以很少人点外卖,也不会用滴滴之类的软件叫车。关于这个话题,专门有个圆桌论坛讨论,不是本文重点。

台湾至今仍保持了华人传统的温良恭俭让,开车走路非常规矩,街道干净,并且少有垃圾桶。每个人都彬彬有礼,台语温温软软,细声细气,像唱歌一样,非常好听,不过他们有时候会夹带很多英文混着说,语速又快,听不清楚的时候,我就当听歌了。

台北的妹子穿着不那么张扬,干净,雅致,不失青春活力,总让我想起齐肩长发、白色领口的姑娘迎着海风向前的场景。

台湾的男生大概就是这个样子,大都挂着阳光一样的笑容,看起来节奏舒缓,没有那么多急躁和匆忙,相比大陆中青年眼神中的欲望,我们只能说,大陆人民仍在野蛮生长。

比较有趣的是,台湾开出租车的师傅,也有对标北京出租车司机的,北京师傅喜欢评判海里的事,台北师傅则爱说老蒋小蒋并品评历任总统,说的抑扬顿挫,有板有眼,我一边捧哏一边听相声,不亦悦乎。和很多台湾人接触,所有人都觉得大陆和台湾血浓于水,是兄弟,有点矛盾没啥,骨子里都是中国人啊。

台湾,值得去很多次的地方。放一些我拍摄的照片。

我们为程序员做了一款「极客时间」

2017年7月31日,我们发布了一款给程序员使用的搜索引擎「极客搜索」,深得技术人员的喜爱。两个多月过去了,2017年10月17日,我们团队为极客、程序员、编程爱好者和热爱互联网的人们发布了一款新产品,产品的名字叫做「极客时间」。

在近二十年的职业生涯里我写了大量的代码,做过很多项目和产品,但这一个应该是我人生中最重要的。有人会说,你未来可能做出更好的东西。即便如此,极客时间也是最重要的之一。我想,在未来可以预见的时间内,互联网的技术人会记住这个名字:极客时间。

MacTalk 的极客时间

人的生活状态大致有两种,一种是防守状态,你处于某一个位置上,别人给你挑战,给你任务。给你一件,你想办法完成了,再给一件,又完成了。你会有成就感,但主动权在别人手里。我在洪恩、用友、锤子虽然做了很多事情,但从根本上没有脱离这种状态。另外一种是进攻态,确定方向找到目标提刀上马仗剑走天涯。就像崔健在蓝色骨头中吟唱的:

我要干我最喜欢干的,不管挣钱多少
只要我有笔 谁都拦不住我

极客时间就是在这种状态下生长出来的产品。

今年3月初我和极客邦科技 CEO 霍泰稳规划这个产品的时候,有的朋友好心告诉我,这个领域太垂直了,用户群少,你能搞出什么花样呢?其实这个领域的人群并不算少。

参考 GitHub 官方数据及年度报告、IDC 报告和中国统计年鉴,预测目前国内 IT 技术从业者应该在700万到1000万左右。假设年增长率为30%,同时考虑编程教育进一步普及 —— 人人都需要懂一点编程的时代即将来临 —— 2022年这一人群将达到3000万人,甚至多得多。

另外,这个领域中最有价值的就是技术和掌握了这些技术的人群。每个互联网大佬都认为,未来最重要的就三件事:技术、技术和技术。驱动商业世界和人类社会前行永远是最底层和最先进的技术,技术的价值就蕴藏在这个领域的人群中。为他们提供产品和服务,当然是价值最大化的事情。

为什么叫「极客时间」,因为这个时代需要极客精神。极客在这个时代不再代言怪异、不合群和木讷,而是好奇心、创新和生产力的代表。早在20年前,苹果的广告 Think Different 已经做了绝妙的诠释:

他们我行我素,桀骜不驯,惹是生非,就像方孔中的圆钉一样
他们用不同的方式看待世界
他们既不墨守成规,也不安于现状
你尽可以支持他们,反对他们,赞美或诋毁他们
但是唯独不能忽视他们
因为他们改变了世界
他们让人类向前跨越了一大步
他们是别人眼里的疯子
却是我们眼中的天才

我个人从技术和技术社区获益良多,我在工作中所获得的一切成果,都得益于此。乔布斯说过,做出一件好的产品,也许是向这个世界表达感恩的最深刻的方式。「你没见过那些人,没跟他们握过手,你没听过他们的故事,也没跟他们讲过自己的经历,但就是通过你倾注心血做出的这样一件东西,你传达给了他们一些东西」。

极客时间就是这样一款产品。三月份开始规划产品和组建团队,四月份开启了从零开始打造一款产品的历程,整个过程艰苦并充满快乐。我们构建了统一的账户系统、资源系统、支付和交易系统、直播系统,发布了极客搜索,并基于这些基础服务开始构建移动应用。我常常在密密麻麻的程序员、产品经理和设计师(人不多地太小)之间走来走去,看着他们敲打键盘写下一行行的代码,为某个交互和设计细节争论的面红耳赤,确保每个产品的功能都灌注了团队成员的情感。我感受到了前端主程序涛哥的那句话:一切尽在掌握。当然,后来由于进度紧张工作量大,技术和业务复杂度增加,涛哥把这句话修正为「快掌握不住了」。我并没有过多的担心,因为这句话的核心逻辑是,一切依然在掌握中。

半年之后,我们完成并发布了极客邦历史上第一款的移动互联网产品:极客时间1.0。

极客时间产品视频

极客时间可以说是一个知识产品的容器,容器中的每个产品都是贴着场景长出来的。

极客新闻:每天早上八点,极客时间的编辑们会推送四条图文加音频的极客新闻,工程师们可以在早晨上班的路上听每日新鲜的技术新闻。

热点专题:每月四个热点专题分析,编程、架构、微信团队解密、京东618、天猫双11……前沿的专题和独特的视角,都可以在这里看到。

二叉树:每周你还可以看到属于技术人自己的视频和直播节目。与一线大咖面对面,不仅「听」他说什么,更要「看」他怎么做。

专栏则是极客时间最核心的功能,我们邀请了业界顶级专家和我们的内容编辑,耗费大量的时间,基于图文、音频、小视频白板、直播等方式构建轻量级多样化的原创 IT 知识服务产品,帮助用户提升技能,拓展知识边界,让专栏作者和读者建立紧密的连接。读书是一种学习,阅读别人则是更高级的学习形式。

每个专栏都是高质量的、原创的、系统化的知识,它们新鲜,充满活力,并且深深的打上了创作者的烙印,就像清泉流水。流水不争,度渊而生。

首批上线的全年付费专栏有三个,一年365天,每天10分钟,三位顶级技术专家伴你每日精进。

1、陈皓(左耳朵耗子,骨灰级程序员):《左耳听风》,洞悉技术本质,享受科技的乐趣。
2、洪亮劼博士(数据科学家):《AI 技术内参》,系统剖析人工智能核心技术,找到 AI 领域的最佳学习路径。
3、徐飞博士(深度思考者):《大航海时代》,突破技术思维,用商业视角看世界,讲述100家互联网企业的兴衰史。

订阅专栏:199元/年 免费试读所有专栏的试读文章

未来,我们会在极客时间这个平台上创造出更多全新的 IT 知识产品,让极客时间像 InfoQ、QCon 那样,为更多的互联网用户、编程爱好者、专业的技术人员和极客提供不同类型的知识服务,利用大时代里的碎片时间持续学习,每日精进。


感谢的分界线:

极客时间在研发的过程中得到了外部团队的诸多帮助,比如淘宝的 Weex 团队,在产品上线前一天的凌晨还与我们一起远程调试解决问题。在与微信对接的时候,我甚至惊动了张小龙他老人家帮助协调资源。无码科技的二爷也常常给我们提出产品建议,还有其他公司的同仁,在此一并感谢,排名不分先后:

阿里 Weex 项目组
无码科技
微信分享和公众号相关的研发同学
阿里云和云盾的技术支持同学
OpenResty 的研发同学
友盟的研发同学

人生最有价值的时刻,不是最后的功成名就,而是对未来充满期待与不安之时。经年以后,相信极客时间会不辜负这些技术人的支持和厚爱。

第一代 Mac 电脑是在怎样的情况下开发出来的?

因为我的公众号叫做 MacTalk,所以吸引了大量使用 Mac 的开发者和其他互联网人群。以前我写过很多 Mac 和 macOS 的文章,基本上都是从用户角度出发,但少有涉及第一代 Macintosh 开发的故事。今天给大家推荐一本书《硅谷革命:成就苹果公司的非凡往事》彩装版。

效果图0

2010年我曾经读过这本书的旧版《苹果往事:开发麦金托什的非凡岁月》,第一代 Macintosh 开发者安迪·赫茨菲尔德主笔,台湾作者翻译,黑白印刷。可惜这本书很快就绝版了,时隔七年,我所在的极客邦团队主导并重启了这本书,这对我个人意义非凡。打开重新设计的书封,那些或者欢快,或者悲伤的文字,把我重新拉回了上个世纪八十年代的辉煌岁月……

现在我们知道,苹果公司所有电脑产品的命名都和 Mac 相关,比如 Macbook,MacBook Pro,MacBook air,iMac,Mac Pro 等等,但是第一代苹果电脑却和 Mac 什么关系都没有。开天辟地的是Apple I,居功至伟的是 Apple II,这两个伟大的产品基本上是沃兹单枪匹马做出来的,也是苹果公司上市的基石。这本书描述的就是 Apple II 之后的故事,作者是安迪·赫茨菲尔德(Andy Hertzfeld ),1979 年加入苹果,1981 年加入了 Macintosh 团队,是 Macintosh 系统软件的核心设计师之一。

我们把时光的指针拨回到 1979 年,那时苹果公司有四款产品在研发,AppleII,AppleIII,Lisa 和这本书的主角 —— Macintosh。其时 AppleII 一直充满活力,在退出历史舞台之前都是苹果公司的支柱产品,Apple III 和 乔布斯主导的 Lisa 就比较惨了,命运多舛,公司策略摇摆不定,一会万般宠爱,一会无人问津,这种境遇很难做出好的产品,结果 AppleIII 只生产了 9 万台,Lisa 更可怜,1983 年推出,1986 年彻底终止,余货被埋在犹他州的垃圾堆里。这时候 Mac 的原型正在孕育,这是个微不足道的项目,项目代号叫做「安妮」,项目的负责人是杰夫·拉斯金。

杰夫·拉斯金是苹果的第 31 位员工,同样是一位技术牛人。苹果公司的开创者们似乎都脱不开人文与技术的情怀,杰夫的专业是计算机科学,但是在大学里教过音乐和视觉艺术,在厌倦教书之后,就租了一只热气球,飞到校长家上空大声喊道,我辞职啦。

1979 年,杰夫说服了当时苹果公司的管理者迈克·马库拉,成立了一个小规模的项目组用来研发廉价的、同时具备图形界面和命令行的电脑,这个项目就是 Macintosh。1979 到 1980 年,杰夫都在撰写「Book of Macintosh」,描述这款产品的诱人愿景。他在书中写到,计算机的用户应该是普通人,不仅仅是黑客,除了神秘的命令行,还得有图形界面。如果个人电脑能够真正面向个人,那么任何一个家庭都该拥有一台。

Macintosh 项目初期并不受公司重视,动不动就要被解散,终于有一天,这个项目被乔布斯盯上了。在 Lisa 项目折戟沉沙之后,乔布斯迫切需要一款产品来证明自己,这款产品就是 Macintosh。从此,一段荡气回肠的技术革命拉开了序幕,一个新的时代开始了!

本书的作者安迪·赫茨菲尔德不仅是一位卓越的系统工程师,而且笔触细腻幽默,他用细节和写实的笔法还原了那段激情燃烧的岁月。

Andy

安迪是怎么加入 Macintosh 项目呢?有一天乔布斯走进安迪的办公室,劈头就问:「你行吗?Macintosh 团队只要真正的能人,我不确定你是不是能行」。安迪直视乔布斯的眼睛「我能行」。几个小时后乔布斯跑回他的办公室告诉安迪,你已经正式成为 Macintosh 团队的一员了。安迪很开心说,我交接下工作就可以去新团队报道了。结果乔布斯拔掉安迪电脑的电源线,抱起主机和显示器对安迪说,不要再浪费时间了,我这就带你去新工位。

关于乔布斯的现实扭曲立场,书中也有非常有趣细致的描写。比如:

他坚持要我们在 1982 年初上市,而且不接受任何异议。如果有什么词可以形容这种情况,那一定是来自《星球迷航》的「现实扭曲力场」。乔布斯就具备了这种能力。只要他在场,现实是可以被改变的。他几乎可以说服任何人,让他们接受他的想法。等他离开,这种力场就会逐渐消失。

如果他跟你说一件事情很糟或很棒,到了第二天,他可能就不这么认为了。你对他所说的话要有选择性地听。另外,他处理新想法的方式真的很奇怪。如果你告诉他一个新想法,他一般会告诉你说,这个想法很愚蠢。不过,如果他真的很喜欢这个想法,那么一周之后,他会跑过来跟你提出这个想法,就好像是他想出来的一样。

乔布斯超凡的表达能力、坚不可摧的意志和为达成目标标扭曲一切的渴望形成了他的现实扭曲力场。如果一种方式无法说服你,他就会巧妙地使用另一种方式。他虽然让项目组成员间歇性崩溃,但同样在激励着他们奋力前行,实现了很多似乎不可能完成的天才技术创意。

最初团队成员还尝试着破解这种力场,但「最终还是放弃了,我们只能把它当成是自然界的一种神奇力量」。

Macintosh

开发 Macintosh 的过程复杂而曲折,其中有欢笑,有泪水,有教训,有背叛,但是 Macintosh 精神一直贯穿其中。安迪在书的最后写道:

Macintosh 的驱动力主要来自艺术价值,它无视外部竞争,只要开发出非凡卓越的产品。我们希望 Macintosh 成为技术及艺术的双重杰作,在每个可以想象的环节都抵达艺术的巅峰。在我们这里,没有微不足道的细节,「还不错」并不表示就够了,我们必须做到最好。

读完全书你会发现,Macintosh 团队的迫切感、野心、追求卓越的热忱、艺术家的气质和幽默感同时注入了这款产品中,这种精神穿透了三十多年的时光迷雾,依然激励着我们继续前行。

这本书值得所有热爱科技产品的互联网人阅读。

点击 硅谷革命,苹果往事,畅读 Macintosh 的开发故事。

程序员职业生涯巡礼

最近杂七杂八写了一些东西,其实主线一直围绕了程序员职业生涯这个主题,也是我春节读书思考的一些成果。文章比较长,断断续续发在了 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 等技术打交道,工作机会不多,但这个专业的人员更少。找工作倒是不难,但是看不到上升的空间,每次换工作都得换城市,为了一个更好的职位,甚至需要从美国辗转到日本,每次被折腾的死去活来,换方向代价有太大,薪水还会降很多,进退维谷。

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

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

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

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

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

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

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

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