Uncle Bob谈软件开发的职业素养之一:敏捷

AI时代软件工程师的核心价值:守住代码整洁与测试底线 在AI辅助编程快速普及的今天,软件工程师的核心竞争力不再局限于编写代码,而是转向对软件工程基础的深度掌握。无论是SOLID原则、TDD测试驱动开发,还是代码整洁度与重构能力,这些底层能力在AI时代不仅未被削弱,反而成为驾驭AI工具的关键。文章从软件工程的基本概念出发,探讨AI编程工具如何改变开发流程,同时强调工程师必须保持对代码的“拥有感”,通过编写清晰的需求定义、设计合理的系统架构、用自动化测试约束AI生成结果,才能有效对抗AI幻觉并避免技术债累积。这些基础能力广泛应用于代码审查、单元测试、模块化设计等日 阅读详情

Uncle Bob谈软件开发的职业素养之一:敏捷

2009-05-06 来自:java060515 [收藏到我的网摘]

前不久,Uncle Bob 在JAOO上做了一个演讲软件开发的技艺与道德。他在其中提出多项开发软件时应该具备的职业素养(discipline)。 演讲开始,Uncle Bob开宗明义提出:我们这些软件开发人员有一份工作(job:用以谋生),但是却很难称之为职业(Profession:需要特定的教育、培训或技能)。然而,自2000年敏捷运动开展之后,有些职业素养逐渐涌现出来(our craft is defined),使得我们的工作有可能成为一份职业,我们也拥有了变为专业人士的机会。(The Agile approaches depend on discipline, not on documented process。这也与我最近的思考有关,职业素养、纪律和承诺是敏捷潜在的核心,Agile的诸多实践都体现了这一点。改日另文述之。) 下面我将分几个部分来介绍其中提到的discipline。 Short iterations短迭代。敏捷相关的经验告诉我们:软件无法通过long period实现,而是应通过一系列的短迭代开发。Uncle Bob最中意为期一周的迭代,两周也可以接受。4周太长了,会产生很多错误。在迭代结束时,应该交付deployable的软件,而不是deployed的软件,部署与否要由业务来决定。从职业精神(professionalism)的角度来看,交付可以部署的软件,这才是软件开发人员应该做到的事情。Uncle Bob总结:短迭代是构建优秀、牢靠的software profession的basic discipline。 Don't wait for Definition不要等待明确的定义。Uncle Bob指出:也许近几十年来,阻挡我们前进的最大障碍,就是我们总觉得:没有定义,我们就无法向前行进。他问观众:谁曾经让客户在确定的需求上签下带血的签名(sign in blood )?这一点都不公平!!客户一开始并不知道他们到底要什么我们不能等待明确的定义,而是要以编写代码的方式,参与到定义的过程之中。通过best guess来编写软件,再与客户的真实想法进行确认,要想建立靠谱的软件需求,没有比这更好的方式了。产品定义的演化,是随着开发人员与客户一起积极参与需求制定过程完成的。 Abstract away volatility通过抽象隔离变化。这与软件设计和行为相关。隔离变化与不变,并分别置于软件的不同部分,使其互不干扰。比如UI与业务逻辑代码绝对不应放在一起,比如JavaScript。 CommissionOmission动起来,都给我动起来。动手去尝试一些事情,总是胜过坐等现成。如果A组依赖于B组完成某些东西,那么A组不要消极等待,而是应该积极定义B组要提供的东西。Commit!Do not omit. Decouple from others与他人解耦。假设有多个team并行开发,如果你需要等待某个team完成他们的模块,你不要空等他们搞定手上的代码,而是应该将你自己从他们的工作中解耦出来。具体方式:写stub,写mock,写模拟代码。写很多不需要对方就可以运行的代码。这样一来,两个模块之间的接口也就定义好了。通过stub、mock、模拟代码,将自己从软件的层面与他人解耦,而不要被挡在路上(blocked)。 Never be Blocked不要让自己的路被堵死。Uncle Bob称之为最高指导原则(prime directive)。不要让自己的路被堵死,总是应该找到一些方式来让工作取得进展。他曾为某个团队提供咨询服务,那个团队的QA无法执行测试,因为QA的电脑环境没有配置好。可是开发人员的机器都已经配置完成了。Bob大叔告诉QA人员,让他们先用开发人员的某台机器测试,先运行测试用例,即使QA环境没有完全配置好,总是有些测试是可以运行的。 "Never allow yourself get stuck and wait, always find some way out! 该视频在InfoQ上发表,地址是:http://www.infoq.com/presentations/craftmanship-ethics。其他后续部分会根据可用时间慢慢整理。

