摘要:每年,人工智能AI都会出现一项新的技术,看似有望通过自动化来取代软件工程师。如今,热议的焦点全在于人工智能,各种自媒体都在高呼,能够生成代码的机器人即将让月薪10w+的程序员/开发人员变得过时。
每年,人工智能AI都会出现一项新的技术,看似有望通过自动化来取代软件工程师。如今,热议的焦点全在于人工智能,各种自媒体都在高呼,能够生成代码的机器人即将让月薪10w+的程序员/开发人员变得过时。
工具在不断变化,从穿孔卡片到汇编语言,再到如今复杂精密的人工智能,但背后的说法却始终如一:开发人员很快就会过时。然而,我们依然在这里。尽管有 CursorAI、Lovable、Bolt 等(工具)…… 我们仍在编写代码并不断创新。
历史告诉我们,自动化并不会淘汰工程领域;它会推动工程领域不断发展演变。
第一阶段穿孔卡片与机器语言(20 世纪 40 年代至 50 年代)
软件开发的第一个阶段依赖于穿孔卡片以及与机器的直接交互。工程师们使用实体卡片和二进制序列来编写代码。这个过程缓慢、靠人工操作,而且只有少数专家能够掌握。
当时人们的看法:
这项工作被认为既乏味又容易出错。只有一部分被选中的人才能掌握这项技术。人们的应对方式:
穿孔卡片系统的局限性促使人们寻求更高级的抽象方式。这种需求为汇编语言的发展铺平了道路。穿孔卡片的缺点促使工程师们重新思考编码方法。他们在基础计算方面的经验为未来的创新奠定了基础。这个时代为更便于用户使用的编程方法搭建了舞台。
第二阶段:汇编语言(20 世纪 50 年代至 60 年代)
汇编语言的出现是为了简化对二进制代码的直接处理。开发人员开始使用助记码来表示机器指令。这一时期标志着编程向更易于人类阅读的形式转变。
当时人们的看法:
汇编语言被视为一种进步,但仍然与硬件紧密相关。一些人认为,用汇编语言简化代码可能会失去必要的控制权。人们的应对方式:
工程师们几乎在所有方面都开始使用汇编语言。这种方法逐步提高了生产效率,并为更高级语言的发展开辟了道路。
汇编语言的引入减轻了底层编码的负担。可读性的提高使得更多工程师能够参与复杂项目的开发。随着时间的推移,随着需求的增加,人们对进一步抽象的渴望也日益增强。
像 FORTRAN、COBOL 和 C 这样的高级编译语言使编码更接近人类语言。开发人员开始接受那些对机器指令和一些内存管理任务进行抽象的语言。这一时期的显著特点是生产效率大幅提升。
当时人们的看法:
这种变化具有革命性,尽管有些人担心会失去对硬件细节的把握。批评者警告说,依赖编译器可能会导致低效的编码习惯。人们的应对方式:
程序员将他们的注意力转移到逻辑和应用程序设计上。公司开始将大型、复杂的应用程序视为可实现的项目。
向高级语言的转变使得程序员群体更加广泛。它扩大了可开发项目的范围,不再局限于专业任务。这种转变为更具活力的软件开发方法铺平了道路。
操作系统的发展实现了硬件管理的集中化。结构化编程用严谨的逻辑取代了随意的编码方式。分时技术引入了交互式计算的概念,使得多个用户能够同时访问系统。
当时人们的看法:
有人担心操作系统会带来额外的开销。结构化编程和分时技术的复杂性最初遭到了抵制。人们的应对方式:
工程师们学会了管理新的抽象层次。交互式和有序计算的好处很快就显现出来了。
这一时期对于建立现代计算环境至关重要。这些变化解决了之前的局限性,并支持了越来越多的用户。行业的重点从基础计算转移到了提高代码质量上。
个人计算机的兴起使得编程变得更加普及。图形用户界面和集成开发环境简化了编码过程。面向对象编程引入了一种新的管理复杂性的方式,即将代码组织成对象。
当时人们的看法:
1、批评者担心用户友好的界面可能会削弱编程技能。我敢打赌,这些人现在都是 Vim 用户(一种文本编辑器,操作相对复杂)。
2、有人担心新工具会导致对自动化环境的依赖。
人们的应对方式:
1、开发人员采用了个人计算技术,并学习了面向对象的原则,应用了使软件能够扩展的模式。2、行业朝着创建用户友好且高效的应用程序方向发展。这个时代使软件开发更加普及。更多的工程师可以在不需要深入硬件知识的情况下参与编码。这种转变带来了编程技能的更广泛传播,并开辟了新的职业道路。
互联网通过创建一个新的开发平台,改变了软件领域的格局。网络浏览器以及像 JavaScript、PHP 和 Python 这样的脚本语言实现了动态内容的呈现。这一时期重新定义了应用程序的构建和交付方式。
当时人们的看法:
1、许多人认为,离线工作的桌面应用程序比依赖网络连接工作的应用程序更好。2、有人对脚本语言的安全性和性能表示怀疑。
人们的应对方式:
1、开发人员接受了网络技术,并转变了他们的技能组合。
2、市场逐渐发展,以支持专注于客户端 - 服务器模型的新角色。
网络的出现导致了行业的重大变革。工程师们开始构建能够面向广大用户的交互式应用程序。这一时期为软件设计的新时代奠定了基础。
框架和库的引入为开发带来了结构化的组件。增强后的集成开发环境简化了编码任务。开源计划鼓励了代码的协作和复用。
当时人们的看法:
1、有人担心会失去对代码的理解。
2、一些人质疑依赖预构建模块是否会导致错误。
人们的应对方式:
1、开发人员开始将框架和库集成到他们的工作中。2、社区接受了开源理念,从而实现了快速创新和知识共享。这一时期,开发效率有了显著提升。代码复用使得项目周转速度更快。工程师们通过专注于更高级的设计和系统集成来适应这种变化。
云计算抽象化了物理硬件的复杂性。DevOps 实践引入了自动化部署和持续集成。这些进步重新定义了软件的交付和维护方式。
当时人们的看法:
1、对传统 IT 岗位的工作安全性表示担忧。
2、担心被供应商锁定以及云计算的安全性风险。
人们的应对方式:
1、工程师们学习了云计算平台和自动化工具。
2、向以代码为中心的基础设施管理方法的转变成为了常态。
像 Terraform 这样的工具使工程师能够在不同的供应商平台上创建基础设施。
向云计算的转变标志着运营效率的一个转折点。开发人员发现,通过代码管理基础设施节省了时间和资源。这种演变设定了软件交付和维护的新标准。
低代码和无代码平台减少了对传统编程的需求。早期的人工智能助手提供基本的编码支持和建议。网站构建工具曾被认为会威胁到网页开发人员的工作。这些工具通过简化编码过程,扩大了软件开发的参与范围。
当时人们的看法:
1、持怀疑态度的人认为这些工具可能会让专业程序员失去工作。2、一些人认为可视化界面不适合处理复杂任务。
人们的应对方式:
1、开发人员使用低代码平台来创建特定的内部工具和简单应用程序。2、多亏了像 WordPress 或 Wix 这样的工具,更多的网站得以建成,而且并没有取代网页开发人员的工作。早期的人工智能工具被集成到工作流程中,以处理日常任务和代码生成。这一时期引入了新的软件开发方式。工程师们获得了能够处理重复性任务的工具。可视化编程和人工智能的集成为更先进的技术奠定了基础。
当前时代的特点是先进的语言模型能够生成和调试代码。像 ChatGPT、Claude 和 Gemini 这样的工具已经改变了工程师解决问题的方式。随着人工智能成为开发的核心组成部分,这个领域正在经历快速变化。
当前人们的看法:
1、人工智能将取代软件工程师。2、对代码质量、安全性和可维护性表示担忧。
人们的应对方式:
1、早期采用者正在学习提示工程,并将人工智能集成到他们的工作流程中。/2、工程师们现在在利用人工智能处理日常任务的同时,专注于更高级的系统设计和验证。开发人员在编码过程中尝试使用人工智能,减少了人为错误。随着人工智能继续重新定义软件工程师的角色,我们必须密切关注其发展。
软件开发的历程表明,从手工编码方法到人工智能辅助编码,这是一个稳步的演进过程。每个阶段都带来了各自的挑战,要求工程师迅速适应。历史证明,那些尽早采用新技术的人会获得优势。保持领先意味着既要理解技术变革,也要理解抵触背后的心理因素。早期采用者引领潮流,并影响更广泛的行业。他们学会使用新工具来保持竞争力。人工智能似乎会减少对工程师的需求,但历史却告诉我们一个不同的故事。根据杰文斯悖论,当一种资源的使用效率提高时,对它的需求往往会增加,而不是减少。随着人工智能降低了创建数字产品的门槛,更多的企业和个人会想要定制软件。结果是什么呢?对能够设计、集成和维护这些人工智能驱动系统的熟练工程师的需求会增加。
原文:
来源:梦之教育