池建强:我的人生元编程(图灵访谈)

themeaningoflife

2013年11月份我在图灵办公室接受了一次访谈,访谈的内容是我个人成长过程中经历的一些人和事,包括我的一些决定和思考。那次访谈聊了有四个多小时,访谈录音整理出来后超过了一万字。初稿发给我之后,我又做了一些微调,对我没说清楚的和疏忽的地方进行了查漏补缺。文章基本上是口语化的,保持了采访稿的结构和原貌。

整篇文章纳入了图灵社区电子杂志《码农》第九期的人物专题,也发表在了图灵社区上

因为访谈主题和 MacTalk 相关,所以在文章正式发表一个月后,也收入 macshuo.com 网站,是为记。

Yes, I can


“整个车间只有一台电脑,每天吃完饭,我就回到车间,把公司的硬盘拆下来,把我自己的装上。每天我都在那里,开一盏灯,拿一本书。”

你是怎么开始学计算机的?

以前看过一本叫《异类》的书,书里说大部分计算机大师都出生在20世纪50年代,比如史蒂夫•乔布斯,史蒂夫•沃兹,比尔•盖茨,保罗•艾伦,比尔•乔伊等等,这帮牛人开始设计个人电脑、操作系统和编程语言的时候是70年代,那时我刚刚出生。

到了80年代,苹果公司已经上市了,但大部分中国人对电脑还没什么概念。做为一个生于农村长于乡镇的土人,我小时候根本没见过电脑,所以开始编程的时间很晚,这一点和很多少年天才、编程神童的经历有很大差距,我真正接触编程是从大学开始的。我的专业是机械电子工程,这个专业里有几门计算机语言的课,包括C、Fortran等,数据库用过 FoxBase,电脑是386/486,黑白的脸,没有奔腾的心,我只记得给老师写过一些类似图书馆书籍管理的系统,但细节完全不记得了。

高中时我学习成绩很不错,但报志愿没报好,一本和二本都没有录取,导致心是高等学府的心,身是二流院校的人,所以就去了河北科技大学,哈哈。在大学里我很愤青,觉得这个学校很一般,没有太大学习热情,但我对计算机技术很感兴趣,可能和我小时候喜欢装配各种收音机有点关系。我经常和志同道合的小伙伴们一起交流和上机,当时机房使用时间也不是很充裕,还要交钱,所以我们会在上机之前做很多功课,把程序编好写在纸上,这样上机后就能直接录入程序并进行调试和跟踪了。还有一个乐趣就是我们通过各种程序和工具优化软盘空间和内存大小,以期那时的计算机能够运行我们喜欢的程序,我记得最常玩的一个黑白游戏叫做战斧,主角拿着一把斧子打怪,乐此不疲。

总体来说,我在大学学到的计算机知识并不系统,不像现在的很多大学生,在大学里学到的东西已经很扎实了。

那你真正开始学习其实是在工作后?

我是在工作以后才真正开始接触编程工作的。我毕业之后很想去北京,后来去了河北汇能亚奥集团,这家公司在北京的郊区顺义的郊区林河工业区有一个厂房,工厂和研发中心都在那边,于是我就来北京了,也算曲线救国。公司的主要产品是直流电源,公司里有一个实验室,实验室的办公条件很好,每个人配备一台电脑,还带沙发转椅,但是只有具备名校背景或者家庭背景的人才能去实验室,于是我们这几个不太招人待见的家伙就直接被派到车间了。我们去了之后第一件事就是擦散热器,到现在我已经不知道为什么要擦散热器了,只记得那上面好多油……散热器擦了三个月,然后开始“插件”,每个人一个工位,把分配好的二极管、三极管、电容等插到电路板上。后来我们又去搞测试,照着图纸修理返场的电路板和直流电源。

整个车间只有一台电脑,平常你是用不上的,只有晚上机器空闲。于是我去中关村买了一块硬盘,每天吃完饭,别人回宿舍看电视、聊天的时候,我就回到车间,把公司的硬盘拆下来,把我自己的装上。我还记得当时装的是一个盗版的Windows 98系统。每天我都在那里,开一盏灯,拿一本书,学一些互联网方面的编程知识。当时已经出了HTML4,可以通过JavaScript在网页上做一些动态的效果。一边学习新东西,一边把自己以前学的语言温习了一遍。大概学了半年多的时间,在99年年底,我离开了那家工厂。

你是怎么去面试的?

我把我自己写的程序都存在一张软盘里,每次去面试的时候就拿出来给人家演示。当时互联网第一波浪潮已经过来了,我做了很多动态的网页设计。很多人觉得我做的东西很新鲜,可能他们都在忙着做静态网站,没时间学这些东西。我还记得当时做了一个泰坦尼克主题的网站,用了一些电影里面的元素,大海、沉船、岩石等等,演示的时候会播放主题歌,画面的元素有各种互动效果。他们看了之后就不问我问题了,说:那你就来上班吧。于是我就去了洪恩。

快乐并痛的时代


“我和池宇峰说,我先出去看看,等你们开始做游戏了,你再叫我,我马上就回来。”

你刚去洪恩时做什么?

在洪恩的三年半时间,是我职业生涯中最快乐的一段时光。我刚去的时候,洪恩正在做洪恩在线和论坛。洪恩的创始人是池宇峰,因为我俩都姓池,这个姓又很少见,所以大家都以为我是他的亲戚,对我都挺好,哈哈。

