网易首页 > 网易号 > 正文 申请入驻

两个程序员的寓言:2500行代码的程序,一定比500行的好吗?

0
分享至

  编者按:2500行代码的程序一定比500行代码的程序好吗?写出简洁、高效、高可用的程序的开发者黯然离场,搞出庞大、复杂又难用的程序的人倒能加薪升职?究竟开发者的工作应该如何进行评价?来看看下面两个程序员的故事吧。本文译自RealMensch,作者 Neil W. Rickert,原标题为“The Parable of the Two Programmers”。

  两个程序员的寓言

  很久以前,有两家公司,分别是"Automated Accounting Applications Association "和 "Consolidated Computerized Capital Corporatio",他们决定,需要一个程序来执行自己公司的某项业务,但这两家公司并不知道,对于他们的业务需求来说,要开发的程序是完全一样的。

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

  与此同时,Consolidated决定让他们新招聘的一名初级程序员Charles来负责这项工作,看看他是否真的那么优秀。

  Alan曾经有过操刀艰难的编程项目的经验,所以他决定使用PQR结构化设计方法。考虑到这一点,他要求部门经理再指派三名程序员作为编程团队。然后,这个团队就开始工作了,扑到了铺天盖地的初步报告和问题分析上。

  再看Consolidated这边,Charles没忙着动手开干,他花了一些时间思考这个问题。Charles的同事们注意到,他经常坐在桌前,把脚抬起来放在桌子上,喝着咖啡。偶尔也会看到他在电脑前忙活,但同事们从他敲击键盘的节奏就能看出,他其实是在玩《太空侵略者》的游戏。

  这时,Automated的团队已经开始写代码了。程序员们大约用了一半的项目时间来编写和编译代码,其余的时间都在开会,讨论各种模块之间的接口问题。

  而Charles的同事注意到,他终于不再沉迷《太空侵略者》了。他现在要么就是把脚架在办公桌上喝咖啡,要么在小纸片上乱涂乱画。他写在小纸片上的字迹很潦草,当然看起来不是在玩Tic Tac Toe(一种游戏),但也没有什么意义。

  两个月过去了,Automated公司的团队终于发布了项目实施时间表。再过两个月,他们将发布一个测试版的程序。然后再经过两个月的测试和优化,便会得到一个完整的最终版程序。

  另一头,Charles的经理一直看着Charles上班摸鱼,已经厌烦了,他对Charles失去了耐心,决定和他摊牌。但当他走进Charles的办公室时,却惊讶地看到他在电脑前忙着输入代码。他决定等等看会发生什么,所以打了个哈哈,然后离开了。他开始密切关注Charles,以便抓住机会当面好好教训他一番。但是预期中那令人不快的对话并没有出现,因为他很高兴地注意到,Charles似乎大部分时间都在忙碌,甚至有人看到Charles忙得连午餐都很晚去吃,而且一周有那么两三天,下班后他还会留下来加班。

  三个月结束时,Charles宣布他已经完成了这个项目。他提交了一个包含500行代码的程序。程序似乎写得很清楚,经过测试,它可以满足项目既定的所有需求。事实上,它甚至还有一些额外的便利功能,可能会显著提高程序的可用性。该程序投入实际测试使用后,除了发现一个可以快速纠正的疏忽外,表现良好。

  到这时,Automated的团队已经完成了项目所需的四个主要模块中的两个。这些模块目前正在进行测试,而其他模块已经完成。

  又过了三周,Alan宣布,初级版比原计划提前一周完成。他提供了一份待纠正的缺陷列表。该程序开始进行实际测试使用。除了缺陷列表中列举的问题,用户还发现了一些其他的错误和缺陷。正如艾伦所解释的那样,这并不奇怪。毕竟这是一个初级版本嘛,有错误是意料之中的。

  又经过大约两个多月的时间,程序的正式版本开发完毕。它由大约2500行代码组成。测试时,它似乎满足了大部分项目需求。但是它削减了一两个功能,而且对输入数据的格式非常挑剔。然而,公司还是决定上马该程序了。他们可以随时对数据录入人员进行培训,让他们严格按照要求的格式输入数据。此后该程序移交给了一些负责维护的程序员去补全缺失的功能。

  后记:

  起初,Charles的上司对他在这个项目上的表现还是比较满意的。但当他通读程序源代码的时候,他发现这个项目真的比他最初想象的要简单得多。现在看来,即使是对一个初学编程的人来说,这显然也不是什么难事。

  Charles每天确实产出了大约5行代码,这或许是略高于业内平均水平。然而,基于程序是这么简单,他的表现也就并没有什么特别了,而且他的上司还记得他那两个月的“摸鱼劣迹”。

  在下一次薪酬调整时,Charles得到了加薪,加薪幅度约为这一时期通货膨胀率的一半(很可怜吧),公司没有给他升职。大约一年后,他变得心灰意冷,离开了Consolidated。

  在Automated公司,Alan因如期完成了项目而受到嘉奖。他的上级看了看他们编写的程序,他浏览了几分钟,恩,是遵守公司关于结构化编程的标准的。然后他很快就不再继续尝试往下看了,这程序看起来似乎很难理解。这时他意识到,这个项目确实比他原先设想的要复杂得多,他再次对Alan的成就表示祝贺。

  Alan团队的每个程序员每天产出3行多的代码。这在业内大约是平均水平,但考虑到这个项目所要解决的问题的复杂性,可以说是很不错的产出啦。Alan因此获得了丰厚的加薪,并被提升为系统分析师,以表彰他的成就。

  来自Tim Mensch的评论:

  我曾经是一名年轻但是聪明的程序员,这个故事令我产生了强烈的共鸣。即使在我还是个职场新人的时候,我也能做到令很多资深开发人员都感到有挑战的事情。在我的第一份工作中(作为游戏开发者),我的经理说我在几天内创建的代码,感觉比一个更有经验的开发者经过几个月的推敲后完成的代码都要好(从物理意义上讲)。在我的第二份工作中,我对一个有十年以上经验的高级开发人员编写的工具程序进行了优化,使其只需几分之一秒就能完成一个任务,而不用花费几分钟。我的整个职业生涯充斥了这样一连串的奇闻轶事。

  在我从事编程以来的多年开发和学习经历中,我意识到经验确实很重要。但是,底层技能也同样重要。实际上,就像上面讲到的两个程序员的寓言一样,底层技能可能比经验更重要,我认为这个事实已经被许多当代的开发者忽略了。

  话虽如此,我也曾经踩过坑,跟上文提到的第二个开发者类似,创建了一个比实际所需要的复杂得多的系统。我知道一个复杂的解决方案,并且知道自己可以实现它,但这并不意味着它就是最好的解决方案,我需要时不时地提醒自己这个事实。

  于是,我尝试做出妥协,甚至质疑我自己的解决方案,持续寻找能够改进和简化的方法。我曾遭到指责:因为我倾向于花费更多的时间去思考一个问题,而不是仅仅用显而易见的方法去解决它;我希望能找到更简洁的方法去解决问题。因为花了很多时间思考,看起来好像不务正业,但是充分地思考可以让我产出更好的结果----代码量更少,更健壮、更可扩展而且更容易阅读。

  这就是为什么我认为上面这个寓言如此重要的原因。开发经验固然重要,但在项目设计和实施上的技能都可以完胜经验,如果你同时具备经验和技能,就可以实现相当的奇迹。只要你持续质疑自己的想法并持续思考如何更好地完善它,而不要一味地认为自己的第一个设计构思就是足够完美的。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
