如何做一个懂产品的程序员?

这篇是之前发过的《懂程序员的产品经理是什么样子?》的镜像篇,这次是程序员视角。

两个相爱相杀的岗位,想要更好的达成共识、更好的合作,自然不仅仅是一方的事情。这次Z哥先会带你看看产品经理眼中的程序员是什么样子。然后给出一些我的建议。

直接进入正题吧。

从产品视角是怎么看程序员的呢?我根据我自己的经历以及与其他产品经理的交流下来看,吐槽的主要是以下几点:

  1. 这个功能实现不了。

  2. 希望所有产品都不要改版,一次性把现在或未来要做的开发完。

  3. 只关心要写多少代码,不在乎产品体验。

  4. 写完程序从不自测,直接丢给别人测试。

  5. 过分追寻新技术潮流,完全不考虑对产品带来什么价值。

第一点,的确存在一些由于技术限制导致实现成本无限大的需求,比如手机屏幕背景色根据手机壳颜色切换……

但是,国内的技术环境不像老美那的技术味道重,大多还是商业导向的,很少企业里需要用到高精尖的技术,所以,真正实现不了的功能微乎其微。

对于大多数的功能需求来说,无非是一个成本大小、价值高低的问题。从立场上看,程序员自然是站在「成本」一方的,但对大多数人来说,决定这个成本的主要因素往往是自己工作的难度和耗时,费时费力的功能就容易得到“实现不了”的结果。

第二点对大多数产品经理来说是他们的对立面。因为大多数产品经理最喜欢“走一步算一步”地高频迭代,甚至是有一个想法就开始干。而程序员则喜欢来一个大而全的,并且内容要非常详细的,心里的想法是,这样的话我一开始就可以设计一个完美架构来支撑它。

而且,内容越详细,产品经理就越不敢乱调整需求,毕竟“证据在手”嘛:D。

第三点在大多数程序员身上都能看到。毕竟做程序员的还是理科男偏多,对需要有同理心、需要靠感受的事情的确弱了一些。

第四点的原因主要有两个。

一个是对自己的代码过度自信导致,我自己深有体会。我还记得有一次我交付一个功能,那个功能我单元测试都写了不少,对质量很有信心,觉得就算有bug也都是比较深层的bug。结果没想到……第一天就测出来好几个低级的bug。

另一个原因是反正有测试人员在,等他们测出问题我再改不是更轻松。惰性使然,从个人角度的确如此。但是从团队角度来看,徒增了不少的沟通成本。

第五点的原因也有两个。

一个是行业里的新技术迭代的确太快,怕不学新技术被淘汰。

另一个原因是,只有用上新技术才能有谈资,显得自己与众不同、有成就感。

以上就是对这五点的简单分析,那么如何改善呢?继续往下看。

下面这些方法都是我亲测有效的,强烈推荐你也试试。这里的序号与前面被吐槽的五点一一对应。

01  说实现不了之前,先三思

根据先后可以做以下3个思考:

  1. 是觉得这个功能没有价值不想做吗?

  2. 真的实现不了?我想全了吗?

  3. 这些方案里,有成本比价值低的吗?

第一个问题先确定必要性。我们不是说不能推需求,而是要推掉低价值、无价值的需求。当然有没有价值不一定你说了算,但至少这才能算是拒绝的理由。

第二个问题,努力拓宽自己的边界、舒适区。如果我们总是习惯性地从大脑的记忆中找解决方案,那么将会永远在舒适区止步不前。

第三个问题,拒绝需求虽然不用动之以情,但一定需要晓之以理。当你能清楚的阐述利弊、收益比,拒绝需求自然不是一件需要相互扯皮的事情。

经过了这三个问题的思考,不管最终能不能实现,相信可以很好的与产品经理达成共识。

02  明白需求本身也是成本

过度地苛求需求要细、要完整、要全面,这个本身也是在增加产品经理需要投入的时间。你的开发成本是成本,产品经理的也是。

与其等一个“XXXX最终绝对不改版”,不如从已经达成共识的部分开工,在这个过程中再与产品经理「共创」,多一起沟通打磨,此时再让产品完善PRD等文档,形成最终版。

03  刻意练习,多换位到用户视角

平时多去体验一下自家的产品以及竞品,把整个过程中的感受记录下来。比如,哪里感到不太顺手、哪里感受到了小惊喜、哪里感到特别烦人等等。结果不重要,重要的是这个过程,慢慢锻炼自己作为用户的感知力。

有些程序员看起来经常把用户体验挂在嘴上,其实提出来的很多反而是脱离大众习惯的“个性化”需求,就是因为平时缺少对同行、外界的关注。

04  交付的东西是自己的「招牌」

