您如何应对高级软件开发的动态性质?[关闭]


25

我认为自己是高级软件开发人员。我喜欢阅读很多东西,这对我的职业生涯有很大帮助。我想我做得很好。

现在,我花了大量时间学习新事物。我现在不擅长编写代码,但是我即将开始一个家庭,而且我经常会看到许多有14-15年经验的老年人,因为他们减少了学习新事物的机会,现在很糟糕在编程时。他们在某个时候启发了人物,但现在已经不复存在了。

您可能会争辩说,基础知识永远不会改变,但是当您在Delphi上编码10年并且突然每个人都在使用.NET框架时,它的确会有所作为。这是真的,学习一门新的框架时,有经验的开发人员将花费更少的时间,但它仍然需求的时间和精力。

软件开发人员如何在管理工作需求的同时仍然能够专注于某些可能使您失业的事情,例如建立家庭?


1
什么,您认为您无法管理奇点?任何优秀的开发人员都可以!-开玩笑,别听我说…
Klaim 2011年

Answers:


30

您所说的话很引人注目:“我经常看到许多有14-15年工作经验的老年人……他们现在很喜欢编程”。这是您用来向有经验的人绘画的相当广泛的笔触。我想指出一些要考虑的事项:

  • 年龄较小/经验不足的从业人员喜欢指出他们的长辈如何不做X或Y,这是因为他们不了解经验表明那是不好的主意。然而,每一代从业者似乎都想重复这些错误。这种现象对于所有专业都是普遍的,而不仅仅是编程。
  • 并非所有工作多年的人都是经验丰富,成熟或优秀的人。需要努力才能变得更好。在您年轻时付出的大量努力可以建立良好的经验体系,您以后可以借鉴。

也许您所指的人从来都不是好人。他们可能会看着您的想法,为什么您坚持用艰苦的方式做事?

但是,的确,当您开始一个家庭时,您有更少的时间跟上新玩具。实际上,随着孩子年龄的增长,您的时间实际上比他们小的时候要。玩具不能使您成为更好的程序员。工具也没有。使您受益的是消除问题并建立有效解决方案的能力。使您变得出色的是教会他人变得优秀的能力。那就是经验开始闪耀的地方。


1
想要详细说明下降投票吗?您可能不喜欢我说的话,但这是真的。
Berin Loritsch

4
他的看法是他难题的很大一部分。我要做的就是直接处理这种看法。简而言之,我比他成为一名经验丰富的优秀开发人员的能力更关心工具的追逐。他甚至可能变得伟大。如果他的所有经验告诉他,年长的开发人员很烂,那将不会发生。那是一个可怕的动力,他要努力去实现自己想要的目标。
Berin Loritsch 2011年

1
@Berin Loritsch:这是一个公平的观点。你的意图很好。//在美国,太多的人跳来跳去责骂他人进行概括。我不同意您的回应,因为您似乎在这样做。
Jim G.

1
希望随着时间的推移,您将学到的是何时花时间学习新技术以及何时忽略它们。最重要的是,时间是宝贵的资源。当SOAP / XML RPC首次问世时,现在说出它真正的作用还为时过早。经过几年的努力,我们已经学到了一些痛苦的教训,并使用基于REST的服务修改了该方法。此外,我们的老年人需要无穷无尽的年轻人来找出值得花时间学习的东西。扳动扳机可能会稍微慢一点,但是很快我们就可以起来。
Berin Loritsch 2011年

2
@Berin Loritsch:也许我现在知道了。实际上,我见过一些前辈(包括我目前的老板)在解决问题时只是摇摇欲坠。当我说您可以使用此框架轻松完成X时,他并不高兴,但在看到它确实有用时,他不害怕使用它。因此,也许其他不擅长的前辈也不好,因为他们从来没有过。不是因为新技术使它们脱节。我现在好多了。(我希望我写的东西有意义)
Hemant

20

很难预测未来。但是无论技术如何,一件事无疑是最有价值的。

这是开发人员解决问题能力

许多开发人员素质与技术无关。例如,分析能力是我所知道的最重要的素质。这就像学习数学。这简直是​​永恒的。


1
是的,再加上能力/诚实知道,当你的可用工具/技能都没有解决问题。因此,您要学习一些新知识,然后回到“解决问题的能力”。
彼得·罗威尔

