为什么开发人员需要跟上技术和方法的最新动态?[关闭]


28

我总是得到开发人员需要跟上最新技术的建议-Webrtc,html5和css3的更新以及新的js库,TDD,DDD和BDD等软件方法。

问题是为什么?为什么我们需要不断更新自己?我们不能仅仅坚持我们所知道的并通过它变得更好吗?


16
在软件开发中,有两种方法都需要推动:深入了解某些技术并紧跟不断变化的新技术。这就是为什么很难找到优秀的开发人员的部分原因。
joshin4colours 2012年

2
为了解决到目前为止的票数,我认为这是一个公平的问题,我无法在该网站上找到完全相同的副本。请尽力留意较差的答案,以便我们进行清理。
maple_shaft

4
对于这两个概念实际上意味着什么,我看不出为什么作为一个班级的程序员必须“保持最新”,以掌握最新的“ Web技术”。好奇心和不断学习对于任何行业的个人成长都是至关重要的,但是假设“网络技术”是个人成长的唯一轴的错误困境使这对我的口味来说有点太过繁琐了。批判地看待投票率最高的答案-除了提供鼓励和激励性口号来“待在游戏中”以外,其他任何人都还回答了这个问题吗?
2012年

1
@bmike:我同意你的观点:当然,一个好奇的头脑会一直想学习新知识。在这种情况下,新东西意味着您不知道的东西,这可能是一种有趣的编程语言,已经存在了40年或更长时间(例如Lisp)。行业推动我们更新并考虑有趣的最新内容,默认情况下更有效。我的主要观点是:学习仅仅因为它不新鲜就不需要的技术就是浪费时间。
乔治

1
@RobertHarvey问题似乎不是在问“如何?”。或者是什么?” 因为那将是NC。这是为什么,我个人认为这是相关且负责任的。
maple_shaft

Answers:


42

新技术的出现是有原因的。通常,这是因为它们在完成特定任务时效率更高或功能更强大。

为遗留系统而坚持旧技术仍然有价值,但是当它们最终寿终正寝时,您将落后于游戏。

除了业务原因之外,不断学习新技术会让您保持警惕,并且会睁开眼睛看待执行任务的不同方式,即使是在旧技术等方面也是如此。


3
+1:学习新技术通常是有帮助的,即使您从未直接应用过该技术:它提供的新视图和观点当然也可以使用“旧”技术来应用。
约阿希姆·绍尔

7
另一方面,采用每种新技术也可能适得其反,因为许多新技术随着表面的消失而消失。
戈登·贝尔

@GordonBell-是的...我无法代表其他人发言,但是我通常不使用新技术来测试水域,直到它们至少显示出迹象或成为更多“主流”的潜力-这带来了很多好处文档来帮助教育和用户群等。–
匿名

它们通常是为了满足学术界而不是现实世界中的需求而出现的。你得写关于某事的论文。
dbracey 2012年

@dbracey:是的,二十年后,一些大公司发现了这一论点,与此同时,研究人员已经开发出一些成熟的技术,并开始将其作为新技术进行销售。
乔治

27

尽管如果幸运的话,当然可以在单个技术堆栈上建立事业1,但是几乎可以肯定的是,在有薪工作的时代,技术将发生多次变化。您可以(并且应该)在已经掌握的知识上做得更好,但是当下一次技术变革即将到来时,提前学习新事物将帮助您减少学习曲线。

它也没有那么明显的一面:学习新事物常常可以帮助您从不同的角度看待已经知道的事物,就像学习新语言可以帮助您了解有关当前语言的更多事物一样2

最后,不应低估学习新事物的纯粹娱乐价值:对我而言,它胜过看电视。


1例如,在1965年开始职业生涯时,通过PL / I选择COBOL。

2这适用于自然语言和编程语言。


1
+1 @dasblinkenlight我喜欢这样的说法:“ ...提前学习新事物将有助于您在下一个技术转变进入您行业的角落时减少学习曲线。” 这就是为什么我学习OPA现在
安东尼

12

我们不能仅仅坚持我们所知道的并通过它变得更好吗?

可以,但是很容易陷入永不学习任何新知识的陷阱。您的工作前景越来越差,您的队友不再希望与您一起工作,因为您是“完全失去联系的程序员”。

通常,您需要保持平衡。一直尝试学习所有新事物将导致您在许多事情上都变得贫穷,被认为是逃亡的修补匠。很好地学习一些东西,即使您不能有效地使用它,也至少要专注于了解存在的东西。


2
没有什么比让我受雇于一个像十年前那样写代码的程序员组成的团队更让我生气的了。框架已经发展。工具已经发展。您不想让您的工作更轻松吗?现在,当他们拥有电动工具时,您不会看到木匠整天都使用手摇钻和手锯。他们进化了。就像每个行业一样,发明了新工具来解决需求。不使用新工具,而是尝试使用旧方法将某些东西合并在一起,通常会损害所构建内容的质量。无论是代码还是木材。
CaffGeek

