励志文章

转载 2016-06-13 鲁鲁槟 收藏

一、写了 35 年代码的老程序员的最大遗憾

大约不到20年前,我处在人生十字路口上。我的第二家公司当时已经花了5年时间为出版行业打造专业图表制作软件,不过在那互联网即将大热的年代,出版商们已经逐渐向互联网领域转移,我们的业务渐渐枯竭。那时候我已经是一个有 13 年编程工作经验,而且同时有 9 年公司运营经验的综合性人才了。

我不想再同时又干技术又干管理了。我的第一家公司(1985-1987年)的主要业务是打造一款电子表格程序,并有自动发布的功能。当时我一人主导了整个公司的多项事务,与媒体打交道的是我,面见投资人的是我,处理日常商务杂事的还是我,与此同时我还是公司的3个程序员之一并且兼任 UI 设计师。1987 年,当我们公司的产品成功发布后,我也终于积劳成疾住进了医院。这件事情让我明白,既要做软件公司管理人又要做程序员,这不是一个正常人能承受的。

所以在1994年,当我再一次面临“管理者还是程序员”的选择的时候,我选择了程序员。因为我觉得程序员的工作比较单纯。现如今20年过去了,尽管在此期间我参与开发了很多不错的项目,不过我也终于认清了当年我的选择是多么的错误。尽管在当年,“CTO/CIO/副总裁级工程师”这样的技术管理路线还是很新的概念,但是在今天看来,这条道路才是正确之选。

1995年,我在湾区工作了大约一年。其中下半年我为苹果公司工作(伯乐在线补充:那会乔布斯还在 NeXT)。苹果那时候看上去就快要撑不住了,所以我就离开了苹果回到了德克萨斯。因为我不想眼看着我工作的公司垮掉。现在想来这真是个天大的错误。

后来,乔布斯回归,苹果重回正轨,不仅如此,.COM时代也浩荡沓来。作为一个经验丰富,训练有素的技术领袖,我对产品需求的理解是无与伦比的(我们当时发布了 9 款主要产品,都是直接针对主盘,并且不需要热补,总之在当时这是很难做到的),我只能说我可以想象我在那个时代原本是多么的炙手可热。一旦有人具备了这样的素质,在职业道路上不断攀升根本不是问题。

我妹妹在30年前也是以一个程序员,不过她很快在一年之内跳到了管理层并且在大约15年之后成为了一家大公司的副总裁。还有一家我工作过几年的旅游公司的母公司,他们的CEO大约在15年前也做过程序员。当然这些管理层的工作也并不能算得上轻松愉快,但是其工作报酬却(比程序员来说)要好太多了。我妹妹的薪酬大约是我的10倍。

这么多年来,我认识到作为一个程序员在能力上的局限性有多大。不管他们在专业方面多么出色,但是对于创新改变,或者把坏事变好这些方面的能力却很有限。我当年就是没有意识到做一个程序员所面对的这种局限性(甚至说架构师也是如此);在程序员这个层面上,你没有权利去改变现有的事物,因为你只是一个执行者。同样,你也不会参与到财务、IPO活动,以及其他一些重要事务,作为一个程序员,你就乐于去打造酷酷的东西就好了。

有大约5年的时间,我作为员工或者顾问为某些公司工作,这是我职业生涯最糟糕的阶段,我所做的事情都得参照一些糟糕的,愚蠢的,彻底白痴的技术管理的指示。在这篇文章里根本就列举不完这些愚蠢的事情。

比如作为一家银行的技术部门副总裁,他可以根本不懂技术,但还是有资格做技术方面的决定。同样在银行做CIO的人宁可相信供应商也不会相信他手下员工。当然,我们知道CIO拿了供应商的回扣,所以我们才必须买那些没用的东西,然后他还会不停地写文章证明那些没用的东西对我们是如何的好。尽管我们根本就用不上。有一次我离开公司以后CIO也被炒了鱿鱼,然后他离开了公司并立即在另外一家公司找到了一个类似的CIO的职位。

我做过的最糟糕的一个工作,其实一开始我是很看好的。一家后创业公司在其所在的领域有一个很好的契机。这家公司和其主要竞争对手(但是契机点不同)都想扩大市场,而且市场也确实在逐渐繁荣。我是作为公司的第二个程序员加盟的。先于我加入的程序员以及经理当时的任务是打造一个全新网上商店系统,因为旧系统太慢也太不灵活,完全无法适应更大的市场需求。这个公司当时没有技术领头人,CEO和其他两个创始人也没有任何的技术经验和知识。另一个程序员不停地说后端的代码如何如何好,然后经理也很信任他。我构建了一个前端模块,做了几个demo,并每天往代码库里更新。正当我觉得我写的前端代码已经可以和后端代码整合的时候,我突然发现,另一个程序员的代码库10个月以来就没有一次check in——一次都没有。我把这件事情告诉了经理,可经理却说:”他(另一个程序员)只有在一切都完美了以后才会check in代码。“并且除了我以外,没人觉得这种做法很愚蠢。此后,我花了两个月的时间,试图动员公司的创始人招募一些真正能做事情的人(其实我还是认识几个这样的人的),但是他们虽然承认之前在招人方面有失误,但是却害怕做出人事变动。最后我放弃了,离开了公司。

一年多以后,原先的两个人(另一个程序员和经理)什么都没做出来,双双被解雇。然后公司创始人又从咨询公司找了些人来,但还是什么都没有做出来。这个时候,所有的商机都被耽误了。竞争对手那边呢?他们已经成为了十亿美元级别的大公司,我经常会在电视商业广告上看到这家公司的名字。我每次看到这些广告的时候就想拿我的鞋子砸电视。我们其实就差一个在线商店和一个现实中的技术领袖。如果我当时的身份不是一个程序员而是一个技术负责人的话,那么现在大红大紫的没准就是我们了。很遗憾我只是个程序员。

类似的例子我可以一直列举下去,但是关键问题是:如果想要对技术人员的工作有话语权,你就必须同时有能力,有权利,还要有机会才行。一旦你做到了这些,并且你还找到了合理的成长模式,那么只有天空才是你的极限了。

1987年,我在电视节目《Computer Chronicles》中为我们的产品Trapeze做推广的时候,另一个参与节目的家伙叫 Mike Slade,他是Excel的产品经理。当时还很幼稚的我想,这家伙不过是不知道哪里跑来的一个搞市场的小角色而已(幼稚的时候人还真是很蠢呢)。后来呢,这家伙创立了一系列的公司,包括ESPN,他在苹果公司担任了各种领导角色,是乔布斯的至交好友,并且成立了自己的风投公司。

今天,我还是一个程序员。所以说现在谁是小角色呢?我怀疑我是不是有一天真的能退休。幸好我还是比较擅长做程序员的(我现在的工作是我以前的一个经理给我的,他有一个需求而且知道我能做这件事情),但是到目前为止,我所能做的也就只能是一个程序员。

我做程序员有大约35年了,其实完成工作的感觉还是很有意思的,而且这么多年我也确实做了不少出色的东西。但是我也感觉到我对当年没有去接受成为一个管理者的挑战产生了悔意。在某种程度上,程序员确实是一个单纯的选择。考虑到我经历了整个互联网(Dotcom)时代,也经经历了乔布斯回归苹果的事件,如果我还能有成为技术领袖的经验,那么我几乎可以无所不能。

所以说,是的,我对我没有把握住(成为管理者)的机会感到后悔,谁知道如果我当时把握住了现在会变成什么样。不过有失也有得,我因此得以享受书写代码的乐趣,以及那些为了解决为题而纠结烧脑的乐趣。

曾几何时,我站在人生的双岔口,然后选择了简单的那条道路。也许现在,我明白我为什么做出了那样的选择。


二、工作十年的程序员,却拿着毕业三年的工资,再不开窍就真晚了!

他有 10 年的编程经验,但是代码却写的很糟糕。因为他写代码就像工厂的操作工一样,只注重功能的实现,不注重优化和改进。所以他的代码看上去很粗糙,一点都不精致。

小韩是一家小公司的软件程序员,而十年后他还在那家公司,依然是一名普通的程序员。算起来,他工作也有十多年了,但是,他却告诉我,他的工资已经好几年没有涨过了。


工作十年的程序员,却拿着毕业三年的工资

小韩如今的处境有大环境的原因,毕竟他所处的传统软件行业普遍效益不是很好,公司没钱赚,自然不会给他们加工资。

而具体到个人的情况,虽然很多人不满意待遇纷纷跳槽了,而他虽然也想过跳槽,但是,总感觉自己好像没有底气,再说在这家小公司也习惯了,离家也不远,不知不觉间就这么混过来了。

直到有一天他参加同学聚会,才发现自己的待遇和发展已经远远落后于同龄人了,税前六千,而很多人的待遇已经在这个数字前加上了个 1。

此时,他才后悔不已,当初不应该贪图安逸,结果工作十年,却只是拿相当于工作三年人的工资。

于是,他开始着手找工作了,也不断的翻看人才招聘网(毕业五年,还通过人才网站找工作的人是失败的),结果发现他现在求职存在着很大的不足:

他有 10 年的编程经验,但是代码却写的很糟糕。因为他写代码就像工厂的操作工一样,只注重功能的实现,不注重优化和改进。所以他的代码看上去很粗糙,一点都不精致。

他一直在一家公司,而公司的业务内容变化不大,要求的编程语言也没有很大的改进,再加上他自己惰性比较强,工作十多年,只能做一个初级程序员做的事情,只不过比一般人熟练而已,很难称之为核心竞争力。

他不善与人交流沟通。虽然技术很熟练,但无法很好地传达给别人。这样导致他很难让他的价值最大化,只能做程序员,而不能做项目经理、需求策划或者售前人员。

你想成为小韩这样的人吗?不想的话,下面是解药,拿走不谢!

01.不管在任何行业,进攻才是最好的防守

年纪轻轻就开始想着怎么混日子,迟早有一天要被淘汰,从而在一个相对低端的层次“稳定”下来,看似稳定,不过是饥寒交迫的开始。

02.不管做什么职位,会做了永远只是最低的标准,如何做的更好,更快才是核心目标

因为越是容易上手的岗位,更新速度和淘汰率越高。每天都要革自己的命,才是根本。很多人,常常纵容自己的惰性。纵容自己惰性的人,都是在对自己犯罪。(我承认,我有时候也会犯罪)

03.不管在任何时候,闭关锁国的政策最终只能有一个结果:落后,而落后又带来一个结果:挨打

所以,我们需要保持一颗开放的心态,不管是对工作,还是人脉积累,都应该多一些留意。知道行业的发展趋势是什么,知道公司又发生了哪些大事,知道同事离职去了哪里,知道要多结交几个圈内人士。只有这样,才能够在职业发展上越来越顺利,而不至于成为一个两耳不闻窗外事的呆子。

下面再来看看 10 年工作经验的资深程序员对职业发展的看法和一些建议及忠告:

10 年经验老程序员:浅谈职业发展

在中国有很多人都认为 IT 行业是吃青春饭的,如果过了 30 岁就很难有机会再发展下去!其实现实并不是这样子的,我从事 C 语言及 JAVA 方面的开发工作也有 10 年的时间了,在这里我想凭借自己的亲身经历,与大家探讨一下职业发展。

我将普通人的职业发展分为三个阶段:

  • 30岁以前。打基础,人生方向基本确定。30 岁之后再做出变化,说不想做这个,会付出很大的代价。要改变自己的职业方向,30 岁之前做出决定,越早越好,就像软件的需求变更一样。

  • 30-45岁。个人能力强、知识全面、经验丰富、性格成熟,适合带领团队,事业腾飞阶段,升职加薪,创业的最佳时期。

  • 45岁以上。人生定型,斗志渐退。当然不排除有人大器晚成,仍然保持旺盛的斗志,拥有过人精力和激情,像肯德基的创始人哈兰.山德士,65 岁才创业成功。

以上表述并非像程序代码一样精确,希望不会有人钻牛尖吧~如果到了 30 岁左右,自己的个人能力还没有一个质的飞跃,危机就会慢慢降临。

下面一张图展示程序员的职业规划:

左边的一列讲述的是程序员自己创业,紫线下面是转从事其他行业。右侧一列是程序员正常晋升机制:当你晋升到中三级时,将面临一个重要的选择。

选择技术?还是管理!不同的选择,成就不同的人生。在这里希望大家:程序人生,一顺到底。

工作 10 年程序员总结的 13 个忠告

展望未来,总结过去 10 年的程序员生涯。走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们。

01.自己的户口档案、养老保险、医疗保险、住房公积金一定要保管好

由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过 5 个以上的单位,这期间跳来跳去,甚至是城市都换过 3 个。

还好户口没丢掉,其他都已经是乱了,好几个城市里,都有交过三金,甚至是一个城市的 2 个区里交的都有,那些在 10 年后,会变得很重要。

你买房子若有公积金,可以取出来,贷款利率也会比较低一 些;有孩子了,还需要上学;生病了还需要医疗保险。

特别是买房子时,你使用商业贷款与公积金贷款的利率差别还是很大,有可能会有 10 万的差距。你平时多注意这些,会给你带来的损失最小。

例如每个月缴纳 300 元的公积金,公司也缴纳 300 元,你一个月能存下来 600 元,一年就是 7200 元,10 年就是 72000 元。

我以前都忽视了这些,到我需要买房子时,公积金里可能只有几千元,10 年很快就过去了,结果我没能存下来多少公积金,医疗保险,养老金等更别提了,都已经稀里糊涂了,这些损失 10 年累加起来,是很庞大的数字。

大家要注意,跳槽换工作时也要保护好自身的利益,现在房价很贵,你可能是跟我一 样,大山里出来打拼的娃子,家里也没有丰厚的积蓄,只有靠自己拼搏,买房子是人生的一件大事。

等你到了 10 年,才想到这个事情,已经晚了,特别是孩子要上 学,上幼儿园等,需要户口啥的都要齐全。

02.不要轻易换笔记本电脑,不要跟潮流,不要买过多的电子产品,不要过于频繁的更换手机

这方面我的经验教训也是惨痛的。我大概前后购买过 5-6 个笔记本,以前的都是 1 万多元一台,最近买的这台 1 万多是给女朋友的,自己买了一台是 7500 元左右,手机大概换过接近 10 个了,这些钱加起来也足够有 10 万以上了。

你可能一不小心就购买了这些电子产品,但是时间长了,你回过头来想想,你为什么赚得也不少,但还是那么穷,是因为你购买这些电子产品花费了过多的金钱了。

平时笔记本啥的贵重物品要保护好,我一个同事不小心丢了 2 台笔记本电脑,接近 2 万的损失啊,你净赚 2 万,不是那么容易的,这个窟窿不是开玩笑的,我曾经也被人偷了一个崭新的笔记本,损失 1.5 万左右,更糟糕的是最新的代码也跟着被偷了。

03.这年代外语、学历、职称、驾驶证还是蛮重要的

想找高薪,外资企业是正确的选择,在同样的打工里,外资企业的收入普遍是高的,我就想不明白,我们(聪明的投资者不扎堆)的赚钱能力怎么就比不过人家了。

社会不断发展,将来可能去外国就像串门一样了,也说不定的,外语好将来的就业机会也会更多更广一些。