当时我的头儿对我说,你有两条路可以选,一个是去做现在我们所说的UI设计师,走前端路线,也可以做后端、写服务器端的程序。我想了想,我还是写后台吧,前端不都是小姑娘做的么?

当时我刚从车间里出来,忽然来到这么一个地方,年轻、开放、热情,最重要的是每个人有一台电脑,这简直让我幸福到眩晕。我的同事都是年轻人,有很多刚毕业的清华北大的学生。池宇峰本人也是清华毕业的,后来创办了洪恩软件。池宇峰的管理方式很有特点,他总不在办公室呆着,四处转悠,看谁干活就想跟谁聊两句。结果无论白天黑夜,他每次过来的时候我都在闷头编程,面对花花绿绿的高亮代码,噼噼啪啪的敲击键盘。这时他就会和我聊一聊项目进度,问问我的想法,有时他也会讲讲公司的发展思路。过了一两个月之后,我就调工资了,结果2000年一年我就调了三次工资。老板都喜欢疯狂工作的员工啊!

洪恩在五道口的东升乡租了一栋三层楼,一共有一二百人的规模。当时很多同事晚上都住在公司,上午11点,大家穿着拖鞋开始上班,浏览下新闻就去吃午饭了,吃完饭偶尔我们还去清华踢场球。下午两点多,我们开始正式的工作,一直编程到天色变暗,吃完晚饭后,大家继续编程,通常是凌晨12点的时候开始更新网站,发布程序。之后想学习的继续学习,想编程的继续编程,有时候我们还会打场三角洲游戏,一般在凌晨四五点钟才回宿舍休息。池宇峰和我们一样都是七零后,所以整个公司的氛围就像学校一样。公司牛人很多,可以从他们身上学到很多东西,那个阶段我的成长也是最快的。

这样轻松的环境维持了多长时间?

这种的情况大概持续了一年左右。当时互联网的氛围有点像现在,很多公司都不挣钱,有人给投钱就花呗。洪恩在线是不挣钱的,主要是靠卖教育软件挣钱。我们那里真正挣钱的人工作都很辛苦,我们这些搞互联网的反而显得很悠闲。后来互联网泡沫终于来了,大家觉得钱不能再这么个烧法了,再不改变整个公司的现金流都可能出问题。于是洪恩在线只留了很少的人来运营,把以前从别的部门抽调出来的人还回去了。当时洪恩聚集了大量的技术人才,但是不知道让这些人干什么,搁到现在这些技术人员可能都会被裁掉吧。但是当时池宇峰觉得技术人员都是宝,琢磨出一个事儿来也得把他们留住。

为了解决这个问题,公司决定新启动一个项目,叫做数字校园,准备使用最新的技术Java实现,新的旅程又开始了。

数字校园当时的定位是基于BS架构的校园信息化平台,大部分功能使用浏览器操作,少数类似排课引擎要安装客户端。主要技术架构J2EE,支持Windows、Linux、Unix,数据库采用PostgreSQL,HTTP Server是IIS+Tomcat或Apache+Tomcat,主要语言是java和jsp,其他用到的语言包括汇编、C、VC、Shell等,当然前端的HTML和JS是少不了的。为了在浏览器上模拟客户端程序的效果,我们使用xml数据岛的技术实现浏览器异步加载,后来类似的技术有个更时髦的名称叫AJAX。为了实现智能排课和分班,我们走访了很多学校,编写排课和分班算法,分别实现了在线版和离线版……

虽然产品优秀,理念超前,但曲高和寡,而且洪恩本身缺乏企业级产品的运营和销售经验,学校的信息化需求也没那么迫切,现在看来,好像很多事都没踩到点上。系统虽然也销售出去不少,但是只能达到收支平衡的程度。当初做这个系统的时候,公司高层和我们自己对这个产品期待都很高,大家坐在一起数全中国的学校,想象着成为土豪的样子。一年后再坐在一起的时候,我们都无语了。后来这个产品被搁置起来,留下几个人做维护,其他人又被派走了。

这次项目失败之后你想离开吗?

当时很多人就想,怎么又失败了?于是很多人选择离开。我当时已经是一个技术管理者了,自己写代码,还要带团队,团队里还有清华北大的硕士、博士。虽然我是个Leader,但是我的技术并不是最突出的,很多人都比我强。我当时的老板觉得我在协调和管理方面有一些天赋,不像很多技术牛人那样比较容易情绪化。池宇峰有一天来找我,说:“你呀,你就不是做技术的料。做技术的人都是大学毕业的时候就已经非常強了,你应该走技术管理的路线。”我当时听了非常伤感,不过我表示还是挺想做技术的。池宇峰这个人很大气,他说既然你喜欢做技术,就把你放到了技术部吧。

在技术部做了一段时间的内部项目后,有一天池宇峰把我们叫在一起,说:“我们做英语培训吧。当年我做开天辟地学电脑的时候就有这种感觉,这次培训一定能成!”于是我们就想,怎么做培训呢?于是我们又做了一套软件,这次是用.Net做的。这套系统不仅可以记录学员的信息、学习进度、学习课程,还可以通过视频进行对话和练习,讲师会对学员的文字作业和视频作业进行点评,这是我们当时想到的一个卖点。我们开了第一期学习班,效果很好。但是谁也没想到,这个时候,非典忽然来了。我们当时正忙着招生呢,然后,就没有然后了。我们也不知道非典什么时候能结束,所以工作都停下了。老板也崩溃了,找我说:“你看,你确实不适合做技术。”于是我也崩溃了。

