编程是在竞逐低谷时的职业吗?[关闭]


41

在我看来,编程行业正在步入低谷。如果我们采取以下做法:

  1. 不花时间实施最佳实践
  2. 尽可能使用他人的代码(将自定义代码作为责任)
  3. 使用越来越高级的语言来提高生产力
  4. 基于GUI的开发“工具”,极大地简化了“编程”,并且不需要人们了解代码背后的内容

这些事情对我来说意味着我们正在努力变得像其他上班族一样。不需要技能(更容易更换)且需要预先建造的东西(较少的项目时间)符合雇主的利益。

我的意思是:a)技能与雇主的经济利益是否不符?b)如果存在,您如何减轻它以执行专业标准?


28
好吧,仍然有人必须制造那些工具。因此从某种意义上讲,这是一场让优秀的程序员远离繁琐工作的竞赛。
Jeremy Heiler'2

11
为什么有人认为软件开发的未来会归结为拖放组件,这超出了我的范围。认真地说,您诚实地相信这会那么容易。
Pemdas 2011年

3
@Pemdas:人类害怕进步和/或改变。150年前的蒸汽机车被认为是邪恶的。

4
@pierre我不确定我知道你要去哪里。
Pemdas 2011年

3
迪克斯特拉,是你吗?
l0b0 2011年

Answers:


6

我想你问了一个非常刻薄的问题。

创建GUI编码工具会使程序员失业,就像机器人使流水线工人失业一样。我认为,虽然失业,但下一份工作的位置也发生了变化。

完成任务的技术发生了变化,但是任务仍然需要完成:仍然需要制造/组装汽车才能驾驶;仍然需要将代码/业务逻辑放在一起才能使应用程序正常运行。

技术的变化为程序员提供了选择:学习基于GUI的编程或程序GUI工具……或……其他完全的东西。

员工的技能与雇主的利益之间可能会产生不一致,但这种偏差不会持续很长时间,尤其是在雇主精明的情况下。因此,追求对双方都有利的东西符合雇主和雇员的最大利益。但是,一个必然会领先于另一个。希望是你(-:

最好的祝愿,

KM


我的想法是专注于更专业的软件开发:数学,统计和计算密集型编程(尽管随着VM功能的增强,第三类可能会过时了)。我不认为这些专业领域处于底线,尽管我没有经验,所以我可能是错的。
q303 2011年

@ q303:总是会有很多应用程序占用所有可用的计算机功能。
David Thornley,

58

在您提到的趋势中,我会再添加一个,恕我直言解释了它们:

(需求)程序员的数量比以往任何时候都要多。

需要或包括编程的任务数量在不断增加,并且其速度甚至超过了程序员的数量。如今,普通汽车中有几种微芯片。在5年内,您的冰箱和烤面包机中可能会有碎屑。在10年后,您的内衣??而且有人需要生产所有这些软件才能使它们正常工作。因此,将尽一切可能的努力来使任何可自动化的东西自动化,并提高“生产率”(无论如何定义)。越来越多的新鲜大脑被招募。

这意味着当今大多数活跃的程序员对他们的工作没有经验和/或准备不足。要获得足够的经验水平需要花费几年的时间,并且需要不断学习才能使自己始终如一。最重要的是,越来越多的编程工作变得越来越困难。但是对于任何正在寻找挑战的人来说,挑战仍然足够

让我与上面的观点打一下恶魔的拥护者:

不花时间实施最佳实践

很多人没有,很多人这样做。十年前,当我第一次发现单元测试和敏捷方法时,我的任何一个同事都不知道它是什么。如今,这几乎是大学的标准教材,因此许多应届毕业生已经了解了。

尽可能使用他人的代码(将自定义代码作为责任)

相对于什么?重新发明轮子?还是使用其他人的代码来避免这种情况?

我认为重要的是要注意,我们(大多数情况下)得到解决问题的报酬,编写代码并不是目的,而仅仅是达到目的的手段。如果不编写任何代码就可以解决问题,那么仍然会让客户满意。尤其是通过这种方式,我们设法更快,更便宜地提供了更可靠的解决方案。我认为没有任何问题。

使用越来越高级的语言来提高生产力

而不是对汇编中的所有代码进行编码?;-)

