程序员的类型

在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗?

散弹枪编程

这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 false 变成 true!”,当然依然出错,于是我们的程序员会这样:“好吧,那我就注释掉整个方法吧”,或是其它更为随意的处理方式,直到最后让这个调用成功。或是被旁边的某个程序员指出一个正确的方法。

如果我们把一个正规的程序员和一个撞大运的程序员放在一起做结地,那么,那个正规的程序可以马上变得发疯起来,并且,可以把正规的程序员的智商降到最低。两个撞大运的程序员不应该在一起做结对编程,这是因为他们破坏性的才能会造成的伤害会比只有一个还差。

撞大运编程

这是一种比散弹枪编程要温和一些的编程方式,我相信这种方式可能会是大多数程序员都会使用的方式。这种编程方式经常出现于程序员并不确切知道他们在干什么,也不知道所写的程序的本质和实际,但是可以让程序工作起来。他们以一种撞大运的方式在写程序,某些时候,他们根本就不知道某个错误的原因,就开始稀里糊涂地修改代码。一旦出现问题,他们会用两条路:1)停下来,理解一下程序,找到出错的原因。2)使用散弹枪编程方式开始解决问题。

测试驱动开发(Test Driven Development)是一种可以用来拯救上百万的撞大运编程的程序员。于是,他们有了一个更为NB的借口:只要我的程序通过测试了,你还有什么话好说?别骂我,测试驱动开发是一个不错的事物,其主要是用来控制撞大运开发所带来的问题。

Cargo-Cult 编程

关于Cargo Cults 这个词儿来自二战期间的某些太平洋上小岛里的土著人。在战争期间,美国利用这些小岛作为太平洋战场上的补给站。他们在这些小岛上修建自己的飞机跑道以用来运输战争物资。而那些小岛上的土著人从来没有见过飞机,当他们看到飞机的时候,觉得相当的牛,可以为那些白人带来各种各样的物品和食物。当二战结束后,那些土著人仿照着修建了飞机跑道,并用竹子修建了塔台。然后就在那期望着有飞机为他们送来物品和食物。

Cargo Cult 编程是一种非常流行的编程方法,使用这种方法的程序员会学习其它编程高手的编程方法,虽然他们并不知道为什么高手们要那样做,但是他们觉得那样做可以让程序工作起来。举个例子,当时有大量的程序员在J2EE出现的第一年中过度地使用了EJBs和Entity Beans。

刻舟求剑编程

刻舟求剑是一个很流行的寓言了。这种风格的编程在程序员的圈子里是非常常见的。比如,有一天,你发现了一个空指会的异常,于是你到了产生空指针异常的地方,简单地放上一个判断: if (p != NULL)。

是的,这样的fix可以让你的程序工作起来,但你并没有真正地解决问题。你只不过是在你的船边记下了剑掉下去的位置,这样做只不过把问题隐藏起来,最终只会让你的程序的行为变得神出鬼没。你应该找到为什么指针会为空的原因,然后再解决这个问题。

设计模式驱动型编程

正如这种编程的名字所说的,这种编程风格使用大量的设计模式,在你的程序中,四处都是设计模式,你的代码到处都是Facade,Observer ,Strategy,Adapter,等等等等。于是,你的程序要处理的业务逻辑被这些设计模式打乱得无法阅读,最后,也不知道是业务需求重来,还是设计模式重要,总之,实际业务需求的程序逻辑被各种设计模式混乱得不堪入目。

侦探型编程

在解决一个Bug的时候,侦探型程序员会调查这个Bug的原因。然后,则调查引发这个BUG的原因的原因。再然后,其会分析修正代码后是否会导致其它代码失败的因果关系。再然后然后,他会使用文本搜索查找所有使用这个改动的代码,并继续查找更上一级的调用代码。最后,这个程序员会写下30个不同的情形的测试案例,就算这些测试案例和那个Bug没有什么关系,最最后,这个程序员有了足够多的信心,并且精确地修正了一个拼写错误。

与此同时,其它一个正常的程序修正了其它5个Bug。

屠宰式编程

使用这种风格的程序员,对重构代码有着一种难以控制的极端冲动。他们几乎会重构所有经手的代码。就算是在产品在Release的前夜,当他在修正几个拼写错误的bug同时,其会修改10个类,以及重构与这10个类有联系的另20个类,并且修改了代码的build脚本,以及5个部署描述符。

时间: 2024-10-14 10:20:40

程序员的类型的相关文章

《告别失控:软件开发团队管理必读》一一2.2 程序员的类型

