1背景概述
在软件行业飞速发展的今天,我们可以将软件公司分大体分为两类,一类是使用框架进行开发的软件公司,另一类是套装软件产品的提供商,前者公司多数定位是项目类公司,后者则可以称为产品类公司。但做产品与做项目有哪些区别,大多数的人面对这个问题还是较为模糊的,甚至简单认为两者是没有区别的,均是程序开发而已。但事实并非如此,做产品与做项目两者之间既存在本质的区别,也存在着紧密的联系,今天笔者在这里将自己理解与大家分享。
2定义及周期2.1项目定义项目:是指在一定的约束条件下(主要是限定时间、限定资源),具有明确目标的工作任务。
软件项目:是指为企业开发或者部署实施一套专用的系统,或在特定的行业领域做一些系统之间的集成,在进入项目之前必须与用户进行具体的交流和讨论,了解清楚用户心目中的产品或项目预期是什么样子,然后招投标、签订合同、实施交付。
2.2项目周期
软件项目的生命周期是软件的产生直到报废的过程,包括项目的启动、需求调研、功能设计、业务开发、项目测试、项目验收交付给用户,项目结项后项目生存周期结束。随着时间的推移以及发展,为满足当前发展的需求项目通常会重新定义开发。软件项目的生命周期图如下:
2.3产品定义
产品:是指能够提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品、无形的服务、组织、观念或它们的组合。
软件产品:是指向用户提供的计算机软件、信息系统、套装软件或在提供计算机信息系统集成、应用服务等技术服务时提供的软件,是通用的产品应用于某一行业领域而不是像软件项目一样为某一需求或者单位定制开发。
2.4产品周期
软件产品的生存周期类似于人的成长,从出生(产品构思),到成长(产品的版本更新),到去世(产品中止)的过程。产品不存在完成的说法,因为产品是不断更新的,直到被新产品替代,生存周期才结束。软件产品的生命周期图如下:
3区别与联系3.1两者区别
做产品与做项目的区别,大多数人可能都认为两者是相同的,均是使用不同的编程语言进行项目/产品的开发,但其实做产品与做项目两者是存在本质性区别的,下面我们通过两者的出发点,品质要求,时间成本,任务分工,团队构成以及最终的结果导向来分别阐述两者的区别。
3.1.1驱动因素项目的驱动因素:
做项目侧重于时间驱动,因为时间就是成本,要压缩成本就要压缩时间,在功能上力求操作敏捷、易用、友好,如果在项目时间紧迫的情况下,至少要能保证每个功能都好用、不出现BUG。
做项目是以客户的需求为驱动,按照客户的需求进行定制开发,对于不明确的需求要第一时间与客户进行沟通,不可存在需求不明确的现象。产品的驱动因素:
做产品侧重于功能驱动,做产品的时间相对来说比较充足,所以要以开发出有竞争力、受广大客户欢迎的产品为原则,功能响应速度要快,操作要简便、界面要美观。做产品是为了满足某一应用市场而针对性进行一套装软件或一个产品的开发,对于产品的性能以及快速迭代扩展的要求更高,产品的需求也并不像软件项目一样完全明确,存在着后期根据需求、迭代升级的情况。3.1.2质量要求项目的质量要求:
做项目的第一准则是客户的需求,项目的开发人员需要依据客户的需求进行定制开发,并且项目需要保证功能适用于当前客户的使用习惯,性能稳定。
项目的质量更加侧重于某一客户的具体需求,保证交付的软件项目程序可运行、维护,需求功能可实现。产品的质量要求:
产品的质量要求更加侧重于某一行业领域的应用场景,某一款产品需要适应或囊括当前行业可能涉及的需求,所能匹配的应用性更为广泛,并且对产品逻辑、代码运维性的要求更高。做产品的性能必须尽量优化,因为产品为提升竞争力就必须比同类产品更好用,更敏捷,而且产品是一个不断完善升级的过程,对代码的框架以及维护性都具有更高的要求。3.1.3时间投入项目的时间投入:
做项目的时间投入一般是根据项目的需求,进行评估。通常是从项目启动、需求调研、功能设计、业务开发、测试运行、验收交付为一个周期。
项目有明确时间约束,什么时候开始,什么时候结束,每个节点都需要一目了然。通常以项目的验收单作为分项的里程碑及整体验收单作为项目的交付证明。产品的时间投入:
做产品的时间相对来说比较长,产品通常更加关注的是整个产品的规划、开发、推广、维护等。
产品时间一般来说可以明确开始时间却不能明确真正的结束时间,因为产品是一直在进行迭代完善的过程,通常会通过不同的产品版本来区分维护、优化、升级。3.1.4工作区分项目的工作区分:
做项目通常将工作按照业务功能模块划分,明确每个模块的负责人,各负责人梳理负责功能的需求,把握当前工作进度。做项目的核心人物是项目经理,项目经理需要与客户经常沟通交互,之后由项目经理统一进行任务分工与安排,不定时的进行代码review、项目内部沟通会议以及项目进度的推进把控。产品的工作区分:
做产品更加关注的是整个产品的生命周期,明确每个功能的负责人,将重点放在产品的功能
完善中。
做产品的核心人物是产品经理,产品经理负责把控产品的整体研发方向,带领研发团队进行产品研发,并且在产品研发过程中注重考虑产品的扩展性、兼容性、安全性、推广性。3.1.5团队构成项目的团队构成:
做项目团队一般由项目经理、架构设计师、需求分析员、软件工程师、测试工程师构成。
产品的团队构成:
做产品团队一般由产品经理、交互设计师、项目管理人员、开发人员、运维人员构成。
3.1.6结果导向项目的结果导向:
项目的结果是以项目的验收单为基准,项目主要是满足客户特定的需求,体现个性化。