“有人的地方就有江湖,有江湖的地方就有称号”。如果长期报以等测出来bug再去修的心态,你在别人心中的称号就是负面的。

轻则影响自己的口碑,影响与他人之间的协作关系;重则失去未来的晋升机会。一个对自己的东西都不负责的人,如何负责更多的人、更大的事情呢?

在这件事上,除了多自测外,作为过来人,我建议每一个程序员认真对待单元测试。特别把核心、复杂的方法单元测试给做上,这对交付功能的质量的提升非常明显。

05  不产生价值的新技术是“垃圾”

拥抱新技术是值得鼓励的。但是单纯的为了体验某新技术而去使用它,这不但给团队在挖坑,也在给自己挖坑。

比如你花了不少的时间在项目里用了某个新技术,但是对团队没有带来什么价值,你说后续公司还会继续投入资源加大新技术的使用吗?大概率并不会。那么之前了解到的一些知识,就会随着时间的推移而淡忘,投入的时间大多数浪费掉了。

所以,对待新技术Z哥的观点是。对于无法在工作中找到价值点的新技术浅尝辄止即可。相反,遇到可以产生价值的新技术,请全身心投入进去,而不是仅仅在应用层面捣腾,不去深入细节。之前发过一篇讲解新技术选用的文章《程序员与新技术之间的「爱」与「恨」》,可以点击文末的链接阅读。

很多程序员对待新技术的习惯是,打一枪换一个地方,经过了几年,发现技术实力还在原地打转,不免有些可惜。

另外,推荐大家可以阅读一两本心理学、行为学相关的书,特别是我们做程序员的。

这不但可以提高自己对用户体验的感觉,还能提高对人性的洞察力,包括对自我的认知。是一项不管在生活中还是工作中都非常有用的技能。

好了,总结一下。

这篇呢,Z哥和你分享了我对程序员如何更好地与产品经理达成共识这件事的看法。主要是以下五点建议:

1.说实现不了之前,先三思。

2.明白需求本身也是成本。

3.刻意练习,多换位到用户视角。

4.交付的东西是自己的「招牌」

5.不产生价值的新技术是“垃圾”

希望对你有所帮助。

如果你有关于软件架构、分布式系统、产品、运营的困惑

可以试试点击「阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019吉首大学计算机调剂,吉首大学2019年硕士研究生调剂考生复试情况分学院公示...

002商学院2019年第二批拟录取硕士研究生情况汇总表 (调剂考生公示版).pdf.pdf 72.8 KB 2019-04-26 15:18 -a--003法管学院2019年硕士研究生拟录取情况汇总表(调剂考生递补公示版).pdf.pdf 69.0 KB 2019-04-26 15:18 -a--003法管学院2019年硕士研究生拟录取情…

2021-10-28

想敲代码 想敲代码

突破冯诺依曼原理的计算机,冯诺依曼计算机的基本原理

冯诺伊曼结构(英语:Von Neumann architecture),也称冯诺伊曼模型(Von Neumann model)或普林斯顿结构(Princeton architecture),是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。本词描述的是一种实现通用图灵机的计算设备&…

【LeetCode】1. 盛最多水的容器:C#三种解法

题目:https://leetcode-cn.com/problems/container-with-most-water/盛最多水的容器难度:中等给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个…

7-1 银行家算法--安全性检查 (20 分)(思路+详解+知识分析)宝 你今天 AC了吗

一:前言 停更一周了,在这一周里,我每时每刻都在 想这我这 29个粉丝,庆幸教师资格证终于结束了,贴心杰又可以天天更新博客了 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,I am come back; 二:题目&a…

平均成绩计算机控件,计算机技术基础(第十二章 文件 )

功能:包括文件的创建(打开)、复制、移动、删除及获取与文件有关的信息。可以使用FileSystemObject对象和File对象完成文件管理工作。管理文件的部分属性和方法:P229-230表12-5;表12-61.文件的创建与打开FSO对象模型提供了三种创建…

.Net Core中的诊断日志DiagnosticSource讲解

前言近期由于需要进行分布式链路跟踪系统的技术选型,所以一直在研究链路跟踪相关的框架。作为能在.Net Core中使用的APM,SkyWalking自然成为了首选。SkyAPM-dotnet是SkyWalking在.Net Core端的探针实现,其主要的收集日志的手段就是基于Diagno…

7-2 银行家算法--申请资源 (30 分)

7-2 银行家算法–申请资源 (30 分)&#xff08;思路详解&#xff09;Come 乖宝宝们 一&#xff1a;前言 这道题需要用到前面的一道题 安全性检查 算法知识&#xff0c;所以强烈建议先看前面那道题 7-1 银行家算法–安全性检查 (20 分) 二&#xff1a;题目 输入N个进程(N<…

