被诅咒的程序员的七宗罪
七宗罪(Seven deadly sins),13 世纪道明会神父圣多玛斯·阿奎纳列举出各种恶行的表现。这些恶行最初是由希腊神学修道士庞义伐草撰出 8 种损害个人灵性的恶行,分别是贪食、色欲、贪婪、暴怒、懒惰、伤悲、自负及傲慢。
程序员生来不平等。有的伟大。有的渴望伟大。有的就是废物。
下面是一些程序员经常会走入的歧途。听起来很恐怖,但享用吧。上帝就在你身边,警惕这些危险的信号,跟随主救赎的指引。
1. 色慾(Lust)
凡犯色欲者:在硫磺和火焰中熏闷
作为程序员,这种罪恶的表现是不断的受绚丽的新事物的诱惑。下一代编程语言,最新的框架,最新的平台。
我们程序员天生好奇。我们受惑于追求高效,坚信所有的东西都要经过优化。只有用了那种最新的语言,我们才能工作。
虽然不断的追求改进是非常值得赞赏,但采用新事物也是有代价的。有避免不了的学习曲线。有适应问题。有未知的依赖问题。有未知的未知问题。
清除这些杂念。专心解决你手头上的问题。充分利用你知道的,停止贪恋那些光鲜新事物。
2. 贪食(Gluttony)
凡犯贪食者:强迫进食老鼠,蟾蜍和蛇
这是过度之罪。过度的企图多做,过度的扩展深度和广度。
不必要的功能特征溜进了产品里。大量无用的代码被生产出来。宝贵的编程时间被消耗,被浪费。
这些行为增加了不必要的复杂度,带来的高昂的维护代价。通常导致的结果是,预期不能完工。bug 层出不穷。
警惕那些不该有的功能、警惕那些对不必要的复杂架构的伪辩护、警惕过早优化的迹象。让产品简洁。
3. 贪婪(Greed)
凡犯贪婪者:在油中煎熬
过度专业化和功能化会导致形成个人的领地。固步自封。我的代码。我的模块。我相干的区域。没有分享。没有合作。
一种不健康的对这些人的依赖会逐渐形成。所谓的“编程教父”,“编程巨星”和“编程领袖”就代表了这些趋势。
相反,应该建立一个崇尚代码集体所有和充分合作(比如结对编程或相互代码审查)的文化。
4. 怠惰(Sloth)
凡犯懒惰者:丢入蛇坑
根据 Perl 语言的创造者 Larry Wall 的话,懒惰是程序员的三个伟大美德之一。
但懒惰不能和冷漠混为一谈。长时间不理出现的问题。允许代码腐烂异味。不重构拷贝/粘贴过来的重复代码。
对软件开发中这些需要修改的东西要有一种紧迫感。事无巨细。这是保持软件健康的必要态度。
5. 暴怒(Wrath)
凡犯暴怒者:活体肢解
在有些地方,有些程序员是每个人都尊敬,也是每个人都害怕。你也许遇到过这样的火星极客。他们恃才放旷,为所欲为,其他人在他身边都惦着脚走。避免和他冲突。
他们喜怒无常,他们的怒气经常撒错方向。他们贬低他人,破坏团队和谐。
警惕这种不受约束的对峙气氛的滋生。拒绝忍受这样的撒野。立即辞掉他们。
6. 妒忌(Envy)
凡犯妒忌者:投入冰水之中
不满足于现有的工具和系统,有些程序员眼睛总是盯着别人的。
我曾经遇到过这样的经历,一个 wiki 系统正在使用中,另外一个却同时被引进,因为它的标记语法感觉更好一些。两个问题跟踪系统,多种聊天系统,不兼容的博客平台,等等。
如果你不喜欢某个工具,相信有比它更好的,那好,去找到它,使用它。但是,请完全放弃你现有的。吃着碗里又想占这锅里,只会得不偿失,给自己制造麻烦。
7. 傲慢(Pride)
凡犯傲慢者:轮裂
有些程序员喜欢孤芳自赏。对自己的能力过度自信。从不寻求帮助。
更糟糕的,他认为所有的事情都应该由自己来完成。虽然他有能力完成任何的任务,但他却没能完成,因为他承担的太多了,无法集中精力。他分不清什 么是核心什么是次要的。在可以使用云服务时他建造自己的服务器,在能使用成熟的部署系统时他重新发明自己的,他开发出跟现有框架功能相同的框架,等等。
诚然,做研究是有趣的。这些研究经常被辩称为“基础”或“革新”,但却因没有更快捷的创造商业价值而使产品丧失市场先机。
小心“非我发明(Not Invented Here)”综合征。准确的定义你的核心目标,你的首要工作。其它的都是次要的,可以借用别人的。这没有什么好羞愧的。