代码如人
前段工作非常繁忙,经常加班,时常是晚上十一二点下班,又是通宵发布。这样的繁忙的时期相信大多数做软件开发的人都会遇到,身体和精神上疲惫等带来的负面影响不需多说了。但是这样高强度的工作给我带来一个意外的好处,我开始更加深入的思考软件开发这个工作。在这篇文章中,就来谈谈最近的思考总结出来的一个观点:代码如人。
代码如人,是因为代码是人写出来的,正如其他的人造物一样,也是人的一种延伸,也会深深地烙上其作者的痕迹。
接受过天朝的应试教育的人知道,在评论一篇文章的时候,我们经常会用“这篇文章反映了作者什么什么样的精神,什么什么样的思想”这样的句式,虽然这样根据一篇文章就去给其作者下结论有恶意揣测之嫌,是不对的。但是不得不说,一个文章的确能够反映其作者的某一个侧面,哪怕只是一个很微小的侧面。同样,代码也能够反映其作者的某一个侧面,哪怕只是一个很微小的侧面。
外界人常常会认为程序员需要良好的逻辑能力,这当然是没有错的,写代码保证逻辑的正确是一个基本要求,但是写代码的过程却并非是一个完全理性的过程,期间也需要有感性的介入,而对于感性的东西不同的人一定存在不同的偏好,萝卜青菜,各有所爱。有些人喜欢用驼峰命名法,有些人喜欢用匈牙利命名法;有些人喜欢用 tab 做缩进,有些人喜欢用空格做缩进。
然后感性在编程过程中的介入并不仅仅止步于个人的喜好,在一些非常的时刻,我们可以看到一个人的品格可以对代码有更加深刻的影响。我经常各种社交网络上看到说:“检验一个人是否值得爱就和他/她一起去旅行,在旅途中能够更好地反映出一个人的品格”。同样当你的项目非常紧急,你是否愿意放弃 DRY 原则而选择去拷贝代码,当故障来临的时候,你是否能够顶住压力,冷静分析自己的假设,迅速地定位出问题的所在。JMZ 说过:“痛苦造就性格”,同样,痛苦也会体现出性格,而这些性格也会通过某种方式影响你写的代码,这种影响在越极端的环境下会越明显。
工作最开始的几年,我也一直对公司的各种培训中出现的责任心,意志力之类的词嗤之以鼻,认为这不过是公司忽悠员工的手段而已,现在我开始认为无论这是不是公司忽悠员工的手段,责任心,意志力或者其他的品格至少对一个优秀的程序员来说,都是必须的,因为这些东西对你的其他影响不说,至少这些东西就会影响你的代码了。
诚然一个人的品格会以某种方式或多或少体现在其写的代码上面,然后我们绝对不可以从一个人代码去判断一个人的性格,人太复杂,远远不能仅通过一段代码就可以给一个人下结论。代码如人,是希望每一个想要成为优秀的程序员的人都应该把自己培养成具有更优秀的品质的人。
To be a better man,to be a better programmer。