小编采访

男同性恋,黑色壁纸,正大集团-关心呦吼

【CSDN 编者按】有两个程序员别离规划同一个体系:一个用了500行代码完结,一个用了2500行代码规划了一个很杂乱的体系。成果竟然是……


作者 | Neil W. Rickert

译者 | 弯月

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

好久好久以前,“主动管帐运用协会”(后边简称“自会”)和“归纳核算机本钱公司”(后边简称“综计”)两家公司素昧生平,却在同一时间里以为他们需求一个程序来履行同一项服务。

自会延聘了程序员兼剖析师Alan来帮他们处理问题。

与此一起,综计决议延聘一位入门级程序员Charles来处理这个问题,看看他的水平是否真的像他揄扬的那样。

Alan经历过难度很高的编程项目,他决议运用PQR结构化的规划办法。为此,他要求部门司理再指使三名程序员组成开发团队。所以,这个新建立的团队开端了严重的作业,着手查看开端陈述和问题剖析。

反观综计,Charles花了很长时间重复考虑这个问题。他的搭档发现,Charles常常翘着腿悠闲地喝咖啡。偶然有人看到他坐在电脑前,可是同一个办公室的搭档说,从Charles按键的频率估测实际上他在玩太空入侵者。

时间一天天曩昔,自会的团队现已开端编写代码了。这些程序员们花了一半的时间写代码和编译代码,还有一半的时间里他们开会讨论各个模块之间的接口。

同一个办公室的搭档发现Charles总算不玩太空入侵者了。现在,他除了悠闲地喝咖啡,便是在纸上涂涂改改。尽管他的涂鸦不是玩五子棋,但好像也没有多大含义。

两个月曩昔了。自会团队总算发布了开发时间表。再过两个月,他们就能够完结测试版的程序。之后,再经过两个月的测试和加强,就能够交给一个完好的程序了。

司理总算对整天无所事事的Charles深恶痛绝,他决议当面责问他。可是,当他走进Charles的办公室时,却意外地发现Charles正在忙着写代码。所以,他决议迟些再责问他,然后打了个招待就匆忙离开了。从那今后,司理开端亲近重视Charles,他计划一旦找到时机,就当面责问Charles。可是,他却迟迟没有找到时机,相反他发现Charles一向都很繁忙。他乃至看到Charles有时忙得连吃午饭的时间都没有,每周还有2-3天在加班。

第三个月完毕的时分,Charles宣告他做完了这个项目。他提交了一个只要500行代码的程序。看起来这个程序写得很明晰,并且经过了杰出的测试,契合规范中的一切要求。此外,这个程序还有一些额定的功用,大幅提高了该程序的实用性。在测试的时分,除了一个小疏忽(很快就改好了)之外,整个程序体现杰出。

与此一起,自会团队现已完结了他们的程序所需的四个首要模块中的两个。这些模块现在正在进行测试,而其他模块已完结。

又过了三个星期,Alan宣告开端版别已提早一周准备就绪。他提出了期望修正的缺点列表。这个程序还在测试中。除了Alan提出的列表外,用户还发现了许多Bug和缺点。Alan解说说,这归于正常现象,究竟这仅仅开端版别,必定会有许多Bug。

又过了两个月,自会团队完结该程序的出产版别,大约包括2500行代码。经过测试,该程序好像满意大多数的原始规范,却疏忽了一两个特征,并且关于输入数据的格局也十分挑剔。可是,自会决议装置该程序。他们能够练习数据输入人员,依照要求的格局严格地输入数据。最终,这个程序移交给了一些保护人员,由他们担任短少的功用。


续集


起先司理对Charles刮目相看。可是,当阅览了源代码后,他发现这个项目实际上比他本来幻想的简略许多。现在看起来,即便关于新手程序员来说,这也算不上很大的应战。

Charles每天大约能够写5行代码,这或许略高于平均水平。可是,考虑到程序的简略性,这也家常便饭。此外,司理还记得Charles游手好闲了两个月呢。

在成绩评定中,公司给Charles涨了薪酬。一半原因大约是由于通货膨胀。可是,Charles没能得到提升。大约一年今后,Charles有些绝望,所以他离开了综计。

在自会,由于如期完结了项目,Alan受到了大力奖赏。他的主管查看了他做的程序,他大约阅览了一下,发现公司有关结构化编程的规范都完结了。可是,很快他就抛弃了阅览该程序的源代码,由于太难懂了。所以,他觉得这个项目实际上比他本来想象的更为杂乱。然后,他再次向Alan表明了恭喜。

这个团队中的每个程序员每天能够写3行代码。这与平均值很挨近,但考虑到问题的杂乱性,所以能够以为他们体现优异。为了奖赏他的成果,Alan获得了高额加薪,并提升为体系剖析师。

Tim Mensch的谈论


从前我也是一名年青聪明的程序员,这个故事引起了我激烈的共识。即便在职业生涯的前期,我也能够完结许多高档开发人员所面对的应战。在我的第一份作业中(作为一名游戏开发人员),我花了几天时间写完了代码,我的司理说我写得比那些经历丰富的开发人员花几个月写的都好。在我的第二份作业中,我优化了一个由有10年经历的高档开发人员编写的东西,经过我的优化,本来需求几分钟的使命只需求不到1秒就完结了。在我的整个职业生涯中,这样的比如层出不穷。

多年以来的开发和学习,让我意识到经历的确很重要。但根本的技能力也相同重要。现实上,上面这则寓言故事阐明,根本的技能力比经历更重要,我以为今世开发人员没有认清这个现实。

话虽如此,偶然我也会犯与Alan相同的过错,创立一个杂乱得毫无必要的体系。我能想到并且能够完结一个杂乱的处理方案,并不一定意味着它便是最好的处理方案,我需求不断提示自己这一现实。

所以,我一向在尽力做出退让,有时乃至质疑我自己的处理方案,逼迫自己寻觅改善的办法,或简化的办法。有时,有人会觉得我花了太多时间来考虑某个问题,为何不直接用清楚明了的办法来处理,其实我是期望找到一种更简练的办法来处理问题。花在考虑上的时间让人感觉没有在“作业”,可是我能够经过考虑找到更好的办法——用更少的代码,完结更强壮的功用,且具有可扩展性,还便于阅览。

这便是为什么我觉得上述寓言故事如此重要。经历很重要,但规划和完结方面的技能力能够胜过经历,假如你一起具有经历和技能力,那么就能够超卓地完结作业。咱们应该时间质疑自己的假定,并且千万不要假定自己第一个规划是完美的。

原文:https://realmensch.org/2017/08/25/the-parable-of-the-two-programmers/

【End】

 热 文 推 荐 

戳他↓↓↓

☞京东或将裁人 12000 人!雷军年薪百亿;马云:阿里没人敢跟我打赌 | 极客头条

☞程序员 996 再上热搜,黑名单增至 84 家!| 畅言

马云从前偶像,总算把阿里留下的 1400 亿败光了!

☞“入职 6 年,新人薪酬高我 2 千”:老板不加钱,不是嫌你老

☞一个月修正20个缝隙获23675美元赏金, 本来是黑客部队里出了无间道

☞南大和中大“合体”解救手残党:根据GAN的PI-REC重构网络,“老婆”画作有救了 | 技能头条

☞总算有人把5G和边际核算的联系说清楚了  | 技能头条

☞影响!我31岁敲代码10年,明日退休!


System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

点击阅览原文,输入关键词,即可查找您想要的 CSDN 文章。

你点的每个“在看”,我都仔细当成了喜爱

推荐新闻