最近在工作中体会到了互联网行业在软件开发项目运作中与我以往在通讯行业时的一些不同,特此分享。


首先,两者在需求捕获方式上有很大的不同。在通讯行业中,初始需求是由象3GPP这样的标准化组织所制定的,但通讯产品在各版本中所实现的需求是由各运营商向通讯企业提出而得以确定的。产品经理(Product Manager,通讯行业的叫法)与系统架构师在需求的确定过程中起着重要的作用。与之不同的是,互联网行业由于产品离最终用户非常近,用户可以通过在线反馈系统提出自己的需要,产品经理(Product Designer, 互联网行业的叫法)根据各需要的反馈量和竞品的状况确定其是否最终成为开发需求。两个行业虽都存在项目经理这个概念,但所起的作用与管理水准相差悬殊。


其次,两个行业的项目评估过程存在较大差异。通讯产品的每一个版本大多涉及多个通讯子设备的开发工作,因此存在这里需要重点关注的两大步骤:一,系统架构师根据需求进行系统设计并形成系统架构文档和各类通讯子设备间的接口文档;二,各通讯子设备开发团队根据步骤一的输出文档进行后续软件开发工作。这两大步骤也表明,项目开发时间的评估也存在两个阶段。第一个阶段是,所有部门根据feature粗略的技术文档给出一个评估时间,该阶段系统工程部的评估时间要求较准,而开发部的评估却可以很粗。第二个阶段是,系统工程部完成设计工作并输出相关文档后,开发部需根据该文档重新评估开发时间,由于此时的信息较前一阶段更为详细,所以对评估精度的要求也更高,且该评估时间最终用作项目开发计划。


回到互联网行业,由于系统间的耦合性不如通讯产品那样强,加上可能不存在架构师这个层级的系统设计工作,因而项目的评估更加直观。但也因为架构师的缺失,使得项目的评估工作完全由开发人员去完成,在开发人员水平参差不齐的情况下项目风险往往更高。象Motorola这样的通讯企业,她能做到项目的开发如期所至与存在高水平的架构师不无关系。


再次,设计评审在两个行业的作用和重视程度也有别。通讯行业中,系统工程部在完成系统设计后,将对系统设计的各类文档进行评审。评审人除了包含系统工程部的系统架构师外,还包括来自各通讯子设备开发部的开发架构师。这一评审过程有助于保证系统设计方案最终能被开发部所实现。当开发部着手开发工作时,一定存在概要设计评审和最终的代码评审工作,这是为发布高质量产品所强制的步骤。


反观互联网行业,由于产品离用户的距离很短,加上产品出现缺陷后可以快速进行线上修复,因而对产品缺陷率的要求自然不那么高,结果就是开发团队对软件开发的规范性认识要差些,给人的感觉更象是“手工作坊”,在质量保证上也谈不上运用“系统性的方法论”。


另一个想借此机会与大家分享的内容是,两个行业的开发工程师在面对需求不明时的工作习惯也(应)有所不同。在通讯行业中,开发工程师一旦面临需求不明这类问题时,通常直接向系统工程部(的系统架构师)寻求帮助。之后,系统架构师会与产品经理仍至客户进行沟通加以明确并回复给开发工程师。然而,在互联网行业中,由于开发工程师直接与产品经理合作(因为不存在系统架构师这一层级的缘故),且很容易因为产品经理经验的不足使得所提出的需求不清晰,甚至在技术上很难实现。在这种情形下开发工程师因主动承担起帮助产品经理澄清需求的责任,且在必要的情况下说服产品经理变更需求。