基于GUI的开发“工具”,极大地简化了“编程”,并且不需要人们了解代码背后的内容

恕我直言,任何工具都可能被滥用。这并不是说GUI生成器一定是完美的,甚至不是很好-它们中的大多数(或至少一些)在其范围内可用。但是,如果有人不知道这些限制,那么这是该工具或其用户的问题吗?

总的来说,我相信(尽管没有证据可以证明),在打孔卡和机器代码时代,现有代码的比例大约和现在一样可怕,只是两者

  • 代码总数,以及
  • 外部人看到这样的代码的机会

少得多。

现在,借助Internet和Daily WTF,我们每天都在面对最糟糕的情况。这就像在观看有关恐怖主义和地震以及与名人离婚的所有新闻,并大喊这个世界变得多么危险和不道德。


+1我想我们正处于“每一个解决方案都会滋生新问题”的反馈周期中-不能说是正向还是负向循环。
Maglob

6
+1如果只有优秀的编码人员才能从头开始重写所有内容,那么我将很高兴成为一名cr脚的程序员。
AndrewKS 2011年

1
除非正常运行时间可以接受,否则我不希望内衣中有碎屑!

@Thorbjørn:内衣可接受的正常运行时间是多少?如果是自洗的话,我会担心正常运行时间...否则,无论如何您每天都必须把它们脱下来(我希望!)
Dean Harding

1
@ back2dos,我不认为这是分歧。粗线表示趋势,或者如果您愿意,公司/经理视图;您陈述开发者的观点。我完全同意您的看法,最好有更好的程序员,更多实践教育,指导,以提高行业的质量水平。但是,可悲的现实是不同的。软件已经成为一种商品,因此许多人期望在不了解此类决策的含义(例如短期成本与长期成本等)的情况下快速而廉价地购买它。
彼得Török

29

您正确地总结了情况,但是完全误解了含义。

随着软件功能越来越强大,其任务也随之扩展。可以肯定的是,当您可以使用Access时,如今不必成为数据库程序员来创建电话联系人数据库。当您只需使用wordpress时,可能不必成为Web程序员来建立博客。但是,尽管15年前必须要做一个程序员来做这些事情,但程序员现在要做的工作要比15年前做的要大几个数量级。

让我这样说,从现在开始100年后,建立一个像facebook或google这样复杂的系统将是微不足道的。我不是说他们的网页,而是他们的数据中心。任何人都可以做到。假设我们甚至仍在使用它们,它将内置在电话中。但是,仍然会有程序员,尽管他们可能会在100年后不再在这样的“琐碎”系统上工作,但他们将在更加复杂和复杂的系统上工作,以至于这里没有人甚至无法理解他们的范围和内容。规模。而且那些系统,就像现在的系统,对于普通的上班族来说将是遥不可及的,因为有些人被称为程序员,他们将选择专注于将那个时代的技术推向极限。


有趣的观点...
q303 2011年

10
我想要GrandmasterB写一些科幻小说。
ocodo 2011年

5
等不及要在手机上拥有自己的Google数据中心。
马丁·约克

3
@Slomojo不像您想象的那样科幻小说。当我还是三年级的孩子时,我参观了我家附近大学的计算机演示。这是向公众展示的实验性展示。所显示的程序之一是可玩的井字游戏。当时,可以在计算机上玩游戏被认为是一个很重要的时刻。那是在60年代后期。从现在开始的100年后,哦和啊的时刻会是什么?
条例草案

我指的是他所说的方式,不是内容只是幻想,而是Pong革命时我身边的人,我非常确定Nintendo的孩子们也可以与技术的指数变化相关。
ocodo 2011年

18

我已经读了四十年了,但我还没有开始进行预测。还没有发生。

