《程序员修炼之道》- 务实的哲学(1)
最近准备去看看《程序员修炼之道》通向务实的最高境界(第 2 版)。这是一本畅销十多年书籍的再版,是程序员必读书籍之一。这次的再版有 1/3 新增内容,其余大部分内容也重写了。这本书的目的很明确,帮助你成为一个更好的程序员。这是一本改变思维的书。
务实的程序员的特征
首先,在面对问题上,务实的程序员会越过问题的表面,基于整体来分析,找到问题背后的原因。如果你不了解需求的目的,你也不会知道为什么当初会这样做。更不知道如何来解决问题。
其次,就是对自己做的事情负责,一件事情出问题,可能有多种原因。以我们开发中最常见的上线延期为例,延期了是谁的问题?肯定有多方面问题,需求时间评估不足、需求理解错误、需求有变更、其他人的计划延期以及一些意外情况等等。但细想一下,哪些问题是能克服的,而你能做却没做好,这就是你的问题。
在你的职业发展、学习教育,以及你的项目、每天的工作等各方面对你自己负责,对你的行为负责,这是务实哲学的基石之一。一个务实的程序员能完全掌握自己的职业生涯,从不害怕承认无知和错误。有些事在编程中会令人不快,但却必然会发生——即使最好的项目也无法幸免。尽管有彻底的测试,有优秀的文档,有完备的自动化,结果还是出了问题——交付被推迟,未曾预料的技术问题出现。一旦这些事情发生,尝试依靠我们的专业性去解决问题。这意味着要诚实和坦率。我们固然会为我们的能力而骄傲,但面对缺点时也必须诚实——承认我们犯了错误,而且是因为我们的无知而犯下的。
不要把问题归咎于别人或其他什么事情上,也不要寻找借口。不要把所有问题都归咎于供应商、编程语言、管理或是同事。这些因素都可能是问题的一部分。它们的确会对解决方案造成影响,但不是给你的借口。
如果你面临供应商帮不上忙这样的风险,就应该制订一个应急方案。如果磁盘挂起——你所有的源码都在里面——而你没有备份,这就是你的错。跟你的老板说“我的源码被猫吃了”解决不了问题。
再则,学会改变。穷则变,变则通。程序员做一个功能时,很容易陷入自己的逻辑误区里出不来,与其在一条道上走到黑,不如先休息下,我记得我当初很多问题的解决方案都是在回家的公交车上。
最后,就是要多学习,你需要大量的基础知识和经验,才可能实现以上这些。很多程序员是有完美情结的,但记住一句话,完成好过完美。我们只能在有限资源里完成某个任务,永远达不到完美。想想看,我们每一次迭代都是在接近完美。
程序员,对工作有得选吗?
程序员不是加班的机器,你有选择的权利。
你的工作环境很糟糕?你的工作很无聊?尝试纠正它。不过,不要一直试下去。正如 Martin Fowler 说的,“你可以去改变组织,或是让自己换一个组织。”如果你的技术过时了,安排时间(你自己的时间)学习一些看起来有趣的新东西。这是一种自我投资,只有为此而加班才是合理的。
想远程工作?要求过了吗?如果他们说不行,就去找个说行的人。
这个行业给了你一系列非凡的机遇。积极主动点,掌控这些机遇。
改变组织很困难,你大可先试试。如果改变不了,换个组织也是可以的。对于能力差的人,找工作很难,能力强的永远不存在找工作难的问题。(能力不单指技术能力,还有沟通、性格等综合能力)你能力强不强,跟你相处过的同事知道。在换工作的时候,跟他们聊聊,如果他们不愿意推荐你,那说明你肯定哪方面做得不好。
对于加班,你能不能拒绝?也是可以的。评判是否加班的唯一标准是"加班是否有价值"。不能说老板没走,你就不能走。我事情做完了,当然可以走。如果确实有事,需要你加班,你当然不能走,你们是团队,有问题要一起解决。如果加班时间跟生活冲突了怎么办?那肯定具体情况具体分析,家里人生病了,项目又出问题了。你选择什么?那肯定先送家人去医院。如果你在家没事,公司项目出问题了,你怎么选?立马去公司解决问题。你可能觉得公司不是你的,这样付出太不公平了。这样想就不对了,公司不是你的,产品是你的。你为公司解决的问题都是你的经验,而且你的付出公司看在眼里,会不给你相应回报?你要是做得不开心了,可以换。放心,大把公司需要这样的人。
对于刚刚入职场的人来说,光靠工作八小时提升自己远远不够,还要善于使用另外八小时。加班学习是可以的。很多公司虽然没有加班工资,但加班福利还是有的。学习在哪都一样。当然学习的同时,不要忘记陪伴家人。单身的也要抽时间去交朋友,工作不是全部,但现在不努力,未来工作会更难。
挑战
· 当某人——比如银行职员、汽车修理工、店员——敷衍搪塞你时,你的反应是什么?你会怎么看他们和他们的公司?
什么服务态度,下次不去了。员工这样的服务态度,公司也不会好到哪里去。
管理上有个词,叫接触点管理。就是要管理与客户直接接触的点,什么时间(When)、什么地点(Where)、如何(How,包括采取什么接触点、何种方式)与客户或潜在客户进行接触,并达成预期沟通目标,以及围绕客户接触过程与接触结果处理所展开的管理工作。接触点管理很重要,特别是现在工具性价值相对雷同,更要突出服务性价值。
· 当你意识到自己在说“我不知道”时,一定要接着说“——但是我会去搞清楚”。用这样的方式来表达你不知道是非常好的,因为接着你就可以像一个专家一样承担起责任。
有很多类似的词,我觉得我们都不应该说。什么“我不会”,可以改成”我可以学“。把被动的消极的词,改成主动积极的词。思维改变行动,行动改变结果。
版权声明: 本文为 InfoQ 作者【石云升】的原创文章。
原文链接:【http://xie.infoq.cn/article/dd4595438e93915db137f0338】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论