共计 5700 个字符,预计需要花费 15 分钟才能阅读完成。
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/116087039
红瘦子 (红模拟) 的博文大全:开发技术汇合(蕴含 Qt 实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬联合等等)继续更新中…(点击传送门)
其余(编程相干)
前言
从事 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 的成功经验,始终想进行肯定的演绎整顿思考。
工夫仓促,本文仅代表个人观点,不喜勿喷。
若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/116087039