学历并不代表啥,但是学历也是敲门砖,例如有 300 个应聘者,那至少重点本科以下的,统统不看了,因为实在是来不及看了,你再厉害也被挡在机会的门外了。

同样有时候你想改行什么的,职称也很重要,最起码评个中级职称,说不定还有机会能进入大学或者政府部门还是有可能性。

若有充裕的时间,应该把驾驶证考了,因为你越到后面越忙与工作家庭,没机会学车了也说不定的,平时也别光顾拼命工作。

工作 10 年后你才发现,原来身边的人都至少硕士学历了,你被社会自动淘汰了,我现在就有这个感觉,虽然我带过很多硕士,他们的就业机会比我还好,经常能进入名牌企业,我却一直进不去。

04.不要谈过多的女朋友,谈女朋友要看准,下手要稳准狠

我谈过 2 个女朋友,平均每个女朋友身上的开支前后大概会有 10 万左右,还好我不用谈第 3 个女朋友了。

若投资失误,那也是很残忍的,谈女朋友也会消耗很多时间精力、还会消耗很多金钱,实话的讲的确是这样的,人家女孩子也值钱啊,凭什么就那么轻易的跟你啊。

我跟第一个朋友分手时,我的生活至少是倒退了 3-4 年, 一切从零开始,一切从头开始。

我劝大家谈女朋友是人生最大的一笔买卖,投资失误会有惨痛的后果,不仅仅是金钱上的损失,更会有精神、心灵上的沉重打击。

大家要学会珍惜女朋友,要学会哄好女朋友,让老婆开心每一天,虽然鱼儿上钩了,不用再下鱼饵了,偶尔也别忘记放点米,这个鱼要是脱钩了,那不是开玩笑的。

05.工作不要更换得太过于频繁,选好了行业方向最好别更换太频繁

换工作,换行业方向,就像熊掰苞米一样的道理,有时候是丢了芝麻捡西瓜,有时候是丢了西瓜捡芝麻,这个道理我就不多讲了,大家都应该能明白的。

06.要对身边的人好,要得到老板的信任、同事的认可及支持、珍惜良好的工作环境

有个朋友的 QQ 名字很有意思,“只爱陌生人”,陌生人是很有意思,但是最关键时刻,还是需要靠非陌生人,你每天跟同事一起生活,要维系好身边的人。

你的成功与失败,往往是你身边的 30-40 个人决定的。你就是世界首富,他身边也是那么不超过 100 个人左右着他的生活。

当你工作 10 年了,没一个老板信任你,没几个要好的同事朋友,那你惨了,你在这个世界上已经是很孤单了,你的收入,其实大多是来自这些身边的朋友给你介绍的生意,不大会网上掉几个馅饼的。

现在你身边的人有可能在不久的将来,给你提供很多好机会。

07.钱很重要,但是生活质量比钱还重要,工作是很重要,但是家人比工作还重要

钱不是万能的,但是没钱是万万不能的。钱赚了,身体垮了,全送给医院了;钱赚了,身心疲惫了,人活着为了啥?不就为了开开心心生活嘛?

工作重要,但是失去了 家人的爱,失去了女朋友,失去了老婆孩子,那这个工作有啥用?

工作很容易就换了,家人是换不了的,老婆不是想换就换的,孩子不是想换就换的,对自己的家庭都不负责的人,怎么可能对公司负责呢?

我一直是这个观念,来面试时觉得工作更重要的,我们一般不录取的,那太假了,或者太不懂事了。

08.工作累了,也别太贪玩,有时候还是需要多想想如何才能赚钱

时间一晃就过去了,工作累了是可以适当放松,但是别太贪玩,10 年很容易就过去了,10 年后你要买房子,要娶老婆,要买车子,要生娃娃,身体也会变得脆弱一 些,需要良好的生活习惯,也经不起通宵了。

通宵一次,你要低迷好几天才能缓过劲儿来,跟 20 刚出头完全不一样了,用钱的地方多了去了,父母也会变得更老一 些,可能也需要你的照顾,整个家庭都指望你赚钱,别到了这个时候,你才意识到赚钱是那么的重要。

更何况现在城市的房价,动不动就是 200-300 万,加上按揭的利息,你很可能需要支付 450 万。还可能需要装修,买车子。可能你身上的压力是 500 万。

别觉得谈钱就俗,你要学会赚钱,要有个需要赚钱的良好意识,当然你出身富裕家庭,就不用考虑这些因素了。

09.每天一点点进步,每月一点点积累,要敬业要爱业,我们给别人提供的也是服务

总有 一天,你也会有累的时候,你也会有老的时候,这时候,你要靠啥呢?

就要靠你平时的积累,你 10 年的积累,可以打倒很多竞争对手,他们再厉害,再怎么样,也很难抵得过你 10 年的积累,特别是后面 5-10 年的积累,成果会很明显,前面的 1-5年,算是做软件的入门吧。

除非你有高人指点,那可能 2-3年 就可以修成正果,软件在将来还是会值钱的,因为生活会越来越智能化,越来越数字化,软件的需求还是很有前途,最起码未来的 10-20 年里不用太担心失业问题了。

10.对程序员来讲,开发思想、架构、代码就是财富,别老丢弃你的劳动成果,要学会保护你的劳动成果

我大概 7-8 年前的代码都在手上,经常改进来改进去,维护来维护去,在一定的程度上,让我生活轻松了不少。

因为我不用什么都从头来过,我只要痛苦一次,以后可以反复重复利用,软件的价值就在于重复利用,而不是每个功能,都从头开发,那永远是辛苦的程序员。

这个生活质量就别提了,不管自己的代码丑还是拿不出手,要学会精心维护,每天改进一点点,每个月一个小进步,每年一个大进步,多年的积累是宝贵的,这个早晚也会给你带来丰厚的收益。

11.当程序员要防止原地踏步,不是工作年限长了,经验就丰富了,能力就强了,年纪越大工作越难找

我有一个朋友跟我开玩笑,工作 5 年的人,可能能力差距会很大,为什么呢?因为第一年他们干的事情都是一样的,都写程序了,2 个人可能由于价值观不一样,5 年后差距会很大,甚至是大到无法追赶的程度,为啥?

因为还有机会的因素在里面,有的人干了 5 年,还是在原地踏步,天天只会写那些添加、删除、修改的代码。如果你是这样,那你得注意了,你需要不断的提高自己,才是硬道理。

例如:你会 SQL Server,那要试着学习 Oracle, 你是做 C/S 的,那得需要提高到 B/S 的,你是做单机软件的,那得需要提高到网络软件,你只关注自己的工作的,需要学会管理,关心他人的工作。

你是当程序员的,要试着提高当项目经理、部门经理,公司的总监等等,人有野心有目标才会不断进步,最俗的为了多赚钱,提高工作职位工作岗位,工作单位,也是可以理解的。

年纪越大工作越难找,例如 3-4 千的工作是随便找找,玩一样,但是你 30 过后,最起码要找月薪上 1 万的工作。

这样的工作是机会也少,一般小公司也给不起,还得找个好公司才可以,好公司又不是天天招聘人,天天缺好的工作岗位,说不好听点儿,小公司的老板才赚多少啊?他来钱也很不容易的,小池塘就不好容得下大鲨鱼了。

12.当创业的收入比打工还少时,那就别创业,要找比自己能力强的人创业,你不会吃亏

创业的收入,比打工还少,那就是瞎扯蛋,恶搞。创业的真正意思并不是要你去吃苦没钱赚,那是忽悠无知的人的。当你创业时的收入,比打工还多,那你可以考虑创业,没有工资什么的,股份啥的,都是瞎扯蛋。

不要跟自己能力还弱的人一起创业,那损失最大的,很可能就是你,要创业,也要找比自己强的人一起创业,最起码赚不到钱,还能学到不少,不会有过多的损失。

别热血一沸腾就创业了,创业了,也别烧自己的钱,家人的钱,那是很不抗烧的,没几下几十万就烧干了。

其实打工,也是创业的开始,每个月都能拿到钱,还可以学到知识,什么公司的股份都是空话,没几个小公司能成功,开起来了也走不了 3 年就分家了,都忽悠小孩子玩的。

除非真的有科技含量或者是客户资源的,否则股份是一文钱不值的,就算创业每个月也按时拿工资才是硬道理。

13.未来的生活节奏会更快,生活压力会更大,竞争会更激烈,社会服务体系会更完善

在未来,我们享受良好的服务的同时,也会为别人提供更良好的服务,对在技能上还是服务质量上的要求会更高更严格。

平时要注意提高自己,不要被时代淘汰掉, 我从小的朋友,一波又一波被社会无情的淘汰了,很小的时候,我出生在大草原与大山的交界处,我小时候的玩伴,还在大山里。

我跟着家人杀出来了,我小学、中 学、大学、工作上的、这 10 年,我一直很坚强的拼搏下来,很不容易的在大城市立住脚了,说实话,参加工作后的十年,也是不断拼搏,不断提高的十年。


三、给年轻程序员们的 10 点启示

最近,陆续在51CTO和CSDN上看到好几篇写程序员如何成长,如何拿到高薪的文章。文章都很不错,一些观点也很实用,但整片文章读下来,我总觉得意犹未尽,感觉还应该再给年轻的程序员们说些什么似的。

我其实离开正式的程序员岗位(当时我是一名架构师)已经快3年了,现在我仍然在业余时间做一些感兴趣的开源或个人项目。但我发现恰恰是最近几年,让我能够从不同的角度和视野,对程序员这个职业有了更深入的理解和认识。当我成为一名IT管理者,我从更多的程序员的身上看到他们身上的一些特质对其职业生涯所产生的影响;当我开始自学设计,我从一些设计大师们那里得到很多极具启发性的观点,发现这些观点对那些程序员同样具有很大的价值;而当我开始写作时,每一篇文章过后与年轻程序员读者们进行交流的过程中,我的想法和观点又得到了进一步的完善和提升。

因此,我迫不及待地将这些记录下来,希望从一些不同的角度给予年轻程序员朋友们一些启发:

1. 正确地认识自己

我听到过很多用来形容程序员的网络词汇,码农,程序猿,软件工程师,张江男,屌丝程序员等等。其中大部分都略带贬义,有些甚至是程序员们自己发明出来用于自嘲的。其实这些称呼对你来说并不重要,关键是你自己内心中用了哪一个词汇来描述自己。当你仅仅将自己定位成一个码农,那你可能就是那个整天用着相同的工具,写着相似代码的码农;你把自己看作是一个屌丝程序员的话,那你也可能就是那个衣食不愁,但整天浑浑噩噩、无所追求的屌丝。

我更愿意用技匠这个词来形容像程序员,就像我给自己起的花名一样。程序员应该是那些不断追求更高技术,并有着自己产品梦的工匠。当你通过对自己技术不断打磨,一次又一次做出那些优秀产品的时候,你会发现你不再是他人口中的码农或是屌丝,而更多被称为了大师、大神,而受到大家的尊重。

我相信没有一个真正的程序员是愿意将自己视为码农或屌丝的,那么不妨也像我一样找到一个能真正反应你内心的词汇来描述你自己,通过努力,你会慢慢变成你想象的样子。

2. 比一般人更加努力

我曾看到一个关于天才与普通人的有趣漫画(很遗憾我没能找到原图,只能用文字进行描述):
图1:。一个普通人每天都很努力,他头顶上显示的能力槽也在慢慢地增长。而图中的另一个天才,则整天不务正业,当然他头上的能力槽也几乎没有增长。
图2:经过了长时间的努力,普通人头顶上的能力槽慢慢接近了满格,此时图中的那个天才醒悟并开始了努力。
图3:又过了一段时间,普通人头顶上的能力槽终于满格了,但此时天才头顶上的能力槽却早已爆表,高出了那个普通人很大一截。那个努力的普通人只好无奈地抬头仰望着那位天才。
图4:但当普通人默默回过头来,却惊讶地发现有更多的人正同样充满敬意地仰望着他,因为此时的他也早已成为了大多数人眼中的那个佼佼者。

这组漫画非常发人深省,优秀的程序员往往会被同天才或高智商的人联系在一起,但是我想告诉你,你周围所看到的那些天才(身边的优秀程序员)只是在你没看到的时候花了更多时间工作或者学习而已,当你也坚持这么做时,你也会和他们一样变得非常优秀的。

3. 适时建立个人权威

我以前有一个美国同事,是个东欧人,在公司里负责一个非常老旧系统的开发和维护工作,用的技术也是几乎快被淘汰的Power Builder,因此他在公司里是个不怎么被重视的人。然而有一天,他突然拿着笔记本电脑敲开了老板办公室的门,并且给老板展示了一个非常漂亮而且易用的Web系统。原来他利用业余时间自学.NET技术,将他所负责的那个系统整个重写了一遍。这个焕然一新的系统一下子让老板和整个公司惊呆了,大家由衷地对他报以敬佩之情。不久,他便被提拔为了开发团队的负责人,而他的那套系统也很快作为公司的拳头产品推出了。

我经常听到一些程序员抱怨自己的职业生涯毫无起色,或者在工作了几年之后就担忧自己遇到了瓶颈。其实造成这些的原因往往是他们已经习惯了听命于人,而缺少自己的观点和主张,久而久之便成了那个在他人眼中可有可无的平庸之人。你不妨也学一学我的那位美国同事 ,选择合适的时机去表现自己,建立个人权威,这能让其他人看到你的不同之处,并为你在公司或团队内部构建起良好的影响力。当然,这一切的前提首先是你需要通过努力积累自己的实力,并在恰当的时候去展现它。

4. 遵从那些最佳实践,因为它们往往是有效的

技术总是在不断发展,我们每年都能看到很多新的开发语言、工具和框架的出现,而每隔几年又会有一些大的技术变革产生。那么作为程序员,如何才能适应适应这种变化呢?其实,就像每年都会有新的流行设计趋势,然而设计的本质和原则却始终不变一样。作为一名程序员,你也需要尝试去理解那些软件领域最本质的东西,而我的建议是就是学习那些最佳实践。

当你理解了GOF的那些经典设计模式,你会知道使用一个单例来最有效地实现一个Logger组件;当你理解了SOA或是最新的微服务架构,你能够通过架构使你的企业IT治理更加有效;当你理解了DEVOPS这种新的运维文化和理念,你能使企业IT运维效率得到显著的提升。你还需要理解在网络安全、性能调优、代码优化等各个方面的最佳实践,使你写出更高质量的代码和做出更优秀的产品来。

这些最佳实践或由此衍生出来的框架、工具都是那些有经验的程序员通过大量实践总结出来最优秀的软件开发思想,通过理解和对它们的有效实践,能够让你站到前人的肩膀之上,对软件开发本身获得更深入的理解和认识。

5. 保持好奇心并乐于探索新的事物

好奇心可能是优秀程序员与普通程序员之间最明显的区别之一。那些优秀的程序员往往不满足于对手头工作的认识和理解,他们有很强的意愿去了解那些更深入的东西。比如他们会通过研究公司的框架(甚至是更底层的框架)源代码,去了解它们具体的实现原理和设计思想。这对提升程序员的技术深度是非常有帮助的。