在医院你遭遇过最羞耻的事是什么?网友:一个比一个炸裂啊

在医院你遭遇过最羞耻的事是什么?网友:一个比一个炸裂啊

解读热点事件
2026-02-04 00:05:07
潮汕妈妈过年有多累?凌晨四点起是标配!网友:全家人该拜的是她

潮汕妈妈过年有多累?凌晨四点起是标配!网友:全家人该拜的是她

墙头草
2026-02-16 12:26:03
“废掉”一个孩子,就让ta待在家里,一天到晚待在家里

“废掉”一个孩子,就让ta待在家里,一天到晚待在家里

行者马生的笔记
2026-01-27 21:15:41
中国三大长寿食物,鱼只能排到第三,第一名很多人想不到!

中国三大长寿食物,鱼只能排到第三,第一名很多人想不到!

江江食研社
2026-02-12 12:30:10
现货黄金,失守5000美元!

现货黄金,失守5000美元!

证券时报
2026-02-16 11:51:12
20年四川14岁少年满脸纹身被父亲赶出家门,找不到工作,如今怎样

20年四川14岁少年满脸纹身被父亲赶出家门,找不到工作,如今怎样

小熊侃史
2025-12-25 11:15:02
中央财办分管日常工作的副主任、中央农办主任韩文秀,发表署名文章

