工程研究工作,科学研究而言的。工程研究的工作的目的是解决实际存在的问题,需要对某些问题深入挖掘。科学研究的目的是前沿创新。当一个团队很不了解的问题摆在面前时,该怎么办?应该按照这样的流程展开工作。

第一步。明确问题。明确定位要解决的问题及其上下文,所谓上下文,包括与问题相关的代码、文档、现象、后果等。

 

第二步。以问题为中心,搜集资料。这里和科学研究不同,科学研究是以创新为目标搜集资料。凡是和问题相关的资料,包括论文、书籍、网页等,都搜集到一个目录下。快速浏览这些资料,大致归纳常见的解决思路。

 

第三步。初步判断问题解决的可行性。首先,根据一些搜集到的数据,判断问题的可行性。然后,调研其他相同或相似的工作的工作结果。如果必要,可以做一些轻量级的实验,以进一步验证。如果确定不可行,停止当前的工作。

 

第四步。试图获取非研究的解决思路、深入讨论问题的可行性。以上面两步为基础,头脑风暴。召集相关专家,力图寻找快速解决方案。有时候,可能仅仅修改一行代码,配置一个选项,就能解决问题。因为经常出现这样的情况,在沿着方向A研究了几周后,突然发现,在B方向几个小时就可以解决问题。为了避免这种情况的发生,我们必须一开始试图获取最简单的解决方案。

 

第五步。以多维的方式,列出可能的解决思路。从问题不同的角度为问题划分维数,比如代码优化问题,一维代表系统模块,一维代表运行部件(比如内存、cpucache、硬盘等)。用这些维度列表,比如代码优化,可以列一个二维表格,其中行为系统模块,列为运行部件。这时在表格中网格的行和列代表了解决问题的思路,比如代码优化的一个网格的对应的模块的A,运行部件为内存,那么其为对A模块进行内存优化。比如下表。

模块A 模块B  模块C
CPU
内存 对模块A进行内存优化
硬盘

之所以以多维表格的方式列举问题的解决方案,一是为了理清思路;二是为了避免遗漏,以进行全面的分析。

 

第六步。专家评估每个解决思路的工作时间。召集相关专家,评估每个解决思路的作用、工作量。其中作用,可以通过专家的经验、相关文献的类似工作的作出评估。由于本工作的性质带有研究性,和工程开发不同,其工作量存在更大的不确定性。所以,所估工作量地区间可能更大。