另外,优秀的程序员们也往往非常乐于探索那些看似与工作无关的技术,比如做后端的程序员去学习前端的技能,前端工程师则去学习UI设计等等,这些不会让他们成为那一个领域的专家,但技术往往是相通的,当你在探索这些新鲜事物的同时,你会发现原有的技能也得到了提升。

(最近,我在自学一些简单的机器学习语言,从中就受到了一些很有价值的启发,我也希望后面能通过几篇文章来分享给大家。)

6. 抛开代码与人沟通

“紧盯着电脑屏幕,不断敲击键盘,目光有些呆滞。”这可能是程序员给人的印象。而我所看到的那些优秀的程序员却都不是这样的,他们往往兴趣广泛,并且都非常乐于与人沟通交流。

程序员们很容易会忽视与人的沟通,这其实对他们的职业生涯发展是不利的。我很支持那些年轻的程序员们坚持去走技术路线,但这不应该成为你排斥与人沟通的理由。你需要与人沟通来获得他人的帮助;你需要与人沟通来建立良好的工作关系;当你的能力不断提升,被赋予更多职责时,你更需要与人沟通来管理好自己的团队,以及与老板或客户进行有效的沟通等等。

尝试离开你的电脑桌去与人沟通,相信我,这会给你的工作和生活带来积极的变化。

7. 不要为愚蠢的人工作,否则你会变得和他们一样

还记得我面试过的那位优秀的UI设计师吗?当问到他的离职原因时,他告诉我,当他每天听到他的老板和同事们聊天内容的大多是股票、育儿、游戏时,他就下定决心要离职了。

环境对一个人的影响是巨大的,而最可怕的是当你身在其中的时候很难意识到你正在变得越来越糟。我之前带过一些不错的程序员,他们中的一些人去到了一些整体氛围或环境不是太好的公司。当过了一段时间,再次与他们碰面聊天时,我发现他们的思维观点相较之前并没有提升,有些甚至反而下降了。

我其实并不鼓励程序员盲目跳槽,但当你发现所在的环境和周围的人已经无法让你获得提升时,不妨学一下我提到的那位设计师,选择一个更好的环境,尽可能与那些优秀的人一起工作。

8. 生活、睡眠、旅行

我们时常听到关于程序员因疲劳过度而猝死的新闻,我非常为他们感到惋惜。但这里所反映的一个问题却值得深思,那便是程序员不懂得生活。我希望每个程序员都能明白工作、技术、写代码这些都不是你存在的本质,而生活才是,你需要懂得生活,并且学会生活:

生活:尝试有节制和有规律的生活,程序员生涯绝不是一次冲刺跑,而更像是一场马拉松。你需要合理规划自己的时间分配(学习、阅读、写代码)并持之以恒地去做。另外,不要忽视你的家庭,扮演好你在家庭中的角色,无论你是与父母还是与妻儿住在一起,不要将自己隔离起来,尝试融入其中,做一个快乐有爱的程序员。

睡眠:有很多人觉得睡眠是弱者的表现,他们往往会长时间熬夜,其实我觉得这是一种恶性循环,反而会使你的工作效率变得更低。充足的睡眠往往能使你更有效率地投入到新一天的工作中,你也会变得更有创造力。请记住,保证充足的睡眠将使你变得更加强大。

旅行:去任何一个新的地方都可以称之为旅行,旅行不是为了放松,因为你需要坐飞机,开车,走路,这些都会使你产生压力,但你仍需要去旅行,因为这能让你发现和感受新的东西,而这些是从电脑屏幕上无法获得。

9. 相信自己的天赋和创造力

做到以上这些,你已经是一名优秀的程序员了,但你离杰出还差了一点。你需要依靠你的天赋和创造力,让你更进一步。天赋和创造力绝不是那些天才的专利,每个人的身上都有属于他自己的天赋和创造力,但它们也绝不是与生俱来的,你需要在生活中不断地培养和发掘它们。下面是我觉得一些行之有效的方法。

  • 读那些优秀的书籍:好的想法绝不是凭空产生的,尝试从书中去寻找那些能激发你创意和灵感的优秀内容。

  • 记录和收集:尝试用一本小本子,将你转瞬即逝的好想法记录下来,它们可能并不直接有效,但下一个更好的想法可能就是从这些你记录下来的想法中产生的。

  • 尝试动手:光有好的想法是不够的,你需要成为一个有工匠精神的人,通过亲自动手去尝试和实践,你会不断从中得到新的创造力。

10. 如果上面提到的其他建议都对你无效的话,那么就请坚持第2点建议吧“比别人更努力地工作”,因为它将成为你最大的竞争优势。


四、哈佛大学研究:一个人成为废物的九大根源

1、犹豫不决

比鲁莽更糟糕的是犹豫不决。

像墙头草一样摇摆不定的人,无论其他方面多么强大,在生命的竞赛中总是容易被那些坚定地人挤到一边。雷厉风行难免会犯错,但比什么也不敢做强。怀特·黑德说:“畏惧错误就是毁灭进步。”

2、拖延

计划很丰满,执行很骨感。

很多时候拖延就是逃避问题和懒惰。

把横在面前的困难放大,望而却步,抱着能拖一天是一天的心态找各种借口逃避:

“无聊的工作”、

“苛刻的老板”、

“我太忙”、

“隔一天在做也没关系”……

随之而来,我们会陷入“工作越来越无趣”,“人生越来越无聊”的泥潭中。

愈加懒惰,愈加消极,会掉入懊悔过去和幻想未来的陷阱中。

时间累积会产生更加强烈的负罪感和自我否定让人越来越焦虑。

著名思想家罗曼·罗兰说:“懒惰是很奇怪的东西,它让你以为那是安逸,是休息,是福气;但实际上它所给你的是无聊,是倦怠,是消沉。”

3、三分钟热度

世界上有80%的失败都源于半途而废。

"三分钟热度”的人不过是从来没有体验到坚持做一件事成功后带来的喜悦,因为坚持的过程总是枯燥又充满挫折的,人的天性又是好逸恶劳。

“每一年伊始笔记本的前几页都写满了宏伟的计划,后面几乎都是空白……”

“购买了一本好书,可惜得是到现在都还没开始读……”

“下决心健身减肥,差不多在5天之后就放弃了……”

几乎所有的人都有过“雄心勃勃地制定计划,心灰意冷地放弃计划”的经历。

4、害怕拒绝

厚重而脆弱的自尊。

大多数时候,我们在人际关系中感受到的“痛”,都和“感到被拒绝”有关。

有时这种拒绝是很显然的,比如爱人突然的离去;或者被朋友背板和疏远。

而有时这种拒绝也可以是很细微的,比如你给了对方一个微笑的眼神,对方却移开了目光;或者你鼓起勇气给对方发了一个条微信,对方却过很久才简短回复。

一个能放下自尊去做事情的人,是专注目标成果导向的人;而把自尊心放在第一位的人,在人际交往做事情的时候,总关注在他人对自己的态度。

所以,一个人越是百无一用的时候,越执念于那些无足轻重的底线与小自尊心。

5、自我设限


杀死自己的潜能力。

他们经常这样说:我想做A,但是我怕做不到,因为B,C,D,E种原因。

他们还没去做之前,就先否定自己,并给自己找了一堆不付出努力的理由。

所有的平庸与低成就都是自我设限的结果。

在自己的心里默认一个“高度”,这个“心理高度”常常暗示自己:这件事情我肯定没办法做好,就做到差不多就可以了。

这种心理暗示可以帮你阻挡任务失败带来的挫败感,暂时维护你的自我价值感,但是,却剥夺了你“往上再走一步”的成功机会。

拉罗什富科说:平庸的人总是在抱怨自己不懂的东西。

6、逃避现实


白日梦患者

逃避现实的人有5个特征。

1.经常做白日梦——逃避现实者更愿意营造一个属于自己的小世界。

2.喜欢随心所欲,无拘无束的生活——说白了就是向往游手好闲的生活。

3.沉迷游戏或是魔幻小说——它们可以引领你走进那个神奇浩繁的世界,让你逃避日常现实生活。

4.觉得现实世界很残酷——这是逃避现实者的常见特征,在追寻白日梦的时候常常会遭受来自现实生活的打击。

5.无法面对不确定环境——因为在你营造的白日梦里,你才能找到确定感和安全感。

人的悲剧在于眼高手低。大多数人激动时佛挡杀佛,幻想中睥睨天下,日常生活中却没法鼓起勇气和每个周末早上都要拿电钻钻墙的邻居很好谈一谈。

7、总找借口

错不在我。

人一旦犯了错,第一反应常常是自我辩护。

我回忆了三十几年来认识的喜欢找借口的人,发现他们都有一个共同的特点:没有强烈的事业心,没有执着的追求,人生没有一个坚定的信念。

所以,遇到压力、遇到困难,他们就不承担,也不想承担;遇到风险、遇到挑战,就退缩。

不承担,要退缩,就迫使他们找借口。因为找借口是最容易办到的事情,这是掩饰自己无知的方法,然后从中寻找自我安慰。

8、恐惧

谨小慎微的懦弱。

他们在工作中总有这样的感受:害怕被领导批评、害怕别人觉得自己无能、害怕被别人知道自己的缺点、在意他人的评价、害怕犯错、害怕自己的付出得不到回报。

我想起一句话:我不敢下苦功琢磨自己,怕终于知道自己并非珠玉;然而心中又存着一丝希冀,便又不肯甘心与瓦砾为伍。

其实就是心智的弱小,不愿意面对挫折感。

王朔曾经跟他女儿说:“煲汤比写诗重要,自己的手艺比男人重要,头发和胸和腰和屁股比脸蛋重要,内心强大到混蛋比什么都重要。”

9、拒绝学习

你不是寂寞,只是不想学习。

学习需要费脑子,自我成长需要不断和自己作斗争,多痛苦啊!

还不如舒舒服服躺在家玩手机看电影,然后等看到同龄人薪资比你高、生活过的比你好时,你又在朋友圈感叹时运不济。

“我从未见过,每天从早忙到玩,拖着疲惫身子回家的人空虚寂寞冷。”

大多数人的空虚寂寞冷,基本上都是吃饱了没事干闲的。



五、没有不委屈的工作(深度好文)


图:奥巴马雨中演讲

甲骨文台湾区前总经理李绍唐说:“被骂是一种能力。”是的,不管你想不想接受,现实环境就是如此。面对委屈时,你真的不需要太在意旁人的眼光,只要记得,永远对自己负责。
“胸怀是委屈撑大的。”人生在世,注定要受许多委屈,面对各种委屈时,在学会一笑置之,超然待之的同时,更重要的是要学会转化势能。

没有一种工作是不委屈的

最近有刚毕业的小孩子问我,说你能不能告诉我:

  • 刚进职场的时候遇上工作上的难处了怎么办?

  • 还有就是从校园过渡到职业人的心态该怎么调整?

  • 另外就是刚刚开始工作的时候收入不高,该怎么解决生存的问题?

这一刻我看见朋友圈里有人发了一条状态,说十年后你回头看今天这一刻,自己所遭遇的一切,那都不叫事,真的。

然后我给他回复说,哪里需要十年?

一年的光景,就足够让你感觉千山万水物是人非了。


1、经历艰难,记住美好


最近跟一些老同学聊天,说起刚进职场第一年的感觉,想着那个时候自己去餐厅吃饭也得先看看菜单的价位到底是个什么水平,有个男生说自己那一年连续一个月都在楼下的快餐店点一份麻婆豆腐,这样可以既下饭又省钱。

或许你以为我要说的是一个逆袭的故事,可是我要说的如今这个状态是,这个男生如今依旧不是花钱大手大脚的人。

他已经积攒了几年的工作经验跟人脉,如今遇上了很好的投资人开始自己创业了,只是如今的他每次请我们吃饭的时候,已经不是需要像当年那样斤斤计较菜价的那男孩了,也就是说,他心里不慌了。

回到前面那个刚毕业的小孩问我的问题,我本来一开始的回答是想告诉他,说你得熬,熬过去就好了。

用我闺蜜的话来说,只要你没死掉,那就一定能过上好的生活,我还想用尼采那一句「那些没有消灭你的东西,会使你变得更强壮」来安慰这个小孩。

但是想了一会,我就删掉了这刚打出来的一排字,然后我敲出了另外几个字回复他:没有一种工作是不委屈的。

这句话不是我说的,是很多年前我看《艺术人生》里有一期采访了我最喜欢的奶茶刘若英,朱军问她,为什么你总能给人一种温和淡定,不急不躁的感觉,难道你生活中遇上难题的时候你不会很气急败坏吗?

刘若英的回答就是,那是因为我知道,没有一种工作是不委屈的。

很多人都知道,刘若英在出道前曾经是她师父,就是著名音乐人陈升的助理。刘若英在唱片公司里几乎什么都要做,甚至要洗厕所,她跟另外一个助理两人一周洗厕所的的分工是一三五和二四六,这另一个助理的名字叫金城武。

往事回忆的意义在于,总是会让人记住的是美好那一部分,至于其中的艰难也总会被岁月所弱化。

这也是我跟很多长辈请教他们过去经历的时候,他们对于那些过往的苦与难大多时候都是一笑而过,因为他们自己也不知道是怎么过来的了。

所以回到如今现实中的问题,作为一个非职场新鲜人,我能想起来的这三四年的工作感受也是美好多于不快乐的部分。但是这个过程中我自己感悟到的的一件事情就是,我以前总以为熬过这一段时光就会好起来了,这种观点有可能是错误的。

一是没有人能给出一个答案,所谓好起来的生活是什么样的?

二是这个熬过去的日子里,很多时候只是我们当下觉得困难重重,殊不知其实你所经历的,也正是大部分人正在经历的一切。

当然那些极端个别的案例我不想拿来论证这个事情。


2、你能展现的只有行动和态度


刚进职场的时候,我们要学习基本的职场规则,要尽快熟悉自己工作岗位上的必要技能,我敢说我们大学里学的那些东西,基本上到了工作环境的时候九成是用不上的。

这个时候一个人的学习能力跟领悟力就是最大的竞争力,当然除此之外,更多的是我们心态上的调节,这件事情小到我该不该跟隔壁的同事打一声招呼,大到比如直系领导给我安排的事情跟公司的流程规则有冲突,这个时候我该怎么办?

你有没有发现,这个时候你就像一个黑暗中独自摸索的孩子,没有家人,没有老师,没有师兄师姐可以问,周围一群陌生人漫无表情的穿梭于办公室里的走廊过道上,就像电影里的快镜头,你身后的景象千变万化飞速流转,你自己一个人孤独的停留在原地。

我自己本身是个慢热的人,加上性格内向,所以职场第一年里我的状态就是很恍惚的,这种状态就是,我自己会经常在座位上边干活边发呆,这时候周围的同事或者领导喊我的时候,我总是会很久才反应过来,然后「哦」一声,这个时候领导已经走远了。

我赶紧问身边的同事求助,问刚领导说了个什么事情,接下来于是赶紧各种处理,但是因为同事很多时候传达得不够准确,很多细节问题没有交代清楚,我不能去问领导,因为我刚刚回答的态度是我已经知道该怎么做这件事情了,于是我就懵里懵懂的把事情做完,结果想也知道,肯定是各种退回来反复修改的。

