协作和创造力之间的关系 协作和创造力这两个概念是如何关联的?我对它们的关系的看法如图 1 所示。根据定义,协作涉及一个团队,并且协作的工作是基于任务的,但经常有一些探索,例如极限编程中的“尖峰”。 2 我不确定的是,根据 Csikszenthmihalyi 所给出的组成,是否会称这样的工作为创造性的。创造性的工作即可以由个人做,也可以是基于团队的,但主要是探索性的。
在软件开发方面,大部分软件应用程序是用来解决特殊问题的。因此典型的 IT 项目是基于任务的,并且处于图 1 的上半部分中。开发软件工具和其他内容的项目有类似的概况,但工作方式不同。一般个人或小组投入创造力来开发工具背后的核心思想。一旦探究了各种方法,并选定一个,项目就转换为协作模式,团队在此模式下构建产品。 支持协作 协作的成功源于许多因素。一些最重要的是:
协作工具的历史 支持成功的协作应该支持这些因素。让我们来看看工具是如何支持它们的。我将从最简单且最老的开始,一直到如今我们使用的。 十多年来,帮助团队识别任务以及任务分派是项目管理工具的一部分。对于非常简单的项目,可以使用电子表格和一些宏命令。拥有大型团队、必须集成的多个组件,以及长时间的开发周期的项目使用成熟,复杂的项目计划工具。 项目管理工具稍微支持协作,但人们不会必然将其分类为协作支持工具。一个原因是这些工具没有使得团队成员很容易地 察觉到 队友的活动。如果您是开发人员,并且您的项目使用成熟的项目管理工具,那么扪心自问,当您最后使用该工具时,您能知道另一个开发人员在做什么吗?非常可能的答案是“从未”。 不能察觉是一个很重要的问题。一个好的协作工具会让团队成员很容易地了解同伴在做什么。这样的工具还将把项目的整个进展告诉团队甚至没有工作的每一个人。这是生产力的问题。如果花费时间寻找所需信息,那么这些时间可以花在更重要的任务上,例如,实现新特性。同样,如果花费时间和精力定位信息,那么人们不会定期访问这些信息。人们只在出现危机时才访问这些信息。此时这些信息虽然关键,但是是以响应式来使用的。 抢先地使用项目进展和任务分配信息是更有意义的。信息有更多价值。设想程序员被分派实现应用程序上的新特性。当她工作时,她发现系统的另一个部分将使用她正在实现的特性。她可以仅仅实现该特性,并且提交,但需要使用该特性的程序员将不得不调整其代码。如果她可以快速地找出将利用其特性的人,那么她可以与该程序员一起合作,以最适合二者需求的方式实现该特性。这就是我所说的信息的提前使用的意思。 丰富的历史信息有许多用处。对于协作,这些信息令团队可以回顾项目,并且了解在哪里可以做出更好的选择,或者回复到项目的先前版本,并走另一条路径。许多年前,版本控制系统就已经提供用于获取丰富的历史信息的许多功能了。IBM ? Rational? ClearCase? 已经成为软件配置管理(SCM)工具市场中的优质产品很长时间了。这样的产品能够分支、合并,及进行并行开发。这样的产品拥有提供丰富历史的基础,但我们仍旧需要更多。 |