计算机一级文档题,计算机一级模拟题

计算机2008第二次一级笔试试题A卷一、单选题1.计算机的发展大体可(按其组成的器件)分为()阶段。A.六 B.五 C.四 D.三2.计算机中的运算器能进行()。A.加法和减法运算 B.算术运算和逻辑运算C.加、减、乘、除运算 D.字符处理运算3.计算机软件是指所使用的()。A.各种程序的集合B.有…

年薪100万和10万程序员的差距

点击蓝字关注&#xff0c;回复“职场进阶”获取职场进阶精品资料一份我们看武侠大片&#xff0c;经常有那种本来可以练就绝世武功的大虾。阴差阳错练的走火入魔。一开始还可以硬撑&#xff0c;还能打败一些虾兵蟹将。遇见真正的高手&#xff0c;这些大虾们立马就败下阵来。其实…

7-3 银行家算法--综合 (50 分)(思路+详解+分析输入)宝宝们 加油

一&#xff1a;前言 这道题涉及到 银行家算法的申请资源 算法 还有 安全性检查的耍算法 那么强烈建议 把前面的学完再看本题 7-1 银行家算法–安全性检查 (20 分) 7-2 银行家算法–申请资源 (30 分) 二&#xff1a;题目 输入N个进程(N<100)&#xff0c;以及M类资源&#…

如何在龙芯3B4000上部署基于.Net Core 开发的物联网平台IoTSharp

今天很开心的拿到了龙芯的测试服务器账号&#xff0c; 先上图show一下&#xff0c; 双核&#xff0c; 8G内存&#xff0c; 50G硬盘。架构 mips64el 登录后&#xff0c; 显示为 uos 及其网址信息:接下来&#xff0c; 二话不说&#xff0c; 我们开始下载龙芯版的.Net Core &#…

服务器虚拟化怎么使用,服务器使用中的误区及建议 服务器虚拟化安装步骤

服务器是至关重要的核心设备&#xff0c;确保网络服务器能够高性能、稳定持续地工作一直以来都是用户最关心的问题。然而在关注着这个问题的同时&#xff0c;我们发现有很多的用户都没有正确地配置自己的服务器&#xff0c;使得服务器并没有工作在最佳的状态。本文总结了大家在…

46. 全排列015(回溯法求解)

一:题目 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2&#xff1a;输入&#xff1a;nums [0,1] 输出&#xff1a;[[0,1],[1,0]] 示例 3&#xff1a;输入&#xff1a;nums [1] 输出&#xf…

计算机 ieee access,计算机 | IEEE Access 诚邀专刊稿件 (IF:3.557)

期刊基本信息期刊名称IEEE Access专刊全称Advanced Communications and Networking Techniques for Wireless Connected Intelligent Robot Swarms影响因子3.557专刊难度★★中科院JCR分区:• 大类 : 工程技术 - 2区• 小类 : 计算机&#xff1a;信息系统 - 2区• 小类 : 工程&…

git did not exit cleanly(解决办法)

一&#xff1a;问题描述 我们在push的时候&#xff0c;出现如下问题 这个图是我拿别人的&#xff08;因为我的问题解决后 没保存图&#xff09; 二:解决 1.新建一个仓库在gitee上: 2:将新建的仓库克隆到本地 3&#xff1a;将原来的文件剪切到javanew(新建的仓库) 4&#…

[Hei.Captcha] Asp.Net Core 跨平台验证码实现

&#xfeff;&#xfeff;写在前面说起来比较丢脸。我们有个手机的验证码发送逻辑需要使用验证码&#xff0c;这块本来项目里面就有验证码绘制逻辑&#xff0c;.Net Framework的&#xff0c;使用的包是System.Drawing,我把这验证码绘制逻辑复制到.Net Core的新项目引用对比包Sy…

等待ajax,等待Ajax调用(post)完成

回拨:定义要接受回调的PostForm:function postForm(ind, id, callback){// ...$.post(url, function(){// ...callback();});}然后像下面这样做。您可以使用递归以一种不太硬的编码方式编写它,如果有更多的表单,这可能特别有用。postForm(0, "#Form1", function(){po…

77. 组合016(回溯法)

一:题目 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2&#xff1a;输入&#xff1a;n …

.NET5即至,你准备好了吗?

.NET 5.0 Preview7是RC版前倒数第二个预览版&#xff0c;发布至今恰好一个月&#xff0c;算起来&#xff0c;.NET Core开源已经4年了&#xff0c;然而在互联网大型系统开发中很多环节都还是空白的&#xff0c;造轮子诚非一日之功&#xff01;这里为大家推荐一个分布式日志分析解…