也是因为这样,很长一段时间内我差点得了抑郁症,因为觉得自己怎么做都不对,方案交上去领导没有回话,PPT演示完了同事们的表情就是没有表情,做分享会的时候想把气氛弄得活泼一点,但是不知道怎么把握一个度……就是这种没有人给你反馈的状态,让我觉得自己是被冷落了。

几年后我自己才慢慢摸索明白一点,作为一个职场新人,别人都是在静悄悄中观察你的所作所为的。

你没有多少经验谈资,所以他们看到只是你的个性表现跟基本的职业态度。

而你表现出彩的那部分,即使他们欣赏你但是也不会表现出极其热情欢喜的样子,他们不是你的父母也不是恩师,他们没有必要鼓励你。

当然从另一面来说,他们也不会因为你做的不对而用力批评你,这种不悲不喜的状态,或者就是所谓的职业成熟人吧。

所以就是因为这种看似不被认可的状态,你会感觉自己一直做得不好,而且也不知道怎么才是对的。还有就是,要只是坐在座位上干活也就算了,很多时候你是需要跟各种同事打交道的。

他们没有好坏之分,他们只有跟你的磁场合与不合的感知,于是你觉得有时候很小的事情沟通起来很是吃力,哪怕就是申请个印章,哪怕就是填一个流程审批表,一步步关卡让你觉得就像冒险游戏一样,只是这一场游戏里没有刺激好玩的那一部分,只剩下闯关的寸步难行了。


3、每个人都在熬,但你要主动学


也是几年后我才明白这一点,那些你看上去吃力的部分,其实恰好就是维持职场有序进行的准则所在。

正是这些你当年看起来死板麻烦、密密麻麻的种种规章制度,才是一个新鲜职业人学习到东西最快的教材,因为这些准则都是一年年完善补充过来的,你熟悉的越多,适应得越快,你的焦虑感就更减少的多一些。

很久以前我一直也都告诉自己,说熬过了这一段时间就好了,但是我慢慢发现「熬」这个字已经不能带给我力量了。

我渐渐意识到,当我职业上开始有积累,我期待自己可以管理一个团队,接一个好的项目,这个过程中必然就涉及到很多我以前没有接触过的部分。

比如如何架构团队任务,如何跟其他部门的同事打交道,比如说要预估项目能否按时完成的风险,这些种种比起以前那些刚进职场的小委屈,不知道要复杂多了。

而我也开始知道,那个坐在我对面办公室里的领导,他每天需要考虑整个部门的协调状况,那个每天早出晚归的CEO,他需要跟投资人说服各种前景跟趋势,他还需要面对各种错综的媒体关系外加各种其他跟我国有关部门的打交道。

那个在这一秒里的大爷,或许就是下一秒里别人面前的孙子罢了。


4、创业比工作更委屈


我身边最近多了很多出来创业的朋友,以前我觉得这是一件很牛逼的事情,但是时间长了我也开始辩证的看待这些事情。

那些有想法有思路有策略的创业者,大部分都是不慌不忙一步一步慢慢完善。

而另一部分人,纯粹就是为了那一句所谓的「再也不在公司里干的比狗还累了」就跑出来了,结果自己组建团队的时候发现不是几百个难处,而是没有终点的难处。

因为你早上醒来的第一件事情已经不光是要养活你自己,而且还有你手下的一批人。

于是那些他们以为自己曾经向往的「自己当老板多自由」的想法,瞬间就没有了,这个世上哪有什么绝对的自由,不过是脚上戴着拷链跳舞的表演者罢了。

我在一个创业论坛上认识了一个北京的创业者,他的朋友圈状态每天都是一边给自己打鸡血一边想执行方案,有一天夜里我看见他还在加班,于是我问他一句,你这么辛苦,值得吗?

他的回答是,我一开始就知道,作为一个创业者,你既要有叱咤风云高瞻远瞩的格局跟视野,你也得有一个能弯下腰当宜家搬运工装修办公桌椅,以及种种类似清扫垃圾的农民工心态,否则你就不要来谈创业了。

他还告诉我,无论你是一个创业者还是职业人。

你会发现每个阶段都有对应的难题,每个角色都会有对应的难题。

这个世界不会因为你是一个打工的,就让你的苦多一些,也不会等你成为一个老板的时候,你的牛逼就会多一些,那些纳斯达克敲钟背后的重重苦逼,是媒体包装出来的幻象里永远不会写出来的。

嗯,在我的判断原则里,他就属于那一类理智型的创业者,这种人即使在创业路上走不下去了,角色换成一个职业人,他也不会是糟糕到哪里去的人。


5、都在为更好的生活坚持着


我每隔一段时间就会跟我的闺蜜去美容店做按摩,每次到了那样的场合其实我有很多的不适应,因为我发现有些顾客总是对服务员呵斥来呵斥去的,我觉得很是不解。

闺蜜跟我解释说这是因为他们在自己的工作上各种受气很多压力,来到这里就是为了放松的,觉得自己在这里就是大爷了,于是对服务员稍稍不满意就各种大声叫嚣了。

说起来我是个很怂的人,每次去按摩的时候,那些看上去比我年纪还小的姑娘每每问我力度够不够,我基本上都会说可以了。

当她们小心翼翼的试探能不能跟我聊上天的时候,我总是第一时间想办法打开话匣子不让她们尴尬,无非就是聊聊新闻聊聊老家那些事,这些也都是我愿意说说的。

我跟我的闺蜜说,我们不能像那些顾客一样态度这么恶劣,我们就是从职场新人过来的,我们知道每一份工作的难处与不容易,就像我们去餐厅吃饭上菜慢了一些,催一催也就算了,没必要小题大做。

我们改变不了别人,但至少我们可以在自己身上把持好基本的礼仪这一关就好。

有一次一个按摩的姑娘告诉我,说下个月就要回老家不做了,我于是问她为什么,她说自己弟弟去年刚考上大学需要帮交学费,自己没什么学历只能出来做这一份工作,现在老家的经济好一点了,所以就不想在这里上夜班这么辛苦了。

后来我渐渐发现,每隔一段时间我去到这一家美容店,按摩的姑娘们都会换一批新的面孔。

于是我开始明白,她们跟我一样,也是慢慢从新人过渡到成熟人,解决了基本的生存问题后,再去寻找更好的出路,于是又一批新人进来,如此循环。


6、不奢求极致,只需慢慢变好


我一直觉得这个世上从来就不会有极度逆袭的事情,那些我们所听到的的从屌丝一个翻身变土豪的事情,大部分是因为媒体的夸大化了。

在我所认识的人儿里,那个当年请我们吃饭也要看看菜单价钱的男同学,即使如今已经开始创业了,他也依旧是张弛有度的用好每一分钱;那个我在旅行路上认识的,手上已经十几个项目的投资人大叔,他也需要谦逊耐心的在自己的那个圈子里运营更大的一盘棋局。

没有谁比谁轻松如意,不过是用着自己的努力,把自己当下这一个难题干掉,不过是在错误中积攒经验,让自己下一次的决定多一点胜算罢了。

这三四年的时光下来,我依旧挣扎在职场中,依旧挣扎在生存线上,我不会告诉自己「过了这一段就好了」。

如今我会告诉自己的就是,若人生真需要有这一段路要走,我宁可这些委屈分摊到每一个日日夜夜,这样哪怕有一天我真的取得了那么一点点成功,也不至于喜出望外得意忘形,因为我知道这本来就是长时间一段努力顺其自然而来的结果罢了。

当然如果这条路上如果有人与你同心,那么这份委屈可能会变得少一些淡一些,就像我喜欢的一个大叔昨晚朋友圈里说的那一句,和高人聊天,最大的收获不是获得了什么秘诀,而是知道哪些弯路可以避开。

同样的道理,这些过来人,以及或许我有一丁点资格作为另外一波人的过来人身份,我所能告诉你们的就是,没有一种工作是不委屈的


明白了这一点,或许我们对所谓「会好起来的」期盼不再是一种极致追求,要马上呈现物化的东西,而是一种潜移默化的进步跟慢慢变好。

毕竟,无论在什么样的岁数里,成长这件事情,都是我们灵魂里一辈子的课题。


六、《一直以来伴随我的一些学习习惯》刘未鹏

Part1:学习与思考

1、看书挑剔,只看经典。

2、做读书笔记。一是将自己阅读的时候的思考(包括闪念)总结下来,二是将书中的好例子摘抄下来。(这个习惯是一年前才养成的,发现受益极大。)有了google note,笔记可以加上tag,非常便于回顾,加深理解。我觉得,人与人学习的差距不在资质上,而在花在思考的时间和思考的深度上(后两者常常也是相关的)。

3、提到思考,我有一个小习惯。利用走路和吃饭的时候思考,还有睡觉前必然要弄一个问题放在脑子里面,在思考中迷糊入睡。发现这样一来往往在不知不觉中多出来大量的思考时间。

4、重要的事情优先,尽量避免琐事骚扰,不重要的事情能不做就不做。

5、重要的事情营造比较大的时间块来完成。比如一本好书,或者一个重要的知识点,最好不要切得太琐碎了看,否则看了后面忘了前面。不利于知识的组织&联系。

6、多看心理学与思维的书,因为它们是跨学科的。知识分两种,一是我们通常所谓的知识,即领域知识。二是关于我们的大脑吸收知识的机制的知识,后者不妨称为元知识。虽说这也是领域知识,但跟其它的领域知识不同的是,它指导着我们学习其它所有的领域知识。

7、学习一项知识,必须问自己三个重要问题:1. 它的本质是什么。2. 它的第一原则是什么。3. 它的知识结构是怎样的。

8、获得的多少并不取决于读了多少,而取决于思考了多少、多深。

9、善于利用小块时间,也就是《奇特的一生》中所说的“时间下脚料”,如何利用前面有几个方法。同时,也善于创造整块时间(如通过要事优先)。

10、关于习惯的养成。有一个认知技巧也许可以缓解更改习惯过程中的不适:即把居住在内心的那个非理性自我当成你自己的孩子(你要去培养他),或者你的对手(你要去打败他)也行。总之不能当成自己,因为每个人都不想改变自己。


Part2:时间管理

1、学习和思考的过程中常问自己的几个问题: 你的问题到底是什么?(提醒自己思考不要偏离问题。) OK,到现在为止,我到底有了什么收获呢?(提醒自己时不时去总结,整理学习的东西)。 设想自己正在将东西讲给别人听(有声思考;能否讲出来是判断是否真正理解的最佳办法)。 设想需要讲给一个不懂的人听。(迫使自己去挖掘知识背后最本质、往往也是最简单的解释)。 时常反省和注意自己的思维过程。尤其是当遇到无法理解或解决的问题之后,最需要将原先的思维过程回顾一遍,看看到底哪个环节被阻塞住了妨碍了理解。问题到底出在哪里。并分析以后需要加强哪方面的思维习惯,才能够不在同样或类似的时候被绊住。对此,将思维的大致脉络写下来是一个很好的习惯。 养成反驳自己的想法的习惯:在有一个想法的时候,习惯性地去反驳它,问自己“这个难道就一定成立吗?”、“有没有反例或例外?”、“果真如此吗?”之类的问题。(参见Critical Thinking) 人的思维天生就是极易流于表面来理解事物的(参见《Psychology of Problem Solving》第11章)。觉得自己理解了一个问题了么?条件反射性地问自己:你真的理解了吗?你真的理解了问题的本质了?问题的本质到底是什么?目前我的理解是什么?我对这个理解感到满意吗?这样的理解到底有什么建设性呢?等等。

2、重视知识的本质:对于程序员来说这一点尤其重要,程序员行业的知识芜杂海量,而且总是在增长变化。很多人感叹跟不上新技术。应对这个问题的办法只能是:抓住不变量。大量的新技术其实只是一层皮,背后的支撑技术其实都是十来年不变的东西。底层知识永远都不过时。算法数据结构永远都不过时。基本的程序设计理论永远都不过时。良好的编码习惯永远都不过时。分析问题和解决问题的能力永远都不过时。强大的学习能力和旺盛的求知欲永远都不过时。你大脑的思维方式永远都不过时。

3、重视积累的强大力量,万事提前准备:计划订长一点,自然就可以多获得准备的时间。设想你若干年后会在做什么事情,需要哪些技能,现在就开始准备。一个5年计划便可以让你获得从现在开始的5年准备时间。5年中每天腾出半个到一个小时专心于某一件事情,认准一个方向,每次走一点,其实不要说5年,两年就会发现会起到宏大的效应。长期订阅我的Blog的朋友们也一定注意到我基本上不写东西,一般一个月写上2篇就算多的了。但总结一段时间的学习和思考的习惯却一直都没有停止(博客文章对我来说是学习和思考的副产品,我并不为写文章而写文章),所以5年下来竟也写了不少东西。所以这就是一个简单的例子。你大致还可以从我的Blog看出来我一段时间关注的东西,一般来说,一段比较长的时间(少则半年至一年——譬如对心理学与思维的关注;多则几年——譬如对编程技术的关注),在这段时间内,我的业余时间会被一个主题所充斥。反之,如果不知道目的是什么,就不知道往哪个方向上使劲,就容易产生无用功。

4、抬起头来:人的思维是非常容易只见树木不见森林的(否则这个成语从哪来的呢?)。时不时抬起头来审视一下自己正在做的事情,问一问它(对现在或未来)有什么价值,是不是你真正希望做的。你学到的东西到底是什么?它们重要吗?你需要在这个时候学习这些吗?(见第2条)。你的时间就是你的资源,你投入这些资源来掌握知识,所以到底用来掌握哪些知识是一个很重要的问题。仅仅遵循兴趣是不够的,人会对很多次要的东西产生兴趣,并一头钻进去浪费好多时间。所以判断一个东西值不值得学习是很重要的。


Part3:阅读方法

1、趁着对一件事情有热情的时候,一股脑儿把万事开头那个最难的阶段熬过去。万事开头难,因为从不了解到了解基本的一些事实,是一个新知识暴涨的阶段,这个时候的困难是最大的。有人熬不过去,觉得困难太大就放弃了。不过,狂热的兴趣可以抵消对困难的感觉,所以趁着对一件事情有热情的时候,开一个好头是很重要的。(当然,这并不是说持之以恒就不重要了)。当然,也许这个是因人而异的,对我来说我会在对一件事情有浓厚兴趣的时候非常专注地学习,把很多 groundworks 做掉。后面就会顺利一些了。

2、根据主题来查阅资料,而不是根据资料来查阅主题。以前读书的时候是一本一本的读,眼里看到的是一本一本的书,现在则是一章、甚至一节一节的读,眼中看到的不是一本一本的书,而是一堆一堆的章节,一个一个的知识主题,按照主题来阅读,你会发现读的时候不再是老老实实地一本书看完看另一本,而是非常频繁地从一本书跳到另一本书,从一处资料跳到另一处资料,从而来获得多个不同的人对同一个主题是如何讲解的。比如最近我发现在看蒙特卡罗算法时就查了十来处资料,其中有三四篇 paper 和六七本书;这是因为即便是经典的书,你也不能指望它对其中每一个主题的介绍都是尽善尽美的,有些书对某个主题(知识点)的介绍比较到位,有些书则对另一些知识点介绍得比较到位。而有时候一篇紧凑的 paper 比一本书上讲得还要好。我硬盘里面的书按主题分类,每个主题下面都有一堆书,当我需要学习某个主题的知识时(譬如贝叶斯学习或者神经网络),我会把里面涉及这个主题的书都翻开来,索引到相关章节,然后挑讲得好的看。那么,如何判断一个资料是好资料还是坏资料呢?

