“您所知道的所有事物中有一半将在18-24个月内淘汰” =(对还是错?)


33

只是碰到了这一点,想知道是否有人可以证明或反驳这一说法:

要记住的事情……高科技知识的半衰期是什么?它遵循摩尔定律:您知道的所有事物的一半将在18-24个月内过时。

消息来源:Craig Trader对这个问题的回答中,“ 您为提高编程技能所做的最有效的事情是什么?


2
我不知道如何证明这一点。
奥德

50
Statement = (True or False)是。
glasnt 2011年

3
我认为这取决于您所知道的。
LennyProgrammers 2011年

3
@glasnt:在这种情况下总是如此:/
西蒙(Simon)

2
我所知道的一切现在有一半已过时。
JD Isaacks 2011年

Answers:


131

此声明仅适用于临时技术,无论如何您都应仅根据需要学习这些技术。就是说,您将在职业生涯中学到很多东西。

基本的编程原理和技术是永恒的。


5
简朴的。+1
Tim Post

27
@Steven A. Lowe +1承认您抬头“短暂”
Tim Post

2
当您花了7年时间学习和使用的临时性技术输给了Oracle(或Linux)后,这种临时性技术如何变得如此令人惊讶。诚然,我所学的有关构建和部署应用程序的知识并没有消失,但是没有人关心Pick,Ultrix或任何数量众多的失败技术。
Craig Trader


17

我能想到的最好的(最糟糕的)测试是回想一年。在过去的18到24个月中,您每天学习了多少编程知识?此外,在过去的18-24个月中发明了多少?对于我来说,该原理似乎非常令人怀疑,因为我每天使用的大部分编程和技术知识都是在5-10年内获得的。

现在,如果您正在开发手机平台之类的产品,也许是另一回事。


2
不,手机与其他产品没有什么不同。您每天使用的所有重要技能都可以持续数年。我猜很容易忘记日常技能,因为它们是半自动的。
吉姆(Jim)

1
基本原理没有改变,但是API和技术确实有改变。如果您在考虑台式机时编写移动应用程序,则可能无法使用。
jmort253 2011年

苹果表示,MacOS X和iOS的85%完全相同。
gnasher729

15

根据我的经验,在媒体/公众形象中,技术是“新新事物”与现实世界中实际使用的东西之间存在巨大的脱节。

在桌面应用程序空间中使用类似Visual C ++ / MFC的内容。尽管它看起来似乎已经过时和过时了,并且可能不是新程序员现在应该学习的桌面开发知识,但是仍然有很多现实世界中的项目和工作正在编写中,并且需要维护—可能会维持数年甚至数十年。我将以COBOL为例,但从理论上讲,我个人非常了解VC ++ / MFC示例。

本质上,并不是说技术“过时”就变得无用和闲置,更多的是,它们不再被视为做事和启动新项目的最新方式。但是,大型真实世界软件系统的退役(不会中断并且不需要修复)的发生要慢得多。我从事的许多Visual C ++ / MFC项目(始于1990年代初期)仍然非常活跃,并且雇用了许多程序员(包括维护和新开发人员),而且似乎一事无成任何时候。实际上,我敢肯定,我想的大多数仍会在2020年左右,甚至更长。

当然,这甚至不是主要问题。主要问题是许多概念是相似或相关的,在学习某些新技术时您不会“从头开始”。例如:一旦您了解了标记语言及其含义,就很容易学习新的标记语言。因此,JSON是新事物并没有多大关系,而您使用多年的都是XML。这只是学习新语法的问题-而不是成为一些非程序员,甚至不知道标记语言是什么,也不知道它们所代表的数据背后的内部概念,等等。

TL; DR: 1)那里有很多“过时”的技术正在使用,但是由于它不是性感的新事物,因此您对此知之甚少-但这对于使用它的人来说远不值钱。2)编程概念相互叠加并不断发展。很少有什么是真正需要您从头开始完全学习并忘记旧事物的东西。


4
MFC-多么痛苦!
工作

@工作-哦,是的。
Bobby Tables

大声笑,不是很痛苦:P
crosenblum 2011年

