一文聊透高阶程序员必备技能《产品思维》!

一 、产品思维是什么?

作为一线的开发人员,大家是不是都经历过和产品吵得不可开交的经历,甚至最后谁也无法说服谁,只能将问题上升。最后由老板出面解决,而大多数情况下老板还真能够以某种方法去解决,并且是一个双方都能接受的方案。这个时候可能大部分同学会认为是老板的权威,地位导致了这一结果。其实这很不准确(可能有一部分原因但绝对不是主要原因)其实更多的是各个老板们有比一线开发更强的产品力,能够听懂对方的诉求和抓住矛盾点并且给出解决方案。同时其中的表达方式更容易让彼此接受,才导致了最终你看到的老板出马,问题解决,好像自己的观点继续保持了,同时对方也留有余地。那这里这项重要的能力来源于什么呢?其实我认为更是一种产品思维的方式。

0fbc59044c8131e18ba43ba2e75a6a37.png

从这里可以看到产品思维是通过科学方法论来持续获取最大化价值的思维方式、但这样说或许有点空洞、在基于日常产品技术的产品迭代、更想说产品思维以下这几种形式。

eff8f4687a52a96fa35948dc89af5ce6.png

二 、为什么技术人员要具备产品思维?


1  技术视角的局限性

1. 觉得产品提的这个需求没有意义、对业务没有任何帮助、是一种鸡肋需求;

2. 疑问产品的需求为什么每天改来改去?十分降低工作效率;

3. 觉得产品的想法天马行空、不专业。完全没有考虑系统的可行性、基本无法落地实施;

4. 觉得产品的方案一点都不周全、这么明显的逻辑漏洞都没有考虑到;

5. .......

在日常的工作当中、作为程序员的你是不是经常听过如上的吐槽、其实抛开有一小部分产品可能确实由于经验导致方案不成熟、但更多的有没有想过是由于产品思维和工程师思维的碰撞、导致了大家对同一件事情的认知不一样、从各自的角度出发的时候会觉得难以理解。首先我们来看一组产品思维和技术思维的对比。

2f3d63e1895b466b7e8568cbc978d190.png

举个例子:之前盒马仓储产品评审过一个活鲜仓按箱出库的需求、大致意识呢就是针对活鲜类商品(例如鱼、螃蟹之类)直接以箱为单位进行出入库管理。但这里如果从工程师思维出发会出现几个不可避免的问题:

1、箱入箱出这种场景在之前盒马的仓储系统中是不存在的、具不具备可实施性未知(HOW、技术至上);

2、全链路要适配这种改造、改造点会非常大、难以实现(关注细节、解决方案);

3、针对少货或者多货的场景、涉及上下游链路库存对账会非常麻烦、且极端场景下压根无法对齐(完美情节);

针对这几个问题、研发侧进行了需求的打回、并协议产品业务对齐方案和风险后再次进行评审。但从产品的角度来看角度完全是另一种场景:

1、箱入箱出以前不存在、不代表现在以及将来不会有。这是线下真实需要的业务场景、盒马的仓储需要扩展这类能力(WHY、用户价值);

2、全链路改造工期大、可以梳理工期进行正常排期迭代(迭代思维);

3、异常场景是小概率事件、不能因为小概率事件影响整个项目的超前推进。真正少量异常数据由业务自己兜底。(全局观、完成比完美重要);

在这里由于产品和技术出发的角度不一样、则会带来天然的冲突、在情绪带入之后会很难理解对方的诉求和问题点在哪里、以及是否有综合2者之后相对靠谱的解决方案。在这里技术人员如果转换一下视角用产品思维去应对这个需求、这样去沟通是不是会更合适一些呢?

1、认可箱入箱出是一种新的能力、让产品确定业务价值之后去扩展此类能力。也是对现有仓储系统库存能力的一种补充。

2、告知产品具备心理预期、全链路改造方案成本会比较高、耗时会比较长。看是否能够接受、如果不能接受去尝试中间方案。

