放弃羁绊
极限编程(Extreme Programming,XP)和社会性的变革(social change)相关。XP要求我们放弃那些妨碍生产率但保护我们自己的防御行为。虽然这可能会使我们感觉到自己失去了掩蔽。
XP要求我们坦承自己有能力做什么,然后去做这些能力所及的事情。同时允许并希望其他人也这样做。放弃我们不成熟的自负——“我比其他人都懂得多,我需要的就是让我独立行事,成为最棒的。”XP要求我们在更大的范围内,在包括商业/工作领域的团体中找到我们正确的位置;XP是关于每个人是如何成为最好的自己,如何成为自己所能成为的最好的开发者的过程。XP探讨了如何才能写出伟大的、对业务真正有益的代码。
好的合作关系是做好事情的保证。除了编码和其他活动,我们在工作场所的人际关系也会影响到生产率和自信心。成功既需要技术又需要好的合作关系,极限编程致力于同时解决这两个问题。
尽力而为
为成功做好准备。不要因为踌躇退缩而与成功失之交臂。尽力而为,然后处理其结果,这就是极限(Extreme)的含义。暴露自己,对有些人来说,这不可思议,而对其他人却习以为常。
XP是一种软件开发的风格,专注于编程技术、清晰沟通还有团队协作的精彩实践,这些将帮助我们完成以前几乎不可想象的事情。XP包括:
一种软件开发的哲学,基于沟通、反馈、简约、勇气和尊重的价值观。
一整套被证明在软件开发中有用的实践。这些实践相辅相成,相互增强。我们将它们作为以上价值观的表达形式。
一系列用来将以上价值观投入实践的、辅助的原则和智能技术。当缺乏对应你的独特难题的现成实践时,它会起作用。
一个共享这些价值观和实践的社区。
XP是一条可以使得一起开发软件的人们共同进步直至卓越的途径。它和其他方法的区别有:
开发周期短,提供及早的、具体的、持续的反馈。
增量计划方法。迅速地提出一个总体计划,并在项目生命周期中不断演化。
能够灵活安排功能的实现,以对变化的业务需求做出反应。
使用由程序员、客户和测试人员编写的自动测试来监控开发进度,支持系统的演化,并尽早发现缺陷。
通过口头沟通、测试和源代码沟通系统结构和意图。
演化的设计过程贯穿整个系统生命周期。
依赖于能力普通但能积极参与的程序员之间的紧密协作。
各种实践兼顾项目成员的短期直觉以及项目的长期利益。
绽放自我
XP是Kent Beck在自己的软件开发实践中协调人性和生产率并共享这个协调的一个尝试。越是有人情味地对待自己和别人,我们大家的生产率就越高。成功的关键不在于自我禁欲,而在于承认我们是人,我们生活在人与人之间交往的环境中。
技术同样重要。我们是工作于技术领域的技术人员。工作方式有好坏之分,对卓越技术的追求在开发型组织中是非常重要的。技术支持信任关系的建立。如果你能准确地评估你的工作,第一时间提交有质量的工作,建立快速的反馈循环,你就能成为一个可以信赖的搭档。XP需要参与者学会高层次的技术,为团队的目标服务。
良好的、安全的社会交往和优秀的技术技能对成功的XP开发都是必不可少的。
一个例子是“不设防才是真正的安全”的观念。隐瞒一些事情来保持安全的旧习惯并不能真正起作用。隐瞒20%工作量并不能保护我,当项目失败的时候,没有尽全力的事实并不会真的让我感觉好一点,也无法消除不能让项目运作所带来的失败感。如果我尽了全力写程序而人们不喜欢,