中央财办分管日常工作的副主任、中央农办主任韩文秀,发表署名文章

中国基金报
2026-02-16 12:47:58
5万一套海景房成“鬼城”!200户仅20户住,老人靠卖煎饼勉强维生

5万一套海景房成“鬼城”!200户仅20户住,老人靠卖煎饼勉强维生

墨兰史书
2026-01-13 03:40:03
印度三番五次挑衅,专家警告:中国离收拾印度,只差一个战略机遇

印度三番五次挑衅,专家警告:中国离收拾印度,只差一个战略机遇

荷兰豆爱健康
2026-02-16 17:10:18
冬奥赛程过半首金何时来?中国健儿米兰战未央

冬奥赛程过半首金何时来?中国健儿米兰战未央

澎湃新闻
2026-02-16 11:50:05
你是怎么发现好朋友家里很有钱的?看完网友分享,评论区笑麻了

你是怎么发现好朋友家里很有钱的?看完网友分享,评论区笑麻了

夜深爱杂谈
2026-01-14 19:31:52
人老了才明白的道理:有钱,你是爹娘;没钱,你是累赘

人老了才明白的道理:有钱,你是爹娘;没钱,你是累赘

千秋历史
2026-02-16 16:53:59
造福76亿人!中国突破赤泥炼铁技术,将令全世界产生巨大的变革

造福76亿人!中国突破赤泥炼铁技术,将令全世界产生巨大的变革

青烟小先生
2026-02-16 11:28:34
广东一男子骑摩托一脚踹倒路边拾荒老人,当地回应:1人刑事拘留,2人行政处罚;被踢老人已送医检查,身体无大碍

广东一男子骑摩托一脚踹倒路边拾荒老人,当地回应:1人刑事拘留,2人行政处罚;被踢老人已送医检查,身体无大碍

大风新闻
2026-02-15 12:03:04
少将军衔处于什么水平?想要成为一名少将,晋升难度究竟有多大?

少将军衔处于什么水平?想要成为一名少将,晋升难度究竟有多大?

源溯历史
2025-12-16 21:19:53
马筱梅新年直播,汪小菲带娃打球,丈夫娘做全家饭,具俊晔不出门

马筱梅新年直播,汪小菲带娃打球,丈夫娘做全家饭,具俊晔不出门

晓劗就是我
2026-02-16 14:38:36
释永信倒台后,老乡才敢说实话:当年他想两三万一户买下整个村

释永信倒台后,老乡才敢说实话:当年他想两三万一户买下整个村

每一次点击
2026-02-13 14:46:14
丰田章男:如果只造我喜欢的车,那就只有GR卡罗拉和GR雅力士

丰田章男:如果只造我喜欢的车,那就只有GR卡罗拉和GR雅力士

IT之家
2026-02-14 15:11:08
刘青山处决前夕被吓傻,当听清楚行刑前的措施后,感动地嚎啕大哭

刘青山处决前夕被吓傻,当听清楚行刑前的措施后,感动地嚎啕大哭

史之铭
2026-01-20 03:27:11
日本又要选首相了?高市内阁将集体辞职,首相指名选举将开启!

日本又要选首相了?高市内阁将集体辞职,首相指名选举将开启!

龙视国际
2026-02-15 23:30:03
2026-02-16 19:47:00
最愉快的娱乐
最愉快的娱乐
娱乐无处不在
1016文章数 1244关注度
往期回顾 全部

科技要闻

OpenAI拿下OpenClaw之父 承诺开源绝不动摇

头条要闻

95后创始人要带"天团"上春晚 曾每天骑电三轮追机器人

头条要闻

95后创始人要带"天团"上春晚 曾每天骑电三轮追机器人

体育要闻

遭针对?谷爱凌炮轰国际雪联安排

娱乐要闻

好甜蜜!郭富城随方媛回安徽过年

财经要闻

2025,中国商业十大意外,黄金只排第九

汽车要闻

叫停纯屏操作 工信部拟推车内实体操作件强制国标

态度原创

游戏
艺术
亲子
数码
军事航空

Steam新游“健身妻子”全程陪伴!支持360度旋转放大

艺术要闻

孙过庭又一草书真迹被发现,完完整整5000多字,至今只公开展出过一回!

亲子要闻

真是你哥的好妹妹~

数码要闻

安克声阔soundcore C50i耳夹式耳机国行上市,399元

军事要闻

慕安会美国角色逆转 中国议题"打满全场"

无障碍浏览 进入关怀版