3、 好资料,坏资料。好资料的特点:从问题出发;重点介绍方法背后的理念( rationale ),注重直观解释,而不是方法的技术细节;按照方法被发明的时间流程来介绍(先是遇到了什么什么问题,然后怎样分析,推理,最后发现目前所使用的方法)。坏资料的特点是好资料的反面:上来就讲方法细节,仿佛某方法是从天上掉下来的,他们往往这样写“我们定义… 我们称… 我们进行以下几个步骤… ”。根本不讲为什么要用这个方法,人们最初是因为面对什么问题才想到这个方法的,其间又是怎样才想出了这么个方法的,方法背后的直观思想又是什么。实际上一个方法如果将其最终最简洁的形式直接表达出来往往丢失掉了绝大多数信息,这个丢掉的信息就是问题解决背后的思维过程。至于为什么大多数书做不到这一点,我在这里试着分析过。

4、学习一个东西之前,首先在大脑中积累充分的“疑惑感”。即弄清面临的问题到底是什么,在浏览方法本身之前,最好先使劲问问自己能想到什么方法。一个公认的事实是,你对问题的疑惑越大,在之前做的自己的思考越多,当看到解答之后印象就越深刻。记得大学里面的课本总是瀑布式地把整个知识结构一览无余地放在面前,读的过程倒是挺爽,连连点头,读完了很快又忘掉了,为什么?因为没有带着疑问去学习。

5、有选择地阅读。很多人觉得我读书速度很快,其实我只是有选择地阅读。这里的选择体现在两个地方,一是选择一本书中感兴趣的章节优先阅读。二是对一本书中技术性较弱或信息密度较低的部分快速地略读。一般来说,除了技术性非常强的书之外,大多数书的信息密度很低,有很多废话。一般来说在阅读的时候应该这样来切分内容:1. 问题是什么?2. 方案是什么?3. 例子是什么?如果是需要解释一个现象的(譬如《黑天鹅》),那么1. 现象是什么?2. 解释是什么?3. 支撑这个解释的理由是什么?4. 例子是什么?一般来说,这一二三四用不了多少字就可以写完了(如果假设只举一到两个精到的例子的话),这样的无废话著作的典型是《合作的进化》;那为什么有些书,明明核心观点就那点东西(顶多加上几个精要的例子罢了)却写得长得要命呢?因为人的思维都有一个“联想”的特点,写着写着就容易旁逸斜出,而且作者自己也往往觉得引申出去挺牛逼,有时候很多与主题无关的废话就掺和进来了;那么,阅读的时候就应该有选择性地滤掉这些不相干的废话;此外还有一种可能性就是大量冗余的例子。一般来说组织得比较好的书会有详细且一目了然的目录和索引,根据目录首先就可以滤掉一部分(比如某个子章节的内容你以前是看过的),然后有时候作者还会举很多冗余的例子,如果你已经觉得印象够深刻了这些例子完全可以不看(一些书就非常厚道地对每个观点只辅以一两个最最经典的例子,譬如《与众不同的心理学——如何正视心理学》,这样的书我最是喜欢)。

6、为什么看不懂?如果看不懂一个知识,一般有如下几个可能的原因:1. 你看得不够使劲。对此古人总结过——书读百遍其义自现。虽然这个规律不是任何时候都成立的,但是从认知科学的角度看是完全可以解释的,我们在阅读的时候,注意力往往会有选择性地关注其中的某一些“点”,而忽略了另一些“点”,于是一遍看下来可能因为某一些忽略导致无法理解整体。或者干脆看的时候就没注意其中一些细节但重要的东西。此外,大脑理解一个东西需要一定的处理时间,人脑的处理速度很慢,神经冲动每秒传输速度不过百米,所以不能指望看到哪懂到哪。最后,我们可能因为思维定势的原因会从某个特定的角度去看一句话而忽略了从不同角度去理解的可能性。对于这类情况,仔仔细细地再多读两遍,多试着去理解两遍,往往会“哦!原来这样。”地恍然大悟。2. 其中涉及到了你不懂的概念。这是技术性的不理解。这种情况就需要 Cross Reference 。如果一句话中用到了你不懂的概念,那就去查,现在很多书都是电子书,直接搜索一下,或者,对于纸书,看一下书后面的索引就行了。奇怪的是很多人看不懂也不分析一下为什么不懂,就直接放弃了。正如解决问题一样,问题卡住解决不了,第一时间要做的就是分析到底为什么解决不了,而不是直接求救。3. 作者讲述的顺序不对,你接着往下看,也许看到后面就明白了前面的了。

7、如何在阅读之前就能获得对一本书质量的大致评估。在深入阅读之前能够迅速评估一本书的质量可以节省很多时间。基本上有几个线索:1. 看作者。牛作者写的书一般都不错。2. 看目录和简介。一份好的目录和简介能够透露这本书质量的相当一部分信息。目录结构是否清晰,是否直白(而不是装神弄鬼),都是衡量的线索。3. 看 Amazon 上的评价,这里要注意的是,除了看整体打分之外,更要看打分最低的人是怎么说的,因为小众意见往往有可能来自那些真正懂行的人(除了来踢馆的),如果在打分最低的意见里面看不到真正有价值的反驳意见的话就相当肯定书是不错的了。4. 看样章。Amazon 上一般都可以随机浏览一些章节的,表达是否清晰,论证是否严谨,内容是否深刻,基本是几页纸就能看出来的。

8、如何搜寻到好书。几个线索:1. 同作者的著作。2. Amazon 相关推荐和主题相关的书列(类似豆瓣的豆列)。3. 一本好的著作(或一份好的资料——不管是书还是网页)在参考资料里面重点提到的其他著作。4. 有时对于一个主题,可以搜索到好心人总结的参考资源导引,那是最好不过的。


Part4:杂项

1、有时间吗?总结总结最近得到的新知识吧。一般来说,我在一段时间内学习的一些东西总是会在这段时间内一直在脑子里打转,一有时间空隙(譬如走路,吃饭)它们就会自己蹦出来,促使我去进一步思考和总结。永远不要认为对一个知识的把握足够深刻,“理解”的感觉很多时候只是假象。学会反问自己对知识到底把握了多少,是很有价值的。(如何反问,前面的总结中有提到)。

2、有时间吗?看本书吧。(传统的)阅读和思考永远优于所谓的在互联网上汲取新知识,后者往往浅表、不系统、乃至根本没价值。

3、 制定简要的阅读计划:选出最近认为对你最有价值的书,先总览一下,决定阅读的顺序(哪些章节可以优先阅读)。然后每天看一点。并利用走路、吃饭、乘车或其他不适合带着书和笔的时间来总结看过的内容,建立知识结构,抽取知识本质,与以往的大脑中的知识建立联系。(参见《奇特的一生》)

Part4:

抓住不变量我喜欢把知识分为essential的和non-essential的。对于前者采取提前深入掌握牢靠的办法,对于后者采取待用到的时刻RTM (Read the manual)方法(用本)。

如何区分essential和non-essential的知识想必绝大多数时候大家心里都有数,我举几个例子:对程序员来说,硬件体系结构是essential的,操作系统的一些重要的实现机制是essential的,主流编程范式(OO、FP)是为了满足什么需求出现的(出现是为了解决什么问题),是怎么解决的,自身又引入了哪些新的问题,从而适用哪些场景)。这些我认为都是essential的。我想补充一点的是,并不是说硬件体系结构就要了解到逻辑门、晶体管层面才行(其实要了解到这个层面代价也很小,一两本好书就行了),也并不是说就要通读《Computer Architecture: Quantitative Approach》才行。而是关键要了解那些重要的思想(很长时间不变的东西),而不是很细的技术细节(易变的东西)。《Computer Systems: A Programmer’s Perspective》就是为此目的,针对程序员的需求总结出那些essential knowledge的好书。

再来说一下为什么需要预先牢靠掌握这些essential的知识:根据Joel Spolsky同学的说法(原文),编程语言技术是对底层设备的封装,然而封装总是会出现漏洞的,于是程序员被迫下到“下水道”当中去解决问题,一旦往下走,漂亮的OO、N层抽象就不复存在了,这时候不具备坚硬的底层知识就会无法解决问题。简而言之就是这些底层知识会无可避免的需要用到,既然肯定会被用到那还是预先掌握的好,否则一来用到的时候再查是来不及的,因为essential的知识也往往正是那些需要较长时间消化掌握的东西,不像Ruby的mixin或closure这种翻一下manual就能掌握的东西。(英语也是这样的essential knowledge——上次在PyCN上看到一个招Python开发人员的帖子将英语列为必备技能,却并不将自然语言处理列为必备技能,正是因为英语不是可以临阵磨枪的东西,而且作为知识的主要载体,任何时候都少不了它,如果不具备英语能力,这个就会成为个人知识结构的短板或瓶颈,而且由于需要长时间才能获得这项能力,所以这个瓶颈将持续很长时间存在。我们曾经在 TopLanguage 上讨论过如何花最少的时间掌握英语)另一方面,在问题解决当中,如果不具备必要的知识,是根本无从思考的,再好的分析能力也并不是每个问题都能分析出该用哪些知识然后再去查手册的,很多时候是在工具和问题之间比较,联想,试探性的拼凑来解决问题;这就使得一个好的既有知识基变得至关重要。(实际上以上这个是一个较大的话题,希望有一天我能够把它详细展开说清:))

如果你不知道某个工具的存在,遇到问题的时候是很难想到需要使用这么样一个工具的,essential knowldge就是使用最为广泛的工具,编程当中遇到某些问题之后,如果缺乏底层知识,你甚至都不知道需要去补充哪些底层知识才能解决这个问题。

你必须首先熟悉你的工具,才能有效地使用它(须知工具的强是无敌的,但这一切得以“了解你的工具”为前提,甚至得以“了解目前可能有哪些工具适合你的问题”为前提)。一门语言,你必须了解它的适用场景,不适用场景(比如继承能解决你的问题不代表继承就是解决你的问题的最适合的方案,须知问题是一个复杂系统,解决方案总是常常引入新的问题)。你必须了解它支持的主要编程范式,此外你还必须了解它的traps和pitfalls(缺陷和陷阱,如果不知道陷阱的存在,掉进去也不知道怎么掉的。)这些都是essential knowledge,如果不事先掌握,指望用的时候查manual,是很浪费时间的,而且正如第2点所说,正因为你不知道这些知识(如适用场景),从而用sub-optimal的方式使用了一门语言自己可能还不知道(最小白的例子是,如果你不知道语言支持foreach,那么可能每次都要写一个冗长的循环,较常见的例子是不知道有很方便的库设施可以解决手头的问题所以傻乎乎的自己写了一堆代码),因为人的评价标准常常是:只要解决了最醒目的问题并且引入的新问题尚能忍受,就行。注意,熟悉并非指熟悉所有细节,而是那些重要的,或者无法在需要用到的时候按需查找的知识。比如上面提到的:适用场景不适用场景,编程范式,主要语言特性,缺陷和陷阱。

当然,以上作为程序员的essential knowledge列表并不完备,关键是自己在学习新知识的时候带着第三只眼来敏锐地判断这个知识是否是不变量,或不易变的量,是否完全可以在用的时候查手册即可,还是需要提前掌握(一些判断方法在上文也有所提及)。并且学会在纷繁的知识中抽象出那些重要的,本质的,不变的东西。我在之前的part里面也提到我在学习新知识的时候常常问自己三个问题:该知识的(体系或层次)结构是什么、本质是什么、第一原则是什么。

另外还有一些我认为是essential knowledge的例子:分析问题解决问题的思维方法(这个东西很难读一两本书就掌握,需要很长时间的锻炼和反思)、判断与决策的方法(生活中需要进行判断与决策的地方远远多于我们的想象),波普尔曾经说过:All Life is Problem-Solving。而判断与决策又是其中最常见的一类Problem Solving。尽管生活中面临重大决策的时候并不多,但另一方面我们时时刻刻都在进行最重大的决策:如:决定自己的日常时间到底投入到什么地方去。如:你能想象有人宁可天天花时间剪报纸上的优惠券,却对于房价的1%的优惠无动于衷吗?(《别做正常的傻瓜》、《Predictably Irrational》)如:你知道为什么当手头股票的股价不可抑止地滑向深渊时我们却一边揪着头发一边愣是不肯撤出吗?(是的,我们适应远古时代的心理机制根本不适应金融市场。)糟糕的判断与决策令我们的生活变得糟糕,这还不是最关键的,最关键的是我们从来不会去质疑自己的判断,而是总是能“找到”其他为自己辩护的理由(《错不在我(Mistakes were made, but not by me)》)又,现在是一个信息泛滥的时代,于是另一个问题也出现:如何在海洋中有效筛选好的信息,以及避免被不好的信息左右我们的大脑(Critical Thinking)关于以上提到的几点我在豆瓣上有一个专门的豆列(“学会思考”),希望有一天我能够积累出足够多的认识对这个主题展开一些详细介绍。

最后分享一个学习小Tip:学习一个小领域的时候,时时把“最终能够写出一篇漂亮的Survey”放在大脑中提醒自己,就能有助于在阅读和实践的时候有意无意地整理知识的结构、本质和重点,经过整理之后的知识理解更深刻,更不容易忘记,更容易被提取。


七、什么是真正的程序员:小 printf 的故事

// 提醒:本文较长,分 11 个小故事


第 0 章

我出生在电子游戏和电脑泛滥年代之前。所以我还算幸运,有足够的时间和我哥,还有小伙伴们一起做户外运动,还发明我们自己的游戏。

我们自己扮演英雄,拿着一根树枝,我们就能瞬间把它想象成弓、剑、枪,甚至是望远镜,当然也可以是任何其他东西。哦,对了,唯一的例外就是你不能把它想象成回旋镖,因为真的回旋镖扔出去是会自己飞回来的,但是树枝扔出去了,你要自己去捡回来。

后来我们就长大了,再这么玩就有些尴尬了。要知道,在孩子们开始觉得大人的世界很精彩的阶段,你要是再玩那些把松果想象成魔法手榴弹的游戏,这就很不合群了。迟早你要面对成长的烦恼。不过,能有一个完整的童年还是很幸运。

后来我就开始学会玩电子游戏了,当然也开始使用电脑。电子游戏的世界可绝对是你梦寐以求的世界,因为它能把你想象中的东西在你面前实现出来。玩游戏很消耗时间,但是它绝对会让你体验到不同的人生。

不过对于电子游戏来说,有一个特点:那就是你不负责创造,你只负责响应和付出时间。我长到青少年的岁数,还当过即兴表演的演员。所以说,无论是与人相处,还是装作旁若无人,这对我都不是问题。

当然,在魁北克做即兴表演还是有点儿不同寻常,因为我们是在溜冰场地上表演——你知道冰球在加拿大多火吗。

