Saturday, June 29, 2013

没有愚蠢的程序员,只有懒惰的程序员

这是多么万能的一句话——没有愚蠢的XXX,只有懒惰的XXX:没有愚蠢的女人,只有懒惰的女人;没有愚蠢的学生,只有懒惰的学生;没有愚蠢的人类,只有懒惰的人类。关键在于,这么多种说法,偏偏都很有道理。想要不愚蠢,你不懒惰啊?
我个人不喜欢别人叫我程序员,也不喜欢叫自己软件工程师,这些名字都显得大气而空洞;伴随着这些名字,随之而来的,便是责任;发生问题时,总会需要更大的精力才可以填满这些称号。我喜欢叫自己开发者(Developer),简单,确定。在设置完备的环境中,条件满足的情况下,做着无技术挑战的工作。开发者写下的代码不具有任何新意;每天做着几乎一样的看似无聊的工作。所以开发者既不愚蠢,也不懒惰,因为不会有难题,不需要愚蠢,而且完全确定的任务,更不用懒惰。换而言之,简单,确定——这是一切项目的极致,五到六个星期完成一个项目,便需要的是这种开发者。
当然完美而理想,对于程序员来说也是很难的;更多的时候,程序员无法给出答复,或者给出的选择也无法让用户满意;这个时候,程序员便是愚蠢的,至少绝大多数的时候,被认为是愚蠢的。没有办法,这个时候,虽然程序员不懒惰,但依然是愚蠢的——谁让你是程序员呢?跟你说了,你是开发者,开发者永远不会接受这种无辜的愚蠢。
程序员愚蠢的表现,不在于用户,而在于自己。怎么说呢,一个愚蠢的程序员,总是会坑自己,或者坑自己的同僚。当程序员用一段天马行空的逻辑,写下一段天马行空的代码时,竟然有问题,这个时候首先被坑的便是自己——自己首当其冲的被坑,因为它可能不对,便需要修改,然而天马行空岂是那么容易改的?等坑完自己之后,便轮到同事了,因为天马行空影响到了别人的代码运行,别人又需要帮你修改;就算不需要帮你修改,别人至少需要扫一眼你的天马行空——可是一眼扫完,竟然看不懂!扪心自问,你有多少次看不懂自己曾经写下的“完美”的代码?扪心自问,你有多少次看不懂别人的代码?好的代码,好在于它读起来便仿佛一场单方面的对话,又怎会读不懂呢?当然了,如果不懂英语的话又另当别论了——不懂英语的话为什么要用英语编程呢,你可以用拼音啊!所以说这个时候,注释会需要到吗?对于一个经常读代码和写代码的程序员来说,你可能百分之九十九的时候会把注释忽略,因为你的眼睛只关心代码。
所以说,代码需要平淡无味,毫无新意,使用的都是大家都明白的技术。简单的代码,并不等于愚蠢的代码;反而言之,简单的代码,是为了不愚蠢。当你的代码步入生产,得到运行时,竟然不对,合理的布局,合理的记录(log),可以让你第一眼明白问题出在哪里——反之,坑自己。(推荐Clean Code 或者 Effective Java)
程序员是和机器打交道的一群人,这不同于开发者。开发者是使用已知技术做事的人,而程序员却需要更新自己。换而言之,开发者是正常运行的程序员,开发者非常关注自己的产率。程序员需要实时维修自己,需要训练自己。不幸的是,更新自己和更新机器差不多,需要了解最新科技,需要阅读文档。一个懒惰的程序员,会觉得这些非常辛苦。因为程序员需要精读的东西很多,如果他不想让自己愚蠢的话。你知道为什么你的公司要花钱让你去买书吗——你很幸福是吗?这只是为了让你不再如此愚蠢。读文档,比读小说更加有趣,原因就在于你需要精读——所谓精读者,在于不是为了记住它,而是了解它,使用它,对它负责。愚蠢,大多数情况下都是源于懒惰,对程序员来说便是如此简单。

No comments:

Post a Comment