全部 linux perl programming news

两个程序员的寓言

从前有俩程序员分别在两家公司实现相同的系统。一人悠哉地写了精简的程序,实现所有需求提前完工,管理层觉得活太简单,颇为不爽;另一人虚张声势拉扯多人团队做超复杂的系统,实现多数需求,管理层以为活太复杂却能按时完工,实属不易,给予重赏。

两个程序员的寓言

尼尔·W·里克特

曾几何时,“自动会计应用程序协会”和“合并的计算机资本公司”彼此不为人知,他们决定他们需要相同的程序来执行某种服务。

Automated雇用了一名程序员分析师Alan解决了他们的问题。

同时,Consolidated决定请新聘的入门级程序员Charles来完成这项工作,以查看他是否像假装一样出色。

曾在困难的编程项目中拥有经验的Alan决定使用PQR结构化设计方法。考虑到这一点,他要求他的部门经理指派另外三个程序员作为编程团队。然后,团队开始工作,搅动我们的初步报告和问题分析。

回到Consolidated之后,Charles花了一些时间思考这个问题。他的同事们注意到,查尔斯经常用脚坐在桌子上喝咖啡。偶尔会在计算机终端上见到他,但是他的办公室伙伴可以从节奏的敲击声中看出他实际上是在玩《太空侵略者》。

到目前为止,Automated的团队已开始编写代码。程序员花费大约一半的时间来编写和编译代码,而其余的时间都在会议上,讨论各种模块之间的接口。

他的办公室伙伴注意到,查尔斯终于放弃了太空侵略者。取而代之的是,他现在把时间分配在喝咖啡的时候,他的脚放在桌子上,到零碎的纸上乱涂。他的涂鸦似乎不是井字游戏,但这也不是很有意义。

两个月过去了。最后,Automated团队发布了实施时间表。再过两个月,他们将拥有该程序的测试版本。然后,经过两个月的测试和增强,便会生成完整的版本。

查尔斯的经理到现在为止已经厌倦了看到他发疯。他决定面对他。但是当他走进查尔斯的办公室时,他惊讶地看到查尔斯忙于在终端输入代码。他决定推迟对抗,于是进行了一些闲聊。但是,他开始密切关注Charles,以便当机会出现时他可以与他面对面。他不希望出现不愉快的谈话,但很高兴地注意到查尔斯大部分时间似乎都很忙。甚至有人发现他会延迟午餐,并且每周下班两到三天才能下班。

三个月末,查尔斯宣布他已经完成了该项目。他提交了500行程序。该程序写得很清楚,经过测试,它可以完成规格中要求的所有操作。实际上,它甚至还具有一些其他便利功能,这些功能可能会大大提高程序的可用性。该程序已经过测试,除快速纠正的监督外,该程序运行良好。

到目前为止,Automated团队已完成其计划所需的四个主要模块中的两个。这些模块现在正在测试,而其他模块已完成。

又过了三个星期,艾伦(Alan)宣布初步版本比原计划提前一周准备好。他提供了他希望纠正的缺陷列表。该程序正在测试中。用户发现了除列出的错误和缺陷之外的许多错误和缺陷。正如艾伦(Alan)解释的那样,这不足为奇。毕竟,这是一个预料之中的错误。

再过大约两个月后,团队完成了该程序的正式版。它由大约2500行代码组成。经过测试,它似乎可以满足大多数原始规格。它省略了一个或两个功能,并且对输入数据的格式非常挑剔。但是,公司决定安装该程序。他们总是可以培训其数据输入人员以所需的严格格式输入数据。该程序已移交给某些维护程序员,最终合并了缺少的功能。

续集:

最初,查尔斯的上司印象深刻。但是,当他阅读源代码时,他意识到该项目确实比他最初想象的要简单得多。现在看来,即使对于初学者来说,这也不是什么挑战。

查尔斯每天确实产生约5行代码。这可能略高于平均水平。但是,考虑到程序的简单性,这并不是什么例外。他的上司还记得他两个月的懒惰。

在他的下一次薪酬审查中,查尔斯得到了加薪,大约是同期通货膨胀的一半。他没有得到晋升。大约一年后,他感到灰心,离开了巩固军。

在Automated上,Alan对按时完成项目表示赞赏。他的主管检查了程序。经过几分钟的浏览,他发现正在遵守有关结构化编程的公司标准。但是他很快放弃了尝试阅读程序的尝试。似乎很不可理解。到现在,他意识到该项目确实比他最初设想的要复杂得多,他再次对艾伦的成就表示祝贺。

该团队每天每个程序员生产3行以上的代码。这大约是平均水平,但考虑到问题的复杂性,可以认为是例外。艾伦获得了丰厚的加薪,并被提升为系统分析师,以表彰他的成就。

原链 The Parable of the Two Programmers

下一篇: 互联网之父发起的:保护互联网运动的活动
保护互联网