3、技术侧如果投入大量成本去改造链路、则需要产品和业务认可此事的技术价值和投入产出比。

当采用这种方式去沟通之后会明确告诉产品技术侧的问题点以及担忧的问题、这样当双方都认可此需求的价值和必要性之后再一起同步携手往前走。回到这个例子、其实就是程序员如果具备产品思维,你就能站在产品角度去思考问题、就容易和产品团队沟通协作培养更加融洽的工作关系、更有利于提升工作效率。

2  技术人员提升产品力后的优势

8743e0b6e542082018417ddc2928ff0f.png

我们再来看如果技术具备产品思维之后除了更加便于沟通还能给技术人员带来哪些工作上的优势呢?

抽象能力相信大家做技术的都或多或少有一些、平时写代码中也经常用到。但是根据已有的内容去抽象、和面向未来去抽象是2种完全不一样的能力。当技术人员具备产品视角之后,会更容易发现抽象的角度、也更容易表达出来抽象的概念。例如最近接到一个针对大仓加工智能秤称重的产品诉求(将加工过程中的原料重量通过系统记录下来)如果简单的抽象可能是称重任务可以称原料、称成品。如果和产品交流过后具备产品思维就会问这个称重主要解决什么问题?是在实操作业哪一步的动作?这个时候可能结合MES系统你想到的是工序、会进行一个工序任务的抽象。但是这里再考虑表达、是否要更加让大家明白工序是什么意识?这里就会自然的类比精修、贴膜、贴标等等实操环节是否都可以通过工序去表达、再结合他应用的场景这样一个面向未来的工序模型就可以逐步沉淀下来、也便于未来扩展(有兴趣的同学也可以去了解下仓内的精华装载单元是如何面对过去进行统一归纳沉淀、面向未来是如何抽象扩展的、这是一个十分经典的抽象例子)。

fcdf644ae4bf0a77997d27e28b8decf5.png

修炼思考力,提升角度,更容易看问题本质。大家想一下具备产品思维去形象表达事物的根本属性的时候是不是大多从这三个角度出发:

1、给出清晰的定义;

2、做出准确的简单类比;

3、打出精妙的比方;

你在工作中一直具备如此的习惯、在你遇见困难的时候、会把思考攥在自己手中、而不是交给别人。这是一件当下比较累、但对未来很爽的事情、保持一定的好奇心和想象力去思考、会让自己收获更多的成长。电影《教父》里有一句经典的台词:“花半秒钟就看透事物本质的人,和花一辈子都看不清事物本质的人,注定是截然不同的命运”。

a7dafa603441002ce6b27f957ead0ee7.png

更好的全局视角、这里针对技术人员更好的全局视角意味着什么呢?

1、首先当然是提高系统熟练度、不仅仅是针对当前你所负责的模块、更是你所负责系统的上下游链路也具备相当的了解。这样会给你更多的机会去承担更大的职责。

2、明确的知道做这个需求、这个项目的价值、知道为什么去做、而不是简单的执行机器。会去从需求合理性、投入产出比等问题上去思考需求的必要性。

3、更容易知道如何去体现价值、知道这个项目的重点是什么?知道如何去沉淀数据、从系统的角度来阐述和达到目标。

6f82bc544cfb3a5bbcbd190f0f44f833.png

4、更好的通过技术创造业务增值、技术同学如果具备产品力会更容易发现产品当中的优化点、并创造不小的业务价值。举个例子:之前优选网格仓针对中心仓发货容器进行二次分拨到站点、技术侧发现这里可以针对容器内货品进行分配关系的打乱(总体分配关系不变)从而减少分拨次数。仅这一个技术小点、就减少了网格仓现场12%的分拨次数。再举个例子:之前B2C大仓边拣边播、是拣完一个SKU进入一次巷道,如果巷道中有多个SKU需要折返多次;技术侧具备产品思考之后通过细微的改动给了更好的产品体验、对总拣和分拨这俩个动作进行抽象归类。统一进行总拣,再进行分拨的方式,避免总拣分拨交叉使用的方式下拣货人员往返多次的问题,提升现场14%的拣货人效。

