有意瞄准,无意击发

MacTalk-L1000217 7:14:2018

今天的题目估计很多经历过大学军训、打过步枪的读者都不陌生。你五体投地趴在地上,怀里揣着步枪,哆哩哆嗦压上子弹,打开保险,近视眼镜和眼镜后面的眼珠都闪烁着捉摸不定的光。这时候你的教练悄悄的凑过来在你耳边低语:有意瞄准,无意击发。嗯,就这句话。

什么意思呢?射击的时候,要把你的武器、身体、注意力都指向目标,全神贯注的瞄准,至于什么时候扣动扳机,不知道,这个是无意识行为,也许是某个小小的因素,让你无意间扣动了扳机,可能是风吹草动,可能是心流涌动,子弹就射出去了,能否击中目标,也是未知之数。

最近做产品,就有这种感触。

以前听吴军老师的专栏,他说到了自己出书的事。吴军老师是个科学家、计算机工作者、投资者,也是个高产高质的作者,他写的书又多又好,还不限于某个专业领域,叫好叫座,在 IT 圈子里,可以说无出其右。不过,好的东西放一起,也有个比较。在吴军眼中,他最钟意也是花费了最多心血的两本书,一本是浪潮之巅,一本是文明之光,但受欢迎程度和销量最好的,却是数学之美和智能时代。这四本书,数学之美最随意,原本就是谷歌黑板报的连载,最后重新整理成书,反而最受欢迎。吴军老师说,每次都试图用心做到最好,但最终「无意击发」,你并不知道哪本书最受欢迎,市场和时间才是最好的验证者。

拍电影也是一样,很少人像韩寒这样,第一次拍电影就几个亿票房,拍了三部,居然一部比一比票房好,也算是奇迹。大导演姜文当年拍太阳照常升起,没人看懂,叫好不叫座。转手拍了让子弹飞,说是翻身了吧,站着把钱挣了,但是信心满满的邪不压正(2018),票房还不如让子弹飞(2010 票房冠军),八年过去了,让子弹飞了八年,但你依然不知道它是否命中了目标。

姜文这样的导演,拍电影像酿酒,每一部都想做到最好,都是自己的孩子,但在每一部电影上映之前,你永远不知道这个电影的票房和口碑会是个什么走势。但是,你必须要瞄准、击发,然后等待下一次瞄准的机会。

无论是发布极客时间的专栏和课程,还是研发极客时间的功能特征,都是这种心情,我们总想把功能、内容做到最好再给大家,但有时候必须要瞄准、击发,是骡子是马,得拉出来遛遛。

看专栏的订阅量也很有意思,有些我们非常看好的课程,并没有很大体量。有些专栏呢,当时没觉得能火,一点点长销和口碑效应起来,反而有三四万的订阅量。

以前专栏上新,大家都会做个预测,哪个能火,订阅多少,后来越来越没把握,受众不同,领域不同,时机不同,运营不同,完全难以捉摸。怎么办?有意瞄准,无意击发,努力把手头的事情做到平衡,做到最好,然后等待命运的裁决,让用户去为产品打分吧。

作家阿尔贝·加缪说的:对未来最大的慷慨,是把一切献给现在。我要说,把好的内容传递给终端用户,就是极客时间的职责,至于哪个会火,哪个最有价值,这个需要用户说了才算。

优秀程序员的九种素质

MacTalk-“L1010186”的副本 3:5:2019

打开这个博客,发现今年还没有一篇文章,那就写一篇吧。

上周看到一篇文章,大意是阿里云源代码泄露,涉及多少家企业云云,看起来耸人听闻,点进去发现是有企业在使用阿里云做代码托管的时候,private internal 和 public 傻傻分不清,创建仓库用了 internal,结果只要是登录用户都可以看到并 clone 这些代码。事实上,这三个设置不仅是惯例,internel 的注释也写的清清楚楚,但是挡不住程序员不看。你永远不知道一个人的水准会低到什么地步,也许这些人从来没用过 GitHub 和 GitLab 呢?

阿里云其实可以采用安全最小化原则,也就是常说的多一事不如少一事。最小化可用原则,对于操作系统来说,就是装最小化的包,没用的服务不启动,操作命令最小化,权限最小化等等。对于阿里云上的托管用户来说,internal 应该是个可有可无的功能,去掉是不是更好呢,也许值得平台方思考。

永远不要高估用户的聪明程度。

本周我们上线了一款基础课专栏《软件工程之美》,最新的文章中阐述了软件过程和软件危机:

软件是怎么被创造出来的?

首先,它们的诞生都是有人想要造一个东西。这其中的很多故事你都耳熟能详:张小龙创造微信、乔布斯创造 iOS、暴雪想做一款不一样的射击游戏……他们首先有着这样的意图,然后,他们立项做这样的产品。

每一款软件项目背后,都有很多人在参与。你无法想象微信这样复杂的 App 靠张小龙自己可以开发出来;你也不会相信 iOS 是乔布斯一个人设计出来的;像守望先锋这种游戏的背后,有成百上千的游戏策划、美术设计、程序开发人员。