1
嗯...这有点含糊,还有,有点牵强。如果开发人员仍然非常乐意在vb6中“解决问题” ...那么,我真的不想使用他们的代码。保持最新状态并不能预测未来,需要时间/工作,而当您有家人时,机会就更少了。
史蒂文·埃弗斯

5

我希望我有一个积极的或具体的想法-但我认为程序员如何与时俱进,以及如何平衡工作/家庭,这在程序员之间差异很大。

随意的想法:

  • 并非每个软件项目或公司都需要绝对最新的技术-即使是软件。变化在最前沿发生的变化最为显着-稍微落后于最前沿的公司通常有很多增长和变化的机会,但对于立即变化的迫切需求并不广泛。
  • 程序员越有经验,就越有能力利用经验代替最新/最好的流行语。我注意到,我在该行业20多年中最敬佩的人们隐喻着很多最新的C#事物如何完美地解决他们在80年代后期与C所遇到的问题。通过利用先前的问题和解决方案,他们减少研究工作,对表进行更多了解。
  • 每次我必须给团队中的程序员打分时,完成工作并与他人打成一片的能力就超过了程序员从事这项工作的技术范围。尽管行业将发展许多竞争性的新语言,API和工具,但该项目一次仅使用竞争对手的机会很大。但是将事情做好,并帮助他人做同样的事情永远不会过时,并且做事的方式发展得要慢得多-并不是说IM,社交媒体,智能手机以及数字时代的其他一切都不会改变编程的那方面也一样

在一家落后于前沿(例如3-4年)的公司工作可能也很有趣。您可以更清楚地看到其他人犯的错误,并具有更成熟的工具和实现的优势。
Michael K

我同意。我实际上自己在边缘工作了一点,而且我喜欢知道其他人在尝试它之前已经将头撞了一下。:)
bethlakshmi 2011年

5

首先,Microsoft经营销售软件开发工具和运行该软件的平台。无论他们是否需要,这都会激励他们进行更改。这并不是说所有的改变都是无用的,只是我们职业中的许多领域都更加稳定。凭经验,您可以更好地辨别哪些行列值得立即跳起来,哪些可以等待成熟。

其次,经验只需要时间。大多数具有15年经验的开发人员现在糟糕,而15年前是糟糕的。不要将年龄归因于能力不足。

第三,不要在需求出现时将过时的知识与无法使用最新的知识相混淆。通常只要知道那里有什么就足够了。例如,直到最近我的Web编程知识仍是90年代末,但是当我想为我的兄弟建立一个网站时,我知道足够去检查CSS,jQuery和内容管理系统等“新型”技术,并且相当在几周内加快速度。换句话说,如果您在过去10年中不需要任何东西,那么不太可能发生紧急情况,希望您现在就加快速度。

最后,做父母确实是一个很大的时间投入,但比许多没有孩子的人似乎想的要少。父母仍然设法读书,看电视,玩游戏,上网,甚至上课。震惊,我知道。您只需要分小部分就可以做,并确定优先级。我完全放弃的唯一一件事就是观看重播。


3

我可以向您保证,在十到十五年后表现出较差的编程技能的人永远不会真正内部化软件开发。掌握工具集与掌握软件开发技巧不同。

我已经写了三十多年的代码。我经历了多个时期,由于外部义务和/或利益,我不得不将自己的职业置于自动驾驶仪上。一个人必须学会做的是避免早日跳入技术潮流。大多数技术都没有辜负他们的炒作。作为一名年长的从业者,除了工作以外还承担其他义务,因此必须with时间。一位经验丰富的从业者可以花上几年时间等待新技术的成熟,因为他/她已经掌握了软件开发的技巧。


因此,您发现在新技术成熟后保持更新的难度并不难吗?
Hemant

1
这个行业是周期性的。大多数新技术只不过是重新包装旧思想而已。如果一个人的基本原理很强,那么跟上它就不会有问题。记住,不必为了成为一名软件工程师而过上体面的生活就必须站在技术的最前沿。
2011年

2

根据我多年的经验:

  • 语言已经改变(通常相对缓慢)。
  • 可以实际解决的问题范围已经扩大(快一些);
  • 解决方案的规模和复杂性已经增加(相对较快);
  • 有些东西是flavor of the day(有时好,经常是坏的)。

正如在有关模式的讨论中所指出的那样,四人组没有发明模式。他们提出了已经应用的解决方案的术语和模板。

与许多其他领域不同,还有许多不常见的做法。我已经看到了很多尖端的东西来去去。其中许多是对已经在实践中使用的技术的改写,并且通常在某种程度上是成功的。其他人则或多或少地消失了,大部分都在采用新方法。(最近有人见过第五代语言吗?)