三 、如何提升产品力

1  思维的转变

c30990f27e15fb1a19c7e55f9445d98b.png

在不同的思考阶段、我们看待问题的角度一定要有进步。能够针对具体表现层的变化、去抽象底层的概念和能力来以不变应万变(举个例子、仓储系统复杂演进的过程更多的就是围绕产能 & 人效 & 成本 & 数字化的不断演进)要不断锻炼自己的思维习惯、这样才能去提升思考力的边界。最近笔者在看一本关于产品法的书并做了部分笔记、这里面关于思维方式我认为以下几点是值得我们技术人员去注意并且不断学习和提升的

  • 本质思维:第一性原理从头算起,只采用最基本的事实作为依据,然后再层层推导,得出结论。抛开别人怎么做,过去怎么做得到不一样的视角(拒绝被同类产品的设计影响和压根不懂同类产品的设计是俩回事 )连环追问法是一种手段,理清过往思路和关键环节,帮助快速判断并且产生新的idea。

  • 相对思维:日光与阴影,让东西明亮不一定是加强它的亮度,可以通过调低周边的环境。这是一种逆向思维。成功与失败,优势与劣势都是暂时,相对的概念。看问题很重要的俩个角度:关系和时间

  • 抽象思维:白痴与上帝,高级抽象视角看问题和用户本能层级看问题会有冲突。如果看不同局部可以切换是比较重要的能力。具体与抽象像飞机腾空时一个个点被不断缩小的过程。多考虑新元素(能力)而不是新功能,元素可以搭建功能。

  • 系统思维:反馈的地位。反馈系统模型是基础的抽象模型,本质上都是在设计反馈。思维误区所有极端和异常的路径是小概率现象。

  • 演化思维:自下而上的设计。极简是演化的基础,好的框架重点突出并且能够收放自如。

2  现实中的一小步

看到这里大家可能会问、上面说了这么多软思维、方法论相关的观点。如果从落地的角度看、在平时的工作中怎么去提升呢?怎么去潜移默化的改变自己的思维呢?

  • 普适的套路:多看书籍、培养自己的知识储备;多做总结、将自己所学到的尽量系统化的表达出来、这也是进一步巩固自己的知识成果;多做分享、如果一个知识点你不光能够自己懂、还能够让大家都听懂你讲了什么你的思考是什么这样会进一步提升你的结构化思考 & 表达能力;

  • 保持好奇心:这一点我更想表达在平时的工作中不要局限于自己的边界、不要仅仅满足于分配给你的工作、要多探寻分配你工作之外的部分扩大自己的领域能力。基础的要求:列如一个项目你负责其中的某一个模块之后、你是否能cover住你上下游的问题、线上出现问题时你是否能及时定位到原因并且协助解决;另外就是保持对周边领域的探寻,对比下周边同学的工作内容和思考看看自己还欠缺哪部分能力、能做哪些针对性的提高。例如工作时可能某个同学负责仓储的拣货实操部分:

  • 那是否有了解过拣货单生成部分的主流程?

  • 是否了解打包部分的设计?

  • 是否知道装笼发运的几种主要方式和约束?

  • 又是否知道仓储系统之外单据的交互节点和主要数据?

再放大一些到除开工作之外、是否平时会关心他人的生活经验?是否对于大到国际新闻小到周边内网八卦一概充耳不闻?这样会让自己处于信息的闭塞状态、久而久之会导致思维的僵化。所以一定要保持自己的好奇心、保证自己知识储备的宽度、让自己的思维处于活跃的状态。

  • 多去思考产品需求的本质、至少先做到在PRD评审上多换位思考、多理解产品设计背后的原因。举个例子如果有个用户减肥的需求你会联想到什么?普通人可能想到的就是减肥、但产品思维下的思考应该想到的是、可能是他想要更优美的外貌?可能他需要寻找伴侣?可能想要提升社交地位?

