程序员的精神特质
最近在某博上看到一段文字:
周思博(Joel Spolsky)在几年前的一篇文章中谈论了程序员的喜好,其中一点就是非政治化。以下引用阮一峰博客的翻译: “老实说,只要有两个以上的人待在一起,就会有政治。这很自然。我说‘不搞政治’的真正的意思是‘不搞恶性的政治’。程序员早就练出了对公正有非常良好的判断力。代码要么能运行,要么不能。坐在那里争论代码是否有问题,这是毫无意义的,因为你可以运行代码,答案自然就有了。代码的世界是非常公正的,也是非常严格有序的。许许多多的人选择编程,首要的原因就是,他们宁愿将自己的时间花在一个公平有序的地方,一个严格的能者上庸者下的地方,一个只要你是对的就能赢得任何争论的地方。”
于我心有戚戚焉。
自认为作为一个典型的程序员,我对程序代码乃至生活都有着一种刻薄的客观。我不知道是程序员职业造就了这样的性格,还是这样的性格让我走上了程序员的道路。我泛泛地认为,世界上的职业分为三种,商人、政治家和“纯粹艺术家”(“非纯粹艺术家”可归类为商人或政治家)。程序员(真正以coding为主业的)是纯粹艺术家的一种,与极端感性的文艺艺术家不同的是,他们极端的理性客观,他们的精神存活在一种复杂却没有秘密的世界。计算机科学分支庞杂,外延极广,可以说是纷繁杂乱,但是一切归根结底又都必然是由最简单明了的0和1组成,绝对没有任何例外和可供讨价还价的灰色地带。
这,是一种终极的唯一,可以称之为真理。
面对一个问题,程序员首先需要精确完备(无二义性无漏洞)的问题描述作为输入,这在软件工程上叫做需求分析,面对一个需求不明确的事情,程序员是会死机(郁闷无解)或崩溃(骂娘)的。
需求分析完毕之后,就是设计实现了,真正的程序员会纠结于各种解决同一问题的方法,在穷尽所有的方案后追求极致的性能和美感。是的,美感,程序也是有美丑的,程序员很在乎这个,这是一种很难给非程序员解释的感觉,精致、灵活、流畅又充满力量的程序,像清风吹过,像小溪流淌,像暖暖的太阳照进你的心里。这一阶段是一位程序员最神圣的时刻。
最终将程序交付测试并发布,这时的程序员又和一位艺术家没什么两样了,程序就像自己呕心沥血的作品,希望他能给使用者带来最爽的感觉。
一件事情,就像一则程序一样,好的坏的、真的假的、对的错的,应该一清二楚,不清楚的也会有唯一真理来唯一推理,这,就是程序员看世界的方式。
-------
from: