敏捷开发的精神内涵

从零到一:HFSS仿真实战之2.4GHz PCB天线设计与优化 本文提供了一份详细的HFSS仿真实战指南,手把手教你从零开始设计并优化一个适用于WIFI/蓝牙设备的2.4GHz PCB天线。内容涵盖蛇形倒F天线建模、参数化设置、激励与边界条件配置,以及通过S11参数和辐射方向图分析结果,并利用参数扫描进行优化,旨在帮助射频工程师和硬件爱好者快速掌握天线仿真与设计流程。 阅读详情

从根本上来说,所有的敏捷开发实践,诸如TDD(译注1)、结对编程(译注2)、持续集成(译注3)和重构(译注4),都有一个统一的观念--永远不被阻拦。这就好像是一个优秀的撞球选手总要确保他的每一次击球都能为下一击创造好机会,每个优秀的敏捷开发者每有一点进展也都要确保下一步。一个优秀的敏捷开发者决不会走出一步,然后就无法再有进展,或是让别人没办法再有进展。

那你怎么知道你的进度停下来了呢?如果你无法让系统运行,进度就是停下来了。如果你不能通过测试,进度就是停下来了。在敏捷世界里,进度只能由通过测试的可运行系统来衡量。如果系统无法运行或是测试失败,那么所有的进度都会停下来,因为反馈循环能告诉我们代码出了问题还是一切良好。当编写的代码无法执行的时候,就好像是驾驶着汽车却看不到挡风玻璃的外面。车轮或许还在转动,但你不知道正在驶往哪个方向,或许你正要驶落悬崖。保持系统随时可运行就像是保持挡风玻璃的清洁。除非我们能看见东西,否则我们无法取得进展。

仔细想想,例如,两个程序员正开发一个项目。Jack说他要写J模块,而Bob说他要写B模块。当Bob写代码写到一个程度就必须要去找J。可是J还没完成,Bob就不得不等。假如Bob那时是个优秀的敏捷开发者,他决不会让事情发展到那一步。他会给J创建一个接口,然后用假代码(stub code)实现它,这样他就可以使得自己那部分的测试能持续运行,因而可以继续开发下去。

设想一个四人团队工作在一个三层架构的管理信息系统上。他们已经通过架构的抽象层次来分好了工。Gerry和George工作在GUI上,Marvin在中间层,而Debeay在数据库。当增加新功能的时候,Debeay做的头一件事情就是去改变开发库的表结构。GUI要等中间层运行起来了才能运行。Debeay已将黑漆涂洒在了挡风玻璃上,整个团队就像是瞎子开车。假如Debeay那时是个优秀的敏捷开发者,她会发现一种能够循序渐进的修改数据结构的方法,增加新的列或是表而不用改变旧的。一直到迭代的最终完成,数据结构会达到成品的样子,而系统在此过程中绝不会中止运行。

保持系统能够持续运行是第一目标。你绝不会做出一些事情以至于会让系统被破坏超过几秒钟。如果你要做一个巨大的设计改变,你会找到一种方式,让每一步的改变都微小到可以确保系统能运行。如果你能找到一种方式能保持所有测试的可持续运行,就不会让系统中止超过几秒钟。

这可不是一个容易掌握的观念。开发者总是习惯于做出一些改变把整个系统搞乱,然后再试图去一块块的拼凑起来。很多人很热衷于这种体验。其实,我曾于一个开发者交谈,他说把系统撕得粉碎再把它拼凑起来是一个程序员所必需的本事。他为他有能力做这种事而感到自豪。因为这对他的自尊来说很重要,我不得不很礼貌的劝说他,他的这种自我成就感是建立在他所冒的风险和为雇主创造利润背道而驰的基础上的。实际上,他对这种赖以生存的能力感到欢喜雀跃。他是一个嗜险成性的人,而且他在拿雇主的财产冒险,这可不是专业行为。敏捷开发好像一场谨慎的象棋游戏,不是一个不计后果的code-chicken游戏(译注5)。优秀的敏捷开发者为他们的目标小心的策划了一条路线,那就是每走一小步都能保持系统的可运行和测试的通过。

一些开发者认为这样做效率低而且缓慢。他们觉得先把系统弄乱然后再重组为一个新的会来得更快些。也许有时候这样做更快些,然而,这样做就像是你想要开车去商店,于是就调整方向直指商店,把挡风玻璃漆成黑色,然后不管红灯和路况就径直的朝着商店开。如果碰巧能行,你就开得更快。但更多的时候这么开在路上就会出岔子。