fa1eaa56a8e4baa63b3a5a767c95521b.png

  • 多保持联想、锻炼想象力、平时接到产品的需求之后是否能够联想到系统的现有能力、是否能够结合现有系统来达到需求的最优解?在这里举个仓储系统拣货的例子:之前盒马加工中心有过一个按商品拣货的需求、大意是当拣货员看到库位的商品之后可以自己主动选择商品去拣货、按商品拣货这个需求从产品侧来说是一个比较简单的诉求。这里一般会怎样联想呢?

bef78f24625b4f705d244e2fec826939.png

a. 第一反应接到这个需求一般是直接根据商品选择拣货单返回给用户、再让用户做选择即可(同时需要更改拣货单相关索引);

b. 联想到全局、如果深层次想一下结合B2C仓内拣货任务作业的实时调度、就可以想到这里用任务调度实现是否更符合仓内实操全局调度的规划?

c. 再联想到现有系统的瓶颈和优化点、现在的调度根据分区&任务能力选择队列拉取任务、本质是一种“实时排序”、只能够基于配置优先拉取。其实我们也应该扩宽任务调度的"选择能力"、例如这次的按商品索取、其实是一种队列内部的选择能力。在获取任务时除了L1级别的选择不同队列的能力、我们在队列内部应该要具有L2级别的选择能力、来丰富我们的任务调度中心在实操侧的另一种调度方式(和排序平级的能力);

d. 最后结合过去和可能的未来、除了按商品拣货、之前的DPS拣货 & 标签拣货走任务队列时通过工具去拉取完临时过滤的方式不应该是一种长期的方式。包括后续可能存在的按位置拣货(分区内部的巷道库位、根据人力位置实时获取最优拣货单)、按销售订单拣货(哪个订单要超时了紧急提高优先级)等等可能存在的场景、本质都是根据实时的实操动作去具备L2维度的选择能力、是否可以借本次需求来搭建基础实现能力;

e. 最终给出一些抽象归纳的建议、拣货实操时的变动、具备人的因素、去动态选择。生成任务的时候照正常生产、实操的时候具备动态能力(插入的选择能力根据人的因素去抉择)如果不配置那就默认使用原有队列的排序能力。

当然这里只是一个联想的例子、可能最终决策还要考虑投入产出比等各方面的因素。保持想象力无论是对程序员还是产品经理都是一个提升思考深度比较不错的方式。我们要做的就是培养习惯、让自己的思考伴随着自己的想象力去得到成长。

关于作者:军哥,前饿了么、贝壳技术总监,目前是一名自由职业者兼公司顾问,乐于结交朋友,也欢迎加我微信与我做朋友(公号输入框回复“w”即可),朋友圈做个点头之交!

另外军哥写了一些,关于个人如何快速成长、深度思考、程序员或产品经理能力模型、架构,OKR干货,技术管理等电子书资料,公号后台回复 “9”获取,不谢。

以往热文推荐:

如何做好自己的职业规划?

如何找到适合自己的副业?亲身经历!

为什么说优秀的程序员或产品都有这三个品质?

一位年龄 35 的前饿了么同事,退休了!

和前饿了么资深架构师吃了顿饭,真相了!

工作 10 年后转行程序员,如今 35+ 岁并不焦虑!

阿里 P7 到底该具备什么样的能力?


更多精彩,关注我公号,一起学习、成长