嘿,我也在VC ++ / MFC上工作!
David Thornley

2
+1主要用于指出事物不会停止被使用,只是停止成为时代精神的一部分。
2011年

12

这一切都取决于您专注于学习,记忆并总体上充实自己的大脑。细节可能很快就会过时,但是原理应该持续更长的时间。

我最近参与其中的事例:

  • Java通用语法与类型化容器
  • MySQL数据类型,存储限制等与数据库可伸缩性原则
  • 我帮助创建的轻量级数据库抽象层与数据库抽象的刚性/灵活性原则

我用黑体学会的那些东西比左侧的东西持续的时间更长。如果要避免编程过时的陷阱,请着重注意原则


11

罗伯特·哈维 Robert Harvey)做到了这一点,但经过深思熟虑,我不得不轻描淡写并做出回答。

我必须添加一个免责声明,在发布Perl On Rails的那一刻,我并没有去研究它。我觉得它对于它的设计非常本地化的效果很好,并作了记录,以备将来参考。

在过去的二十年中,我也没有屈服于标准C库的50多个排列,我希望可以链接到它们,但是现在它们似乎已经存在挑战。

在这里插入长篇大论,以相信您所读或听到的一切。

当有新事物出现时,抓住它看看。如果您说“ ick”,请将其删除。如果您说“哇”,请改善它。如果您不能考虑这样的决定,那就去选择有能力的人的大脑。

仅凭技术价值判断一切。值得您花时间,这意味着它可以节省您的时间,同时得到大多数同行的赞许。

现在,我将直接解决您的问题:

您知道的所有内容中有一半会在18-24个月内过时,对还是错?

您必须在18-24个月内告知我们。公司为使人们谈论他们的产品有多么伟大付出了可观的代价。我们不仅要审视新成立的公司,还要审视那些将大量现金掏出来的大型企业:

  • 让[b]尊敬的博客作者重新向读者推销
  • 寄出昂贵的免费品牌装备以在吹牛或使用中引起注意的地方获得品牌位置
  • 付费以确保您在研究问题时能在Google的前10名中看到“有效的解决方案”
  • 从“十佳目录”网站中支付“奖励”,并假装这些网站具有权威性
  • 确实有许多其他方法可以说服人们停止思考并跟随人群

当然,您可以根据以前的经验和新尝试来制定自己的决定。这样做时,应避免拥有具有根据RSS阅读器发出诫命的经理的雇主。

但是,我确实有这个惊人的新桥梁建筑库,该库足够聪明,可以根据您的语言环境在布鲁克林和伦敦之间切换。这将是巨大的,您想进入一楼吗?

我的回答确实是故意讽刺,也许是反布尔值,但是真的吗?出于异常处理的目的,我的回答是响亮的false

如果您认为某事在技术上是合理的,请接受它,否则一切照旧。C是我的主要语言,它的工作原理与近二十年前一样好,而我的薪水却是近二十年前的两倍。

我很欣赏您的简洁形式和引文,但这确实是一项令人震惊的实验

做得好 :)


8

这取决于您花时间在学习上。我在1980年学习了Bourne shell和C编程。我仍然每天都在使用它。另一方面,我花在学习Compuserve菜单结构上的时间是一个完全的损失,即使在那时,它也不是非常有用的。然后是诸如RS-232电缆引出线和串行协议之类的东西:今天已无用,但对于我生命的大约十年至关重要。选择您花费大量时间仔细研究的技术。


请注意,串行通讯仍与我们联系。只是没有电缆。

RS-232充满生机,生活在嵌入式空间中。
Tim Williscroft 2011年

7

这个原则是正确的。据我所知,实际价值要大得多。

我回想起一个实用程序员的演讲,他们说了大约7年,但我现在找不到它,因此其价值可能略有不同。

试想一下技术是如何变化的:15年前,网络是全新的,我们都试图编写网页-甚至连桌子都可以-和动画gif。七年前,AJAX起飞了。今天,有些人为手机编写类似《毁灭战士》的游戏。

最好的选择是学习适用于随之而来的下一技术的常规知识,而不是说“ Begone!我知道Visual Basic!”。(或15年内的等值金额)。


