英文原文
http://diveintomark.org/archives/2004/08/16/specs
大多数开发者是本蛋(morons),剩下的全是昆蛋(assholes)。我(Mark Pilgrim)不时的发现自己本人流于两个集团之一,所以不惭认定以下事实。
昆蛋
昆蛋精心阅读各种规范,寻找纰漏,疏忽,甚至仅仅是错别字。他们会写出严格符合规范,但是根本没用的代码。如果有人碰巧指出他写了没用的软件,他就可以自鸣得意了,然后在博客上作无辜状哭诉,指出规范中清楚证明他的极端破败软件如何如何技术性正确的条文。
有些昆蛋会写测试用例。碰到这样的人,在规范编写过程中是有好处的,因为有时搞好了可以把这些人无穷无尽的时间和精力利用起来,在规范定稿之前找出更多纰漏。不幸的是,要利用昆蛋,需要的时间和技巧有过之而无不及。这就是为什么写出好规范要如此耗时:大多数的时间浪费在了昆蛋管理上面。
本蛋
另一方面,除非被人吼了,本蛋从不主动读规范。他们做事就是淘荒几个示例程序,基于自己设想出来有限的几种情况写出看起来好用的代码。一旦交付,他们必然要被人吼,因为他们的产品很难找出哪怕一点能够符合别人用的规范。有人给他们指出规范里清楚说明他们软件破败如何严重的条文,他们于是加以修正。
本蛋一般没什么特别,但是其中有两种本蛋值得特别提及。第一种像所有本蛋一样改示例程序,交付,然后被吼,在被迫去读规范之后,他们会神奇般转变为昆蛋,辩驳说规范有歧义,或者某种程度上有误导,或者无从轻重,因为也没别人能实现,或者干脆就是错误的。这些人被称为“反社会者(sociopaths)”。不管规范定得多好,他们也不会去写与之相符的代码,所以对这些人不理也无妨。
第二种本蛋也是改示例程序,交付,然后被吼。但当他们开始习惯读规范之后,会神奇般的转变为拥护者,并且总结他们的失误写成教材。这些人被称为“专家(experts)”。几乎世上有用的教程都是由出身本蛋的专家写出来的。
天使
有人会辩驳说并非所有开发者都一定是本蛋或者昆蛋,但他们想错了。例如,有人认为存在一类我(Mark Pilgrim)称之为“天使”的开发者。“天使”仔细阅读规范后写代码,并且交付他们的产品之前针对成套测试进行全面测试。不会有真正的天使存在,不过对规范撰写者来说,有这个念像能让他们自我感觉好一些。
规范何用
如果你的规范不够好,本蛋就永远没有机会做出正确的东西。每有一个人抱怨他们的软件太破,就有两个昆蛋站出来说没有这回事。以仲裁本蛋与昆蛋之纷争为主要目的的规范,解决不了任何事情,争论还是会历年郁积。
如果你的规范够好,本蛋还有一线战机突破昆蛋的重围,知错能改而取得最终胜利。与此同时,除了挑规范毛病而无所事事的昆蛋们也就无的放矢,最后无趣而终,收手转去寻找其他人侵扰了。
分享到:
相关推荐
由“何用”引发的思考
何用Python代替Bash脚本指南
工程招标专用何用说明书.doc
由“何用”引发的思考.rar
制造工艺提升有何用 浅析半导体产品制造工艺.pdf
06-Docker有何用? 07-虚拟化与Docker 08-容器与虚拟机 09-Docker组件 10-什么是镜像? 11-如何获取镜像 12-如何搜寻镜像 13-如何创建镜像 14-如何删除镜像 15-镜像信息的查看 16-镜像的存出与载入 17-写时复制机制 ...
照明是一个点亮与被点亮的过程,在这里头,照明设计师对产品的技术认知很难超越厂商,对施工安装的技巧很难超越工程公司技术人员
单片机原理及应用课后习题详解答案1-14章
2.3.1.1 同学们不知所学何用 66 2.3.1.2 实际上大有用武之地 67 2.3.2 单车到飞船的经典之旅 70 2.3.2.1 未优化前,单车速度 70 2.3.2.2 绑定变量,摩托速度 72 2.3.2.3 静态改写,汽车速度 74 2.3.2.4 批量提交,...
VB上位机程序编写_百度文库 VB上位机程序编写 - VB Mscomm 控件基本介绍 VB Mscomm 控件 一、MSComm 控件的主要属性、事件 1、MSComm 的属性 Commport:设置或返回串口号。 ... 7页 浏览:1920次 ...
论的发展始终以软件复用为切入点,只有被最大可 能地复用,构件才有其存在的意义和经济价值。如 何用一种较为精确的、基于实践应用的方法来评价 构件的复用性,关系到构件质量的提高和构件库的 有效性。
可达矩阵 上课的课件 讲的很详细 看了一定用的
基于Hbuilder的视频播放AppVideoPlay,可放大,缩小视频窗口,可快进播放
htmltojsx-loader 将html作为jsx加载到webpack 执照
在一个模 的既约剩余系中,如果一个元素的指数恰好等于 m ) (m φ ,则这个元素即为模 的一个原根.在存在原根的既约剩余系中,每个元素均可以表示成原根的幂,反过来原根的幂 所表示的所有不同的元素恰好构成既约...
单片机课后习题答案
《软件工程》学习心得 时光匆匆,不知不觉间《软件工程》的课程已经快学完,虽说没有具体的项目来开发应 用,但我们知道软件工程是将系统化的,规范化的,可度量的方法应用于软件的开发, 运行和维护的过程,在整个...
目前 Java 语言的版本很多,除了常用的 Java 8,有一些遗留项目可能使用了 Java 7,也可能有一些比较新的的项目使用了 Java 10 以上的版本。如果想切换自己本地的 Java 开发环境,折腾起来还是需要花费一些时间的,...
第12招:朝夕相处不知何用?脑补一下USB接口的功能
读源码是我们学习进阶的必经之路。读源码可以了解设计模式的场景,可以了解并熟悉框架的底层实现,...读源码不知有何用;读源码花费时间很多但是效果不佳,很难坚持下去。 本节将为大家讲解 Java 源码学习的一些经验。