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

两个程序员的寓言: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.

相关推荐
热点推荐
向纪委监委实名举报纪云浩!

向纪委监委实名举报纪云浩!

顾礼先生
2024-04-24 17:27:44
突发!台媒爆料!大S昨日复出录节目却直接晕倒,场面非常紧张!

突发!台媒爆料!大S昨日复出录节目却直接晕倒,场面非常紧张!

娱小小新
2024-04-25 16:24:23
王思聪现身日本入管局,排队办投资签证,签证条件引热议被疑移民

王思聪现身日本入管局,排队办投资签证,签证条件引热议被疑移民

缘浅娱深
2024-04-25 15:06:32
超重磅!央妈放水方式彻底改变!所有人都会受影响!

超重磅!央妈放水方式彻底改变!所有人都会受影响!

樱桃大房子
2024-04-24 23:13:40
缘分呐!亚冠决赛双方主帅正是04-05赛季欧冠决赛首发前锋

缘分呐!亚冠决赛双方主帅正是04-05赛季欧冠决赛首发前锋

直播吧
2024-04-25 15:55:11
不走了!官方:哈维下赛季将继续执教巴萨,1月曾宣布赛季末离任

不走了!官方:哈维下赛季将继续执教巴萨,1月曾宣布赛季末离任

直播吧
2024-04-25 19:18:15
CBA最新消息!萨林杰正式离队,周鹏确定续约,许梦君合同到期

CBA最新消息!萨林杰正式离队,周鹏确定续约,许梦君合同到期

体坛瞎白话
2024-04-25 16:14:07
网友深扒“不懂法书记”纪云浩,发现越扒越有问题!

网友深扒“不懂法书记”纪云浩,发现越扒越有问题!

麦杰逊
2024-04-25 16:45:30
102岁杨振宁庆祝“瓷婚”,翁帆母亲罕露面!墙上百万名画很抢眼

102岁杨振宁庆祝“瓷婚”,翁帆母亲罕露面!墙上百万名画很抢眼

娱乐团长
2024-04-18 21:00:03
陈梦王楚钦恋情实锤?陈梦父母开豪车接机,看王楚钦举动就懂了

陈梦王楚钦恋情实锤?陈梦父母开豪车接机,看王楚钦举动就懂了

东球弟
2024-04-25 18:52:44
大瓜!汪小菲首次透露一个令人震惊的消息:小玥儿心理不健康了!

大瓜!汪小菲首次透露一个令人震惊的消息:小玥儿心理不健康了!

小娱乐悠悠
2024-04-25 17:25:07
1951年,一特务被捕后语出惊人:害死杨靖宇的叛徒,还在北京当官

1951年,一特务被捕后语出惊人:害死杨靖宇的叛徒,还在北京当官

我是斌哥哥
2024-03-04 18:51:19
刘和平:美国国会批准对台军援?蔡英文还是不要高兴得太早

刘和平:美国国会批准对台军援?蔡英文还是不要高兴得太早

直新闻
2024-04-25 20:35:51
上门按摩女技师色诱要求“加钟”?“东郊到家”为何总是疑似“涉黄”!

上门按摩女技师色诱要求“加钟”?“东郊到家”为何总是疑似“涉黄”!

新民周刊
2024-04-25 20:00:21
凯特被追封?查尔斯国王亲自授予荣誉勋章,网友:死而后已,值了

凯特被追封?查尔斯国王亲自授予荣誉勋章,网友:死而后已,值了

小寒嫣语
2024-04-25 10:30:56
五一将至,这些高颜值、天价“智商果”又出来骗人了

五一将至,这些高颜值、天价“智商果”又出来骗人了

火锅局
2024-04-25 09:53:27
神预测!杭州26岁女子与陌生男爬山后续:已找到,爬一晚上太累了

神预测!杭州26岁女子与陌生男爬山后续:已找到,爬一晚上太累了

天天热点见闻
2024-04-25 17:16:37
官宣!35岁周鹏宣布重要决定,球迷遗憾,赵睿送祝福

官宣!35岁周鹏宣布重要决定,球迷遗憾,赵睿送祝福

保持热爱0263
2024-04-25 13:32:28
纪云浩被免职后续:央媒发声,其家庭情况被扒,跨级提拔引热议

纪云浩被免职后续:央媒发声,其家庭情况被扒,跨级提拔引热议

180°视角
2024-04-24 12:00:10
南京交警再回应市民骑无牌自行车被罚:新规变更未收到通知

南京交警再回应市民骑无牌自行车被罚:新规变更未收到通知

南方都市报
2024-04-25 16:36:12
2024-04-25 22:28:50
最愉快的娱乐
最愉快的娱乐
娱乐无处不在
1016文章数 1243关注度
往期回顾 全部

科技要闻

神舟十八号发射,飞船太阳帆板已展开

头条要闻

布林肯对所谓中方"非市场经济行为"提关切 外交部回应

头条要闻

布林肯对所谓中方"非市场经济行为"提关切 外交部回应

体育要闻

当胜利变成意外,就不要再提未来……

娱乐要闻

心疼!伊能静曝儿子曾被狗仔追到洗手间

财经要闻

24年后再产纯净水 农夫山泉为何要打自己脸

汽车要闻

全新哈弗H9亮相 大号方盒子硬派SUV入列

态度原创

时尚
健康
本地
家居
军事航空

“静奢风”的高级感衣橱是怎样的?

这2种水果可降低高血压死亡风险

本地新闻

云游中国|苗族蜡染:九黎城的“潮”文化

家居要闻

光影之间 空间暖意打造生活律动

军事要闻

俄美在安理会就外空核武器问题发生冲突

无障碍浏览 进入关怀版