程序员能被淘汰吗? | Journal


一些工具或开发项目的目的是为了淘汰程序员。让业务团队控制系统的行为。
从商业管理的角度来看,这听起来是个好主意。想想看,如果我们不需要雇佣程序员,也不需要浪费时间与他们沟通需求,就可以省下很多钱。在现实中,我从来没有见过一个工具或项目在这方面取得成功。

几年前,我作为承包商参与了一个这样的项目。我们正在为一个大型企业客户编写一个呼叫中心应用程序。这个系统的架构师说服了客户,业务分析员将能够用一种高级商业语言(由架构师发明)来编写,这样未来的变化就不需要雇用程序员来修改系统。据称,每一行商业脚本都有20或30行低级代码的力量。因此,这承诺比取消程序员的效率还要高。

这种商业语言有类、构造函数、析构函数,以及几乎所有现代面向对象语言的特征。也许一开始它是一种简化的语言,业务团队可以使用,但它的复杂程度与我们为实现系统的其他部分而编写的Java代码相同。没有经过程序员培训的业务分析员是不可能用这种语言写出有效的代码的。

更糟糕的是,编程团队在用这种语言编写代码时也很费劲。没有调试器或其他工具,甚至没有一个带颜色编码的编辑器。当你遇到错误时,你必须确定它是脚本的错误还是解释器的错误,而解释器几乎每天都在修改。

即使我们承认消除对程序员的需求是一个值得追求的目标,我也认为这是不可能的。
这是因为程序员除了拥有编程语言的知识外,还有其他的技能和能力。


无论这是由训练还是天性决定的,我都说不清楚。可能是两者都有吧。程序员拥有在我们的领域中取得成功所必需的技能,这些技能通过实践得到了培养。不管怎么说,我注意到程序员在许多方面往往比他们的非程序员同事更有能力。

程序员的思维更有逻辑性:
通过if-then-else条件工作是任何程序员的核心能力。当我和商业团队一起做需求工作时,我经常遇到缺乏同样能力的情况。

在一个开发抵押贷款分析专家系统的项目中,我经常收到关于如何处理具有特定贷款价值比或特定贷款金额的贷款的规则要求。通常,这些要求会有差距。我对从0美元到10万美元的贷款有要求;对从15万美元到25万美元的贷款有要求;对超过25万美元的贷款也有要求。但在10万美元和15万美元之间有一个漏洞。在其他时候,我对重叠的范围有相互冲突的要求。

程序员具有分析问题和提出解决方案的卓越能力:
他们擅长分析先决条件、事件的顺序和结果。当然,这是编程的一个关键技能,但它在故障排除和商业案例分析中也很有用。

程序员通常具有的另一个关键能力是在混乱中创造秩序的能力。我认为这是因为程序员要负责在程序中创造秩序。我们把系统分成子系统,把子系统分成模块,把模块分成单元。没有任何物理约束规定了解决方案的结构。无论存在什么秩序,都是由编写代码的人创造的。反思我曾经工作过的一些代码库,很明显,这并不是所有程序员的普遍特征。

虽然人们通常认为程序员是编码员,他们的主要才能在于编写编程语言的神秘语法。我认为,他们的主要才能在于他们分析、排除故障和解决问题的能力。代码只是将程序员的思维过程推向高潮的物理表现形式。

假设有人设法写了一个工具,允许人们定义软件并控制其行为,而不需要写代码。使用这个工具的人仍然需要程序员的所有其他心理能力。如果这种情况发生,我们并没有消灭程序员;我们只是稍微改变了工作描述。

是的,我可以设想在遥远的未来,人工智能被用来开发代码--但这也不会消除程序员;它只是将他们移植到一个不同的平台。

Reddit网友评论:

"如果我们有一个功能强大的工具,只要你可以在工具中写出你想要的规范,这个工具就会让它们变成现实,怎么样?"
但是,业务人员真的很不擅长编写规范。

“如何制作一壶咖啡”的重点不是制作一壶咖啡。而是写出清晰、简洁、正确的步骤:

  1. 喝咖啡
  2. 获取过滤器
  3. 加水
  4. 点击按钮开始

但是,对于新手,会疑惑:咖啡在哪里?为什么有两种类型的过滤器?多少水?糖在哪里?
程序员需要有某种类型的思维。人们忽视了。它看起来很基础,直到你试着把它写下来,突然间它比你想象的要冗长和困难得多。

大多数业务人员也懒得写出他们已经知道如何规定的事情。

关键是:不是“每个人都不擅长规范”,而是“没有人专注于提高规范技能”:
有很多方法可以改进规范,但企业很少关心。经理要求更多的程序员比在任何技术方面培训经理更容易。

任何足够完整的规范都可以转换为编程语言并创建有效的程序?
如果不是因为存在人类需要对模棱两可的情况做出决定,那么编写规范比编写程序更容易,UML 是对此的尝试,但由于所有相同的原因而失败了——编程与文件中的怪异符号无关,它与解决定义不明确、模糊和模棱两可的问题的复杂逻辑有关。

有另一篇关于 AI 取代程序员工作的帖子,基本上是说 AI 将很难将业务需求转化为能够满足业务需求的代码,因为人们很不擅长编写需求。相比之下,人们非常擅长艺术,所以也许人工智能更有可能开始创造“好的艺术”。
人工智能之所以擅长艺术,是因为它不需要精确。一个非常酷的城市景观可以有几乎无穷无尽的变化,同时看起来相似。因此,任何具有一定复杂程度的东西都可以看起来很酷。
业务需求要求精确:您不能随便吐出类似于可能模糊的输入要求的随机解决方案变体。您必须仔细考虑并迭代以解决特定问题,然后在看到上次迭代中没有解决的问题时进行更多迭代。
AI 会实现这一目标,但现在它在产生类似人类的模式生成方面做得很好,但(具有讽刺意味的是)在人类逻辑和迭代系统方面做得很差。