后来我去了职业学校学习多媒体,大概是 2005 年到 2008 年这个时段,我终究还是要做些编程的事情。不过我发现编程是个有意思的事情!我又感觉到了创造性!并且我还能靠这个赚钱!于是我设计了我的第一套游戏,这可让我受益匪浅。

不过后来又有人告诉我:“你做的并不是真正的电子游戏。你做的只是一个 HTML 表单。而且你做的时候应该用数组来表示文字和选项,这样效果会更好。你写的代码应该更整洁一些。”

我对这个评价觉得有点儿沮丧。我做的这个游戏是一个基于文字的游戏,文字大概有 11 页,通过选择来“进行你的冒险”。不过我意识到,如果想让大家对我做的东西更加满意,我还有很多东西要学。

我应该学一些“真正的编程知识”。于是我从基于JScript 的 GUI 工具跳到了一些更牛的东西上面,例如 PHP。我学了 PHP,同时也学了 JavaScript。可是后来,我听说这些还是不行,我还得学一些“真正的编程知识”。别人跟我说,PHP 不行,我应该学的是 Python,当然后来我真的去学了。

不过“真正的程序员”还会一些更时髦的东西,Python 的 Lambda 可到不了那个逼格,而且面向对象编程模式简直就是弱爆了。人家告诉我说,我应该去读一读 SICP,毕竟这是计算机科学的圣经嘛。

然后我就接触了 Scheme。我还买了 Brian Kernighan 和 Dennis Ritchie 合写的《The C Programming Language》,因为真正的程序员就是要用 C 语言写程序的嘛。我还在本地大学报了一个业余班去上课,同时我还得去上班,因为真正的程序员都是很懂数学和算法的嘛,所以我也得学。我开始读论文,看书,因为真正的程序员在算法这件事情上肯定是与时俱进的啊。

后来,我学了 Erlang 语言,而且还靠这门语言找了份工作。我写了一本 Erlang 的书。不过有意思的是,从来没人问过我是不是这本书的作者?我还有没有写其他的书?或者书里的图是不是我画的?好吧,我找到了一份教 Erlang 语言的工作,但是却从来没有在生产环境中用过这门语言。

第 1 章

我就这样一直在全世界飞来飞去,教给别人一些连我自己都没有做过的事情,结果突然之间大家就觉得我也是真正的程序员了。要知道我的工作一开始和写程序是没什么关系的。

有一天,我参加完某个技术会议回家,然后被滞留在机场了,正当我气急败坏地在电脑上打字的时候,突然听到了一个奇怪的,但是很绅士的声音对我说:

“能帮我设计一个系统吗?”

“啥?”

“设计一个系统!“

我被这个请求惊呆了,于是抬起了头。我环顾四周,看到了一个小孩,他非常希望成为一名程序员,然后他说我可以叫他”printf”,当然,我觉得这肯定不是他的真名,而且这个名字也挺蠢的。他看上去长得这个样子:

”我不是很懂电脑,但是看上去你很懂。我想写一个博客程序给大家用,然后还想让大家阅读这个博客。所以麻烦你帮我写一个系统吧。”

这可是一个让人吃惊的请求,可能是因为我已经 20 个小时没睡觉的原因,我还不是很理解,或者说我感觉还是很不真实。我跟他说,这可不是简单的事情。我不太清楚他到底要做什么?有没有考虑过失败了怎么办?这个博客要支持多少人同时在线阅读呢?服务器的主机放在哪儿呢?在缺乏这么多信息的前提下,我是没法设计一个合理系统的。

“这些都不重要。就给我设计一个系统就好。”

好吧,那么我就画了一个系统的架构图:

他看了看,然后说:“不行,这个系统还不够好。给我再做一个吧。“

然后我就又做了一个:

接着我跟他简要解释了一下这个系统是如何工作的。

我的新朋友礼貌地笑了笑,说:”这不是我要的系统,它太复杂了,好多功能我其实都不需要。“

我听了感觉气不打一处来啊,我可是考虑了冗余、系统监控、备份、缓存还有很多其他的机制,来降低负载,减轻额外的处理器负担,并且还能对系统进行有效保护,失效备援,易于部署等等。要知道,如果平时我给人拿出这种方案,那可是要收咨询费的!好吧我失去耐心了,然后我就画了下面这个图:

然后我还补充说:“这就是你要的设计。你要的系统就在这个黑盒子里。”我希望这个设计方案能让他放过我。不过我听到了一句非常意外的回答:

“没错!这就是我要的系统!”

这就是我和小 printf 初识的故事。

第 2 章

我迅速地对小 printf 做了点调查。发现他之前写的东西都是些小程序,基于表单的小网页,还有一些无关紧要的命令行工具。这些东西平淡无奇,就算是做出来了也很快会被人忘记。

然后突然之间,他就开始做包含好几个模块的大项目了。这个项目要用到 sockets,要能访问本地硬盘,而且还要和数据库交互。程序刚一做出来的时候,小 printf 还觉得很神奇。但是即便如此这个项目还是差强人意。

这个项目还需要重构,需要更细致的测试,需要更完备的文档,需要更好的包装和分析。项目上线已本来应该正常运行,但是某一天早上,它崩溃了。

接下来就是各种崩溃,崩了又崩。

系统配置不对,日志界面也不再滚动,磁盘速度忽快忽慢,网络不定时抽风,bug 开始各种出现,系统编码也让人匪夷所思,数据库需要清理,事务也被挂起,证书过期,各种漏洞开始暴露,系统监测则什么动静也没有。

系统开始变成一锅粥了。

他对我说:“事实上我什么都不懂!我本应根据我的需求来做判断的。我太想做一个完美的系统,花了这么多的时间,结果却是‘磨刀误了砍柴功’。当然,我还是知道这个系统的美妙之处的。“

于是一天早晨,他决定离开办公室。他对着一大堆电脑指示灯说了「再见」。他离开是为了要看看,除了他那乱糟糟的服务器之外,软件的世界还能给他提供些什么好办法来实现他的系统。

如果照现在的情况,只会是日志继续不停地累计,直到硬盘存爆了为止。

第 3 章

他来到了一个工作区,想找个经验丰富的人指点迷津。

他找的第一个人是一个超级自信的高级工程师,他看上去地位很高的样子。

”啊,来向我取经啊!你可找对人了,我可是这个领域的专家!“这个人说。

”专家?”小 printf 问到,”这就是说你什么程序都能写,什么程序都会写?“

”那当然!“专家回答到。他补充说:”总的来说,我只写那些值得写的程序。我可不写那些没意义的东西。我能写但不写的那些程序,都是因为太简单,所以不劳我动手。“

”啊,那你能帮我看一下我的系统吗?”就在小 printf 开始阐述他的系统的时候,这位专家打断了他:

“抱歉,我真心觉得这么做没什么意义。”

“为什么?”

“因为经验。我善于编写我善于的程序,我给我善于编写的东西编程。我要严格限制我只做我擅长做的事情,这样才能变得更好。我管这个叫做‘职业安全’,这就是程序界的适者生存原理,而且这一行就是这么玩的。“

”那你为什么不能帮我呢?“

”好吧,你看,如果我花时间帮助了你,那么我就会让我的技术自我投资的方向发生分散和偏离——这对我来说是失策。对于你来说,最好的学习方法就是我当年做的那样:通过痛苦的努力来找到解决的办法。这有助于锻造你的个性。“

”但是这样效率好低。“

”好吧那你就去学校学,你也可以自学。但是无论哪种做法,都只是把那些想不劳而获的懒人踢出去,让真正愿意踏实学习的人留下来。如果不是这样的话,那我坚持恪守的价值观就会随之崩溃。“

”那你觉得跟人合作,或者是你的同事能不能帮助你?“

”并不能。我工作状态最好的时候其实是我一个人独自待着而且没人打扰的时候。每次我被迫和别人一起工作的时候,几乎可以肯定我们做的东西没法凑到一起。最后只能是我怒了,然后把他们写的东西又自己重新再写一遍,然后这才能行。“

小 printf 对这个专家不愿帮助别人的态度感到非常意外,而且也对专家描述的周围的人能力如此之差感到很困惑。专家把自己的全部视野只集中在自己擅长的领域,只解决自己能解决的问题,这听上去有点儿悲哀。

”我明白了…我觉得你别给我帮助的话就最好了。“ 小 printf 说到。

”你什么意思?“自带高大上光环的专家似乎感到了自己的价值观受到了挑战。”你是说我的做的工作毫无趣味可言吗?“

”哦,并不是,你做的工作很有趣。不过从你的眼光中看来,我只是一个烦躁而讨厌的家伙。我是来寻求帮助的,不是来找罪受的。“

小 printf 迅速地离开了这个专家,因为他明白,除非你在他的”职业安全“范围之内,否则根本就不能碰他。

第 4 章

在继续寻找帮助的路上,小 printf 来到了一个办公室的的门口,办公室里四面都是书架,书架上放着装帧优美的硬皮书,书上有各式各样的精美图画,一个人坐在办公室里面。

“先生你的书真不错啊“小 printf 说。

”谢谢!我觉得这些书都是程序员必备的材料。如果你没有这些书,你都不好意思跟人家说你是真正的程序员。“

”啊,那我觉得我可能就不算是真正的程序员了“,小 printf 说,”那你最喜欢哪本书呢?“

”哦,大部分书我还没看过呢。“

”那你不是个优秀的程序员咯?“

”啊不,我不是。“这个开发者骄傲地补充到:”实际上,我是个糟糕的程序员。“

”真遗憾,“,小 printf 说,”我可是不断在进步呢。“

“你听说过 Dunning-Kruger 效应没?”,房间中的人问到。

“没有,那是个啥玩意儿?”

“就是一种认知偏差。它的意思大概就是说,那些能力不太强的人更容易高估自己,而能力很强的人更容易低估自己。”

“所以按照你的意思,如果我认为我在进步,其实是因为我不够好造成的?”

“是啊,就是这个意思。很可能就是你其实能力不强。而我,我公开声称自己是一个糟糕的程序员。但是根据 Dunning-Kruger 效应,我很可能是在低估我自己,这就意味着我其实是一个很棒的程序员,你还不明白吗?”

“为什么会这样?”

“那是因为自黑是程序员的一大法宝。当你自我感觉良好的时候,你实际上已经停滞不前了。”

“但是这样一来不就意味着,一旦你自己感觉不错的时候,你就开始走下坡路了,所以你应该让自己感觉糟糕起来吗?”

“对的。但是这件事情正确的做法是,你要对任何东西都说很糟糕,即便是你不知道怎么解决问题也要这么说。这样就能让你看上去很聪明,而且又并不用真的做什么。“

”能具体解释一下么?“

”比如我在网上看到了一个让我不爽的项目。然后我就说这个项目所有的地方都不对,但是又并不具体说哪儿不对。我只需要轻描淡写地说,因为做这个项目的人本身就是个白痴,就这样就可以了。“

“但是你这么说,别人怎么会信呢?”

“哈哈,我觉得他们都愿意相信他们做错了,而且他们也愿意让别人指出来。这就有点儿像烟雾或者镜子。实际上没人知道自己做的东西是啥样,他们只能知道自己做的东西看上去是啥样。”

“那么如果他们说他们没法解决问题,让你来帮他们的话,那你怎么办?“

”这样的话就又回到了一切事情都很糟糕的那个问题;你就说你很忙,有很多事情要做,然后你还很悲观。这样的话,他们就只能靠他们自己了。“

”所以说这一切都只是摆个姿态而已?这对你来说只是一个套路?你懂的时候装作不懂,是为了让真正啥都不懂的人失去信心,你不懂的时候装懂,是为了让真正懂的人感觉糟糕。“

”在大多数情况下,有能力没什么用。只有名声才是最重要的。老板招人的时候喜欢招自己的朋友,公司裁人的时候不招人喜欢的和不被重视的人会先被裁。这就是规则。如果你想改变社会的规则,你就会成为异类。这就是套路。业界就是这么运作的,学术界也大致如此,尽管这些都是潜规则,但是我还是都看出来了。一切都取决于你认识谁,如何推销自己,如果经营你的个人品牌。只有这样你才能在业界拥有一席之地。“

”如果我必须要觉得自己很糟糕,而且还得让别人觉得很糟糕,这样才能找到工作的话,那我想还是算了。“小 printf 说完就走开了。

第 5 章

接下来就是午餐时间了,printf打断了一个全神贯注工作忘记吃午饭的人,他一直盯着屏幕,饭都已经凉了。

工作这么忙碌的人应该很擅长软件行业。于是小 printf 问到:

”如果主数据库崩溃了,那从数据库也会崩溃么?“

”你运行的一切东西。“这个忙碌的人回答说,”迟早都会崩溃的。“

”那么那些告诉你程序崩溃的程序呢?它们也会崩溃么?“

”是的,它们也会崩溃。所有的大型系统在任意时刻都处在某种部分崩溃的状态。“

”那么,我们搭建可靠系统(reliable system)的意义在哪儿呢?“

这个忙碌的人不知道,他也在思考同样的问题,因为就在此时,他们又接到了一个问题,说是一朵云坏掉了,造成了天空塌下来砸到了头上。

”那么,搭建可靠系统的意义到底在哪儿呢?“小 printf 追问到。

这个忙碌的人此时一脸的不爽,一看就是在工作遇到问题的样子。他就像一个放了学被留下来不让走的孩子,而且他的三明治显然是废了。他很不耐烦地大声回答说:

“显然没有任何意义。因为程序本身就是一坨屎。”

“噢!”他倒抽了一口气。

接下来,就是一段完全的沉默。

小 printf 打破了沉默,并且带着一丝愤怒:

“我不相信你说的话。程序确实是脆弱的,但是程序员能够通过努力让程序变得更好且可用。”

没有回应。这个时候忙碌的人已经打开一个文档,查看如何从头启动一个集群备份,情况似乎变得越来越糟糕了。

“那么你真的相信可靠的程–”

“噢不!”忙碌的人说,“不不不!我不相信什么好的或者可靠的程序!再也不信了!它们都不行!我告诉你我现在脑袋里想的就是怎么处理手头的这个垃圾系统。你没看到是我在努力维持让这些东西运行吗?这些破玩意儿多么重要!”

小 printf 瞪了回来,表情有些惊愕。

“都坏成这样了还很重要?你的口气就像是个真正的程序员似的。“

他补充说:

”你把概念完全搞混了。世界上有成百上千的程序,年复一年地运行,而且总是会崩溃。但是即便如此人们还是需要这些程序,使用这些程序。而且我知道还有一种程序,它们只会在单台笔记本上运行,但是只要发生一点点错误,其结果就能瞬间毁灭整个社区。如果这样,你还认为不重要吗?“

接下来这个忙碌的人就不再说话了。

第 6 章

小 printf 造访的第四个工作区有一个人,他的电脑前贴满了各种不知名的即时贴。

”motor-mvc, quadrangular JS, GoQuery, cometeor, 还有一些听上去像是日语的东西, …“

”Hi,“ 小 printf 打断了他,”请问你在做什么呢?“

”alchemist, bongodb, mochascript, walktime.js, portasql, …“这个人不停地念叨。