看来池宇峰已经认准你不适合做技术了,然后你被派到哪里了?

池宇峰又派我去管儿童事业部。那里主要是给儿童做电子产品,做书,设计版面什么的。里面需要技术的东西不多,有一大半是女生。儿童事业部的具体业务还需要懂儿童心理学,我不太懂,就找了两本书看看。

那里的同事有很多手工工作,比如录入数据、统计分析、文件分类等等,我说这些工作你们都不用做了,专心做产品设计,我来做!于是我写了几个程序让这些工作都自动化了。之后我还把整个事业部的工作流程梳理了一下,加强了项目组内的交流和进度跟踪。有一次一位女生负责的产品出了点问题,我要求她们组进行修改,结果这位女生竟然哭了。当时我想,这是什么情况?

其实我在那里工作是很开心的,但是做不了技术,技术这东西总不做就会忘掉。所以我决定离开了。

池宇峰有没有挽留你?

当时池宇峰和我说,你别走,咱们就快开始做游戏了。我说什么时候啊?他说,不一定。但是出于个人发展的考虑,我还是离开了。

后来池宇峰创办了完美时空,并于2007年在纳斯达克上市。完美时空的网游技术依靠的就是当时祖龙工作室和洪恩在线的技术班底,那帮家伙们现在都可以退休了。他们当年虽然没有为公司带来利润,但是池宇峰一直把他们作为技术储备放在公司,想做点什么就做点什么。等到完美时空出来,他们就开始大显身手了。池宇峰愿意用自己的资源去试错,并在试错中成长,这点和其他很多人不一样,多数人喜欢拿别人的钱试错,哈哈。他之所以能成事,和这点有很大关系。

那你后悔离开洪恩吗?

我当时不后悔,现在挺后悔,开个玩笑(笑)。现在想想,那时把儿童事业部做起来,未来也是不错的,只是和现在的路子不一样,或者也可能加入完美时空去做游戏。当时池宇峰跟我谈了很长时间,但是技术上确实已经没什么可做的了。我和他说,我先出去看看,等你们开始做游戏了,你再叫我,我马上就回来。

走走学学


“我去的时候技术部就只有三个人了,还都要离职。”

离开洪恩后你去哪了?

当时是2003年,百度那时候还很土,大家都用Google,用友软件如日中天。于是我给用友软件总部投了一份简历,接着就去面试了。我带着一台笔记本电脑演示了我做过的东西,面试的人看了看之后,简单问了问,我就被录用了。插一句,我是先投的简历,找到工作后才辞的职,穷人家的孩子都这样。然后我就进入了现在这家公司,当时叫用友软件工程公司,主要是面向国际市场和国内大企业提供技术产品和服务。我进入了技术部,同时期来的有 7个人,史称七剑客,主要研发企业软件开发平台。当时我们用的技术也不是很成熟,而且产品是给程序员用的。事实证明给程序员做东西结果是非常残酷的,一年后,我们这7个人走了5个,我是第6个走的。

你文章中说的名字和火箭有关的外企是不是该出现了?

是的,离开之后我就去了那家名字和火箭有关的外企,这个火箭公司开发了一套分布式的软件平台,名字不能提,因为老外的版权意识太强。我曾经的一位同事都移民到加拿大去了,只是在自己的开源项目引用了一点平台文档,结果被一纸法院传票追杀到异国他乡,而且直接导致这个同事的上司被辞退。

这家公司给我留下的财富之一就是见识了什么是真正的分布式开发平台。他们的平台技术架构很强悍,是由很多年纪一大把的老程序员(据说是制定CORBA标准的牛人)开发的,代码简洁优雅,我一边像读诗一样阅读他们的代码,一边感慨此生写不出如此优美的程序!他们底层用C,中间层用Python,上层用Java,还构造了自己的通讯协议和运行在各个节点的服务,形成了一套完整的架构体系。在使用这套平台的过程中,我学到了很多从书里很难学到的东西,当然我也为他们修复了很多bug。

在和这些资深老外程序员交流的过程中,我还学会了如何提问。如果你想提交一个bug,那你应该说明这些内容:什么情况下会出现这个bug,为了解决这个bug,你做了什么尝试,你觉得引发这个bug的原因可能是什么。然后还要把所有的log,crash,dump之类的文件都给他。详情可以参看“如何提问”这篇文章。很多人提问的习惯不太好,比如有人说:内存溢出了,怎么办?上下文都没有,我怎么知道怎么办!

在这家公司我还知道了,国外公司的老程序员远远多于国内,很多程序员都四五十岁了,有的级别和VP一样,但依然在编程。他们只是不需要去经营公司而已,他们做架构、编程、咨询、写书,每样都做得非常棒。

中间你在洪恩时的小伙伴有没有召唤你?

在这期间有一天池宇峰给我打电话,说,我们开始做游戏了,你回来吧。我当时那个团队里的很多人都回去了,但是我对网游的前景看不清,另外对做游戏这件事已经没有太大的兴趣了,所以委婉的拒绝了池宇峰的邀请。之后他们有一段时间确实很艰苦,打拼了几年,我当时还开车找这些小伙伴吃饭,他们骑的是破自行车。后来人家终于熬出来了,就开着奥迪A6来找我了,还是2.8L的(笑)。

冷静的思考一下,一家公司成功了,真正重要的是你在这家公司起到了多大的作用,如果你没去,人家成功了,那你还去干嘛呢?

