您的位置:首页 > 职场人生

我所理解的程序员的三种美德

2017-01-22 14:33 218 查看
Perl 语言之父 Larry Wall 说过,好的程序员有 3 种美德:

懒惰、急躁和傲慢(Laziness, Impatience and hubris)。

懒惰
是这样一种品质,它使得你花大力气去避免消耗过多的精力。它敦促你写出节省体力的程序,同时别人也能利用它们。为此你会写出完善的文档,以免别人问你太多问题。

我的补充理解是:善于偷懒,不愿意做简单重复的事情,善于利用工具甚至创造工具来自动完成一些编码,达到轻松高效完成编程的效果,而不是简单重复地复制或重写代码。不重复造轮子,能花最小的代价做最多的事情,这其实就是一种能效比的体现,现在的cpu,显卡不也是追求能效比吗?懒惰是一种性格,其实也来源于生活,像我,能用省时省力的方法绝对不会选择费时费力的方法。有的人做事很勤快,但是不懂的变通,只是不经思考地做重复的事情,这样就失去了思考和创造的机会。当然勤劳也是一种美德,我觉得更重要的是思考和创造。世界上很多的发明其实都是为了偷懒而创造出来的,当然你去创造的时候还是要勤劳的,不然怎么做出成品。所以这里说的懒惰并不是那种什么事情都不做的懒惰而是选择更轻松的方式做了事情的懒惰。

急躁
是这样一种愤怒,当你发现计算机懒洋洋地不给出结果。于是你写出更优秀的代码,能尽快真正的解决问题。至少看上去是这样。

我的补充理解是:当维护别人的代码或者看到同组同事所写代码,发现各种问题,各种不规范,各种垃圾代码和混乱逻辑充斥眼前的时候,那种无奈,绝望甚至心里有一万只草泥马奔腾而过的感觉。你会在心里或嘴里咒骂:“这尼玛写的什么鬼!”。当然,首先你要有实力和经验,才能看到别人代码的不足。如果你自己也是一般的毕业生,那看到这样的代码心里是不会急躁的,因为自己也是写同样烂的代码而且自己并不知道。而如果你是一个写了几年代码的老鸟,有了几年丰富的经验,有了被各种垃圾代码坑过的经历,更重要的是你这几年都在不断的学习和进步,逐渐接触,理解和实践了一些更高级的东西。比如编程思想,设计模式,各种技术框架等,对面向对象的三大特性和六大原则都渐渐有了更深入理解的时候,你就会看到别人代码的不足。因为你知道这样的代码存在问题或者以后维护,扩展,需求变化的时候会有什么问题。你知道怎样写出更好,更灵活的代码,比如解耦,单一职责等。甚至你回过头看看自己几年前写的代码也是那么的垃圾。那么说明你进步了,比别人接触和掌握的东西多多了,考虑的也比别人多多了。你看到别人的代码和自己以前的代码,感觉越烂,那你其实就越牛逼。没有对比就没有伤害,有了对比才能看出厉害。其实技术是要靠慢慢积累的,一般人不可能刚毕业就能写出很牛逼很完美的代码,常常是通过几年的积累才能达到一定的高度,对此我是深有体会的。刚毕业的时候其实我们写代码也是一通乱写,只要能实现功能就可以了,根本不管可读性,可维护性等。因为那时候要学的东西太多了,要做的事情也很多,也基本没机会去实践一些东西,一般都只能默默的写一些基本的代码。有心的人会经常看一些书和技术文档慢慢积累理论知识以及动手实现一些小demo,慢慢的有了自己的心得和想法。无心的人就随意的写代码,也不看理论书籍继续提升自己或者对编程没多大兴趣。几年后这两类人的差别就很大了。前者已经能够考虑到各种问题以及解决和避免各种问题,后者经常不管三七二十一,只要实现功能就ok了。前者能够看到别人代码大量的不足,包括自己以前的代码,后者却基本上什么都看不出来,写出来的代码还是跟以前差不多。前者写出的代码能够轻松应对各种潜在的问题,不管需求如何变化,不管人员如何变动都能轻松搞定。后者却经常抱怨:妈的!怎么需求又变化了,怎么又换人了。可想而知二者的差距是有多大。