”请问您在做什么呢?“小 printf 又问了一遍,这次声音更大了一些。

”噢,我在尝试新的框架,工具,数据库,编程语言。“

”哇!你好像进度很快啊,效率和10个程序员加起来一样高。“

”是啊,你看,这个行业的前进速度是非常快的!“他对着手机看了几秒,然后补充说,”这儿!cardboard.io 框架推出了 3.5 版本,这个版本和 3.4 不兼容,目前已经产生了 4 个 fork 了!我必须要把他们都试一遍,然后决定自己用哪个。“

”但是你学这么多,都拿来做什么呢?“

”我是一个提前学习主义者。如果你不保持着与时俱进的心态,现在你可能还要靠写 COBOL 或者 MUMPS 来过日子呢。如果你想做大事情,就要确保自己站在浪潮之巅。“

”那这么做有效果么?“

”有啊,我在 Rails 火起来之前就知道它要火了,我在 node.js 流行起来就知道它要流行了。我参与了 Redis、Mongodb 和 Riak早期的 beta 测试!我是第一个用 Vagrant 的人,后来又切换到了Docker上面,当然现在的潮流是 Unikernel“

”酷,那么你掌握了这么多最前沿的技术,有什么回报呢?“

”哦,并没有回报,Rails 变得越来越臃肿了以后,我就必须得赶快去关注别的重要技术,保证自己不要落后。其他的各种技术差不多也是这个套路。目前我希望掌握的是 Unikernel。“

”明白了。“,小 printf 补充到,”那么这些新框架和技术都会用来解决哪些问题呢?“

”噢,不是重大技术我们不用,我主要是要确保这一点,这样才能让我们公司不至于把资源花费到没有未来的技术上。这是很重要的,因为如果你不这么做的话,你的技术就会被那帮花白胡子的过时老程序员绑架,为了避免这样,你就必须成为一个自我驱动力强大的学习者,一个提前学习主义者。“

”真有趣。“小 printf 插了一句嘴。

”这可不是有趣,这是很难做到的!在创业的世界里,如果你想要吸引人才,你就必须要通过优秀的技术来招揽他们!否则你就是个不灵活的落后者。没人愿意做不灵活的落后者。“

小 printf 赶紧说:”不,我不是这个意思。“,然后他补充到,”我感到有趣的地方在于,工具本来是用来给我们解决问题的,但是对于你来说,工具本身却成了问题。“

接下来,这个人就站在他那个新潮的健身式办公桌前,没有任何回应了,小 printf 真希望自己赶紧出去。

第 7 章

在下一个办公室,坐着一个看上去很疲倦的员工,他的桌子上堆满了空咖啡杯。她无精打采地坐着,愤怒地敲击着键盘。

”嗨!“小 printf 说。

这个疲倦的女人并没有停下手上的动作。他继续愤怒地敲击着键盘。

”你好?“小 printf 又打了一遍招呼。

这个女人忽然间停了下来,从抽屉里取出一只水壶,然后大口喝起水来。

”我的工作太糟糕了。“她说,”我是做 Devops 的。一开始还好,我大部分时间做开发,偶尔也做做调试的事情,但是随着时间的推移,情况变得越来越糟糕。我开始在各处救火,但是问题还是不断发生。我解决了其中的大部分问题,但是有些小毛病还是要期盼奇迹发生,这才能赶得上开发计划预定的期限,而且开发工作也是我的。“

”他们没有再找个人帮帮你么?“

”没有,这就是问题的所在。小问题总是到处发生,因为我必须要解决这些问题,所以我在做开发的时候就不可能像以前只做开发时那么专注,所以我本身就会制造更多的问题。现在,我每天都没日没夜地给系统灭火,我真是恨死我的工作了。“

”那你的雇主为什么什么都不做呢?“

”那是因为我擅长我的工作啊,我长期以来一直可以控制住局面,而且大家都已经习惯了。当你把创造奇迹变成一种习惯的时候,人们就适应了。然后你就会被困在‘总是要创造奇迹’的局面当中,否则人们就会认为是你的工作不得力。“

”这听上去可真是悲哀!“

”是啊。因为你是最熟悉怎么去给系统灭火的人,所以你就总得去,久而久之就是你的工作了,直到有一天老板雇了新人来替代你做你心爱的工作。如果你真的很在意你的工作的话,那么就去做那种谁都不愿意干的脏活累活,接下来所有人都会感谢你,你干得越多人们就会越感谢你,直到所有的脏活累活全都归你。当然,这样的话工作就没有什么乐趣可言了。“

”那么你可真不走运。“小 printf 说。

说着,她的呼叫器又响了。

”那个女人,”小 printf 对自己说,就像是他父亲的口吻,“那个女人的工作被所有人轻视,专家、明星程序员、提前学习主义者,他们都看不上她的工作。但是她做的工作才是唯一有帮助的。这很可能是因为她总是在考虑别人,而不是只考虑自己吧。”

第 8 章

在建筑的一角,小 printf 发现了一间大办公室,办公室有巨大的落地窗,窗外视野极好。办公室内有一张非常大的办公桌,桌子上的文件堆成了小山,有一个老绅士坐在办公桌前。

“啊,开发者来了”老绅士看到小 printf 走到门厅,于是就大声喊到,“进来!”

透过窗户看去,小 printf 注意到窗户的玻璃上写着各种各样的字,还有用修正液涂改的痕迹,以至于窗外的风景都快被各种圈圈点点,箭头,圆柱等几何图形给盖住了,而且上面还画了云朵的图案。明明窗外就有真正的云,为什么还要在窗户上画云朵的形状?还有整个图案的含义也让人很感兴趣。

”这是什么?“,小 printf 指着窗户问。

”这个么?这是我们的生产系统!“那个老绅士说,一副看上去对外面事物毫不关心的样子,”我是一个软件架构师。“

”软件架构师是什么?”

“多数情况下,架构师是那种最了解组件之间的结构,并且最能够合理调度组件关系的人,架构师能让大型系统的各个部分完美协调地工作。同时,软件架构师也了解数据库、编程语言、框架、编辑器、序列化格式、协议以及诸如封装、协议隔离等概念。“

”听上去真有趣!“小 printf 说,“终于有一个人能够回答所有的问题了!”他看了一眼架构师的图,“你的系统真是让人印象深刻啊!那么这个系统速度快么?”

“我不知道,”架构师说,“应该挺快的吧。”

“那系统的代码呢?写得好么?”

“我也没法告诉你”

“用户对系统满意么?”

“恐怕我还是没法告诉你。”

“但是你是软件架构师啊!”

“对啊!但是我并不是开发者啊。软件架构师的任务并不是去写模块、类,也不是调用类库。软件架构师的工作相比写代码来说要重要得多。软件架构师会和开发者,程序员们聊天,问他们问题,给他们提供指导。如果程序员问的问题很有趣,那么架构师也许会亲自出马给这个问题做规划。”

“为什么要这样?”

“因为我们更有经验啊。我们对系统能做哪些事,不能做哪些事了解得更多。开发者则是我们知识的延伸,他们会去把优秀的系统真正做出来。”

“但是你们不亲自编码,怎么能确认开发过程是顺利的呢?”

“因为我们信任开发人员啊。”

“所以你相信开发人员能够正确实现你的想法,并且不会产生他们自己的想法?”

软件架构师听了小 printf 的话后明显有些震惊,他说:”我想我还是有点儿脱节。“,他最后承认说,“问题确实存在,别人总是跟你说要按照某种思想或者主意去做事,但是你又没法有效验证你做的事情是不是真的符合这种思想。”他低下了头,沉思着,“有的时候软件架构师既不做软件,也不做架构,这貌似是真的。”

接着,小 printf 离开了坊间,然后结束了他的访问,离开了大楼。

第 9 章

小 printf 刚一走出门,就碰到了一个男人正在路边募集善款。

“Hi,”那个男人说,“你今天想不想给别人献点儿爱心呢?”

”好吧,这样做我感觉可能会好点儿“,小 printf 回答说,”我已经在这栋大楼里待了一整天,可是我出来的时候感觉更加困惑了。“

”啊,我明白了。这些人都是开发者。他们其实一点儿也帮不上忙,对不?他们总是喊着要改变世界,而且他们确实也做到了。“

”但是为什么感觉这么奇怪呢?“小 printf 回答到。

”好吧,因为他们的工作就是把人们的职业转换成程序,让人们安逸的生活变得更加安逸。软件会吞噬整个世界,然后给让世界面貌一新……不过从深层次来看,面貌一新的世界还是那个旧世界,只是面貌变了而已。之所你觉得奇怪,是因为世界的改变并不一定朝好的方向改变。我们现在面临的问题其实和以前一样多,需要填的坑也和以前一样深。“

”那么我怎么才能让自己感觉好一点儿呢?”小 printf 显得有些焦虑。

这个男人思考了一会儿,然后希望小 printf 能和他一起来帮助别人,这是他认为的能让自己感觉变好的方式。printf用了一整个下午告诉这个人自己的问题和经历。这个人听完了以后沉默了很长一段时间,然后说:

“人们在社会中相互博弈,扮演不同角色,追逐和享受的名声,解决错综复杂的问题后得到瞬间的快感,这些都只是过眼云烟。最终,如果你没有解决什么有意义的问题,如果你完全不考虑别人,那么你是无法做到内心满足的。”

“得不到内心的满足也许也没什么,也许会很糟糕,在你成长的过程中,你的满足感可能来自于你的工作之外,也可能来自于工作。工作可以仅仅就是工作,也可以是单纯为了钱,也可以为了兴趣。这些都OK。只要你能从生命中的某处找到内心的满足,那就好了。”

“最后,只有当你以人类的面孔去解决问题的时候,你才会觉得真的正确;真正关键的点其实和电脑没关系。”

“真正的关键在于你用心花在系统上的精力,这才是最重要的。“,那个人补充到,”如果你忘记了为什么花这么多精力的初衷,当一切都变成了关乎个人骄傲的游戏,那么事情的性质就变了,从可慰变成可悲。“

”开发者们常常会忘记一个事实;如果你失去了对事物的眼光,那么在开发系统本身就成为了一个问题,这样的话最有效的办法就是把系统废掉,因为系统自己就是问题的根源。“

”只有当你以人类的面孔去解决问题的时候,才会觉得真的正确。“,小 printf 不断重复着这句话,他铭记在心。

第 10 章

坐在我身旁的Printf现在要起身回家了。跟他的一席对话让我意识到了我现在所做的事情和我的爱好有多么大的距离,而我的爱好才是我真正开始编程的动力。小 printf 遇到的每一个角色,我每天也都会遇到很多。我曾受到他们的鼓舞,希望成为他们的一员,我可能也鼓励过别人这么做。

当我还在挣扎着成为一个真正的程序员的时候,小 printf 却没有这么做。他说他成不了一个真正的程序员也没关系,他更希望能成为一个长着人类面孔的程序员。

时至今日,回首望去,我的困境并没有改变,我还是要在人类的面孔和纯粹的工作之间做出选择,我希望我能有这个能力。而且在这两者之间好像也没有什么中间地段可以让我去选择。

无论如何,小 printf 觉得他不需要做一个真正的程序员了,我想我和他的感觉是一样的。


八、乔布斯在斯坦福大学的演讲稿【中英】