2
“框架已经发展。工具已经发展。您是否不想让您的工作变得更轻松?”:解决特定问题的方法有无数种,有时一种新的工具或语言不是更好,但仅相当于旧的工具或语言。但是您对旧版本有更多的经验,因此可以提高工作效率。我们经常认为NEW ==更好。相反,我们应该始终对这一声明提出质疑。
乔治

2
@Giorgio-对“下一件大事”保持健康的怀疑是一回事。随着真正的进步而过去,这是另一回事。后者太常见了。
Telastyn 2012年

4
@Telastyn:我将两种态度都分配给50%:有时,我的印象是,仅仅因为一项新技术就推动了一项新技术。而且这只是一种替代方法(并非更好)。因此,我们必须花几个月的时间来熟练掌握新技术,之后我们才能像以前一样熟练地工作。但是,当然,您的想法是正确的,这也是错误的,应该始终提防新事物。
乔治

@Giorgio,如果您不了解或尝试新方法,您如何知道新方法是否更好?
CaffGeek

7

嗯,这可能是由于您是一名Web开发人员,并且该领域的技术非常不稳定,随着语言,平台,工具和方法论的流行与日俱增。这是一个非常高水平的领域。如果其下面的任何层都被更改,则将更改顶部的位置。而且,坦率地说,它是新的(ish)。新领域有很大的创新空间。

就个人而言,我在嵌入式设备上工作,学习过C语言,这对我来说非常好。

但是我仍在定期学习新事物。套接字,SQL库,ncurses,C中的对象。方法与技术松散地耦合在一起。单元测试是在我的学校里可怕地教过的,而我现在正在全力以赴。我前几天刚刚听说过依赖注入,并且意识到这正是我对控制台功能进行单元测试时解决的最后一个问题。

大多数程序员不是每天都会做同样事情的工厂工人。这些工作可以(并且应该)自动删除。没有人为另一个泡沫排序实施付费。已经做完了


+1:好答案。人们应该学习一个需要或发现有用的技术。新技术很重要,应该环顾四周以了解发生了什么。但是,NEW不应成为选择我们所学知识的唯一标准。另外,如果C适合您的编程需求,我同意即使使用了很长时间,它也可以是一种很好的语言。
乔治

这也指出,新技术通常是在现有旧技术之上的更多层。您的VM实施了什么?C或C ++。
dbracey 2012年

依赖注入只是一个非常古老的想法的新名称。
MarkJ 2012年

6

我想你可以忽略很多东西。其中大部分是炒作,时尚和旧技术的新名称。真正的进步很快就会被甚至不真正依赖于旧事物的更新事物所取代,即使旧计时器表示您应该了解旧事物以了解新事物。如果您离开该领域10年,那么当您回来时,您只会落后2年。

也就是说,发现真正的新技术可能很棘手。我很高兴我没有错过OOP,但是起初看起来确实像是几句时髦的话。而且,即使每个人都将在三年内将其遗忘,您通常仍需要使用当前的技术来完成工作。

软件技术的炒作和混乱使我们必须应对的日常变化倍增。但是电子技术实际上正在迅速发展,并推动了软件的发展。那里有很多真正的变化。我们仍在驾驶汽车,驾驶飞机,并使用与1965年相同的交通工具进入太空。但是1995年以来的电子硬件已经过时了。

因此,对您的问题的深刻回答是,从事电力工作的科学家和工程师非常忙。需要开发软件以利用硬件。更糟(或更确切地说,更好?),我认为软件已被硬件抛在后面。如果明天所有的硬件人员都退休了,那么至少在接下来的二十年里,软件将疯狂地发展。

如果您需要新技术来完成工作,则需要学习它。如果有一种新技术可能会在20年后问世,那么您需要密切注意-如果您观察到20项对每一个人的生命都死掉的技术,那么您的表现相当不错。实际上,您可以忽略其他所有内容。除了那一小部分明显的烟雾将成为2020年代所有软件的基础。