这个目标可以延伸到团队和组织的各个层面。决不被阻拦意味着你设置好了你的开发环境以至于阻拦的事情不会发生。优秀的敏捷团队使用不被阻拦的源代码控制方法。如果Bill有个模块已经签出(check out),Bob也可以将其签出,但第一个拆入(check in)的人是成功的。假设核心团队正在为我们打造一个可复用的框架,而我们需要的一些功能还没就绪,我们会先自己写好它,等他们好了的时候再使用核心团队的功能。如果企业架构支持我们的这种迂回婉转的方式,那么我们就只需花上几天时间来学习它,然后就能忽略企业架构,而让功能的开发以一种简单的方式来进行。我们就不会被阻拦。

译注:

1,TDD,测试驱动开发,详情请参见“TDD的三条军规”。

2,结对编程,pair programming,又译作“配对编程”。代码由结对的程序员使用一台电脑共同完成。结对人员中的一位控制编码,另一位观察正输入的代码并寻找代码中的错误和可改进地方。两人频繁互换角色,而且结对的关系每天至少改变一次,以便每个程序员在一天中可以在两个不同的结对中工作。据Laurie Williams和Nosek的研究表明,结对非但不会降低开发团队的效率,而且会大大减少缺陷。

3,持续集成,continuous integration。程序员每天会多次拆入(check in)他们的代码并进行集成,规则很简单,第一个拆入的只要完成拆入就可以了,所有其他的人负责代码的合并(merge)工作。为了避免合并时间过长,团队的成员会非常频繁的拆入他们的模块。因此,XP团队每天会进行多次系统构建,并重新创建整个系统。

4,重构,refactoring。随着我们添加一个个特性或是处理一个个错误,代码的结构会逐渐退化,最终会导致纠结不清,难于维护。XP团队通过经常性的代码重构来扭转这种退化。重构就是在不改变代码行为的前提下,对其进行一系列小的改造,旨在改进系统结构的实践活动。

5,code-chicken,密码鸡,一种在北美颇为流行的益智类游戏。 

冬奥精神如何转化为可执行的文化项目:从卓越、尊重到团队协作的实践指南 在组织文化与团队建设项目中,如何将抽象的精神内核转化为可落地、可持续的行为体系,是提升团队凝聚力和执行力的关键。其核心原理在于通过系统化的解构与设计,将价值观嵌入日常流程与互动中,从而驱动个体与组织的正向改变。这一过程的技术价值在于它超越了空洞的口号,通过行为清单、反馈循环和仪式化设计,构建出可衡量、可迭代的文化操作系统。在应用场景上,无论是敏捷开发团队的冲刺协作、线上学习社群的共创运营,还是个人职业发展的规划管理,都可以借鉴这种“精神工程学”的方法论。本文以冬奥精神为例,深入剖析了如何将卓越、尊重、团结等 阅读详情

相关推荐

团队合作精神:培养团队协作意识

《团队合作精神:培养团队协作意识》 关键词:团队合作、团队协作意识、团队沟通、团队协作机制、领导力、冲突管理、数字化团队协作、跨文化团队协作、团队协作精神发展 摘要: 在当今快速变化和竞争激烈的技术环境中,团队合作精神已成为企业和组织中不可或缺的一部分。本文从基础理论、实践应用、深化提升等多个维度,系统地探讨了团队

AI天才研究院 803

【敏捷】四条原则直通真正敏捷境界

敏捷精神包含如下: 递增,而不是连续的:如果你的开发实践是真正的敏捷精神,那么你交付的工作软件是一小部分一部分递增的。不必等到一个阶段完全完成后才开始另一个,你的工作也不是向大的发布日期而努力。完成的工作,但并不是业务最终期限,驱动着敏捷交付。但敏捷精神也承认业务操纵着最后截止日期。你能在这一期限内工作,并与敏捷开发价值保持一致吗?这是一个挑战。 避免不必要的开销:如果你的实践仍然是真正的敏捷精神,那么团队就致力于尽可能多地减的项目计划和文档。与其讨论你要做什么,然后再写下来,不如赶紧动手云

mm995420的博客 1125

树莓派Bookworm系统避坑指南:3种方法解决pip install报错externally-managed-environment

本文详细解析树莓派Bookworm系统中pip install报错externally-managed-environment的成因,并提供三种实用解决方案:使用虚拟环境(venv)隔离项目依赖、通过pipx管理全局Python工具,以及理解风险后的系统安装方法。帮助开发者安全高效地管理Python环境,避免系统冲突。

android的专栏 766

敏捷开发的精神内涵 (原文最终修订于2006-08-11 上午10:49:50)

从根本上来说,所有的敏捷开发实践,诸如TDD(译注1)、结对编程(译注2)、持续集成(译注3)和重构(译注4),都有一个统一的观念--永远不被阻拦。这就好像是一个优秀的撞球选手总要确保他的每一次击球都能为下一击创造好机会,每个优秀的敏捷开发者每有一点进展也都要确保下一步。一个优秀的敏捷开发者决不会走出一步,然后就无法再有进展,或是让别人没办法再有进展。那你怎么知道你的进度停下来了呢?如果你无法

