什么是原则?
- 做一件事情,通常有多种做法,但必然有一种做法是最合适的。那这“最合适”的做法是怎么筛选出来的呢?取决于这件事情的核心特性,越贴近核心特性,做法就越合适。另一种理解方式就是主要矛盾,越能解决矛盾,就越合适。而在XP中通常把这些核心特性或主要矛盾,称之为原则。
那软件开发中的原则有哪些?
人性化
- 重点在于,是人在开发软件,所以这个核心特性——人,的状态直接影响这软件开发。怎么提升?安全感,成就感,归属感,成长,亲切感。
- 伟大团队的魔力在于,在团队成员间建立相互信任之后,他们发现合作工作的结果是导致每个人都可以更加自我。
经济学
- 软件开发的最根本目的,赚钱!!!
互惠互利
- 如果你想要人们接受你的意见,那你就应该解决更多的问题,而不是制造更多的问题。
- XP的互惠互利原则寻找这样的实践,它使现在的我、以后的我和我的客户都能获益。
自相似性
- 试着将一个解决方案的结构复制到一个新环境中,即使他们的粒度不同。通常这是一个不错的起点。
改进
- 没有最好,只有更好,庸才更喜欢等待。
- 改进原则表示为实践就是:马上开始行动,随着实践的推移逐步精化结果。根据经验改进长期计划,这个可能性通过季度周期这一实践得到表现。增量式设计通过精化系统设计来贯彻改进原则。实际的设计永远不可能是理想设计的完美映像,但你可以通过每天的努力来使这二者接近。
多样性
- 团队需要将不同的技能、态度以及看待问题和缺陷的视角整合在一起,来考虑解决问题和实现解决方案的不同方法。就跟现实世界保持生物多样性一样。
- 多样性不可避免地伴随着冲突。冲突不是“我们彼此痛恨,我们不能取得进展”的意思,而是“解决这样的事情有两种方法”。你将如何选择?
- 程序员应该共同致力于问题的解决,两个观点都应该得到重视。
反省
- 好的团队会思考如何工作和为什么工作。
- 分析为什么成功或失败。
- 不会试图掩藏错误,而是暴露它们并从中学习
- 重点:反省需紧跟行动,学习是反省的行为
流
- XP的实践倾向于活动的连续流。
- 建议通过频繁地部署较小的增量来改善延迟。
- 持续交付,形成流。
机遇
- 随时随地都有机遇。
- 学会把问题看作改变的机遇。
- 侥幸的态度会导致仅仅解决表面的问题而蒙混过关。
冗余
- 表示跟质量相关的测试,不能省去。
失败
- 不要讨论万一失败了怎么办。
- 停止无休止的讨论,尽快用实践验证问题。
- 有时当你不知道要怎么做的时候,冒一点风险失败可能是通向成功的最短最稳妥的道路。
质量
- 磨刀不误砍柴工
- 通过牺牲质量来控制的手段是没有效率的。质量不是一个控制变量。项目不会因为接受低质量而加快进度,也不会因为要求更高质量而使进度减慢。要求高质量通常导致更快的交付,而降低质量标准通常会导致更晚的不可预见的交付。
- 问题在于我们如果得到提高质量的能力。
- 人们需要做令他们感到自豪的工作。
婴儿步
- 人们适应变化的速度是有限的。
- 婴儿步代表持续快节奏的小步前进。
- 对于失败而言,小步前进的代价要小的多。
接受责任
- 责任和权利需要并行,两者错位会扭曲团队的沟通。
- 当一个过程专家告诉我该怎么样工作,却不承担这些工作及其后果时,权利和责任就错位了。我俩都无法从一个理智的角度出发来看到或使用哪些帮助我们改进的反馈。
- 错位还要付出情绪方面的成本。
网友评论