原文链接:enter link description here 作者:chgaowei

软件领域一个非常大的特点是流程和技术变化相当的快。作为一个软件企业,面对日新月异的开发流程和开发技术,何时、如何选择及引进新的流程和技术变得十分重要。这篇文章主要讨论的是进行选择和引进时的出发点,我称之为“缺陷驱动”。

什么是缺陷驱动?

这涉及到引进新技术的根本原因。其实很简单,就是为了解决软件开发过程中遇到的问题。但是实际操作时,面对外界的宣传和影响,人们往往会偏离这个初衷——从追求问题的解决到追求技术的“先进与流行”。

学习引进一种新的技术,新的开发方法和流程,根本的原因不是因为它有多新,有多少人使用,有谁的推荐,而是它是否能够实际的解决你所面临的问题。

缺陷驱动就是说,在软件开发过程中遇到了无法解决或者难于解决问题,才去考虑选择能够解决问题的新技术和方法。否则保持不变。

缺陷驱动的关注点是缺陷而不是技术

以解决工作中遇到的问题为出发点来引进新的技术,才会在这个过程中以问题以及自身的情况为中心,看技术是否适合自身,而不是以技术为中心,看它有多少优点。从这个角度思考也许能够更深入的了解技术。另外,这样对于一个组织来说,是一种自然的成长过程,而不是拔苗助长。

特别是对于引进软件开发流程(比如敏捷开发),这一点更有用。因为不存在一个标准的流程对于所有的组织都适用,组织都需要根据自身的情况进行裁剪,并且根据遇到的问题,首先引进能够解决当前问题的部分,再慢慢考虑其他部分。

发现问题

由于缺陷驱动提倡的时有了问题才行动,所以,在这种思路下,是否能够及时的发现问题变得十分的重要。记得之前看过的一般管理相关文章中提到过,管理者的首要任务是发现问题。

如何及时的发现问题?

  • 首先要对你的工作相当的敏感,遇到不流畅或者不舒服的地方,要记下来并对它进行思考。
  • 其次在遇到了问题要思考它的根本原因。找出根本的问题。
  • 还要多关心技术领域的发展,要多尝试新技术。

其实缺陷驱动要避免的是两个极端:一是过分保守,无视技术的发展,可能会被淘汰;一是激进,为了技术而技术,为了流程而流程,拔苗助长。

采用缺陷驱动有下面几个好处:

  • 降低变革阻力。缺陷导致的问题给团队成员的教训会降低在团队中进行流程优化的阻力,成员都会乐于接受流程的改变。
  • 防止为了优化而优化,为了过程而过程。流程优化是为了解决实际的问题,如果没有问题,仅仅是因为某个流程或过程更好,或者更科学,或者更流行,所以才进行流程优化,则极有可能会进入为了过程而过程,为了优化而优化,这样,不但无法获得流程优化的好处,更坏的情况是,团队会对流程“水土不服”的。
  • 推动创新。缺陷驱动的方法会使团队成员养成善于发现问题,并且去思考、尝试解决问题的方案。如果没有现成的解决方案,团队成员会自己思考适合团队自身解决方案,从而推动组织创新。

PS:对于缺陷驱动思考的不是很深刻,写出来算是一个阶段的总结,还要在工作中实践以慢慢的完善。

之前的思考:缺陷驱动与流程优化