Robert C. Martin博客中文版 4197

SpringCloud 2025王炸更新!GraalVM原生镜像启动速度提升90%实战

在当今云原生和Serverless架构盛行的时代,应用的启动速度已成为衡量技术栈竞争力的关键指标。传统SpringCloud应用由于依赖JVM的动态类加载、反射等机制,启动时间通常超过30秒,在Kubernetes滚动更新和函数计算场景下成为显著性能瓶颈。2025年,SpringCloud迎来里程碑式更新,通过深度集成GraalVM原生镜像技术,实现了启动速度提升90%的惊人突破,让SpringCloud应用正式进入"秒级启动"时代。

小筱在线博客 1100

开关电源辅助电源设计全流程拆解

地类型定义包含电路功率地(PGND)高压侧地,与主功率电路地相连整流桥负极、原边电感地、UC3842的功率地信号地(SGND)低压侧地,与控制/采样电路地相连副边整流管地、TL431地、MCU/运放地。

lyzh971103的博客 1475

从理论上初步了解敏捷开发

今日闲来无聊看了微信的一个宣传短视频,里面讲了微信的四个很重要的特性:极致精神,克制,敏捷开发,传帮精神。对于敏捷开发之前稍有涉略,但是也忘的七七八八了,便借此机会重学了一遍敏捷开发的原理。 为什么需要敏捷开发 在传统的瀑布式开发中,需要等上一阶段的任务完全完成后才能开始进行下一个阶段。好比你点了10道菜,厨师要等到10道菜都做好了才给你一起上,那作为消费者肯定是不乐意的。而在软件开发中,...

zhougb3的博客 725

TLV320AIC3204音频CODEC硬件设计与调试实战

本文深入解析了TLV320AIC3204音频CODEC的硬件设计与调试实战。文章从芯片功能定位入手,详细阐述了电源时钟设计、模拟输入电路等关键硬件设计要点,并提供了软件驱动配置与分层调试方法,帮助工程师有效规避常见陷阱,解决底噪、失真等典型音频调试问题。

zero1的博客 1134

敏捷开发思想之拥抱变化

秉承敏捷宣言的精神(个体与交付重于过程和工具;可用的软件重于完备的文档;客户协作重于合同谈判;响应变化重于遵循计划),我认为,敏捷开发大致应该体现如下的思想:拥抱变化、自我组织、简单最好、客户至上、有效沟通、精益求精。 1、拥抱变化    Kent Beck和Martin Fowler在介绍极限编程(eXtreme Programming)时,最先提到的就是要拥抱变化。这基本上代表了敏捷...

weixin_33882452的博客 340

