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

两个程序员的寓言: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-05-07 11:01:27
沙特大满贯女单四强产生,国乒被打出11-0,难怪钱天一当不了主力

沙特大满贯女单四强产生,国乒被打出11-0,难怪钱天一当不了主力

极度说球
2024-05-10 04:27:07
赖清德称期待加强与日本合作,外交部:挟洋谋“独”没有出路

赖清德称期待加强与日本合作,外交部:挟洋谋“独”没有出路

澎湃新闻
2024-05-09 15:36:27
贝多芬死因新探:头发铅含量超95倍!耳聋或是因为喝了太多劣质葡萄酒?

贝多芬死因新探:头发铅含量超95倍!耳聋或是因为喝了太多劣质葡萄酒?

问健康画报
2024-05-08 21:00:01
中法晚宴这一夜!巩俐围巾踩一路!苏菲玛索太美!郎朗带父母

中法晚宴这一夜!巩俐围巾踩一路!苏菲玛索太美!郎朗带父母

Super历史
2024-05-09 13:36:53
常德市城区开放水域出现大量福寿螺卵,别碰!

常德市城区开放水域出现大量福寿螺卵,别碰!

常德全媒
2024-05-09 14:59:04
哈马斯最后一个据点拉法被以色列进攻,世上恐怕以后再无哈马斯

哈马斯最后一个据点拉法被以色列进攻,世上恐怕以后再无哈马斯

听风听你
2024-05-09 11:37:53
后续!王龙勇救落水儿童不幸溺亡,被救者表态

后续!王龙勇救落水儿童不幸溺亡,被救者表态

小小包工头阿汾
2024-05-10 01:14:48
吐血整理!国产处理器大科普

吐血整理!国产处理器大科普

互联网.乱侃秀
2024-03-18 11:10:22
乒乓球大满贯赛:5月10日赛程公布!诞生两项冠军,国乒三场外战

乒乓球大满贯赛:5月10日赛程公布!诞生两项冠军,国乒三场外战

拳击时空
2024-05-10 05:51:44
专家:禁止售卖汽油车,现有油车3年内会报废,都使用新能源汽车

专家:禁止售卖汽油车,现有油车3年内会报废,都使用新能源汽车

户外小阿隋
2024-05-10 09:36:21
这次塞尔维亚够意思,这个忙中国帮了,树个样板给大家看看!

这次塞尔维亚够意思,这个忙中国帮了,树个样板给大家看看!

谈芯说科技
2024-05-09 12:36:18
璩静真的被开了!深夜发文道歉,结果再被前公司下属疯狂背刺

璩静真的被开了!深夜发文道歉,结果再被前公司下属疯狂背刺

鬼菜生活
2024-05-09 23:34:53
战略级的走近——法国将成中国在西方的长期“盟友”

战略级的走近——法国将成中国在西方的长期“盟友”

云石
2024-05-09 19:34:46
沙特大满贯:男单四强出炉!国乒占两席;韩国悍将强势;德国爆冷

沙特大满贯:男单四强出炉!国乒占两席;韩国悍将强势;德国爆冷

莼侃体育
2024-05-10 02:41:50
没有美国芯片,整个中国的高科技经济就会陷入困境,事实是什么?

没有美国芯片,整个中国的高科技经济就会陷入困境,事实是什么?

创作者朱海平
2024-05-10 07:03:50
3-2绝杀,0-2出局,2-2绝平!C罗破门,维拉淘汰,阿隆索封神

3-2绝杀,0-2出局,2-2绝平!C罗破门,维拉淘汰,阿隆索封神

足球狗说
2024-05-10 06:30:18
这个皆大欢喜的三国土地置换方案,或许是解决巴以冲突的钥匙!

这个皆大欢喜的三国土地置换方案,或许是解决巴以冲突的钥匙!

文雅笔墨
2024-05-09 19:27:28
詹姆斯笑骂小波特:这个***太准了 打我们的时候一个不丢!

詹姆斯笑骂小波特:这个***太准了 打我们的时候一个不丢!

直播吧
2024-05-09 07:31:25
马来西亚学生问张维为:如何长居瑞士,他不语,乌龙事件为何重提

马来西亚学生问张维为:如何长居瑞士,他不语,乌龙事件为何重提

李昕言温度空间
2024-05-10 10:23:21
2024-05-10 11:48:49
最愉快的娱乐
最愉快的娱乐
娱乐无处不在
1016文章数 1243关注度
往期回顾 全部

科技要闻

李彦宏评璩静:优秀员工才代表真实的百度

头条要闻

美讨论承认越南"市场经济"地位 美议员反对还扯到中企

头条要闻

美讨论承认越南"市场经济"地位 美议员反对还扯到中企

体育要闻

用50万欧元,换一场绝境逆转!

娱乐要闻

贾斯汀比伯升级当爸!晒海莉6个月孕照

财经要闻

周鸿祎正在下一盘我们看不懂的大棋?

汽车要闻

限时4.59万 续航200公里 吉利熊猫卡丁正式上市

态度原创

时尚
本地
房产
健康
公开课

见过世面的中年女人,夏天都不穿“超短裙”,这样搭配才优雅

本地新闻

不懂就问,站姐转黑为什么是明星的第一酷刑

房产要闻

大量房源上新!但是,海口安居房真的已经不香了!

春天野菜不知不识莫乱吃

公开课

父亲年龄越大孩子越不聪明?

无障碍浏览 进入关怀版