d6f31054b5836fd5cc5546c475d320f6.png1467cc33bfaa680b4d3949b320f063ff.png54f465a194c4240708891db5178a9822.png

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ESD(Electrostatic Discharge,静电放电)是一种瞬时放电现象,通常是由人体或设备上积累的静电电荷引起的。一般来说,ESD会导致电子设备损坏或误操作,因此必须采取措施来避免ESD。 在设计中,ESD保护应该开始于PCB的物理设计。一个好的物理设计将使ESD泄放的能量尽可能地均匀地分散到整个电路板上。这种物理设计包括有效的接地,涂覆和排列PCB层。同时,这也需要考虑到整个系统的电缆结构、机箱接地和隔离等因素,从而最大限度地提高整个系统的耐ESD能力。 此外,在设计电路时,还需要考虑到ESD保护措施。主要的保护措施包括使用可靠的ESD保护器件,如TVS器件、瞬变压抑器和热释电器件,以保护线路免受ESD的影响。此外,在设计输入、输出和供电接口时,还应该采用合适的线路过滤器和电容器,以进一步提高系统的ESD耐受性。 最后,测试是ESD保护设计的重要环节。ESD测试可以验证保护设计的有效性,并排除措施上的缺陷。通常,测试人员会使用标准ESD模拟器来模拟真实的ESD事件。在测试过程中,应注意对设备进行预处理,如去静电和适当的人体模拟。此外,还应该制定合适的检验标准以确保测试的准确性和可重复性。 总之,ESD保护设计至关重要,因为它能够保护电子设备免受静电放电的损害。为了实现可靠的ESD保护,这需要考虑物理设计和电路设计,以及有效的测试工具。最后,只有将所有这些因素合理结合,才能实现有效的ESD保护设计。 ### 回答2: ESD(Electrostatic Discharge,静电放电)指的是在两个带有不同电荷的物体接触或者靠近时,电荷之间发生放电的现象。这种放电可以对各种电子元器件和电路造成损害,从而影响设备的性能和寿命。 ESD的原理可以通过三种方式传递:空气中的放电、直接接触和电感耦合。在实际应用中,ESD对硅芯片、存储器、晶体管等电子元件的损害是非常严重的,这些元件的特性和结构容易受到ESD的影响。 为了防止ESD对电子元件和电路的损坏,需要在设计中采用一些专门的技术,比如在元器件和电路板上增加ESD保护电路、在设备外壳上增加处理工艺等。对于集成电路芯片而言,可以采用对基底和指的进行控制,以及在芯片电路设计过程中合理选择元器件和适当布局等。 总之,ESD保护是电子元器件和电路设计中非常重要的一环,需要采用针对性的技术来减缓和防止ESD对设备的影响,从而保证设备的长期稳定性和可靠性。 ### 回答3: ESD全程为静电放电,是由于静电在两者之间产生的高电压放电引起的电感和电容的相互作用。在现代电子系统中,由于设备的电路越来越小,因此更容易受到静电干扰,人们不得不在设计中考虑如何避免或降低这种静电干扰。本文将从ESD的原理出发,简要介绍如何在电路设计中考虑防止ESD干扰。 ESD的产生是由于静电的积累导致的高电压放电,因此防止ESD干扰的基本原则是减小静电的积累。在电路设计中,静电主要通过两个方面来进行干扰:一是直接放电干扰,即静电直接放电到电路中,导致电路损坏;二是间接放电干扰,即静电放电到设备的金属外壳等部位,导致电磁场干扰影响电路的正常工作。因此,在设计中,需要采用一些措施来减小这些干扰。 1. 选择合适的元器件:在元器件的选择上,要选择一些抗ESD干扰的元器件,如采用ESD保护二极管等,能够减小ESD对电路的影响。 2. 优化电路结构:在电路设计中,要优化电路结构,减少电路间的交叉干扰,避免电路产生高电位差,这样能够减少静电的积累和ESD的辐射。 3. 采用ESD保护电路:在设计电路时,引入一些ESD保护电路,能够有效地减小ESD对电路的影响。例如采用Zener二极管、TVS二极管等保护电路。 在总体设计中,需要综合以上措施,采用一些适合的方案来消除ESD对电路的干扰。同时,在实际使用中,也需要对电路进行定期维护和检测,保证电路的正常运行。在电子技术的快速发展中,ESD防护的问题只会越来越重要,只有对其进行深入的研究和应用,才能更好地保证电子设备的稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值