做项目与做产品的区别

来源:互联网 发布:linux 命令制作镜像 编辑:程序博客网 时间:2024/04/29 17:55

最近做的一个项目,客户的需求变动频繁,不得不使我想起同学曾经说过的一句话“程序员最后死在需求上”,所以在网上找了一下资料。

1. 对质量要求

做项目的第一要求是在要求的时间内开发出满足客户需求的软件,它的第一准则是客户永远是对的,开发者必须按客户要求的做,但是因为客户提出的要求往 往是发散的、弱逻辑的、非系统的,所以开发出的软件需要很多硬编码,再加上时间紧迫,不能对已经开发出来的模块进行必要的重构,项目最终越来越难以维护, 性能越来越差。
而做产品则会很注重质量,第一准则是开发出比其他同类产品更好用,更快的系统,当发现某模块的架构不合理时,能够花人力和时间去重构它,最终使产品 越来越快,越来越好用。

2. 团队构成不同

做项目,特别是外包项目,开发人员可能来自不同公司,技术水平参差不齐,开发思想不统一,大家的目标是写出能运行的代码就可以了,而即使这一点,实 现起来难度也很大。
做产品的团队一般都是精兵强将型的,因为目标是跟同类产品竞争,这就要求必须有好的PM,好的Developer,好的Tester,一套科学高效 的开发流程被植入每个人的头脑,工作配合起来比较协调。

3. 驱动因素不同

做项目侧重于时间驱动,因为时间就是成本,要压缩成本就得压缩时间,而功能只要能用就行。
做产品侧重于功能驱动,时间比较充足,以开发出有竞争力的产品,功能不光能用,而且速度要快,操作要简便。

/*--------------------------我只是分割线--------------------------*/
1. 产品的研发过程艰辛而漫长,需要不断的改进,不断的挖掘和提炼,待产品基本成型的时候也就开始了精益求精的过程。把软件工程的理论、思想深入到了研发过程中的每一个细节,每走一步都有详细的文档记录,每一个变更都有据可查,明明白白、清清楚楚。随时可以查阅到研发中的每一个细节。
2. 而做项目就很不一样,首先,心态是不一样的,其次,老板在等着回款呢!当公司接到一个项目的时候,首先是根据功能计算人月费用,然后是紧锣密鼓的往前赶。
简单的来说,产品是面向通用的,项目是面向单一用户的; 项目完成就是产品,完成之前是项目;项目是面向单一用户的,功能相对特殊化,单一化,比较有针对性,项目在产品开发周期中可做为产品的雏形;
1、从用户角度看,项目是针对一个或几个用户的,产品是面向大众或行业的
2、从开发来说,项目是一个过程、最终结果是产品或系统或某类应用
3、从价格角度说,项目具有不确定性,随着客户的需求、采用的技术、周期等来衡量,产品相对而言有比较固定的价格
4、从需求角度来说,项目更侧重用户的实际需要,有特殊性,产品更侧重市场的需要,有广泛性
RUP里面说的产品,是指项目开发的结果,RUP的“项目”,是管理领域里边的“项目”。项目中,软件的客户很少,在开发之前已经很明确,而且通常都已经建立密切的联系,软件的客户对开发者和软件本身了解较多,软件的需求比较专门化。产品中,软件的客户很多,但是开发之前没有明确的客户,只有潜在的客户,客户通常不了解开发者和产品本身,这样开发完成之后你需要去宣传,让这些潜在客户购买产品。一般来说,产品的风险比项目大,因为客户是否接受还是未知数,因此产品需要做得通用,扩大客户范围,期望获得更高的利润。
/*--------------------------我只是分割线--------------------------*/
近来面试,一个面试官突然问了我一个问题,你们是做产品还是做项目的?当时我有点晕,虽然我学过项目管理,但是这个问题还是把我难住了,于是回家之后,从网上查了一下,才恍然大悟,来看看他们的区别:
1.做项目是由客户提出具体的需求,开发人员之需要按照客户的需求来做就行了,遇到不懂得问题,就直接去问客户就行了,可以看出做项目,需求是明确的,不具有不确定性。
2.做产品是由客户提出一个大概的,迷糊的,不明确的需求,然后开发人员进行探索性的开发,具体的需求还得和客户一起讨论,挖掘客户的需求,在开发人员开发的过程当中,需要和客户不断探讨,沟通,等产品发布之后,让客户感受,并提出意见,如果客户说这一块不好,那么开发人员就需要提出解决问题的方案。如果客户满意,那么项目就是成功的,在这种开发模式下,项目团队需要揣摩客户需要什么。
在这种开发模式下,需求面临着不断变化和技术不断更新的条件下,那么如何提高软件团队的生产率的呢?针对这种方法,美国犹他州成立了Agile 联盟,将轻载方法正式更名为Agile方法,Agile有轻巧、机敏、活力的意思。它的主要思想和指导原则如下:
Agile 方法的四个价值:
  1.较之过程和工具,更注重人及其相互作用的过程。
  2.较之于无所不及的各类文档,更主用可运行的软件的价值。
  3.较之于合同谈判,更注重和客户合作的价值。
  4.较之于按计划行事,更注重影响需求变化的价值。
Agile方法的知道原则:
  1.在快速不断地交付用户可运行的软件过程中,应将用户的满意度放在第一位。
  2.以积极地态度对待需求的变化,Agile紧紧地围绕变化展开并利用变化来实现用户竞争优势。
  3.以几周到几个月为周期,尽快,不断地交付可运行的软件给用户使用,
  4.在项目过程中,业务人员和开发人员最好能一起工作。
  5.以积极向上的员工为中心建立项目组,给予他们所需的环境和支持,对他们的工作予以充分的信任。
  6.在项目组中,最有用、最有效的信息沟通手段是面对面的交谈。
  7.项目进度度量的首要依据是可运行的软件。
  8.Agile过程高度重视可持续开发。项目发起者、开发者和用户应能始终保持步调一致。
  9.应时刻关注技术上的精益求精和设计的合理,这样能提高软件的快速应变力。
  10.简单化(尽可能减少不必要工作的艺术)是基本原则。
  11.最好的框架结构、需求和设计产生于自组织的项目组。
  12. 项目组要定期对其运作方面进行反思,提出改进意见,并相应进行细调。

0 0
原创粉丝点击