之后你怎么又回到了用友的?

在我离开用友软件工程两年后,有一天公司的业务负责人找我,说第一任技术主管走了,第二任也走了,想让我回去。我想,洪恩没回去,要不这个就回去吧。外企也见识过了,确实没有太大意思,于是就回去了。现在这家公司已经改名叫瑞友科技了。

刚回去的时候还是挺艰难的。我去的平台部就只有三个人了,还都要离职。我开始重建团队,不仅要自己写程序,还要招人,还要帮助项目组解决问题。当时的所有项目都需要用我们研发的软件开发平台,压力特别大。以前平台部的人过于技术化,和其他项目组的关系搞得特别僵。技术人员的想法就是:我做出这个开发平台,你们爱用不用,不用拉倒。结果项目组就会投诉,恶性循环。我刚去的时候,很多问题没人解决,比如一个给客户做的实时业务系统,有个问题就是每天凌晨都要手动重启一下,否则系统第二天就可能宕机,这个问题困扰了项目好几个月,我去看了一下,其实问题很简单,原来是一个线程池的使用出现了问题,稍稍修改一下问题就解决了。

慢慢地,我把这些问题和关系都捋顺了,后来就开始做自己一直想做的平台产品,再后来公司成立了 IT 应用研究院,我开始负责公司的整体技术发展,目前我们做的产品在研究院的网站上都有介绍。

我从2006年回到瑞友科技,一直工作到现在,也算是公司的元老了,我主导研发的产品GAP平台服务了成百上千的企业客户,我的很多代码还跑在客户的服务器上,这是我比较开心的事情。当然,期间还有很多好玩的事情,以后我再和大家说吧。

成为Mac君


“大家提的问题多是Mac相关的,但也有问职业发展阶段的,问如何选择的,还有,问姻缘的。”

怎么开始使用Mac的?

Mac我用的不算晚也不算早,大概是2008年开始的。之前还是Windows和 Linux用的比较多。我在洪恩和那家外企的时候大部分时间是在Unix和Linux下工作,所以对Linux环境、Shell、Vim这些都比较熟。我在08年的时候买了一台MacBook Pro,开始了我的Mac生涯。我个人使用电脑对软件环境的要求比较高,就像普通人开车就是开车,玩车的都喜欢把跑车改造成战斗机。Mac就是电脑里的跑车,还特别容易改成战斗机,尤其适合程序员使用,我自己越用越顺手,就经常和我们的开发人员说,这个东西特别好用,很多程序员需要的环境和工具,Mac都是默认配置好的,包括编程语言环境、构建工具,版本控制工具,命令行工具、Shell 脚本等等,应有尽有。

你不光自己使用Mac,也影响了其他人?

是的,我影响了一些人,比如原来我们研究院只有我一个人用,现在有一半人在用Mac了。我在博客上写了一些关于Mac的文章,有一篇文章还挺有影响力的,叫《开始使用Mac》,在网上很容易搜索到,阅读量比较大。我们那原来有一个同事很喜欢Mac和iOS 移动开发,他说:我想学Objective-C,做移动 App。我们当时在做企业的移动互联平台,就让他去学iOS开发了,给他安排的工作内容也相对灵活。结果学完之后,走袅!我当时还想帮他推荐工作来着,结果他自己找了几家,问我的意见。我一看其中有丁香园,就说,这个丁香园的技术负责人冯大辉不错,你去那吧。现在他是丁香园iOS开发组的组长,所以冯大辉现在看到我还会感谢我一下,哈哈。

再后来我就开了微信公众平台。微信公众平台刚推出的时候我还不知道这是个什么东西,后来看了冯大辉开的“小道消息”,大概知道怎么玩了,于是申请了一个公众帐号,起名“Mac技巧”,ID 是sagacity-mac。Sagacity在英文里是睿智的意思,取自我女儿的一个字。后来因为审核认证的原因,Mac技巧改成了现在的“MacTalk By 池建强”。

你在写微信这一年中文章风格有什么变化?

我在刚开始写文章的时候花的时间并不多,当时主要推送一些Mac使用技巧。Windows的主要理念就是GUI,所以命令行几十年如一日的没有改变,也没什么使用技巧,无非是用鼠标点来点去,但是Mac缘自Unix,除了GUI,还提供大量的命令行工具和快捷键,把命令行、工具、快捷键和一些实用技巧用好了,效率就会有很大提高。所以前期主要是推送这些内容。

但是仅仅推送技术内容太干了,于是我就在文章前面加一些自己的思考,或讲个小故事,没想到这些内容越写越多,几十年来积累的东西似乎找到了一个出口,以前看过的书、学过的技术、经历过的人和事,全部涌上心头,然后再到手指、到键盘、到微信,一发不可收拾,到现在已经写了200多篇相对完整的文章了。至于纯粹的 Mac 技巧,写到四月份的时候,我感觉能写的差不多都写完了,后来这些Mac技巧整理成了相对完整的130项,收录到了《MacTalk•人生元编程》中。

我从去年12月15号开始写,写到现在文章风格有了很大的变化,毕竟每个人都在成长,前期写的东西比较零碎而无章法,后面的自己对文字有了要求,相对好了一些。

有的读者说你写文章很有毅力,能“池之以恒”,坚持写文章对你有什么影响?

写作占据了我很多时间,本来就少的娱乐时间现在更少了,你得把看电视、刷微博的时间都用来写东西。但是我会保证陪伴家人和正常的社交和运动。带来的好处就是我的写作能力提升了。

