研发团队管理:IT研发中项⽬和产品原来区别那么⼤,项⽬级的项⽬是项
⽬,产品级的项⽬是产品
前⾔
从事IT⾏业多年,⼀路从⼩杂兵成长为⼤团队Leader,对于研发整个体系⽐较清楚,其实⼤多⼈都经历过但是都忽略了的研发成本管控的⼀个关键的点就是研发过程中项⽬级和产品级的区别。
市场基本情况
在IT⾏业飞速发展的今天,可以将IT公司分⼤体分为两类:
⼀类是软硬开发公司:多数定位是项⽬类公司,如某国际,某为外包,此类型也多是外包公司,⼩部分公司也做⼀些产品级的定制开发(⼀般是解决⽅案或者按照license出货)。
⼀类是产品提供商(服务类公司):有特定的产品,持续迭代,特定的时候,该类主体为产品类公司。同时,不乏产品类公司做⼀些项⽬定制开发。
其实以上两者并不是⼀定区分那么明显,会根据市场发展需要进⾏转变,⼤部分公司的路线都是项⽬级养活公司,逐渐⾛向产品级,最终转为产品提供商并做⼀些产品相关的项⽬开发,如国内某GPU⼚。
(PS:实际上稍微⼤⼀点的公司业务复杂程度,多样化程度不亚于过年回家应付七⼤姑⼋婆,此处只粗略加以区分)
请先思考以下问题(⽂章末尾解答)
思考问题1:⽼板1(你的⽼板或者甲⽅客户)希望做⼀个即时通讯软件,能实现聊天功能,⽂件传输功能,能查看哪些⼈在线,能发表情等等,是否能做?多长周期?成本多少?
思考问题2:⽼板2想要做⼀个三维引擎开发,希望将给的图进⾏三维点云渲染,能将其给的demo点云进⾏展⽰和基本的三维场景功能,是否能做?多长周期?成本多少?
思考问题3:⽼板3想要做⼀个⽩板软件,希望拥有某⼤⼚的⽩板基本功能,是否能做?多长周期?成本多少?
思考问题4:⽼板4想要做⼀个物联⽹服务器平台,实现mqtt通讯,从前端看即可,是否能做?多长周期?成本多少?
思考问题5:⽼板5想要做⼀个数据处理平台,实现给定的⼏百⽂件数据处理,达到功能,是否能做?多长周期?成本多少?
(请带着以上问题,往下看)
关键点
做产品与做项⽬有哪些区别,⼤多数的⼈⾯对这个问题还是较为模糊的,甚⾄简单认为两者是没有区别的,均是程序开发⽽已。但事实并⾮如此,做产品与做项⽬两者之间既存在本质的区别。
侧重点不同
项⽬的侧重点:时间和基本功能
做项⽬侧重于时间驱动,因为时间就是成本,要压缩成本就要压缩时间,在功能上⼒求操作敏捷、易⽤、友好,如果在项⽬时间紧迫的情况下,⾄少要能保证每个功能都基本能⽤、主流程不出现bug,若有功能性bug会进⾏修复。
做项⽬是以客户的需求为根本,按照客户的商定的需求进⾏定制开发,不明确的需求要第⼀时间与客户进⾏沟通,不在沟通内的将会存在后期扯⽪现象。
产品的侧重点:时间、基本功能、体验优化、⽅案优化、代码优化和需求迭代升级
做产品侧重于功能体验,做产品的时间相对来说⽐较充⾜,前期可采⽤带产品型思维的项⽬型管控⽅式,达到项⽬要求之后,进⽽不断迭代优化修复优化⾮功能性bug。(团队管理上,可称之为项⽬级Demo阶段,即第⼀阶段)
要开发出有竞争⼒、受⼴⼤客户欢迎的产品为原则,功能响应速度要相对体验好,操作要简便、界⾯要美观,是多⽅努⼒的结果,⽽且周期往往以半年开始计算。(团队管理上,可称之为产品级Demo阶段,即第⼆阶段,该阶段的周期为0.5~3倍时间于项⽬级Demo阶段) 做产品是为了满⾜某⼀应⽤市场⽽针对性进⾏⼀套装软件或⼀个产品的开发,对于产品的性能以及快速迭代扩展的要求更⾼,产品的需求也并不像软件项⽬⼀样完全明确,存在着后期根据需求、迭代升级的情况。(团队管理上,可称之为产品迭代升级阶段,即第三阶段)
构架与代码质量要求
项⽬的质量要求
做项⽬的第⼀准则是客户的需求,项⽬的开发⼈员需要依据客户的需求进⾏定制开发,并且项⽬需要保证功能适⽤于当前客户的使⽤习惯,性能稳定,主功能流程不存在功能性bug;
项⽬的质量更加侧重于某⼀客户的具体需求,保证交付的软件项⽬程序可运⾏、维护,实现基本功能即可。
简单来说,项⽬的代码怎么⽅便怎么来,⼀般不会考虑耦合度、代码规范问题,研发尽快完成对应的任务即可,当然技术好的就算是项⽬型也会有统⼀的代码规范和较低的耦合度。
产品的质量要求
产品的质量要求更加侧重于某⼀⾏业领域的应⽤场景,除主功能流程之外,对其他体验细节等进⾏优化,对代码进⾏优化,最开始时就会进⾏整体的⼀个基本构架,包括编码风格,模块划分等等,同时具备较好的可读性,可维护性和持续开发,使其所匹配的应⽤性更为⼴泛,并且对产品逻辑、代码可运维的要求更⾼。
做产品的性能必须持续优化,因为产品为提升竞争⼒就必须⽐同类产品更好⽤,更敏捷,⽽且产品是⼀个不断完善升级的过程,对代码的框架以及维护性都具有更⾼的要求。
简单来说,产品的代码兼具考虑后期拓展和整体构架,各开发者统⼀的代码规范,较好的可读性等等,代码也⽐较健壮,逻辑清楚。
时间投⼊
项⽬的时间投⼊:
开发一个平台需要多少钱 做项⽬的时间投⼊⼀般是根据项⽬的需求,进⾏评估。通常是从项⽬启动、需求调研、功能设计、业务开发、测试运⾏、验收交付为⼀个周期。
项⽬有明确时间约束,什么时候开始,什么时候结束,每个节点都需要⼀⽬了然。通常以项⽬的验收单作为分项的⾥程碑及整体验收单作为项⽬的交付证明。
产品的时间投⼊:
做产品的时间相对来说⽐较长,产品通常更加关注的是整个产品的规划、开发、推⼴、维护等。
产品时间⼀般来说可以明确开始时间却不能明确真正的结束时间,因为产品是⼀直在进⾏迭代完善的过程,通常会通过不同的产品版本来区分维护、优化、升级。可以划分为三阶段时间:
项⽬Demo阶段:考虑构架等时间会⽐纯项⽬长
产品Demo阶段:基于之前的功能开始第⼀版本的稳定性,体验,各种⾮功能的bug和⼩优化
产品优化迭代需求升级阶段:对已有的功能进⾏各种优化,如播放器优化编解码性能,如原来使⽤的延时500ms,提升为400ms,看似⼩的优化,往往付出却是⽐其Demo功能开发的周期更长。
解析⽂前的问题
思考问题1
⽼板1(你的⽼板或者甲⽅客户)希望做⼀个即时通讯软件,能实现聊天功能,⽂件传输功能,能查看哪些⼈在线,能发表情等等,是否能做?多长周期?成本多少?
该问题需要进⼀步的沟通需求细节,实现通讯软件达到的具体功能点,以某种形式列出,并且列出类似的⼏款产品类似的功能,具体确认其功能需要达到哪种程度。才能进⼀步明确是否可⾏,周期,成本等,以下列出⼏种常见的情况:
-情况⼀:⽼板1要求的及时通讯是满⾜基本要求,为⼈相对好说话,公司内部使⽤,能基本聊天实现基本功能即可,完成验收。
-情况⼆:⽼板1要求的及时通讯是满⾜飞Q要求,实现基本要求,要达到200⼈同时在线聊沟通等,还需要表情⽂字,gif,⽂件传输需要达到10MB/S,同时不影响聊天,基本很难验收。
-情况三:⽼板1使⽤后发现,QQ能做到多个聊多⼈在线,你这个为什么不⾏,QQ可以同时做屏幕互动,语⾳这都是基本功能,之前说的基本功能就包括这些,根本⽆法验收。
-其他情况:只列举三种相对结果好、中、差的情况(往后的问题都是)。
以上第⼀种情况⼀般是合作愉快,⼆就⽐较棘⼿,三最后⼀般是不欢⽽散,⼀⽅吃亏或者可能在法院上见。
思考问题2
⽼板2想要做⼀个三维引擎开发,希望将给的图进⾏三维点云渲染,能将其给的demo点云进⾏展⽰和基本的三维场景功能,是否能做?多长周期?成本多少?
-情况⼀:⽼板2要求引擎后,能够将其给的点云打到展⽰的效果,评估时使⽤该点云评估,完成验收。
-情况⼆:⽼板2要求引擎后,能够将其给的点云打到展⽰的效果,进⼀步测试时,发现⼏千万的点云加载慢,上亿的点云⾯渲染卡顿,进⼀步探讨可⾏的解决⽅案,看情况是否验收。
-情况三:⽼板2要求引擎后,能够将其给的点云打到展⽰的效果,进⼀步测试时,发现⼏千万的点云加载慢,上亿的点云⾯渲染卡顿,当初要求就是点云渲染不卡顿,拿⾏业较好的软件对⽐,如⽤opengl只显⽰不卡,为什么⽤已有的开源引擎就卡,项⽬前的点云给的⼏千⼏万的点云,评估⾃然也不同,包括费⽤,此种情况根本⽆法验收。
思考问题3
⽼板3想要做⼀个⽩板软件,希望拥有某⼤⼚的⽩板基本功能,是否能做?多长周期?成本多少?
-情况⼀:前期对标某⼤⼚的⽩板,基本功能,按照项⽬评估费⽤周期,后期达到基本功能需求,完成验收。
-情况⼆:前期对标某⼤⼚的⽩板,基本功能,按照项⽬评估费⽤周期,验收时,如某某⽩板书写的⽐较顺和⾃然,可以同时播放4个4K视频,可以各种绘制操作带各种资源,⽼板3还是懂,⼀切商讨,看情况是否验收。
-情况三:前期对标某⼤⼚的⽩板,基本功能,按照项⽬评估费⽤周期,验收时,如某某⽩板书写的⽐较顺和⾃然,可以同时播放4个4K视频,可以各种绘制操作带各种资源,此种⽆法验收,谈的是项⽬,做的是产品,根本⽆法验收。
思考问题4
⽼板4想要做⼀个物联⽹服务器平台,实现mqtt通讯,从前端看即可,是否能做?多长周期?成本多少?
-情况⼀:前期以单个传感器谈,可以实现即可,mqtt⾃⼰可以撑⼏千个,达到基本功能,mqtt是否能撑住不在负责范围内,按照项⽬评估费⽤周期,完成验收。
-情况⼆:前期以单个传感器谈,可以实现即可,达到基本功能,按照项⽬评估费⽤周期,后续说mqtt可以承载⼏万,单实际⽆法承载,⼀⼝说就是之前谈的这个⽅案⾏得通,是你代码问题,不然这个⽅案⾏不通,项⽬⽆意义,不付款,此种狗⾎剧情,只收了基本功能的钱,还让承担服务器,基本⽆法验收”。
-
情况三:前期以单个传感器谈,可以实现即可,达到基本功能,按照项⽬评估费⽤周期,后续说mqtt可以承载⼏万,单实际⽆法承载,⼀⼝说就是之前谈的这个⽅案⾏得通,是你代码问题,不然这个⽅案⾏不通,项⽬⽆意义,不付款,与此同时,提供其他⽅案,让⼄⽅写⼀个可以⽀撑⼏万⼈同时在线的交互服务器,此种狗⾎剧情真实存在,只收了基本功能的钱(⼏千),还让承担⼏⼗万项⽬⽆法实现的后果(其⽅案本⾝存在问题,⾮不积极解决),还要告⼄⽅,基本⽆法验收。
思考问题5
⽼板5想要做⼀个数据处理平台,实现给定的⼏百⽂件数据处理,达到功能,是否能做?多长周期?成本多少?
-情况⼀:前期以处理的数据作为理论依据,完成功能,基本满⾜即可,完成验收。
-情况⼆:前期以处理的数据作为理论依据,完成功能,回去测试以⼏万⼏⼗万的数据去测试,发现⽆法承载,双⽅沟通,本⾝做的是基础的钱,不可能对⼤数据专门做优化处理,看情况是否验收。
-情况三:前期以处理的数据作为理论依据,完成功能,回去测试以⼏万⼏⼗万的数据去测试,发现⽆法承载,遂说未达到要求,必须达到要求才能给验收,基本⽆法验收。
建议的解决⽅法:最关键的需求评估沟通阶段
需求评估阶段,尽可能细致到功能,事先说明,积极配合
很多东西看起来简单,单功能较多,纯⼯作量都较长,导致原先简单的东西估算成本低于实际付出太多,导致亏本,企业亏本那怎么可能做好。
⽐如计算器,windows的计算器⽤起来还不简单吗,但请您认真查看他的功能,发现windows的计算器真不简单,完全复制⼀个没有⼗天半个⽉做不出,⽽且达到其优化程度,⼜要付出⼗天半个⽉,不信你就⾃⼰试试。
⽐如windows画图,windows的画图看似简单,但请您认真查看其填充的功能,填充功能是要基于算法去做的,⽽不是简单绘制⼀下。
所以功能要了解到具体的功能点,模糊的功能点跟甲⽅沟通好,可能存在的情况,双⽅达成⼀致,尽可能对双⽅有利,输和赢其实并不重要,重要的是你合适我也合适,⽣意才能长久。
需求评估阶段,尽可能细化性能,事先说明,积极配合
很多东西看起来简单,如理论上mqtt可以承载⼏万,QChart可以承载⼏万点,nigix服务器可以承载⼏百⼈流媒体延迟500ms以内,这些都是理论上的,实际和理论多半都存在的差距都挺⼤的,也有确实是符合理论的情况。
⽐如nigix流媒体,在局域⽹可以达到500ms,但在多终端的时候,其延迟就会逐渐增⼤,⽐如放到公⽹上,其延迟远远⼤于
3000ms,请不要怀疑,笔者深⼊研究过某为、某讯、某⽜、某构、某家云、某度各家的流媒体服务器⽅案以及开源的⽅案,都做过具体的测试,结果其⽅案官⽅给出的是3-10s之间,实际根据⽹络状况有时候啥都没有,有时候5s左右,要500ms以内必须使⽤其rtc服务。⽽对应的延时优化,是需要⼤量的专业⼈⼠在服务器、编解码、播放器各端进⾏各种优化,甚⾄是私有协议,如某家云的就基于rtc⾃⼰⼆次三年优化升级的,其延时⽐⼤⼚的还低。
⽐如⼀些局域⽹同传开发,软件号称局域⽹每秒⼏⼗MB,1对60同传,确实可以,忽略了⽹络条件,如⽆线情况下,P2P也好,传送120MB的⽂件同传,实际时间将近2⼩时,包括某⼤⼚飞屏,过来测试1对多也是直接看不到影⼦,最后研发了rtp+fec+组播的⽅
案,120MB同传⽂件可以达到2分钟传完即可。这也有个问题,⼏年后续因为外围测试环境被拆,更换新环境(⼲扰⽐较⼤),导致5分钟才能传完。
后话
这篇⽂章想写很久了,以上的思考问题都是博主9年多以来亲⾝经历的,尤其最近五年对于项⽬、产品加上⾃⾝组建团队0到1的成功经验,⼀直想进⾏⼀定的归纳整理思考。
时间仓促,本⽂仅代表个⼈观点,不喜勿喷。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论