作者:龙道凯
链接:https://www.zhihu.com/question/22418638/answer/144351127
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1. 对质量要求
做项目的第一要求是在要求的时间内开发出满足客户需求的软件,它的第一准则是客户永远是对的,开发者必须按客户要求的做,但是因为客户提出的要求往 往是发散的、弱逻辑的、非系统的,所以开发出的软件需要很多硬编码,再加上时间紧迫,不能对已经开发出来的模块进行必要的重构,项目最终越来越难以维护, 性能越来越差。
而做产品则会很注重质量,第一准则是开发出比其他同类产品更好用,更快的系统,当发现某模块的架构不合理时,能够花人力和时间去重构它,最终使产品 越来越快,越来越好用。
2. 团队构成不同
做项目,特别是外包项目,开发人员可能来自不同公司,技术水平参差不齐,开发思想不统一,大家的目标是写出能运行的代码就可以了,而即使这一点,实 现起来难度也很大。
做产品的团队一般都是精兵强将型的,因为目标是跟同类产品竞争,这就要求必须有好的PM,好的Developer,好的Tester,一套科学高效 的开发流程被植入每个人的头脑,工作配合起来比较协调。
3. 驱动因素不同
做项目侧重于时间驱动,因为时间就是成本,要压缩成本就得压缩时间,而功能只要能用就行。
做产品侧重于功能驱动,时间比较充足,以开发出有竞争力的产品,功能不光能用,而且速度要快,操作要简便。
产品和项目有时候是交织在一起的。一个产品可能在不同时期以项目的形式来进行开发,另外产品还有不同的版本,有时候需要同时维护几个版本,有的新功能以项目的形式设定截止时间开发完成,功能完成后进入运维进行持续改进。
同一个工作,可能对一些人是产品,而对另外的人是项目。例如,一个互联网公司,准备开发网站和移动应用,然后把这个产品分成几个小项目外包出去,对甲方是产品,包括拆分项目,讨论实现,验收和后续运维。对承接外包的乙方,就是一个个项目,按合同规定时间完成特定功能就行。后续运维可以甲方当产品自己持续做。
国内互联网公司,大一点的,BAT等,基本都是以产品为主导,需要自己运维,包括知乎。
以项目为主导的主要是外包公司。
所以,如果能进入以产品为主导的公司,员工是可以长时间很多年的学习改进。
如果进入以项目为主导的公司,一般项目周期比较短,经常会遇到有的时间段项目超多忙不过来,有的时间段项目少没事做,扩招和裁员比较常见,技术开发员工一般很难呆5年以上。