研发,研究和开发。毋庸置疑,这可是技术公司的命脉,也是工程师们整天都在做的事情。但在我看来根本没有研发这回事。有研究,有开发,研究和开发这两项是完全不同的活动。
研究都是关于发现新东西的活动。研究是最终使得我们可以生产新产品的科学,研究正如“幕后默默做出贡献的人”的比喻,推动控制我们发明的机器。
研究也牵涉到发现新的算法,比如平滑信号和压缩数据的新算法。“新”只是对于我们而言“新”而已,但对于世界来说是已存在的。所以我们能研究新的想法和新的需要,然后转向模型的开发。研究的结果是我们可以实现我们的应用。
“开发就是实现想法和生产新产品。这就是大部分工程师所做的工作。我们把算法转为实在的东西,比如把CRC算法转换为C代码,或者VHDL代码到FPGA中,或者转换代码到逻辑部件中。”
我认为失败项目的十大原因之一是“不好的科学”,或者是无法区分研究和开发的问题。当一个公司正在知道什么是衡量其已确定的进度表的时候才开始生产产品。在没有明确定义一个算法的时候就进行编码,充其量也只是毫无目的地编码,如果运气好点,可能也可有使其运作起来的办法。
研究是不能确定其进度的。如果你不那么认为,请确定一个发现治疗癌症的方案的进度表。
你也许可以推测简单的研究进度表,比如对已知算法的研究,但即使是那样,据我的经验,也是非常难推测的。第一次“我发现了”常常是在一个小实验暴露其一些致命缺点后带来了失望,需要更多的研究来找到更好的解决方法。然而我常常看到一些研究团队在研究和开发之间混淆,这不可避免地延迟项目或者导致项目失败。
当然,有一些项目需要研究和开发并行,不过,那种情况也很难可以精确地确定进度。
你在思考什么?你有因为同时进行研究和开发而导致项目失败的经历吗?