没有抓住这项根本,程序员谈论AI是不切实际的

阿诺大话科技君 2025-03-06 06:47:08
抓住根本才能驾驭好AI

AI 正在改变传统的开发方式。从辅助编程到智能低代码平台、软件生成智能体等,越来越强悍的AI工具将会给予程序员最好的发展机会。

但这并不是说任何人拿起工具都能开发出卓越的软件来,对于程序员的软件工程能力,要求反而比以前更高了。因为程序员要能够精准地剖析并描述需求、做好架构设计、保障软件质量,这样才能交付合格的软件产品。

软件工程是指导程序员开发维护软件的一系列方法论和实施原则,随着时代的发展,软件工程也在持续演变中。但其基本原则是不会改变的,就是解决实际问题,构建出稳定可用的软件系统,这也是程序员要抓住的根本。

综合来看,程序员要具备以下软件工程能力:

需求分析能力:要深入理解业务场景背后的复杂需求,精准剖析,挖掘潜在痛点,辨别出真正关键的功能。而借助 AI 则可以从海量的数据中找到有用的线索。代码设计能力:要遵循设计模式原则,合理划分功能模块,定义接口,让代码各部分协同工作。如果程序员能力不足,那使用 AI 生成的代码也无法超越使用者的水平。架构设计能力:要针对复杂多变的业务需求、海量的数据处理以及高并发的用户访问,构建起稳健高可用的软件体系。AI 可以给出参考建议,但程序员要具备 做出正确决策的能力。性能优化能力:这是软件从可用迈向卓越的关键,程序员要洞悉软件运行的底层机制,利用性能分析工具精准定位瓶颈,或优化算法复杂度、减少不必要的资源消耗。持续集成与持续部署(CI/CD)能力:要从代码提交、构建、测试到部署的全过程实现无缝衔接,确保每次代码变更都能迅速、稳定地推向生产环境,且不影响用户体验。

AI 技术固然是程序员手中强大的新式武器,但软件工程能力始终是立身之本。牢牢扎根于需求分析、代码设计、架构设计与性能优化等核心能力,程序员方能在AI浪潮中驾驭技术变革,持续交付高水准的软件。

特别为大家精选出 7 本培养软件工程能力的经典书,现在就学习起来吧。

开发者必读软件工程书单

《代码整洁之道》

作者: [美] 罗伯特·C. 马丁(Robert C. Martin)

Bob大叔的经典之作,强调代码质量的重要性,整洁的代码不仅易于阅读、理解和维护,更是高效软件开发的关键。其核心目标是帮助程序员养成良好的编程习惯,编写高质量、易于维护的代码,提升软件项目的整体质量和可扩展性。

本书给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

《软件设计的哲学(第 2 版)》

作者: [美]约翰·奥斯特豪特(John Ousterhout)

本书提供了一系列软件设计原则和技术解决方案,强调了设计思维的重要性。书中的原则和警示信号帮助读者识别和解决设计问题,同时也鼓励读者在实践中发展自己的观点和方法。

John Ousterhout 教授以多年教学经验为基础写成此书,教导读者如何识别软件中的复杂性,如何思考代码的设计——这种深层次的思辨能力对于任何希取得成功的软件开发者来说都是至关重要的。

本书一个显著特点是它的实用性。书中的每一个原则和建议都基于实际的软件开发经验,而丰富的实战示例进一步增强了其实用价值,这意味着读者可以直接将这些原则应用到自己的工作中。

本书适合广泛的读者群体,包括软件工程师、计算机科学专业的学生、教育者、对软件设计和开发感兴趣的自学者以及技术管理者。无论是新手还是资深开发者,都能从本书中获得宝贵的知识和深刻的见解。

《软件开发中的决策:权衡与取舍》

作者: [美]托马斯·莱莱克(Tomasz Lelek) ,[英]乔恩·斯基特 (Jon Skeet)

本书内容全面,深入探讨了代码重复、异常处理、API设计、性能优化等关键领域,还涵盖了分布式系统设计、数据处理、第三方库管理等高级话题。每一章节都独立而深入,提供了丰富的技术细节和实践建议,使读者能够快速将书中的知识应用到自己的项目中。

本书一大特点是实战性强,每一部分都以实际问题开篇,逐步引导读者理解问题的复杂性,并提供解决方案。书中的代码示例和案例分析,不仅增强了理论与实践的结合,也为读者提供了实际操作的模板。(书中提供了示例代码下载地址)