COBOL是旨在消除业务程序员需求的原始开发工具,并且是比汇编程序更高层次的语言。代码库(以避免不得不编写自己的代码)具有类似的上古时代。

每隔一段时间,就会出现一些事情,使非程序员可以做更多的事情,例如编程工作。有1980年代的“第四代语言”,诸如Excel的精美电子表格,报告生成器等。如果成功,他们统一完成的工作就是从编程中删除一些繁琐的工作,并允许程序员做其他更有趣的事情。

这种模式不会永远持续下去,但是我需要的不仅仅是理论论据和预测,还不足以使我确信编程确实在走下坡路。

从COBOL到现代开发工具,问题在于它们不能替代采用不精确规范并将其转变为精确而有用的功能的能力。那是程序员的基本能力,也是为什么我们很长一段时间都不会离开。


7
+1-“采用不精确的规范,并将其转化为精确而有用的内容。”
ocodo 2011年

+1,我从没参加过这场比赛,但是您肯定已经听了20年了。
Carson63000

我为4gl +1。所有的承诺,所以交付很少:)
Ian

“这种模式不会永远持续下去”-为什么不呢?
伊恩·沃伯顿

3

当结构化编程和广泛的解释器出现时,汇编和FORTRAN程序员可能会说相同的话。

归根结底,软件是一种创造,旨在使以前手工完成的事情自动化。一家中等规模公司的会计部门以前需要数十个人,现在所有工作都可以由一两个人完成。结果,目标职位已经转移,我们现在期望会计师能够提供额外的功能标准。

皮克斯制作电影的时间比以前更长。尽管计算速度大大提高,但动画师仍要求其场景中的复杂性和细节不断增加。像1995年一样,Toy Story口径动画在2010年是不可接受的。由于工具的先进性,功能和期望也不断提高。

当拖放或其他编程方法变得司空见惯时,世界将要求解决方案以应对更具挑战性和更复杂的问题,并且他们将需要程序员使用那些较新的高级工具来解决这些问题。球门柱将移动。


3

尽管我同意大多数答案,但指出仍然有大量工作要做,但我将给出不同的答案供您考虑:

是的,应该

我在这里设计解决其他人无法解决的问题的解决方案。工具集中任何花费我大量时间解决问题,处理如何实现设计的小细节的事情都是浪费。

我担心使用高级语言或更简单,更抽象的工具的唯一原因是,这些工具通常会做出妨碍我的假设,并且需要我花一些时间来应对这些假设才能获得所需的实现。

总比有好的问题解决者要解决的问题要多。即使整个开发链变得如此简单,学龄前儿童都可以使用它,但大多数设计的解决方案仍将不足或效率低下,因此人们会为更好的解决方案付费,因为大多数人都不愿看到针对所有极端情况下的问题的正确解决方案以及需要考虑以提供良好解决方案的假设条件。

我们的工作是要比其他大多数问题更好地解决问题,工具链的复杂性在全局视图中并不十分相关,只要它能够避免干扰并让您构建并构建出好的东西即可。


1

即使编程技术可能会发生变化,软件产品的潜在复杂性仍然存在。如果可以使用图表或流程图(或其他“简单”方式)完全编写软件,则仍然需要理解和解决软件的所有复杂性。因此,对于雇主而言,重要的是要让程序员完全了解公司的产品,以便对其进行更新或添加新功能。员工学习软件产品可能需要一段时间。


1

无论您可以实现自动化还是现成的,大多数打包软件都可以分为两类:

  1. 使用简单,但与业务真正需要的并不完全匹配
  2. 它是高度可定制的,但是需要专家来理解和利用定制

我想我忘了第三种了,它是标准的生产力软件(电子邮件,浏览器,word proc等)。第一类软件导致企业雇用软件开发人员自定义现成的软件(如果可能的话)。他们也可能会雇用开发人员,因为知道内外可定制系统的人要么是追捧者(例如SAP,PeopleSoft等),要么是濒临灭绝的人(认为任何与SAP和PeopleSoft类似的系统都不太具有相同的市场渗透率)。