从立项到第一个版本的发布,每个成功的软件都需要有计划、有步骤地进行,什么时候发布第一个版本、第一个版本有什么样的功能、什么时候发布第二个版本、第二个版本有哪些地方要改进,这些都是研发过程中需要考虑的问题。

比如,守望先锋是在 2013 年立项,他们计划做一个基于职业的 MMO 游戏,他们先花了几个月的时间做了第一个 Demo 演示,只有四个英雄和一个张地图。

然后,他们要在 2014 年的“暴雪嘉年华”发布这个游戏的试玩版,包含 12 个英雄和 4 张地图。

最终这个游戏在 2016 年 5 月正式发布了。这样从立项一步步到最终发布,历时三年,中间经过了诸多环节。

类似的例子还有微信,2010 年 11 月 20 日立项,2011 年 1 月 21 日第一版上线,当时的功能还非常简陋,只能发送文本消息和照片。之后才是一个个版本的迭代,直到你现在看到的微信。

像这种有人参与、有计划、有步骤地造一件产品,我们通常称为「工程」。

那什么是软件危机呢?有兴趣可以订阅专栏阅读。软件工程是你通向程序之巅的必经之路。

http://gk.link/a/102ij

周末读村上的书,他说自己能够持续写作和跑步,就是因为具备两个特质,一个是集中力,一个是耐力。村上写长篇的时候每天早晨集中写作四小时,他一个人坐在书桌前,没有任何打扰,将意识集中倾斜在书稿中,其他什么都不考虑。另外,没有耐力也不行。你集中写了一星期然后伸伸懒腰说,我累了,然后就休息一个月,这样是写不成长篇的。你必须每天集中写作,坚持半年,一年,甚至更长才行。

一个优秀的程序员需要什么特质呢?由此我想到之前读过的一篇文章,是 Redis 之父萨尔瓦托·桑菲利普(Salvatore Sanfilippo)写的 9 种高能程序员的特质,重新意译一下,推荐给读者:

1、高效完成子任务

从处理编程子任务上,可以看出一个程序员的短板和长处,比如实现一个函数或者一个算法。事实上,擅于使用基本的编程技能来高效完成任务的程序员,并没有人们想象的那么多。有时候,团队里有些不称职的程序员,他们甚至不知道该怎么写一个简单的排序算法。

2、合理使用自己的经验

桑菲利普认为,经验就是一系列解决方案,它们已经被证实可以用于处理一些重复性的任务。经验老道的程序员知道该如何处理各种子任务,这样不但省掉了很多设计工作,而且避免了很多设计错误,而设计错误是简洁性最大的敌人。

3、准确预测工期

花在编码上的时间不仅要看数量,也要看质量。造成注意力不集中的因素既有内部的,也有外部的。集中注意力和避免被打扰,对于提高编程效率来说是至关重要的。

4、设计权衡:用 5% 换取 90%

项目的「非根本性」目标在很大程度上导致了设计的复杂性,或者导致无法达成其他更重要的目标,因为根本性功能和非根本性功能在设计上存在竞争关系。如果意识不到这点,复杂性就会随之而来。对于设计者来说,如果项目要最大化产出,就要把精力集中在重要的事情上,并在合理的时间内完成。

5、简洁性

简洁性是成败之间最为明显的分界点,理解复杂性的产生过程有助于理解什么是简洁性。不愿意做出设计权衡和设计错误的累积是导致复杂性的两个主要因素。我在第一点里讲的 Internal 其实是提高了复杂度导致用户选择错误。

6、拒绝完美主义(为了偏袒设计而放弃生产力)

完美主义可以分为两种:一种是追求程序极致性能的工程文化,另一种是个人特质。不管是哪一种完美主义,它们都会对程序员实现快速交付造成阻碍。完美主义和对外部评判的恐惧会导致设计上的偏袒,程序员根据主观的心理因素和无关紧要的衡量参数做出设计决策,却忽略了健壮性、简洁性和及时交付。

我曾经服务过的一家公司就犯了这种错误。当然,错误不止于此。

7、理解知识理论的价值

在处理复杂任务时,具备一些理论方面的知识会对设计产生重要影响,比如数据结构方面的知识、了解计算能力的局限性和一些重要的算法。虽然程序员没有必要成为无所不知的超级专家,但是至少要知道一些问题的潜在解决方案,避免设计出复杂、缓慢、低内存效能的解决方案。

8、理解机器原理

程序的很多问题都是源于对计算机工作原理的误解,即使是使用高级语言开发的程序也不外乎如此。这种情况可能导致一个项目需要重新设计和实现,因为项目所使用的工具和算法出现了根本性的错误。

7 和 8 说的道理差不多,这也是极客时间会连续推出数学、算法、数据结构、网络协议、软件工程等课程的原因,后面还有架构设计、操作系统、编译原理等等。

9、调试技能

查找和解决 bug 经常会占用程序员大量的时间。查找引起 bug 的问题根源,在合理的步骤内修复 bug,以简单的方式编写包含较少 bug 的代码,对于程序员来说,做到这几点就可以显著提升效率。

能否运用调试技能快速解决问题是衡量一个程序员水平的重要标准。

你具备这些特质嘛?我觉得村上说的没错,程序员同时还需要集中力和耐力。

如何「收集」知识

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 的研发同学
友盟的研发同学

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