我见过的最有效的程序员可以选择并将成熟的组件组装到可行的解决方案中。这很少涉及任何前沿技术,通常会增加项目风险。基于已经完成的工作的能力使我们能够扩大可能的范围。

编程语言往往属于相对较少的家族。熟悉家庭中的一种语言会使使用类似语言变得更加容易。了解以该语言提供的库并加以利用可以极大地提高生产率和可靠性。通常,我会选择带有适当库的较旧语言,而不是没有适当库的较新语言。

在应用新技术时,重要的是要避免 Because We Can综合征。添加新技术是因为它是当年的风尚,因此往往会带来更多无法解决的问题。知道这项技术何时将解决实际问题,以及何时仅增加复杂性是一项有用的技能。

一个真正优秀的程序员将解决新问题,并使用其余的现有解决方案。很少有公司需要尖端技术,而所有公司都需要可靠的解决方案。

我通常会后悔滑下剃须刀。我不记得曾经后悔使用成熟的技术。但是,许多描述new是对现有内容的重新包装。通常,这种重新包装使事情更容易理解和适当应用。


2

没有人能跟上一切。您可能一直忙于跟上Microsoft产品的发展。您是否看过Ruby on RAILS和Python和NoSQL数据库以及Hadoop和移动应用程序的创建以及CSS和HTML5以及jQuery和ExtJS和...?

我从事软件已经有一段时间了。我试图跟上真正的新技术,例如大规模并行数据库的新思想,并尽可能忽略丑陋的事物(例如MFC,WinForms,SOAP,XML,EJB)。通常,我们只是看到一些伟大的旧想法被重新包装并最终被采纳。功能编程?我在1977年使用INTERLISP。手机应用程序?这与我们至少30年来一直使用的事件驱动的UI和2D图形相同。当然,为小型触摸屏设计可用的应用程序是一种艺术,但是编程根本不是新的。


1

我同意@Amir的观点,即您的技能不是解决lanaguage领域的问题,但我确实感谢您的关注,因此:

如果您可以自由选择当前语言,则选择一个尽可能接近第一个原理的语言(即C ++类型的lanaguage),这样当您将工作推入新领域时,学习曲线就更少了-因为它只是您之上的抽象。如果您目前仅投资于高级语言,那么降低抽象难度就更大了(即使仅在感知上也是如此)。

如果您没有这种烦恼,那么只需充分利用您的8个小时的工作时间即可。.如果您的热情很高,您将不会感到“卡住”,并且您总是会找到有趣的问题来解决,这自然会使您学到更多。


1

这将取决于您的工作和所需的工作。在某些位置,开发人员仍在使用较旧的技术。还有很多COBOL可以继续(我敢肯定某些事情已经改变了。)。

在一家像您描述的那样进行重大调整的公司工作可能会使某些人失业。有时,公司会投资于培训,而不是要求您自己学习。

有家庭会限制您的工作选择。会使您的行动不便。您是否可以在刚起步的公司工作,以期获得一半的薪水,以期获得丰厚的薪水-也许没有孩子和抵押贷款。

更新并不总是更好,许多也不会持久。


1

我不在医学领域,但是开发人员和医生之间的类比怎么样?在过去的20年中,这两个领域都发生了巨大的变化,并且变化的速度越来越快。所有医生都跟上吗?不。所有开发人员都跟上吗?否。您可以对拥有14-15年经验的开发人员或医生进行任何概括吗?更多的经验意味着您对类似问题有更多的答案。体验胜过兴趣吗?从长远来看。

像鲨鱼一样思考,必须不断游泳或死去。不断学习或消亡(或进入管理领域,这是发展职业生涯的顶峰期大约在10到15年间最常去的地方)。


我不确定您的居住状况,但是在澳大利亚,医疗专业人员需要进行持续的教育和检查,以保留他们的注册资格(并因此拥有从事医学的能力)。
Sedate Alien 2011年

0

我的内心深处也有同样的担忧,但是我最近对此的想法是停止试图预测自己的适应能力,而只是适应。我发现,如果我认为自己可以跟上,我通常会做到。如果我担心过时,那可以使它成为自我实现的预言。

如您所说,保持脚尖。而且,如果您无法跟上,也不要流汗过多。技术有一种有趣的方式可以绕一整圈,您可能会发现自己回到了主流,表现出色。

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.