Android Framework WMS全面概述和知识要点 WindowManagerService 类是整个 WMS 的核心大脑,处于系统服务层,负责协调和管理所有与窗口相关的操作。它在 Android 系统架构中起到承上启下的关键作用,向上对接应用层的窗口请求,向下与 SurfaceFlinger 等底层组件交互,确保窗口能够正确地在屏幕上显示和管理。 阅读详情

相关推荐

FPGA实战:AXI BRAM Controller配置避坑指南(Vivado 2023版)

本文详细解析了Vivado 2023环境下AXI BRAM Controller的配置技巧与避坑指南,涵盖AXI4协议转换、BRAM地址空间配置、信号异常处理及突发传输优化等核心内容。针对写时序冲突、跨时钟域处理等常见问题提供实用解决方案,帮助开发者提升FPGA系统性能与稳定性。

q1w3e5r7t9y的博客 344

程序员应该有什么职业素养?

我记得有一次,我们团队在一个重要的项目上线前发现了一个严重的bug,当时已经是凌晨,但团队里的每个人都毫不犹豫地留下来加班,直到问题解决。在一次复杂的项目中,我们团队中的每个人都各司其职,充分发挥自己的特长,最终成功完成了项目。在一次项目中,我们通过建立一个代码库,复用了大量的通用代码,不仅提高了开发效率,还减少了代码的错误率。在一次项目中,我们团队通过细致入微的代码审查和测试,成功避免了一些潜在的严重问题,确保了系统的高质量。总的来说,程序员的职业素养不仅仅是技术能力的体现,更是综合素质的体现。

一勺菠萝丶的博客 1149

NCCL分布式训练中ibv_reg_mr_iova2内存分配失败的3种解决方案(附详细排查流程)

本文深入探讨了NCCL分布式训练中ibv_reg_mr_iova2内存分配失败的3种解决方案,包括快速临时修复、标准系统配置和PAM模块根治方案。详细分析了错误原因,提供了完整的排查流程和性能优化建议,帮助开发者高效解决RDMA网络环境下的内存锁定问题。

nut55的博客 626

程序员的五大职业素养,你知道吗?

张华的经历充分证明了,在技术不断进步的今天,只有拥有强大的适应能力,才能在职场中立于不败之地,实现职业生涯的成功。在未来的程序员职业路径中,我们回顾讨论的主要职业素养和工作态度,发现技术发展的趋势对程序员提出了更高的要求。技术的每一次更新都可能带来开发效率的飞跃或是新的解决方案,只有不断学习,才能紧跟时代的步伐,不被行业所淘汰。我的经验告诉我,有效的技术学习不仅仅是浏览最新的文档或API,更多的是在实践中应用新知,解决实际问题。通过定期的会议和讨论,我们确保了项目的顺利进行,并解决了可能出现的问题。

张迁 1108

HC-SR04测距不准?STM32F103定时器捕获模式详解与精度提升实战

本文详细解析了HC-SR04超声波测距模块在STM32F103上的精度问题,并提供了定时器输入捕获模式的实战配置方法。通过硬件级时间测量和温度补偿算法,将测距精度提升至±0.1cm,适用于工业级应用场景。文章包含完整的代码实现和测试对比数据,帮助开发者解决超声波测距不准的常见问题。

weixin_30313409的博客 351

dummy机械臂代码学习(六)