我现在会有意识读一些关于写作的书,而且看文学类作品的角度也不一样了,我会更关注文章的结构、文法、用词和节奏。写作这个东西是需要天赋的,也是可以练习的。如果你有天赋,加上后天的努力,就有可能变成一个大师级的人物。但是如果你天赋一般怎么办,也不用太伤心,通过练习也可以成为一个不错的工匠。文章有韵律,长短句该怎么结合,主句附句怎么搭配,文章结构怎么组织,怎么把文章写得有趣,都是很有说法的。(你未来会写技术书吗?)有计划,但不是现在。写书还是挺耽误时间的,关键是写纯技术书也不能解决生计问题啊。(技术书小众,解决不了生计。)所以我现在不是在学习写作嘛,准备将来出本畅销书,哈哈。

你能这样坚持下来,是不是有什么信念?

其实整个技术圈里个人坚持写微信没几个了,这需要付出很大的代价,不是所有人都能坚持下来的。开始的时候我每天都写,但是后来发现这太残酷了,就改为每周更新3-4篇,男人要对自己好一点(笑)。

有一些东西不写出来,就会从你的生活中消失,因为记忆是完全靠不住的,这是原因之一。另外,有时候你在写东西的过程中,还会有一些新的思想和内容冒出来,而这些东西在你动笔之前是不存在的,这种感觉特别好。我在写文章的时候很喜欢把一些有趣和幽默的话题和叙事技巧融合到一起,这样读起来会比较轻松,于轻松处响惊雷,大概是这种效果。很多人说看我的文章特别乐,我就很高兴。和编程一样,写文章是很有意思的事。

现在的正向激励很多,所以写不下去也得写。这就和做技术是一样的,逼着你向前走。我现在虽然要做一些管理和协调工作,但是技术也不能落下,你还得帮程序员解决问题呢,还得评估别人的工作成果呢。就算你以前做过Perl, Java, Python, C#等等很多技术,但是有一天你忽然发现,大家开始用Objective-C了。这些语言对于我和刚开始工作的程序员来说都是一门新技术,虽然我在整体结构上的把握可能更好些,但在编程技巧的掌握上并不会比一个新人快多少,所以你也需要不停的学习。

现在想想,我应该听池宇峰的(笑)。程序员很辛苦,也很快乐,技术更新换代太快,但是总有新东西也是件乐事。对于个人来说其实是一个选择,就看你愿不愿意花时间来做这件事。

你的写作主题是怎么决定的?

刚开始的时候我每天都更新,因为有积累,每天都有话可说。但是当你写到几百篇的时候,就会发现以前的积累不够用了,仿佛被掏空了。你不可能总讲技术,而且就算讲技术也要讲的有趣才行。我现在写东西就要经常从每天接触的事物中获得灵感,想到了新的主题就会把它们记在todo list里,将来要是没的写了,还可以写这些。

我的文章的大概分成两个类别,一类是规划类的,一类是非规划类的。比如我看了某个电影,突然想到了某个主题,把它写下来,这就是非规划类的。规划类的就是我写的一些系列文章,比如“Macintosh演化史”、“我和Mac”,职场系列,技术成长的系列等,还有一个演讲的系列,最后这个还没舍得动(笑),未来还规划了一个CTO练级之路,这个写起来应该很有意思。

恭喜你的书《人生元编程》大卖,你书的读者都是什么人,大多数都是你微信的读者吗?

很多人和我说,你看韩寒的书在多看的电子书平台上卖的还没你好。但真实的情况是人家走的是纸书渠道,没的比。大家总以为电子书那么便宜,一定会卖个十几万几十万本,其实现阶段电子书的受众还是很小的,只是外表看起来很美好,事实远不如大家的想象的那样。不过从收益上看,电子出版的收益和纸书对于个人作者来说其实是差不多的。

这本书的受众主要是技术人员或IT从业人员,用 Mac 的人也是主力读者,毕竟书里有三分之一的Mac内容,另外就是MacTalk的微信读者。我现在的微信读者是我微博粉丝的好几倍,但是并不是每一位读者都会来买这本书,但是他们的购买对书籍打榜很有用。我的铁杆读者在这本书刚上线时都会去买,这样书一出来就会升到排行榜首位 。一旦上升快,就会吸引出版商的重视,他们也会帮助推广。另外,我在写微信的过程中,结识了很多朋友,也参加了一些活动,比如“阿里技术嘉年华”、QCon等,他们也会帮助推广。

你的微信MacTalk的读者都是什么人,你每天收到什么样的反馈?

我的读者中,程序员、产品经理、大学生比较多,还有很多技术圈的好朋友都关注了,当然还有做技术出版的朋友,否则也不会有那本书了。除了 IT 圈的,还有很多其他行业的,可能主要来看我扯淡的吧(笑)。很多读者的忠诚度很高,他们经常和我说,每天晚上睡觉前就等着我的MacTalk,不看完不睡。

大家提的问题很多是Mac相关或技术相关的,也有问职业发展的,问人生选择的,比如现在自己处于什么阶段,有什么困扰,需要建议等等,偶尔还有问姻缘的,这个我还真回答不上来。

MacTalk 的读者里有很多年轻人,他们刚上大学或刚入职场,困扰会多一些,心智也不成熟,提的问题也比较多。我一般会帮助他们分析问题并加以鼓励,有的人还真的从此振作起来了。我去杭州参加阿里技术嘉年华的夜聊节目时,有个读者非要来机场送我,见了面就说:您当时的建议和鼓励对我帮助非常大,现在我已经有了一个更好的起点了……