+1:关于炒作,我同意你的看法。很多技术创新(不幸的是)大肆宣传,我们应该谨慎选择花费时间的新技术。目前的炒作之一是lambdas(顺便说一句,我认为这是一个非常有用的概念):每种现代语言都必须具有lambdas(C#,C ++,Java?),否则就不再酷了!但是lambda已经存在了50年了,最初设计这些语言时没有人在意。现在,只是为了遵循最新的炒作而将它们添加为事后考虑。;-)
乔治

@乔治:我希望不是Java。Lambda是一个很好的例子(尽管比某些更简单,麻烦也更少)。我在C#中使用它们,而且我很喜欢它们,但是唯一会后悔不知道它们是什么的人就是刚刚被告知要修复包含它们的代码的人。
RalphChapin 2012年

“我希望不是Java”是什么意思?不会介绍它们吗?我喜欢并使用lambda(在Scheme中,Haskell):它们是一个非常简单的概念。但是在C#,C ++和Java中,对我来说,它们似乎是一个较晚的补充,以某种方式与其他语言不兼容。我怀疑发明人不了解任何Lisp,但他们认为lambda不属于这些语言。现在,它们已成为必须。因此,我非常喜欢lambda,但是在C#,C ++和Java中,它们似乎只是用来销售新的编译器,书籍等的炒作。
乔治

1
@乔治:Java是(或曾经是)一种极简主义的语言。您不需要了解很多(例如,lambda)就可以了解别人写的东西。我喜欢。C#是一种极简主义的语言。每条新生产线都可以介绍您从未见过的技术。写是一阵爆炸,读起来却是如此。两者都不需要lambda,尽管出于语法原因,它们在C#中确实比在Java中提供更多帮助。但是它们很酷,并且节省了几行代码。换句话说,你是对的。但这是C#,而不是 Java。然而。
RalphChapin 2012年

1
@iconoclast:拥有20年程序员经验,我不认为自己是初学者。但是,Java是(一种)相对简单,简洁的语言这一事实​​使我的工作效率更高(我可以用更少的精力开发更复杂的软件)。我认为简单语言适合初学者是一个误解:简单语言将使具有任何经验的任何程序员都可以将更多精力放在开发的某些方面(例如,管理复杂的体系结构,重构),因为他们花费的时间更少其他方面(例如内存管理,加密语法等)。
乔治

3

恕我直言,您需要找到一个平衡点。这需要技巧和经验。

您需要找到一种或两种您专门研究的语言,保持最新的框架/样式变化,并不断提高自己的技能。

但是您还必须了解这种语言的发展方式,并从整体上了解软件开发的动态。Java是否会在10年后问世,Phyton是否会留下来,PHP是否将被.NET和Mono取代?

这些是大规模的战略性问题,可以为您提供专业的后备知识(1种或2种语言),并知道何时可以从主平台继续进行操作,这些答案将使您成为自己所在领域的重要专家。

恕我直言,遵循每天开发的所有现代语言是整个行业最大的问题之一。我们有很多未开发的,死胡同的语言,几乎没有专业人员,而且浪费时间的人很少是甚至只有一种语言的真正专业人员。通常,他们编写的代码混合了所有语言,并且没有正确执行任何操作。同时,在这些非标准语言上浪费的工时可以用于改善一些核心语言框架和规范。


2

正如其他人指出的那样,出现了许多新技术来满足新需求,因此它们使解决某些问题变得更加容易。因此,您应该保持最新状态,至少了解您所在领域的发展,并了解哪些新技术与您相关。

另一方面,我认为某些创新有时也有炒作因素:有些想法非常古老,但直到最近才被推动成为主流。有时,我的印象是,仅仅因为“新的更好”而推出了新的编程语言(或其新版本),而新技术意味着新书,新编程工具,新编译器,新编程课程,或者换句话说,收入。

因此,有可能您必须学习一种新技术而又看不到以前使用过的技术的任何真正优势,否则可能会因为市场看上去过时而失去市场的风险。由您决定跟踪新技术的发展,并尝试了解哪些技术可以使您的工作效率更高,哪些技术可以使您的简历看起来更好。

底线:我认为您应该尝试学习真正有用的内容,无论它是新的还是旧的。


2

因为“坚持您所知道的”表示无法“更好地做到”。您不必采用随之而来的所有新实践和框架,但至少应该对流行的实践和框架有一个知情的意见。在Web开发中,仅问一个问题对面试官来说就很恐怖。Web开发人员到处都是职业人士,他们想在2000年以后停止学习新知识,这是应该的,因为他们为我们其他人做了更多工作。如果您不感兴趣,请远离开发人员。如果您学习新东西的部分感觉像工作,那么这是一个糟糕的每小时美元比率。


因为“坚持使用您所知道的东西”表示无法“更好地做到这一点。”:一种阅读方法是,通过长时间坚持使用相同的技术,您将获得更深入的了解,而从一种技术中跳出来到接下来的每两到三年将只允许您拥有肤浅的知识,即您将永远不会真正熟悉其中的任何知识。
乔治

如果我不精打细算,并从其他语言的实际工作角度了解它,或者关注当前的最佳实践概念,并探索人们在实际情况下的工作方式,那么我将不像以前那样理解JavaScript。他们的框架和库的引擎盖。我认为,如果没有定期接触新想法,以职业发展合理的速度提高开发人员的确是不可能的。
埃里克·雷彭

Reppen:我完全同意你的看法。
乔治
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.