2.2 程序员的类型 为了选择合适的职员,我们还需要理解另一种看待程序员的方法.在上一节讨论的几种类型中,我们侧重考虑了程序员所从事的工作的类型(即客户端.服务器.数据库.Web).实际上,从技术知识.实践经验和程序员的专长角度去考虑也是很重要的,按这样的思路可以把程序员分类为: 系统工程师/架构师:系统程序员:应用程序员:非真正意义上的程序员. 2.2.1 系统工程师/架构师 在所有开发类职员中,系统工程师/架构师是最有技术和经验的.要想理解所有相关的系统组件(操作系统.通信系统.数据库.在线

【理想流】程序员的性格和命运 .

性格决定命运,程序员亦莫能外. 性格影响机缘有无,影响才情发挥,影响努力深浅,最终影响人生之结局,是人这一生里可以把握,又往往被忽视的因素. 在这里,我们来试着对程序员的性格和可能命运做一归结,当可为有心则戒. 绵羊型的程序员 这类型的程序员每天有点糊涂,也不知道应该干点什么.不是很有上进心,安排干什么都行,但会因为小糊涂或不用心偶尔犯犯错误. 除非家境很好,要不然绵羊型的程序员其实有点危险. 公司如果严苛,容易被淘汰:公司如果倒闭,容易找不到下家. 如果没有改变,最终退出程序员队伍的可能性很大

《告别失控:软件开发团队管理必读》一一第2章 理解程序员

第2章 理解程序员 告别失控:软件开发团队管理必读从许多方面看,程序员之间的差异都非常大,只有很了解程序设计的人才能完全理解这一点.大多数公司的高层管理者对所有的程序员一视同仁,这是一个可怕的错误.微软公司的Bill Gates和Adobe Systems公司的John Warnock都没有犯这样的错误,因为他们俩本质上也都是程序员. 这种差异为什么很重要?也许不应该很重要,但事实上,这种差异真的很重要.历经多年的程序员管理工作之后,我们仍然惊叹于程序员之间的巨大差异,需要有区别地进行问题处理和

《告别失控:软件开发团队管理必读》一一2.4 程序员的工作要求与能力

2.4 程序员的工作要求与能力 要想成功地招聘和管理程序员,首先要认识到每个程序员都有其独特的能力.就像雪花一样,任何两个程序员都不会是完全一样的.我们常常会说,程序员之间写代码的能力可能相差一个数量级.这种差异是怎么出现的呢?教育.经验.天赋以及直觉,还有其他无形的因素,都有可能导致这样的差异. 多数程序员不需要借助显式的排名或者头衔,从直觉上就能理解同行之间的差异.但是如果能把程序员的类型与等级正式记录下来,并简要描述每种类型与等级的职位要求与能力(见表2-1),那么管理工作将会轻松很多,项

《程序员的呐喊》一一1.11 作者手记:弱类型机制够不够强

1.11 作者手记:弱类型机制够不够强 程序员的呐喊 这是本书最老的文章之一.我在亚马逊时代写了差不多50篇博客,其中只有两篇被收录到本书中,这是一篇,另一篇是<巴别塔>. 这篇博客写于我离职亚马逊的前一个月.我在尽量保证公平公正的情况下,准确地总结了亚马逊在核心理念上的不同.我观察了这些理念上的差异在团队里的Perl和Java阵营之间,不同的数据建模风格,以及其他很多地方所产生的冲突. 当时我关注的焦点主要是和(编程语言的)类型安全以及(关系型数据库设计的)结构安全.后来我将这个问题进一步提

《程序员的呐喊》一一1.12 作者手记:弱类型机制够不够强

1.12 作者手记:弱类型机制够不够强 程序员的呐喊 这是本书最老的文章之一.我在亚马逊时代写了差不多50篇博客,其中只有两篇被收录到本书中,这是一篇,另一篇是<巴别塔>. 这篇博客写于我离职亚马逊的前一个月.我在尽量保证公平公正的情况下,准确地总结了亚马逊在核心理念上的不同.我观察了这些理念上的差异在团队里的Perl和Java阵营之间,不同的数据建模风格,以及其他很多地方所产生的冲突. 当时我关注的焦点主要是和(编程语言的)类型安全以及(关系型数据库设计的)结构安全.后来我将这个问题进一步提

5种类型的程序员 你是哪一款?

在我的代码旅程和编程冒险中,我遇到过很多奇怪的敌人,以及陌生的盟友.我发现至少有五种不同类型的代码战士,有的人能成为并肩合作的战友,而有些人似乎只能衬托我的每一个计划. 不过,他们在软件开发这个万神殿中也有着自己的地位.如果没有这些不同编程风格的合理搭配,那么你的项目要么需要很长时间才能完成,要么不够稳定或过于完美. 擅于修修补补的程序员 这编码可能不漂亮,但它能工作啊! 这种家伙是公司的基础.当出现错误时,他能快速修复,并且从某种程度上说,不会再坏掉.当然,他不关心代码的外观和易用性,也不在乎

《程序员的呐喊》一一1.13 弱类型机制够不够强

1.13 弱类型机制够不够强 程序员的呐喊你觉得--一个动态类型系统能有多大?静态类型系统到底重不重要?我非常想知道答案. 亚马逊有很多很大的系统,绝大多数采用了静态强类型,至少我知道的情况如此.那么有没有这样一种需求,或者说我们能不能用Perl.Ruby.Lisp.Smalltalk完成同样的工作? 其实,我感兴趣的是更宽泛一点的话题,也就是编程语言里的类型系统.例如,强类型之于关系数据建模和编程语言是一样的.你可以为每种可能性建模,也可以用键值对的方法快速建立原型.XML数据建模也一样. 静

8种类型极品程序员,不知你属于哪一种?_其它综合

在日常工作里肯定会发现很多有趣的事情,极品程序员所做的事就是很有意思的.事实上,现在所讨论的极品程序员主要是从他们的判断力.行为举止.个人态度和匪夷所思的工作方式上来判断的,有的时候这些程序员一味的只是追求文档上的内容,而不擅于用分析方式来解决问题. 几乎每一个软件开发者多多少少都会出现头脑短路的现象,也就是说,下面所列举的各种极品程序员类型,总有一款是属于你的. 1. 钟爱型程序员:万般宠爱集于一种技术 这种类型的程序员所遇到的致命错误就是:只钟爱一种技术,对别的技术不来电.其实这不是什么值得