一个包含了产品设计和技术开发的项目,粗略得可以看成两种角色的一场合作,那就是产品经理和研发人员。
产品也好研发也好,能做好这个工作主要靠能力,能力包括知识经验和智力水平,不光要有知识和经验,做逻辑推理创新思维还是要靠智商的。
那么如果把能力抽象成为强和弱,再组合上产品研发,则可以组成四象限,也就是四种排列组合。
上面两种情况组合都是少数,绝大多数企业处于下面两种状态。
研发能力强或者产品能力强,大多数企业没能力维持全精英团队,只能根据自身业务情况选择保证其中一方能力强,这样的企业占大多数,而且有一方能力强也能维持一定竞争力,可以活下去,遇到行业风口可能还能发展得不错,如果运气好成为行业头部公司了,再花资源把弱项弥补一下。
在这种企业或者项目,你身为一个研发或产品就要搞清楚一件事情,这个组织里是哪种情况,是产品能力强还是研发能力强,谁强就听谁的。如果产品和研发能就这个问题达成共识,那么也能和谐相处,并且工作效率还不错。如果不能达成共识,那么其实就是一种情况,产品和研发都认为对方能力弱,而且他们两方肯定有一方的判断是对的,但是他们都认为自己的判断才是对的。互相认为对方能力强这种事是不可能发生的。
题主遇到的就是这种情况,产品研发各自都认为自己能力强而对方能力弱,不肯听从对方的意见或者按照对方的要求去做,于是闹得不愉快合作无法进行。产品认为自己能力强,研发能力弱,所以研发无需知道为什么只要照做就是了,而研发认为自己能力强,产品能力弱,所以不想按照产品的安排去执行,要有自己的想法。
合作的基础其实不是双方的判断都是正确的,而是达成共识,即使你们的判断都错了,只要错得一样也算是共识,在共识的基础上项目才能推进,在推进过程中如果发现判断错了可以调整,然后重新达成共识。
再次强调,合作的基础是共识。所以如果其中一方特别期望项目能够推进,那么可以妥协一下迁就对方,也能暂时达成共识,哪怕是虚假的临时共识,总好过存在分歧项目停滞不前。
有人举了西安的健康码的案例,其实这个例子特别有意思,这个项目能落地能上线,说明它开发期间能顺利推进,说明它的产品和研发达成了共识,显然是产品认为自己能力强,设计出来研发去执行就好,研发方也认同产品能力强自己无需过多思考只管执行就好。他们达成了共识,所以项目能推进能上线。但是最终结果表明,项目存在设计缺陷出了事故,那么说明当初产品和研发达成了一个错误的共识,并且没有在项目进行过程中纠正共识。产品认为自己能力强,但是他们没有考虑到上线后的负载并发压力,所以实际上他们能力弱。研发也错误的判断了产品的能力,而主动放弃思考,没有给出技术上的解决方案,说明研发实际上能力弱,并且也认为自己能力弱。
也就是这个案例里,实际上能力都很弱的产品和研发,在项目合作中,都认为产品能力强而研发能力弱,所以能就项目需求设计达成共识,项目顺利上线。但是实际上是个错误的共识。
能够达成共识,合作顺利,项目能上线。达成错误共识,项目最终结果很烂。
对于一个负责任的程序员来说,是一定要知道的。
在需求方眼里,我要这个功能,你就说能不能写。而程序员需要考虑的是,这个功能哪部分未来可能会扩展,哪些不会变,有多少人会同时使用,响应速度下限是多少,需不需要缓存,数据一致性,对现有框架有什么影响。。。
甚至会提出一个更好的满足需求的方案,同时保持系统的简洁优美。
而不负责的程序员,完全可以不提任何问题,不了解需求背景,很快做出一个符合需求,挑不出错的功能。
但上线以后,既不能改,也不能动,用的人一多就崩溃,宕机时间还特别长。
首先就问题而言,没有任何必要,程序员本质上是一个翻译,将需求翻译为计算机可以理解的语言(程序设计语言)而已。
但问题在于,几乎没有任何一个需求是完备和自洽的。大多数时候这不是因为哥德尔不完备定理,毕竟能知道这个名词的产品经理都是万里挑一的,而是产品人员自身思维的局限性使得其无法发现需求中存在的问题。
就比如说提问者,就很自然的混淆了,做不了和没必要做这两个截然不同的概念。而且可能永远也意识不到……
所以综上所述,程序员没有必要知道为什么要做某个功能,但是绝大多数产品经理的的专业技能无法弥补需求中存在的缺陷,需要程序员和其他专业人员的参与……
老板:小伙子,给我做一个图片显示的功能,我APP上要能显示图片。
程序员:好的,老板,图片我给你放服务器渲染,再让客户端下载。
老板:大程子,给我做一个图片显示的功能,我APP上要能显示图片。这个图片是咱们城市的健康码。
程序员:好的,老板,那这个图片访问量应该很大,并发量也很大,实时性要求也高。我生成图片时压缩一下,我再把整个请求流程优化,提高响应速度。老板,我建议我们升级系统配置,增加带宽,扩大集群,目前咱们这边有些特殊情况,访问量会非常巨大,对服务器和数据库的压力比以往要多几倍。并且,我们做好测试工作避免上线之后遇到问题。这可是关系到民生的大事,我会再尝试客户端渲染的方案,这样可以让服务器这边和带宽的压力减小。
老板:好,就这么干。
就多说一句话,所有的隐性需求都被充分的挖掘了出来,请问,这么做有必要吗?
我从来不管为什么做某个功能。
明明就是个搬砖的,偏偏要管整个房子的结构,真的是赚着卖白菜的钱,操着卖白粉的心。
反正需求文档下来了,我就做。如果没有需求文档,至少要有个字面大致成文的东西,否则我肯定是不开工的。不然我做完了之后表示并不需要这功能,做了个寂寞。
只要有文档,表示让我做,我就做。后面发现不需要做了,再变更任务分配,给我一个任务取消的任务。毕竟把功能去掉也是一个任务呢。至于什么修改功能的具体内容,那都是日常操作,不过修改什么东西都需要在文档中明确。如果没有文档就说明产品经理自己都没有想好要什么。自己都没有想好的情况下不要和我讲话。我只负责实现,不负责研究是否需要实现,那是产品经理、需求工程师、领导、或者我不知道的人的任务。如果需求弄的不对,反复修改,那都是上述这些人的毛病,反正不是我的毛病。但是需求交到我手里了,从技术上来看能实现,我不做,就是我的毛病。我既然拿了工资就要对得起工资,需求交到我手里我就做。即使这个做了会把全局弄崩溃,我也不管的。如果我评估局面会比较严重,我会提醒一下领导,但是如果领导依然表示做,我就会继续做。我会默默的把“该修改可能会导致XXXXX”记在小本本上,等到XXXXX发生的时候我就会帮领导回忆一下这个局面。下次我提醒的时候,领导就会更慎重的考虑一下我的建议。当然如果XXXXX没有发生,那就表明我错了,领导是对的,我就保持低调就可以了。
反正只要公司由于规划不佳导致的反复修改不至于把公司自己玩死,我就继续干。如果公司把自己玩死了我就换一个公司。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有