第一次听到这本书,是我混RubyChina时,看到管理员Rei推荐。记得读大学的时候在图书馆有见过这本书,后来因为封面太旧,感觉过时了就没有去看。现在回想起来我感觉我可能错过了几个亿。

虽然这本书发布至今已经有10多个年头了,但是里面作者所阐述的工作态度,以及对行业的了解即便是放在今天依然不会有丝毫的落伍。相反,我觉得在这个浮躁的时代正是需要这样一本书。如果我能在大学时代就读到这本书,我相信在技术这条路上我能够少走很多弯路。

引路人

《我编程,我快乐》这本书,无论是从书名还是内容来看都更像是一部鸡汤。对于喜欢鸡汤的朋友,我推荐此书,因为它可以让你尝试到鸡汤的滋味。而对于不喜欢鸡汤的朋友我更要推荐此书,你会发现它比市面上唠叨不止的鸡汤书籍要好上千百倍。至少,我可以保证的是,读了这本书之后你们就没太大必要去上大学的就业指导课了,因为.......(你们懂的)。再者笔者觉得这本书起于IT,但不止于IT,适合各行各业有职场困惑的人阅读。

但俗话也有说

1000个人眼中有1000个哈姆雷特

每个人的职场经历不同,有的人困惑于工资太低,有的人困惑于上司太婊子,有的人困惑于客户太傻逼(如我)。因此,不同的人阅读此书时或许会有不同的感悟。下面我想分三个点来谈谈这本书对我近期工作生活以及心态的影响

  1. 工作与生活
  2. 爱上维护
  3. 持续进步

工作与生活

毕业了,工作了。十分幸运的是有一家不错的公司收留了我,让我依然能够靠写程序养活着自己。在公司里面我用着自己喜欢的Ruby,JavaScript来写代码,我很享受这一切,直到有一天我遇到了一种叫做客户的生物。

相信很多程序员都会遇到这样或者那样的产品经理,他们会提出一些不经过大脑的需求。小弟也一样,我所面对的客户习惯性把程序员当机器使,整天让我们做一些预览版给他们,一个星期后我们时常发现我们整个星期的工作几乎都是白费的,代码库里充斥着一大堆没用的代码,没用的样式文件,最可恨的是这堆没用的文件当你删掉之后,过了一两个星期他们的新设计里面又需要相关的代码了。

每天做着复制粘贴的工作,毫无创造力可言,单调且无聊,简直侮辱了程序员的智商。

幸运的是,这本书让我冷静了下来,通过这本书我发现,即便是最优秀的程序员也会遇到我们这种情况,干着无聊的工作,伺候着无聊的客户。而作者对我们的建议是面对无聊的工作,并不是去逃避而是

面对这么无聊单调的工作,你能把他做得多好?

你的客户和你一样聪明,只不过对编程一窍不通。这不要紧,他们的日常工作,你也一样不懂,这也是为什么公司要雇佣你们两个人来一起工作。

我从来都没有考虑过这些问题,也许缺乏这种胸怀也是我现在还无法成为一个像样的程序员的原因之一吧?我们都希望能够在“温室”里面编程,我们希望我们的客户都是懂程序的,这样我们沟通起来没有障碍;我们都希望所有客户都只用Chrome浏览器,这样我们就不用在我们的mac上面装一个windows虚拟机;我们都希望小程序这种东西早点灭亡,这样我们就不用被微信牵着鼻子走,日复一日地踩着坑。我们都希望每做完一个项目,都能有不菲的收获。但上面这些情况,我相信大多只能出现在小说里头了。现实总是残酷的,对工作的期望值太高,反而给自己留下的就只是失望罢了。

后来我感悟到:“当我们想充实自己,并把一切都寄托在工作上是不现实的,即便工作再无聊,客户再傻逼,该做的工作还得做。我们唯一能够控制的就是我们是否能够用更少的时间去完成这些工作。等下班后就可以有更多的私人时间,这段时间我们完全可以用来充实自己,过自己想过的生活。这才是真正的工作生活两不误吧?提高工作效率,不要把工作带回家了。

爱上维护