能帮到这些人,我挺高兴的。

自由软件和开源协议

OPLicenses2

我在Linus 系列的上一篇文章中提到了系统调用,有读者问,System Call(系统调用)和 Library Function(库函数)到底有什么区别呢?我在这简单回答一下。

操作系统的进程空间分为内核空间和用户空间,不同的空间需要不同的执行权限。其中系统调用运行在内核空间,库函数运行在用户空间。系统调用是通向操作系统本身的接口,面向设备驱动程序和硬件,属于底层调用,一般不具备可移植性。库函数是更高层次的接口,面向应用开发,通过执行系统调用满足应用软件的需求,并降低系统开销。

为了更好的理解这个问题,大家可以想象一个场景:你和你的小伙伴被空投到敌占区,抵达目标后,你通过对讲机呼叫小伙伴:
「土豆土豆,我是地瓜,请掩护我!」
「土豆收到,土豆收到,可我特么种你前头了,怎么掩护你啊?」
这种类型的通信,可以看作是库函数调用。

等摸清楚了敌人的军火库坐标,想干掉它得申请硬件资源,这时候就要呼叫总部:
「洞拐洞拐,我是地瓜,请向我开炮」
「洞拐明白,洞拐明白,你小子就等着一起飞上天吧」
这是系统调用。

之所以这么设计,主要是为了: 1、分层架构;2、避免把系统调用直接暴露在敌人面前;3、提高性能;4、增加应用层的可移植性。

大致如此。这个系列中会涉及一些技术话题,但大都浅显易懂,高手不屑一阅。有不明白的初学者或非 IT 朋友想弄明白的,Google 一下大致也能七七八八,实在不明白,提出来,我再用类似的方式给大家说说。


讲了 Linus,有读者说,给介绍介绍自由软件和开源协议吧,今天就讲讲这个。不过为了防止 Linus 系列成坑,我会继续写下去的,直到完成这个系列,请组织监督,请群众放心。

什么是自由软件呢?根据自由软件基金会的定义,自由软件(Free Software)是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。不受限制正是自由软件最重要的本质。注意:其定义与是否收取费用无关,自由软件不一定是免费软件(整理自维基百科)。

自由软件运动的创始人是理查德·斯托曼,他的成就绝不输于李纳斯。这位奇才出生于1953年,那是个计算机大师扎堆出生的年代。20年后他正式成长为一个理想主义者和自由软件斗士,并开始了伟大的、光荣的、作死也不会死的战斗人生,他以个人对抗整个业界,他的对手不是人或公司,而是所有封闭的软件公司,比如苹果、微软、Oracle、IBM等等。他到目前为止的成就有三,个个牛逼二五:

1、开发了Emacs编辑器。Emacs不用介绍了,号称神的编辑器。 2、GNU通用公共许可证(GPL),这是世界上采用最为广泛的自由软件许可证。 3、Copyleft,所有的GNU程序都应遵循“Copyleft”原则,你可以复制、修改、出售自由软件,但是源代码相关的改动都必须公开,所有用户都可以获得改动后的源码。Copyleft保证了自由软件传播的延续性。

这些成就保障了自由软件世界的繁荣昌盛和长治久安,同时催生了一系列优秀的工具软件和函数库,比如文本编辑器、编译器、调试工具、Web 服务器等等,但 GNU 唯独没有开发出操作系统内核,可能是天意使然,就在这个节骨眼上,李纳斯开发的 Linux 内核横空出世了,并最终采用了GPL 协议,以完全自由、免费的方式发布,从此,GNU 算是功德圆满了,自由、开源和共享的精神一直延续到了今天。自由软件服务了千家万户,在这样一个信息共享的时代,我们每个人都或多或少的受益于斯托曼、李纳斯和自由软件的贡献。

随着自由软件的蓬勃发展,GPL 也根据开发者的需求和软件技术的发展衍生出诸多版本,目前世界上有上百种开源协议,常用的就有GPL、LGPL、Apache、MIT、BSD 等,如何搞明白这些协议对开发者来说十分困难,我根据网络资料画了一张关系图,大致解释了这几个流行的开源协议的关系和区别,感兴趣的看看今天的题图即可。

自由软件除了自由开放之外,还隐含着公民的隐私不受侵犯的含义。随着社会的发展,网络信息监控和审查越来越严重,伟大防火墙、实名制、审查制度等等,无一不包含着控制和垄断的意味。这就更加凸显处自由软件的意义。斯托曼说,「我们的社会正越来越依赖计算机,我们使用的软件对保证未来社会的自由至关重要。自由软件使我们能够控制我们使用的技术,让技术造福个人和社会,而不是让技术被商业公司或政府控制,用来限制或监视我们。」

很多软件人员使用自由软件更容易从经济角度关注免费的问题,事实上另一个Free与我们更加息息相关!

这个世界很多人觉得从未去争取过什么,活的也还不错。但真实的原因是,有很多类似理查德·斯托曼这样的人一直在风口飞翔,他们是一群特立独行的猪……

题图是用Omni Graffle制作而成,其中使用了 Flex Ding 提供的插件。

MacTalk 一岁生日记

2012年12月15日,我申请开通了微信公众平台 MacTalk,推送了第一条文字消息,这条消息的内容是这样的:

身边越来越多的人开始使用Mac,今天吐槽WebSphere时有人说我该多说说OS X,好吧,以后每天发布一则#Mac技巧#,让大家打造最佳工作和学习环境,今天发布第一条: 说英语时我们当然希望有标准发音。在Mac中不需要字典,直接在终端里输入 say yes,Mac就会说英语了。

整整一年过去了,我写了一些字,出了一本书,认识了很多朋友,被赞过,也被拍过,生活似乎发生了些许变化,但实际上什么变化都没发生。唯一变化的是我自己,源于不停的写作和思考。这种高强度的脑力劳动似乎只有在我初学编程的时候经历过,显然,这是一次重新的出发。

之所以能坚持,原因有三:
1、惯性;
2、兴趣;
3、正反馈大于负反馈。

还能坚持多久,我也不知道,一步一个脚印往前走吧,2014年,可能会有些变化,希望是好的变化。

今天北京的冬天非常诡异,没那么冷,污染没想象中严重,到现在没下雪,号称「三没冬」。再不下雪土都软了,2个月后,就可以站在北京的西山上,挥一挥手,说一句,又是一年春来到!

是为记!

闲话自媒体

自媒体

自媒体这词不知道是啥时候发明出来的,我只记得那是一段白天雾霾弥漫,夜里月黑风高的日子,大家正在比着更新微信平台的文章,你周一到周五,我就一周七天不休,你早上发,我就晚上推,你文本我就图文,你图文我就音频,你音频我就视频,牛的还可以一天两三条。正当大家忙的不亦乐乎的时候,突然有一天,自媒体这个词就像天外来客一样出现在大家面前,它掸掸衣服清清喉咙,对这些写字的人说,「请稍息。你们忙活了这么久,从今以后就都归我管了,谢谢」大家面面相觑,说,滚,然后就又埋头写字去了。

从那以后,不管你承认不承认,愿意不愿意,自媒体的帽子就像紧箍咒一样牢牢的扣在了头上,不认同和解释是徒劳的,反正你们最终都会被自媒体的。对这一点我感同身受,就像我每次介绍自己的公司时,对话一般是这样的:

「我是瑞友的」
「你不是用友的吗?」
「哦,瑞友和用友的关系是这样的……」二十分钟过去了
「你是在用友软件园办公吧?」
「是的」
「那就是用友的,下面我来介绍这位用友的朋友……」

所以我现在一般都这么介绍自己,我是 MacTalk 的!对方一听名称如此高端大气,随即频频点头,然后若有所思,然后就没有然后了,避免了很多不必要的麻烦。

既然被自媒体了,那我就闲话一下自己的观点。

我觉得媒体和自媒体的区别主要是在一个「自」上,一定是个人品牌,自主创作(主要),个人维护(可选),不管形式是什么,微信也好,微博也罢,核心是个人表达。这些人时而朝九晚五,时而没日没夜,在立足本职工作的同时,不停的产出高质量的原创内容(低质量的不是没有,而是会被淘汰掉),他们要么是泥瓦匠,要么是程序猿,除了写作,身外还有一技之长,他们真正做到了从群众中来到群众中去,坚持三心二意的为读者服务,最终赢得了某个领域内广大人民群众的喜闻乐见。

于是这帮写字的人终于有了一小片自留地,可以在有限范围内自说自话,说完了还有人听,有人反馈,于是就有了些许媒体性质,史称自媒体。

传统媒体和网络媒体开了个微信平台,那不叫自媒体,仅仅是媒体平台的延伸,一个阅读入口而已。

东拼西凑的内容也不是自媒体,没原创始终是内伤。笑话精选倒是读者多,但是您要想开个笑话精选读者见面会,估计效果和石头扔到一口旱井里差不多,哪个读者想让人知道自己是笑话精选的粉丝呢?

搞清楚自媒体的特点之后,再说说自媒体的盈利模式。这个问题如果提给互联网创业公司就拽了,因为他们的回答往往是,「对不起,我们现阶段不考虑盈利和盈利模式!」回答者高端大气到牛逼二五,提问者黯然销魂到内伤吐血,尤其是对我们这种不盈利毋宁死的普通人,只有默默垂泪的份儿!

互联网创业公司不考虑盈利模式主要是有投资热钱撑着,并不是这些创业者白天喝西北风,夜里睡东南枝。而对于自媒体来说,就没这么好的运气了,拿到投资的自媒体人少之又少。所以,除了革命乐观主义精神和为人民写作之类的强大精神支柱之外,自媒体人也在偷偷摸摸考虑盈利模式的事,当然这些人是考虑不清楚的,门儿清的还是那些互联网分析师和精英媒体,他们不仅担心 IBM 不转型就要倒闭的大趋势,自媒体这仨瓜俩枣也得提上议事日程,你说他们到底操了多大的心?

如果问我自媒体怎么挣钱,我脚着,目前这就不是个挣钱的事儿。虽然通过捐助、集结出书、广告、会员等模式可以有些收入,但是能够由此解决生计问题的人凤毛麟角,大部分人还是得用其他手段解决喝西北风的问题。

如果问我自媒体未来的趋势,我是不知道的,咱卖白菜的就别操那份卖白粉的心了,不是说但行好事,莫问前程么?就我个人而言,喜欢写作和正向反馈这两点,已经够我坚持一阵子了。

苦不苦想想365

overtime