始终需要开发人员。我所看到的是,以前手动,繁琐,重复的工作已变得更加自动化(想想为手动访问数据而不是使用O / RM编写代码)。这使开发人员可以用更少的精力为业务提供更多的价值。


1

我不接受你的论点:

  1. 不花时间实施最佳实践

除了那个。

  1. 尽可能使用他人的代码(将自定义代码作为责任)

代码重用是最佳实践。使用过的代码经过测试。当然,您应该使用源代码良好的代码,许多人都会维护和使用这些代码。

  1. 使用越来越高级的语言来提高生产力

生产率本身并不差-是吗?

  1. 基于GUI的开发“工具”,极大地简化了“编程”,并且不需要人们了解代码背后的内容

如果该工具完成了该任务:请使用它。如果不是,请拒绝。如果诺言成立,人们真的不需要理解代码了-做得好!您似乎在说这是不成立的承诺?

(此处的数字会自动重新显示错误。:))


关键是要有效,您需要的技能更少。基于GUI的开发“工具”本质上没有什么坏处。他们的坏处是重复使用会降低执行我们的工作所需的技能水平。使用其他人的代码也是如此:最终,您开始在Google平台上进行编程。最后,高级语言抽象了很多细微之处,这些细微之处又需要技巧。从雇主,项目管理的角度来看,这都不是坏事。但是,这的确使我怀疑该行业的未来。
q303 2011年

这完全取决于您的要求。当我不需要针对特定​​分布数据的微调专用分类技术时,我可以完美地将库与一些快速排序算法结合使用。为什么在需要之前我应该​​先绣呢?也许我需要时间来学习其他内容-字形调整,数据库访问,GUI设计...-命名。技能很不错,但是您可能拥有太多的技能。有时候说的很对:YAGNI。
用户未知,

1

与基于文本的编程相比,视觉编程的有效性或轻蔑程度同样重要。

可视化编程时存在某些缺陷和挑战,但是当被忽略时,潜在的潜在组件风险并不会被可视化组件以及更相关的可视化设计师所垄断。忽略基础管道是任何发展的风险。

如果您有机会尝试Labview,您可能会发现潜力(甚至是Lego NXT环境中的特殊变体)。虽然并非没有缺陷或不足,但有继承的好处。眼见为实。


0

编程实践不仅可以提高生产率并减少某些类型开发的成本(您的竞争排在最后),还可以提高应用程序功能和客户期望(从而鼓励竞争到顶部)。见证Goole和Facebook为获得顶尖技术专家而付出的奖金。


0

没有其他专业致力于生存工程,它致力于与编程一样多的变革。只要您简化了一些事情,您就可以打开产生新思想的新问题的罐头。

因此,我不会妨碍其他人共享代码和解决方案的努力,以帮助我们克服个人从业者的不良习惯,不良习惯和举止缺乏人文主义的态度,从而迎接新的挑战,想法和用户体验。


-2

如果我们采取以下做法:

  • 不花时间实施最佳实践
  • 尽可能使用他人的代码(将自定义代码作为责任)

WTF?您的意思是该列表不一致吗?每个元素的列表应该来自同一侧,而不要在没有警告的情况下来回切换。因此,您的清单应为:

如果我们采取以下做法:

  • 不花时间实施最佳实践
  • 尽量使用他人的代码(将自定义代码作为责任)


1
@NoahRoberts:您的编辑更改了第二个要点的含义。这也不是该问题的适当答案,而应该是评论。
亚当李尔

@Anna-当然,这不是编辑。这就是为什么它不显示为对原始问题的更改。这是一个答案,因为它解决了问题中存在缺陷的前提。
爱德华·

前提是什么?
q303 2011年

3
@NoahRoberts:措辞有些奇怪,但我相信清单的含义是一致的-q303将“使用他人现有的代码而不是内部编写自定义代码”作为他的论点的支持点。
亚当李尔

@ q303-显然,尽可能多地使用他人的代码是一种不好的做法。无论如何,这就是我要从您的清单中删除的东西。
爱德华·斯特朗奇
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.