CLI-Tool文件夹下又包含四个子文件夹,以及一个gitignore文件、一个run_shell.py的python文件、一个run.bat文件和一个zadig exe文件。库解析命令行参数,并根据不同的命令执行相应的操作。Zadig是一个用于Windows操作系统的开源工具,它的主要功能是安装和配置USB驱动程序。的目的呢就是确保在版本控制过程中,不必要的或自动生成的文件被忽略掉,来保持代码仓库的干净和整洁。,DummyStudio的软件作者已放在GitHub,我们主要看CLI-Tool文件夹就行。

jumaohhh的博客 1436

Bob大叔Robert Martin对敏捷的看法-敏捷是人的敏捷

http://www.ituring.com.cn/article/13376 Robert C. Martin,世界级软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report 前主编,被后辈程序员尊称为“Bob大叔”。20世纪70年代初成为职业程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客,除本

睡猫的博客 1222

把雷达强度特征融合于 Cartographer的实现流程 :从地图构建到在线定位

摘要:本文提出在激光SLAM中融合强度特征的方法,解决几何匹配在退化环境中的失效问题。详细介绍了两种高反地图生成方式:离线使用assets_writer工具处理优化轨迹,在线实时累积高反点;以及权重网格的构建与预计算金字塔方法。定位阶段通过加权得分公式融合几何和强度信息,采用自适应缩放策略平衡特征依赖。该方案在不显著增加计算负担的前提下,有效提升了对称环境等退化场景的定位稳定性,对利用人工路标的移动机器人具有实用价值。

Studying…… 1329

Uncle Bob谈软件开发的职业素养之一