我在VB中尝试了嘶嘶声,但是..失败了... :(
蒂姆·波斯特

@Tim,等待10年,希望您不必...

5

我认为这完全不正确。

它曾经更接近于真实-很久以前,您别无选择,只能以相对较低的抽象水平进行编程,这意味着知道大量与新平台不再相关的细节。

但是,随着时间的流逝,越来越多的编程在越来越高的抽象水平上进行。较高的抽象水平或多或少直接将其转换为对可能会迅速更改和过时的细节的担忧。

显然,有些人从事诸如设备驱动程序或微型嵌入式系统之类的工作,但他们仍必须以较低的抽象水平进行工作。但是,在此类区域之外,这种事情的借口相对较少。是的,很多人确实学到了很多他们不需要的琐事,但是如果您确实在代码中大量使用了这些知识,那么很有可能您没有做出非常好的决定。通常可以避免大多数这样的事情(更重要的是应该避免)。


我记得GNU何时启动并变得可行,并且所有“酷孩子”都在使用它。但这可以追溯到“酷孩子”实际上甚至没有一种方法,而是某种程度的疯狂思考方式的时代。我很高兴地说,在这个时代,你是对的。
蒂姆·波斯特

4

可能是事实,可能不是;但是,即使所学的实际事物在学习之后很快就过时了,它们背后的概念和思想也可以使用更长的时间。


是的,它们成为参考框架,或者说是反模式。:)
ideaman42

4

如果真是这样,那么今天“ 神话人月”只有5.39x10 -6才有意义。因为实际上,弗雷德·布鲁克斯(Fred Brooks)所详述的关键原则很少出现,或者已经被证明是根本错误的。


1
我不确定。有些事情已经过时了(如今有人真的在使用首席程序员团队吗?),有些事情是完全错误的(他想到的关于信息隐藏的结论是我想到的),并且在其中已经确定了很多事情。流行文化,并且可以说与西格蒙德·弗洛伊德(Sigmund Freud)的论点没有任何关系,因为我们认为我们的某些部分是我们无意识的。仍然值得一读,当然,百万分之一(两个字母?)中有五个以上是相关的。
David Thornley

好的评论,(+ 1)答,我认为首席程序员团队不是一项原则,而是一种回应。没错,他对信息隐藏非常错误;但他也在20周年纪念版中承认了这一点。我要指出的是,布鲁克斯所说的大部分内容并没有建立在软件开发文化中,否则我们在软件开发中不会有如此极端的失败率。
AlexC 2011年

我认为我是从今天有多少书有用的问题来解决这个问题的。例如,CPT一章不相关,但是有关时间表的那一章却停滞不前,显然不是当前文化的一部分。20周年纪念版之所以受到好评,部分原因在于他的论文“ No Silver Bullet”。(那是16年前问世的,因此标题中的原则应具有0.4%的相关性,我想我们可以同意它比之更相关。)
David Thornley

上一次我听说,IBM之所以没有使用Chief Programmer团队,更多的是因为可能缺少首席程序员的人员而不是方法失败。我曾经担任过首席程序员,它运作良好。
Tim Williscroft 2011年

3

您的许多知识在时间测试中将保持相关性(尽管可能需要随着时间的推移进行一些更新),特别是基础知识,例如数据结构等。

当然,如果您知道编程语言X和Y,则学习语言Z会比不知道X或Y的情况容易得多,因此您可以使用以前的知识来适应新知识。

还值得一提的是,几十年前相关的许多技能在今天仍然有效,甚至包括C之类的特定技术(1970年初,今天仍然有效)。

您所知道的一半有可能在一段时间内过时,并且可能超过一半,但是每18-24个月听起来有点极端。


2

单一事实没有太大关系。您只接受它们,了解它们,仅在暂时应用它们。

但是,这样做可以教会您处理事实或至少处理事实的某些子集的过程。我在学校学到了很多我从未使用过的数学。我仍然学习并训练了数学思维。