Python爬虫实战:Boss直聘职位数据采集实战 - Playwright + 结构化解析完整方案(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 2188

Autosar诊断实战系列05-Dcm之0x27加解密服务配置开发详解

UDS 0x27服务实战开发介绍,对解锁尝试次数及delay时间进一步解释。

initiallizer的博客 1994

敏捷开发流程总结

<br />Agile——敏捷开发,作为CMM神话崩溃后被引入的一套新的软件开发模式,这几年来被广泛引起关注,并被寄予厚望。敏捷开发在其他业界的应用是否理想不得而知,但以下总结了我所在公司的敏捷开发试验,希望可以达到管中窥豹的目的。<br /><br />敏捷开发宣言——<br />个体和交互 胜过 过程和工具<br />可以工作的软件 胜过 面面俱到的文档<br />客户合作 胜过 合同谈判<br />响应变化 胜过 遵循计划<br />虽然右项也有价值,但是我们认为左项具有更大的价值。<br /><

alvanchen的专栏 12万+

开源机器人库orocos KDL 学习笔记(二):Geometric

开源机器人库orocos KDL 学习笔记二:Geometric 如果按照上一篇搭建的VS2015 orocos KDL环境,会出现3个例程:geometry, chainiksolverpos_lma_demo, trajectory_example. 这一篇看一下geometry的例程。 在frames.hpp中,定义了这些class: - class Vector - class R

行者无疆的博客 6703

手把手教你用Huggingface CLI和Python脚本高效下载大模型

本文提供了一份Hugging Face大模型高效下载的进阶实战指南。针对国内网络环境,详细介绍了通过配置HF_ENDPOINT镜像加速下载的方法。文章深入讲解了使用huggingface-cli命令行工具和Python脚本进行模型下载的核心技巧,包括选择性下载、断点续传、缓存管理以及批量自动化方案,旨在帮助开发者解决大模型本地下载的常见难题,提升工作效率。

z2a3b4c5d的博客 166

996引擎 - 读写变量性能测试

单轮100万次读写,取3轮平均耗时(毫秒),有效读取率均为100%,数值越小性能越优。

灵台方寸山斜月三星洞 245

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

软件开发新模式:敏捷开发

​做软件开发的同鞋可能都或多或少的听说过敏捷开发,但是实际采用这种开发模式的项目场景可能就比较少了,今天针对敏捷开发能实际解决的问题做一个基本的介绍,让有兴趣的小伙伴能对敏捷开发的内涵有个基本的认识。 软件开发存在些什么问题? 硬体世界的突破与发展速度逐渐趋缓,软体世界的需求扶摇直上,面对环境的瞬息万变,再加上对各类软件质与量上的快速需求,以往有时间慢慢处理的问题,越来越难以即时处置...

454

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

职校教师面试避坑指南:如何回答‘课程思政‘‘工匠精神‘等热点问题?

本文为职校教师面试者提供了一套应对‘课程思政’、‘工匠精神’等热点问题的实战策略。文章深度解析了这些职教核心概念的内涵,将其与企业实践经验相链接,并提供了IDEAS回答模型和具体案例,帮助求职者将行业经验转化为教学优势,避免回答空洞,从而在面试中脱颖而出。

xgboost6farmer的博客 336

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

设计模式:在敏捷开发中,它们过时了吗?

摘要: 在敏捷开发中,设计模式并非过时,而是提升代码可测试性和可维护性的关键工具。敏捷强调灵活迭代,而设计模式通过解耦和结构化设计(如策略模式、观察者模式)帮助团队高效应对变化。对测试人员而言,模式识别能优化测试策略,减少回归风险,并增强与开发的技术协作。正确应用模式需遵循演进式原则,结合自动化测试保障重构安全。测试从业者应学习核心模式,参与设计评审,推动团队平衡敏捷速度与代码质量,构建稳健且适应变化的系统。

2501_94471289的博客 353

代码工匠的专业就是让懂行的人挑不出大毛病

本文从对敏捷开发的深度思考,到对程序员价值的重新审视,再到对管理误区的清醒认知,在理论与实践的交汇处寻找答案。这不仅仅是一份管理指南,更是在试图弥合"代码世界"与"管理世界"之间的认知鸿沟——本文关注的不是流程本身,而是如何让创造力的流动能够不被僵化的制度所阻断。

worldwind13的专栏 347

程序员节纪录片怎么选?20年专家教你用观影提升技术格局

程序员节纪录片观看如何选?20年技术专家分享选片与观影方法,聚焦架构思维、编程哲学与行业演进,适用于自我提升与团队学习。通过深度解析经典作品,帮你拓宽技术视野,实现认知升级,值得收藏。

FuncIsle的博客 1078

敏捷开发产品管理系列之三:产品用户群规划

本文是敏捷开发产品管理系列的第三篇。(序言及设立迭代目标,产品版本规划,产品用户群规划,新产品研发,预估会议,Product Servant,Product Owner团队,产品线管理)上周在培训做“用户故事的用户建模”练习的时候,就有人提出一个疑问:这么短的时间里边,能定义好用户群和用户群分类吗?答案是:不能。用户群的规划是产品概念期就应该完成的工作,它是一个产品管理工作,而非需求管理...

diaogan4202的博客 70

今日开复老师的《互联网的九个产品精神》演讲

1)关注用户:要以用户痛处为契机;把用户需求放在第一位。 2)快速迭代,经过开源、云计算、网络商店降低的开发成本,先推出Minimally valuable product,每周更新,专注很少新功能,小团队,快动作,敏捷地开发验证,直到可解决用户痛处,然后才开始推广。 3)数据导向:用互联网的特性获取用户使用轨迹,做A-B Test理解用户需求和选项,从中判断如何设计产品和排序功能...

用平常的心,做不平常的事 230

软件测试“大冒险”,匠心是通关秘籍

在这个质量意识日益重要的时代,让匠心成为测试工程师最闪亮的名片,用专业与坚守,构筑数字世界的质量基石。

2501_94261392的博客 694

第三周读书笔记——《高效程序员的45个习惯》

  培根曾说过:“习惯真正是一种顽强而巨大的力量,它可以主宰人的一生”,威·詹姆斯有言:“习惯是社会的巨大的飞轮和最可贵的维护者。”这无一例外说明了习惯对于个体和整体的重要性。   想成为一名高效的程序员,良好的习惯必不可少。“思想决定行动,行动养成习惯,习惯形成品质,品质决定命运。“则诠释了程序员在养成良好的习惯前首先应当具有正确的思想——敏捷开发的思想。”   何为敏...

weixin_30571465的博客 98
上一篇: 面向对象设计的11原则
下一篇: TDD的三条军规
Image_Graphics
博客等级 码龄20年 18粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值