前不久,Uncle Bob 在JAOO上做了一个演讲——“软件开发的技艺与道德”。他在其中提出多项开发软件时应该具备的职业素养(discipline)。演讲开始,Uncle Bob开宗明义提出:我们这些软件开发人员有一份工作(job:用以谋生),但是却很难称之为职业(Profession:需要特定的教育、培训或技能)。然而,自2000年敏捷运动开展之后,有些职业素养逐渐涌现出来(our

phphot 1629

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

锂电池SOC估计 | 基于LSTM长短期记忆神经网络的锂电池SOC估计(附matlab完整代码)

前程算法屋的博客 1025

最新Python爬虫实战(入门爬虫篇)——案例3:爬取二次元cos图片批量下载到本地(附上完整爬虫代码)

本次案例通过Python爬虫技术实现了二次元图片的批量下载。代码采用模块化设计,函数实现cookies的自动解析,简化了配置流程,涵盖“请求列表页→提取详情页URL→请求详情页→提取图片链接→保存图片”的完整流程,与豆瓣案例的核心逻辑和格式完全对齐。学习重点包括:抓包工具定位多层级数据源、正则表达式匹配复杂链接、模拟请求头绕过反爬机制、文件名安全处理及自动化文件管理。需要注意控制请求频率并遵守网站使用规范,适用于入门爬虫实践,帮助学习者掌握多层级页面爬取的核心逻辑。

努力让自己发光,对的人才能迎着光而来 14万+

沉淀十五年编程智慧,Bob大叔经典力作全新升级再出发

在软件工程快速迭代、技术框架不断更新的时代,很多技术书籍转瞬就会被时代淘汰。但总有少数经典,能够跨越技术周期,成为一代代开发者的底层必修课。Bob大叔(Robert C. Martin)作为软件工程领域的标杆级人物,其著作多年来深刻影响着全球程序员的编码习惯、工程思维与团队研发理念,是无数人入门进阶、搭建专业技术体系的核心参考书。

全沾软贱开发攻城狮 1万+

9.6华为OD机试真题 新系统【仓储货物有序出库】

华为OD机试真题 新系统【仓储货物有序出库】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【仓储货物有序出库】多语言题解。

qq_45776114的博客 898

AI时代,为什么软件工程基础反而更重要?

软件工程是一套完整的工程体系,涵盖需求分解、架构设计、编码规范、质量保障与协作流程。在AI辅助编程快速普及的今天,许多人误以为代码生成变得简单,工程基础就不再重要。然而,AI不过是高效率的代码生成器,它不关心可维护性、可扩展性与可测试性,反而让测试驱动开发(TDD)、代码审查、架构设计这些基本功的价值进一步放大。从单元测试到持续集成,从设计模式到代码整洁度,软件工程基础决定了团队能否驾驭AI带来的高速产出,避免质量债的积累。无论是个人开发者还是正在推广AI工具的团队,掌握这些基础能力,才能让AI真正成为提效

weixin_30615767的博客 425

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

程序员应该具备的职业素养十一条

程序员作为软件开发和信息技术领域的核心角色,需要具备一系列的职业素养来确保项目的成功、团队的高效协作以及个人的持续成长。通过不断提升自己的职业素养,程序员可以更好地应对工作中的挑战,实现个人和团队的共同成长。

心存の思念 731

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

作一个真正合格的程序员,应该具有的素质

这里写自定义目录标题新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 SQL 常用 你好! 这是你第一次使用 M...

Sara_He的博客 655

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

程序员六大职业素养(转)

转自:http://vipnews.youkuaiyun.com/newscontent.aspx?pointid=2008_12_17_113115843   说起职业素养,可能大家脑子里马上反映出来的是西服领带公文包的精干白领形象,其实作为程序员来说,外在可能没有那么重要,更多的是内在职业素养,本期调查分享了两个研发小组的故事,让大家在统计数据的基础上进一步了解——什么是程序员需要的职业素养? ...

weixin_33813128的博客 838

程序员的职业素养(世界级软件开发大师Robert C. Martin谈职业素养)

《程序员的职业素养(世界级软件开发大师Robert C. Martin谈职业素养)》基本信息原书名:The Clean Coder:A Code of Conduct for Professional Programmers作者...

csdn1232的博客 382

程序员需要具备的职业素养

趁着这几天无事,好好总结一下从事软件开发以来的一些想法,这篇blog尝试从我自身的一些经历来谈谈程序员应该具备哪些素质。如有不足之处,还请不吝赐教! (此文转载自乐字节) 下面,我将列出并展开所有我认为程序员必须具备的素质。 基础知识 你也许是像我一样的自学者,没有数电/模电,编译原理,操作系统原理,网络与数据库等方面的知识,但是对于这些你应该尝试去了解、理解。当初跨专业考研之时学习的操作系统/网络/数据结构/数据库的知识于我现在的工作仍然有益,我有遇到过一些能力很强的人,他们做解决方案很强,但是debug

weixin_56121127的博客 838

程序员应该具备哪些素质

趁着这几天无事,好好总结一下从事软件开发以来的一些想法,这篇blog尝试从我自身的一些经历来谈谈程序员应该具备哪些素质。如有不足之处,还请不吝赐教!下面,我将列出并展开所有我认为程序员必须具备的素质。基础知识你也许是像我一样的自学者,没有数电/模电,编译原理,操作系统原理,网络与数据库等方面的知识,但是对于这些你应该尝试去了解、理解。当初跨专业考研之时学习的操作系统/网络/数...

weixin_33831196的博客 446

软件工程师的职业素养

1、注重细节,程序设计严谨,测试充分,不放过任何一个异常,不抱有侥幸心理。 2、主动向公司提交程序对应的流程图、说明文档、测试文档。 3、认真进行同行评议。 有的程序员做设计和测试时,不愿意进行深入地、全面地分析思考,怕麻烦、嫌费时间,影响正常下班。没能认识到一旦出了bug,后果会多么严重。 有的程序员只肯写代码,不肯画流程图,写说明文档,可能觉得公司绩效考核里没有这一项要求,可能怕写出来别人就会...

qq_43253216的博客 4570

程序员的职业素养_心得体会

《程序员的职业素养》——总结 前言          在Bob大叔的整本书中,重点传达了一种精神,就是专业精神。解释出来会有很多种精神,但是我觉得概括下来,就是工匠精神,就是责任感。要对项目负责,对代码负责,对公司负责,对个人负责。对于整个项目而言,不合乎情理的需求,可能对项目造成很严重的损害。就像一个任务在保证质量的前提下,需要10天才能完成,可是提出需求需要3天完成,我们身为专业开发人

tooky_poom的博客 6555
上一篇: Java影响力远超想像——为什么要采用Java平台
下一篇: JSP在电子商务网站开发的运用应用发展方向
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值