在一个外包公司工作,最希望的就是老板可以接到新项目,这样我们就可以重头开始建造一个软件帝国了。这是很有诱惑力的一件事情,起码我们不用看以前的人写的糟糕的代码了。事实上我们自己写的代码在别人看来同样糟糕

这本书里面作者劝我们

爱上维护。

我们都希望当编程的英雄,我们都希望自己是某某热门框架的作者,但是作者也说了即便像他们这样的高手这种情况都少得可怜。在一家公司工作大部分时间都会在维护该公司已有的软件,即便是在外包公司,这种现象也经常存在。

1)成为专家

要维护一个系统,首先我们需要熟悉系统的业务逻辑代码,这通常十分痛苦,因为我们总是觉得只有自己的代码才是可读的。当我们度过了这个业务熟悉阶段之后,我们会对需要维护的系统有一个较为全面的理解。就像作者所说的

成为需要维护的系统的专家。

这样当客户需要对系统做任何功能上的改动或者增加任何功能的时候,我们能够迅速定位到用户新需求需要改动的代码的位置,并且可以给予用户一些专业并且可行的意见。这不仅有利于提高我们的开发效率,也可以提升用户对我们的信任。

2)实践中收获更多

另外,当我真的用心去理解一个系统的时候,我发现我往往能学到更多的东西,这种东西与跟着书本写Demo所获得的东西是有所不同的。在已有的系统中,我了解到了一些Ruby的写法,在Ruby On Rails里面我们可以怎么做前端方面的优化。同事的代码有写的很优秀的,也有写得有点糟糕的,这同样也值得我们学习对于不同的场景可能会有不同的代码优化方案,从实践中思考,把已有的知识与他人的代码融入当前场景去思考,就不会有学了就忘了,或者说学了但是不知道自己学了有什么用的这种感觉了。

3)优秀的软件都是不断“维护”的产物

冰冻三尺, 非一日之寒。

很多好的软件并不是一开始就那么优秀的,它们往往经过了多次迭代,通过无数软件开发者的辛勤劳动所得。这就是作者所提倡的,软件维护的重要性吧。如果人人都想另起炉灶,或许就不会有Ruby On Rails,WordPress,jQuery这些经得住历史考验的优秀软件了。

持续进步

这个时代是一个急功近利的时代,其实在作者那个时代也是这样。我们都希望自己的努力能够马上见到效果。当我开始早睡早起的时候,我时刻关注着自己的黑眼圈黑眼袋什么时候消失,却没有反思熬夜伤身这么多年又岂是早睡早起一个星期就能恢复?当我开始不吃夜宵的时候,我时常关注自己的体重是否有下降趋势,却忽略了自己只不过是戒了几天宵夜罢了。这个世界上能够立竿见影的事情似乎比我们想象的要少得多。

比起只专注于目标上的做法,专注于现在的工作会使你离最终目标更近。

作者建议我们持续地进步,完成每天的小任务,享受每天的小成功。古人其实早就有类似的说法

故不积跬步,无以至千里;不积小流,无以成江海。

近代圣人曾国藩也曾说过

只顾耕耘,不问收获

但很多时候我们都像马云所说的“抓大不抓小”,总是功利地寻找着捷径,却没想过自己是否真的能为了这个目标持续付出点什么?我们是否能够坚持哪怕是最小的事情?

很庆幸的是2017年似乎是人生的转折点,之所说的转折点,并不是说我这一年,工资翻了番(其实我工资还稍微降了些),也不是说我这一年找到女朋友了(我还在努力)。而是这一年我发现自己能够稍微地坚持做一些东西了。虽然只是一点一滴的习惯,并不能很大地改善我现有的生活,但是最起码,我渐渐了解到了村上春树先生所说的节奏二字的含义。坚持做自己觉得对的事情,每天进步一点,剩下的就交给时间吧。

尾声

其实我觉得《我编程,我快乐》这本书的阅读人群并不仅仅限于IT从业者。不同的人根据自己不同的经历来阅读此书,我相信都会有不同程度的感悟。

另外要提一下的是作者大学专业也不是搞计算机的,他是音乐专业的学生,之所以搞起了计算机,估计又可以套用Linus的话了

Just For Fun