对于书中大量的的示例代码,作者们进行了精心的编排与设计,根据谷歌代码指南,使用自动化插件进行了格式化。许多代码清单都附有代码注释,对重要的概念进行强调。本书使用的所有代码都有大量的单元测试和集成测试,确保了代码的质量。

本书适合的读者人群包括中高级开发人员、架构师、以及对软件设计和开发感兴趣的自学者。无论是刚刚步入职场的新手,还是经验丰富的老手,都能从本书中获得新的洞见和启发。

《架构思维》

作者: 郭东白

程序员在走向架构师的成长之路上,需要有一个“战略意图”。作者对本书的定位是“假设你有做一个全球顶尖架构师的战略意图,那么我希望我能帮你提高一点成功概率。” 本书为程序员们提供了一套思维模型,并且给出了切实可行的建议。帮助大家意识到自己的问题,找准定位,从而实现能力跃迁。

本书以架构师工作中的痛点问题为导向,结合大量真实、复杂的案例,帮助架构师提高架构设计能力,规划职业成长路径。本书共4部分:

第一部分“架构师的思维模式”介绍3种架构师的思维定式和4种架构活动中常见的思维模式;第二部分“架构师的生存法则”介绍影响架构活动成败的6个要素,以及由其引出的架构师的6条生存法则;第三部分“架构活动中的挑战、根因和应对”介绍架构师在整个架构活动中持续发挥的作用以及架构活动不同阶段常见的问题;第四部分“架构师的职业规划和能力成长”介绍架构师的成长地图和对应角色的关键能力,以及提升思考力的方法。

即使对于许多非程序员专业的读者来说,同样也可以从本书获益,因为它提供的思考框架尤其适合于当下变化快、竞争压力大、充满不确定性的环境。

《现代软件工程:如何高效构建软件》

作者: [美] 戴维·法利(David Farley)

本书探讨了软件工程的真正含义,汇集了一些重要的软件开发基本原则,将它们紧密结合成一个一致的模型,旨在帮助读者有效、快速地构建软件。

全书共4个部分:

第1部分探讨软件工程的真正含义,以及如何将工程的原则和原理应用到软件开发中;第2部分讲述运用科学思想优化软件开发过程的方法,包括迭代式、增量式工作,获得并利用快速、高质量的反馈,采用实验性和经验主义的科学方法;第3部分介绍管理软件复杂性的方法,深入探讨模块化、内聚力、关注点分离、信息隐藏和抽象、管理耦合等原则;第4部分介绍支持软件工程的工具,以及一些贯穿本书的软件开发理念,包括可测试性、可部署性、速度、控制变量、持续交付等。

《持续交付2.0:业务引领的DevOps精要(增订本)》

作者: 乔梁

本书“重新定义”了持续交付,增补了组织管理和架构两个维度,辅助以真实案例,对持续交付的诸多原则和实践加以解读,并对持续交付过程中的取舍原则加以论述。

本书分为3个部分:

第一部分作者对原有的持续交付进行修正,重新定义持续交付为实现组织战略目标的能力,并引入持续交付的能力模型;第二部分阐述组织打造持续交付能力模型所需遵循的原则,包括基础原则、组织原则和架构原则;第三部分通过对多个互联网公司案例的解读,阐述如何根据组织的当前状况应用相关原则对最佳实践进行取舍,并快速达到组织能力目标。

本书适合大型互联网公司的技术VP、技术负责人,中小型互联网公司的CTO、技术VP、研发/测试/运维负责人、主管及骨干,以及组织变革者阅读。

《深入理解软件性能——一种动态视角》

作者: 理查德· L. 赛茨(Richard L.Sites)

本书能够帮助读者学会如何为软件设计观察能力、日志记录和时间戳;如何测量 CPU、内存、磁盘、网络的性能;如何设计开发低开销的监测工具;如何分析产生的性能数据。

本书作者提出,解决软件性能问题要从“软件动态”视角出发,看清硬件与软件的交互关系,看清各个进程之间还有线程之间的交互。对于一些复杂概念,作者还精心绘制了图示加以说明,使得本书内容易于理解和学习。

本书注重实战,在第四部分针对执行代码太多、等待 CPU、等待内存、等待磁盘、等待网络等各种性能异常,都给出了实例,并进行了完整的测量、观察、分析问题,解决问题的过程。

这应该是所有程序员的必读书目,无论他们使用的是什么编程语言,因为性能问题都是相通的。掌握了“测量-观察-修复”这套大法,再隐秘的性能问题也能迎刃而解。

0 阅读:1

阿诺大话科技君

简介:感谢大家的关注