上周末参加了 Roy Li 组织的互联网跨界交流论坛,从下午五点从饭桌上开始扯,一直扯到论坛,再扯到第二天凌晨,我这个嘉宾已经快崩溃了,但 Roy 这个主持人在站了六个小时喷了六个小时之后,汗,已经流到了脚底板,人,依然屹立不倒!这种扯淡到天明的精神和体力,让我辈佩服到逆天。

我在 QCon 系列中曾经无情的赞美过 Roy,所以这次受邀还是有些惊讶的。Roy 的名头始于2013年3月,在没有和任何人打招呼的情况下,以迅雷不急掩耳盗铃之势降落在地球那一边的北美洲上,速度比迅雷离线还要快一点点。然后又迅速的和 IT 圈各个领域的朋友熟悉的像亲人一样,无话不谈。然后就不远万里,从北美回到中国,在首次谋面的各位朋友之间牵线搭桥,以一己之力促成了这次利国利民的跨界交流,这是什么精神?这就是加拿大人民传统的国际主义和人道主义精神,这种品质在消失了几十年以后,再次重现江湖!Roy,你不是一个人!

今天的文章并不是为了夸 Roy,只是开个场,其实想说的是另一个事儿。这次论坛邀请到了360的 CTO 谭晓生(注意这不是古龙小说里的百晓生,不存在最后的情节翻转问题),360是什么样的公司,仁者见仁,不过有360的地方总有是非,这倒是真的。论坛最后一场「跨界」的最后一个问题,就是由360的创业文化和工作强度引起的。360虽然是上市公司,但是万幸摊上了一个好战的老板,3Q 之争刚刚偃旗息鼓,3B 大战随即风云再起,和搜狗掐个架就是分分钟解闷的事儿,所以整个公司都处于一种一触即发的备战状态。他们推崇创业文化,拒绝平庸,不优秀就去死,减少层级,延长工作时间、增加工作强度等等。360环伺强敌而屹立不倒,想必靠的就是这种精神。

我个人对创业文化和减少层级并无异议,只是质疑执行的程度。每个公司大了以后都会由人制变法制,由流程取代激情,但是人们还是会当初创业的氛围与理想念念不忘,就像思念初恋的情人一样,不断的强调自己依然是创业公司,有奋斗的精气神儿,幻想自己还是那个干三天三夜完成任务后再浮一大白的汉纸!然而时过境迁,物是人非,真正相信并执行这种理念的寥寥无几,所以最终创业文化永远属于初创公司和小而美的公司,腾讯阿里百度虽然很拼,但都隐隐透出大公司的各种气息,360想一直保持创业氛围,谈何容易。至于减少层级,这个就不多说了,制度是人定的,也是由人执行,是好是坏,自在人为。

Roy 做一个外国人,对360的文化自然是不认同的,他的归纳是:既不科学、也不仁义、还不道德。当然对于这个一直呼吸优质空气、不了解中国国情的加拿大人的观点,大家并不是很买账。因为大家争论的焦点并不是前者,而是360的工作时间和工作强度,据说360的研发每天工作时间在10小时以上,每周超过60小时也是轻轻松松的事情。这种付出,值不值得?

当台上台下为了这件事争得面红耳赤的时候,我安静的坐在中间,有点神游物外,然后一个段子不管不顾地浮上心头,这个段子稍微修改一下,大概就是这样子:

我们虽然下班晚,但是我们上班早啊! 我们虽然不起眼,但是我们责任大啊! 我们虽然工资低,但是我们扣得多啊! 我们虽然人员少,但是我们任务重啊! 我们虽然福利薄,但是我们制度厚啊! 找工作,就应该找这样的,低端小气没档次,高调节俭少内涵! 拿着卖白菜的钱操着卖白粉的心!一谈钱就伤感情,我们工作的动力就两个字,理想!

这个段子我当然没在会上讲出来,因为弄不好被台下的扔鸡蛋,台上的拿鞋底抽,做人一定要得体,所以当时我是这么说的:

我个人并不赞同加班文化,我自己的团队也很少要求加班,当然,真实的原因是公司的发展速度并没有到非加班不可的程度。但是我并不排斥年轻人加班。你年纪轻轻,初入职场,一腔热血、两袖清风,腰上挂着两颗滚烫的肾,你说你不加班干什么?

我在洪恩工作的时候曾经为了赶一个产品连续工作过两天两夜,做互联网的时候每天工作时间都在十小时以上,可以说除了吃饭和睡觉都在公司泡着,但那时没人意识到在加班,因为大家觉得在做有价值的事情,同时自己的能力得到了充分的伸展。每天睡觉时仿佛都听到了心智力量嘶嘶增长的声音,这种加班,何乐而不为?

加班是有技巧的,长时间加班往往事倍功半,加班的坏处千百人说过,我就不说了。作为个人而言,对加班的态度,用以下三个标准判断一下即可: 第一、加班做的事情是否有价值 第二、是否能提升自己的能力 第三、是否有合理的报酬

正向的,就值得加班,负向的,就把改变世界的机会留给超人和蝙蝠侠,咱去干点更适合自己的事情。当然,是否能适应类似360这种强度的工作,还和年龄段有关。25-30岁,什么都豁得出去,35-40,再这么拼体力和智力,就吃不消了,那个阶段要看谁的耐力好,谁的方向对,笑到最后的,不一定是最拼命的。

当然,以上这些话,也是我的真心话。各位读者,你们的看法呢?

至于今天的题目,您就兹当是为了押韵吧。