我曾在Ruby on Rails担任Web程序员。虽然我现在不写网站,但它极大地影响了我的思考力代码,使我成为了更好的C ++编码器。(例如,找到更多的STL)。

学习球拍也是如此。我从来没有编写任何大型程序,但是它给了我一个新的观点,可以应用于某些问题空间。

这只是在训练你的思想...


2

我认为您可以在“所知的一半”中玩弄的对象,从而轻松地反驳陈述。

有一定的知识分配,其中一些知识将变得过时(与速率无关)。因此,如果给定的人仅包含该频谱的一半中的知识,这些知识将在18-24个月后保留,则他们将打破声明。


2

这是一个更好的句子版本:您今天(或本周,本月,今年或今年)学到的所有内容中的一半将在一两年之内过时。没错-您将学习如何在工具的版本5中进行操作,而当版本6发布时它会自动执行该操作,或者您将学习如何以一种不流行的语言进行操作,因此您再也不会使用它。但是,您每天学习的另一半将留在您身边,并在成长,这使得拥有20年经验的开发人员比拥有两年经验的开发人员更好。


1

这里有一个真相或相关性的掘金,但我认为它是不准确的。

呈现此问题的更好方法是

您今天使用了多少知识18-24个月前?

要么

在18到24个月的时间里,您已经掌握了多少知识?为了完成这些任务,您今天需要学习多少?

这可能取决于您所从事的领域,但是我知道我一直在致力于新技术。每个项目似乎都有大量我需要学习的新知识-新框架和模式,解决稍有不同的问题的新方法,或者仅仅是(据说!)比我们以前使用的更好的新工具。

如果每个六个月的项目仅需要12.5%的新知识,那么在两年内,使用的全部知识的50%将是“新的”。

话虽如此,这不是很有意义或不准确。

  • “旧”的东西不是过时的。
  • “新”东西与旧东西有很大的重叠
  • 这些原则通常是可以转让的

1

哦,天哪,上面的回答如此精彩,常识。辛苦了

简而言之,如果这是一时的流行风尚或趋势,如果您是一名优秀的程序员,那么您会读到它,然后回到通常的工作方式或工作方式。

除非对您的工作至关重要,或者对您有意义的新做法。

仅仅因为有些东西是新的,有些新的或有些旧的,并不能使它成为任何事物的必备解决方案。

我有一个简单的说法,那就是全部内容。

“如果可行,请使用它”

这意味着,如果这项新技术非常酷,但没有什么可以使您的工作更高效,更高质量,更不易出错或解决诸如移动或客户端/服务器解决方案之类的技术问题。最好不要阅读它,然后忽略它,直到有实际用途为止。

我已经看到并阅读了更多的人在浪费时间,试图找到热门的新事物,然后再使用热门的新事物。通常最终会浪费时间和金钱。

始终学习,练习并提高自己的手艺和技能很重要。

但是,您应该了解什么是有用的,或者是什么为您解决通常存在的问题提供了不同的视角。

但是除此之外,应该回到成为一名出色的程序员的基础。

  1. http://www.joelonsoftware.com/articles/fog0000000043.html
  2. 规划
  3. 项目管理流程-确保在制定清晰的计划之前没有启动任何代码,并得到要求您工作的人员的批准。
  4. 提高代码的可读性-因为我们都在处理别人的代码
  5. 井井有条,高效

我是常识性的最佳实践,我们都会从经验中学习。不要浪费时间在很酷的事情上。

老实说,酷就是不酷。


0

我听说过这句话归因于工程领域,而不是编程。更具体地说,我听说:“到获得工程学学士学位时,您的前两年学习将基于旧技术。” (或者类似的东西。)

我认为它根本不适用于编程。我看到它的唯一可能方式是何时不赞成使用功能或从编程语言/库/以任何方式删除功能。


0

平均技术平台的使用时间大约在10到25年之间,因此即使您完全否认模式知识通过技术持续存在这一事实,在我看来这也不大可能。如果您使用的是任何主要平台,您都可以指望这种堆栈在至少5到6年后变得流行起来,然后才逐渐消失。我知道已经使用几乎相同的硬件和软件工具在RPG中进行编码30年的程序员。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.