乔布斯对操场上挤的满满的毕业生、校友和家长们说:“你的时间有限,所以最好别把它浪费在模仿别人这种事上。” --同样地,如果还在学校的话,似乎不应该去模仿退学的牛人们。

  You've got to find what you love,' Jobs says

  Jobs说,你必须要找到你所爱的东西。

  This is the text of the Commencement address by Steve Jobs, CEO of Apple Computer and of Pixar Animation Studios, delivered on June 12, 2005.

  这是苹果公司和Pixar动画工作室的CEO Steve Jobs于2005年6月12号在斯坦福大学的毕业典礼上面的演讲稿。

  I am honored to be with you today at your commencement from one of the finest universities in the world. I never graduated from college. Truth be told, this is the closest I've ever gotten to a college graduation. Today I want to tell you three stories from my life. That's it. No big deal. Just three stories.

  我今天很荣幸能和你们一起参加毕业典礼,斯坦福大学是世界上最好的大学之一。我从来没有从大学中毕业。说实话,今天也许是在我的生命中离大学毕业最近的一天了。今天我想向你们讲述我生活中的三个故事。不是什么大不了的事情,只是三个故事而已。

  The first story is about connecting the dots.

  第一个故事是关于如何把生命中的点点滴滴串连起来。

  I dropped out of Reed College after the first 6 months, but then stayed around as a drop-in for another 18 months or so before I really quit. So why did I drop out?

  我在Reed大学读了六个月之后就退学了,但是在十八个月以后——我真正的作出退学决定之前,我还经常去学校。我为什么要退学呢?

  It started before I was born. My biological mother was a young, unwed college graduate student, and she decided to put me up for adoption. She felt very strongly that I should be adopted by college graduates, so everything was all set for me to be adopted at birth by a lawyer and his wife. Except that when I popped out they decided at the last minute that they really wanted a girl.

  故事从我出生的时候讲起。我的亲生母亲是一个年轻的,没有结婚的大学毕业生。她决定让别人收养我, 她十分想让我被大学毕业生收养。所以在我出生的时候,她已经做好了一切的准备工作,能使得我被一个律师和他的妻子所收养。但是她没有料到,当我出生之后,律师夫妇突然决定他们想要一个女孩。

  So my parents, who were on a waiting list, got a call in the middle of the night asking: "We have an unexpected baby boy; do you want him?" They said: "Of course." My biological mother later found out that my mother had never graduated from college and that my father had never graduated from high school. She refused to sign the final adoption papers. She only relented a few months later when my parents promised that I would someday go to college.

  所以我的生养父母(他们还在我亲生父母的观察名单上)突然在半夜接到了一个电话:“我们现在这儿有一个不小心生出来的男婴,你们想要他吗?”他们回答道:“当然!”但是我亲生母亲随后发现,我的养母从来没有上过大学,我的父亲甚至从没有读过高中。她拒绝签这个收养合同。只是在几个月以后,我的父母答应她一定要让我上大学,那个时候她才同意。

  And 17 years later I did go to college. But I naively chose a college that was almost as expensive as Stanford, and all of my working-class parents' savings were being spent on my college tuition. After six months, I couldn't see the value in it. I had no idea what I wanted to do with my life and no idea how college was going to help me figure it out.

  在十七岁那年,我真的上了大学。但是我很愚蠢的选择了一个几乎和你们斯坦福大学一样贵的学校, 我父母还处于蓝领阶层,他们几乎把所有积蓄都花在了我的学费上面。在六个月后, 我已经看不到其中的价值所在。我不知道我想要在生命中做什么,我也不知道大学能帮助我找到怎样的答案。

  And here I was spending all of the money my parents had saved their entire life. So I decided to drop out and trust that it would all work out OK. It was pretty scary at the time, but looking back it was one of the best decisions I ever made. The minute I dropped out I could stop taking the required classes that didn't interest me, and begin dropping in on the ones that looked interesting.

  但是在这里,我几乎花光了我父母这一辈子的所有积蓄。所以我决定要退学,我觉得这是个正确的决定。不能否认,我当时确实非常的害怕, 但是现在回头看看,那的确是我这一生中最棒的一个决定。在我做出退学决定的那一刻, 我终于可以不必去读那些令我提不起丝毫兴趣的课程了。然后我还可以去修那些看起来有点意思的课程。

  It wasn't all romantic. I didn't have a dorm room, so I slept on the floor in friends' rooms, I returned coke bottles for the 5¢ deposits to buy food with, and I would walk the 7 miles across town every Sunday night to get one good meal a week at the Hare Krishna temple. I loved it. And much of what I stumbled into by following my curiosity and intuition turned out to be priceless later on. Let me give you one example:

  但是这并不是那么罗曼蒂克。我失去了我的宿舍,所以我只能在朋友房间的地板上面睡觉,我去捡5美分的可乐瓶子,仅仅为了填饱肚子, 在星期天的晚上,我需要走七英里的路程,穿过这个城市到Hare Krishna寺庙(注:位于纽约Brooklyn下城),只是为了能吃上饭——这个星期唯一一顿好一点的饭。但是我喜欢这样。我跟着我的直觉和好奇心走, 遇到的很多东西,此后被证明是无价之宝。让我给你们举一个例子吧:

  Reed College at that time offered perhaps the best calligraphy instruction in the country. Throughout the campus every poster, every label on every drawer, was beautifully hand calligraphed. Because I had dropped out and didn't have to take the normal classes, I decided to take a calligraphy class to learn how to do this.

  Reed大学在那时提供也许是全美最好的美术字课程。在这个大学里面的每个海报, 每个抽屉的标签上面全都是漂亮的美术字。因为我退学了, 没有受到正规的训练, 所以我决定去参加这个课程,去学学怎样写出漂亮的美术字。

  I learned about serif and san serif typefaces, about varying the amount of space between different letter combinations, about what makes great typography great. It was beautiful, historical, artistically subtle in a way that science can't capture, and I found it fascinating.

  我学到了san serif 和serif字体, 我学会了怎么样在不同的字母组合之中改变空格的长度, 还有怎么样才能作出最棒的印刷式样。那是一种科学永远不能捕捉到的、美丽的、真实的艺术精妙, 我发现那实在是太美妙了。

  None of this had even a hope of any practical application in my life. But ten years later, when we were designing the first Macintosh computer, it all came back to me. And we designed it all into the Mac. It was the first computer with beautiful typography. If I had never dropped in on that single course in college, the Mac would have never had multiple typefaces or proportionally spaced fonts.

  当时看起来这些东西在我的生命中,好像都没有什么实际应用的可能。但是十年之后,当我们在设计第一台Macintosh电脑的时候,就不是那样了。我把当时我学的那些家伙全都设计进了Mac。那是第一台使用了漂亮的印刷字体的电脑。

  And since Windows just copied the Mac, its likely that no personal computer would have them. If I had never dropped out, I would have never dropped in on this calligraphy class, and personal computers might not have the wonderful typography that they do. Of course it was impossible to connect the dots looking forward when I was in college. But it was very, very clear looking backwards ten years later.

  如果我当时没有退学, 就不会有机会去参加这个我感兴趣的美术字课程, Mac就不会有这么多丰富的字体,以及赏心悦目的字体间距。那么现在个人电脑就不会有现在这么美妙的字型了。当然我在大学的时候,还不可能把从前的点点滴滴串连起来,但是当我十年后回顾这一切的时候,真的豁然开朗了。

  Again, you can't connect the dots looking forward; you can only connect them looking backwards. So you have to trust that the dots will somehow connect in your future. You have to trust in something - your gut, destiny, life, karma, whatever. This approach has never let me down, and it has made all the difference in my life.

  再次说明的是,你在向前展望的时候不可能将这些片断串连起来;你只能在回顾的时候将点点滴滴串连起来。所以你必须相信这些片断会在你未来的某一天串连起来。你必须要相信某些东西:你的勇气、目的、生命、因缘。这个过程从来没有令我失望(let me down),只是让我的生命更加地与众不同而已。

  My second story is about love and loss.

  我的第二个故事是关于爱和损失的。

  I was lucky – I found what I loved to do early in life. Woz and I started Apple in my parents garage when I was 20. We worked hard, and in 10 years Apple had grown from just the two of us in a garage into a billion company with over 4000 employees. We had just released our finest creation - the Macintosh - a year earlier, and I had just turned 30.

  我非常幸运, 因为我在很早的时候就找到了我钟爱的东西。Woz和我在二十岁的时候就在父母的车库里面开创了苹果公司。我们工作得很努力, 十年之后, 这个公司从那两个车库中的穷光蛋发展到了超过四千名的雇员、价值超过二十亿的大公司。在公司成立的第九年,我们刚刚发布了最好的产品,那就是Macintosh。我也快要到三十岁了。

  And then I got fired. How can you get fired from a company you started? Well, as Apple grew we hired someone who I thought was very talented to run the company with me, and for the first year or so things went well. But then our visions of the future began to diverge and eventually we had a falling out. When we did, our Board of Directors sided with him. So at 30 I was out. And very publicly out. What had been the focus of my entire adult life was gone, and it was devastating.

  在那一年, 我被炒了鱿鱼。你怎么可能被你自己创立的公司炒了鱿鱼呢? 嗯,在苹果快速成长的时候,我们雇用了一个很有天分的家伙和我一起管理这个公司, 在最初的几年,公司运转的很好。但是后来我们对未来的看法发生了分歧, 最终我们吵了起来。当争吵不可开交的时候, 董事会站在了他的那一边。所以在三十岁的时候, 我被炒了。在这么多人的眼皮下我被炒了。在而立之年,我生命的全部支柱离自己远去, 这真是毁灭性的打击。

  I really didn't know what to do for a few months. I felt that I had let the previous generation of entrepreneurs down - that I had dropped the baton as it was being passed to me. I met with David Packard and Bob Noyce and tried to apologize for screwing up so badly.

  在最初的几个月里,我真是不知道该做些什么。我把从前的创业激情给丢了, 我觉得自己让与我一同创业的人都很沮丧。我和David Pack和Bob Boyce见面,并试图向他们道歉。

  I was a very public failure, and I even thought about running away from the valley. But something slowly began to dawn on me – I still loved what I did. The turn of events at Apple had not changed that one bit. I had been rejected, but I was still in love. And so I decided to start over.

  我把事情弄得糟糕透顶了。但是我渐渐发现了曙光, 我仍然喜爱我从事的这些东西。苹果公司发生的这些事情丝毫的没有改变这些, 一点也没有。我被驱逐了,但是我仍然钟爱它。所以我决定从头再来。

  I didn't see it then, but it turned out that getting fired from Apple was the best thing that could have ever happened to me. The heaviness of being successful was replaced by the lightness of being a beginner again, less sure about everything. It freed me to enter one of the most creative periods of my life.

  我当时没有觉察, 但是事后证明, 从苹果公司被炒是我这辈子发生的最棒的事情。因为,作为一个成功者的极乐感觉被作为一个创业者的轻松感觉所重新代替: 对任何事情都不那么特别看重。这让我觉得如此自由, 进入了我生命中最有创造力的一个阶段。

  During the next five years, I started a company named NeXT, another company named Pixar, and fell in love with an amazing woman who would become my wife. Pixar went on to create the worlds first computer animated feature film, Toy Story, and is now the most successful animation studio in the world.

  在接下来的五年里, 我创立了一个名叫NeXT的公司, 还有一个叫Pixar的公司, 然后和一个后来成为我妻子的优雅女人相识。Pixar 制作了世界上第一个用电脑制作的动画电影——“”玩具总动员”,Pixar现在也是世界上最成功的电脑制作工作室。

  In a remarkable turn of events, Apple bought NeXT, I retuned to Apple, and the technology we developed at NeXT is at the heart of Apple's current renaissance. And Laurene and I have a wonderful family together.

  在后来的一系列运转中,Apple收购了NeXT, 然后我又回到了Apple公司。我们在NeXT发展的技术在Apple的复兴之中发挥了关键的作用。我还和Laurence 一起建立了一个幸福的家庭。

  I'm pretty sure none of this would have happened if I hadn't been fired from Apple. It was awful tasting medicine, but I guess the patient needed it. Sometimes life hits you in the head with a brick. Don't lose faith. I'm convinced that the only thing that kept me going was that I loved what I did. You've got to find what you love.

  我可以非常肯定,如果我不被Apple开除的话, 这其中一件事情也不会发生的。这个良药的味道实在是太苦了,但是我想病人需要这个药。有些时候, 生活会拿起一块砖头向你的脑袋上猛拍一下。不要失去信心。我很清楚唯一使我一直走下去的,就是我做的事情令我无比钟爱。你需要去找到你所爱的东西

  And that is as true for your work as it is for your lovers. Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle. As with all matters of the heart, you'll know when you find it. And, like any great relationship, it just gets better and better as the years roll on. So keep looking until you find it. Don't settle.

  。对于工作是如此, 对于你的爱人也是如此。你的工作将会占据生活中很大的一部分。你只有相信自己所做的是伟大的工作, 你才能怡然自得。如果你现在还没有找到, 那么继续找、不要停下来、全心全意的去找, 当你找到的时候你就会知道的。就像任何真诚的关系, 随着岁月的流逝只会越来越紧密。所以继续找,直到你找到它,不要停下来!

  My third story is about death.

  我的第三个故事是关于死亡的。

  When I was 17, I read a quote that went something like: "If you live each day as if it was your last, someday you'll most certainly be right." It made an impression on me, and since then, for the past 33 years, I have looked in the mirror every morning and asked myself: "If today were the last day of my life, would I want to do what I am about to do today?" And whenever the answer has been "No" for too many days in a row, I know I need to change something.

  当我十七岁的时候, 我读到了一句话:“如果你把每一天都当作生命中最后一天去生活的话,那么有一天你会发现你是正确的。”这句话给我留下了深刻的印象。从那时开始,过了33年,我在每天早晨都会对着镜子问自己:“如果今天是我生命中的最后一天, 你会不会完成你今天想做的事情呢?”当答案连续很多次被给予“不是”的时候, 我知道自己需要改变某些事情了。

  Remembering that I'll be dead soon is the most important tool I've ever encountered to help me make the big choices in life. Because almost everything – all external expectations, all pride, all fear of embarrassment or failure - these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.

  “记住你即将死去”是我一生中遇到的最重要箴言。它帮我指明了生命中重要的选择。因为几乎所有的事情, 包括所有的荣誉、所有的骄傲、所有对难堪和失败的恐惧,这些在死亡面前都会消失。我看到的是留下的真正重要的东西。你有时候会思考你将会失去某些东西,“记住你即将死去”是我知道的避免这些想法的最好办法。你已经赤身裸体了, 你没有理由不去跟随自己的心一起跳动。

  About a year ago I was diagnosed with cancer. I had a scan at 7:30 in the morning, and it clearly showed a tumor on my pancreas. I didn't even know what a pancreas was. The doctors told me this was almost certainly a type of cancer that is incurable, and that I should expect to live no longer than three to six months. My doctor advised me to go home and get my affairs in order, which is doctor's code for prepare to die. It means to try to tell your kids everything you thought you'd have the next 10 years to tell them in just a few months. It means to make sure everything is buttoned up so that it will be as easy as possible for your family. It means to say your goodbyes.

  大概一年以前, 我被诊断出癌症。我在早晨七点半做了一个检查, 检查清楚的显示在我的胰腺有一个肿瘤。我当时都不知道胰腺是什么东西。医生告诉我那很可能是一种无法治愈的癌症, 我还有三到六个月的时间活在这个世界上。我的医生叫我回家, 然后整理好我的一切, 那就是医生准备死亡的程序。那意味着你将要把未来十年对你小孩说的话在几个月里面说完.;那意味着把每件事情都搞定, 让你的家人会尽可能轻松的生活;那意味着你要说“再见了”。

  I lived with that diagnosis all day. Later that evening I had a biopsy, where they stuck an endoscope down my throat, through my stomach and into my intestines, put a needle into my pancreas and got a few cells from the tumor. I was sedated, but my wife, who was there, told me that when they viewed the cells under a microscope the doctors started crying because it turned out to be a very rare form of pancreatic cancer that is curable with surgery. I had the surgery and I'm fine now.

  我整天和那个诊断书一起生活。后来有一天早上我作了一个活切片检查,医生将一个内窥镜从我的喉咙伸进去,通过我的胃, 然后进入我的肠子, 用一根针在我的胰腺上的肿瘤上取了几个细胞。我当时很镇静,因为我被注射了镇定剂。但是我的妻子在那里, 后来告诉我,当医生在显微镜地下观察这些细胞的时候他们开始尖叫, 因为这些细胞最后竟然是一种非常罕见的可以用手术治愈的胰腺癌症。我做了这个手术, 现在我痊愈了。

  This was the closest I've been to facing death, and I hope its the closest I get for a few more decades. Having lived through it, I can now say this to you with a bit more certainty than when death was a useful but purely intellectual concept:

  那是我最接近死亡的时候, 我还希望这也是以后的几十年最接近的一次。从死亡线上又活了过来, 死亡对我来说,只是一个有用但是纯粹是知识上的概念的时候,我可以更肯定一点地对你们说:

  No one wants to die. Even people who want to go to heaven don't want to die to get there. And yet death is the destination we all share. No one has ever escaped it. And that is as it should be, because Death is very likely the single best invention of Life. It is Life's change agent. It clears out the old to make way for the new. Right now the new is you, but someday not too long from now, you will gradually become the old and be cleared away. Sorry to be so dramatic, but it is quite true.

  没有人愿意死, 即使人们想上天堂, 人们也不会为了去那里而死。但是死亡是我们每个人共同的终点。从来没有人能够逃脱它。也应该如此。 因为死亡就是生命中最好的一个发明。它将旧的清除以便给新的让路。你们现在是新的, 但是从现在开始不久以后, 你们将会逐渐的变成旧的然后被清除。我很抱歉这很戏剧性, 但是这十分的真实。

  Your time is limited, so don't waste it living someone else's life. Don't be trapped by dogma - which is living with the results of other people's thinking. Don't let the noise of other's opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.

  When I was young, there was an amazing publication called The Whole Earth Catalog, which was one of the bibles of my generation. It was created by a fellow named Stewart Brand not far from here in Menlo Park, and he brought it to life with his poetic touch. This was in the late 1960's, before personal computers and desktop publishing, so it was all made with typewriters, scissors, and polaroid cameras. It was sort of like Google in paperback form, 35 years before Google came along: it was idealistic, and overflowing with neat tools and great notion

  Stewart and his team put out several issues of The Whole Earth Catalog, and then when it had run its course, they put out a final issue. It was the mid-1970s, and I was your age. On the back cover of their final issue was a photograph of an early morning country road, the kind you might find yourself hitchhiking on if you were so adventurous. Beneath it were the words: "Stay Hungry. Stay Foolish." It was their farewell message as they signed off. Stay Hungry. Stay Foolish. And I have always wished that for myself. And now, as you graduate to begin anew, I wish that for you.

  Stay Hungry. Stay Foolish.

  Thank you all very much.

共 1条评论

发表评论

您需要登录后才可以评论。登录 | 立即注册
阅读 1345 2