傲慢
极度的自信,使你有信心写出(或维护)别人挑不出毛病的程序。

我的补充理解是:对于别人写的不好的代码坚决指出问题,因为这些代码没有遵守一些原则,存在着一些问题。或许当时对方看不出来有什么问题,因为经验和技术有限,而你能够看出问题,但是有时候就是说不清楚具体原因。其实有很多东西都是隐约记得大概怎么样,但是具体不太记得,因为不常用。比如很多时候我们写代码其实不知不觉中已经应用到了一些设计模式或者这些设计模式的变种(其实设计模式远不止经典的23种,只是GOF根据经验概括出了常用的23种设计模式。有些时候我们其实根据具体的情况写出了这些模式的变种,或者是混合使用了一些模式,或者是全新的模式,这些模式可能没有名称)。我们不记得具体叫什么,为什么要这样写,但是我们清楚这样写才符合面向对象的三大特性和六大原则。比如我们指出自定义控件的时候数据代码和显示代码要解耦,要独立,不能混合写在一起。根据积累的经验和知识,直觉告诉我们这样的代码存在问题。因为我们知道很多他们不知道的东西,但是跟他们说半天又听不懂,或者没有耐心详细的说,因为涉及到的知识和情况太多了,没有一定的积累是理解不了的。我们一时说不清楚具体的原因,又要求他们必须这样做。这样在他们看来就像是傲慢了,他们可能会这样说:这不是实现功能了吗?这不是一样吗?这不是差不多吗?没什么区别啊。其实是因为他们经验和能力有限,看不出来。他们中积极向上的人几年后会领悟到这些东西的,这时他们会想:哦,原来当初是这么回事啊!我以前真傻比!其实是因为这些人进步了,知识和经验都积累到了一定层次,也遇到过很多坑了,所以他们懂了。这是大牛们成长过程中普遍会经历到的。还有一些人几年后还是不懂当初那个大牛说的话和用意,因为他们没有进步,没有积累,所以还是不懂。其实我们应该感激当初的某个大牛对我们的耐心指导和苦口婆心,使我们有了巨大的进步。我们要学会积极吸收别人的长处,把别人优秀的代码和思路学习过来。当然要有自己的想法,不能全盘照搬,要去其糟粕,取其精华,为我所用。这样才能不断成长,不断进步,最终进化成大牛。我现在回过头来也是对以前对我有帮助的同事持有感激之情的。不管是他们细心耐心的讲解,还是不耐烦的指出我当时的不足,或者他们的某些代码对我产生了一些启发。这些都促进了我的成长,增长了我的见识,规范了我的代码。当然我们也要懂得举一反三,以不变应万变,这样才能更好的进步。其实说一个很现实的问题,就是除了你自己的努力学习,这些人对你的促进也提升了你自己。当你技能和经验都提升了以后你的工资也相应的增加了。所以对看似傲慢的大牛不紧要积极地学习吸收,也要怀着感激的心。他们指出你的不足,其实是在提升你,间接的为以后的你增加工资。其实学习不论高低,每个人都不可能接触到全部的东西。所以要学会不耻下问,积极吸收一些经验和技能不如你的人。所谓三人行必有我师,可能他们找到了一些好的代码,好用的控件,或者改造了一些代码挺不错的,我们也可以拿来用。好用的就直接用,如果觉得需要继续改造的就自己动手改造一下。或者他们的一些思路确实挺不错的,我们心里会想:这个确实不错,我怎么没想到呢?这就是集百家之所长,为我所用的精神。我们要不断地学习,借鉴别人好的地方,不断改正自己不好的地方,这样才能最终成长为一个大牛。所以对你身边傲慢的有实力的人怀有感激之情吧,默默的听取和吸收他们的建议,而不是无知的抵触和不耐烦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: