当前位置: 首页 > 编程日记 > 正文

产品经理和程序员的爱恨情仇

产品经理跪求程序员,程序员跪求程序成功上线!

前几天纯银V在微博上发了一条微博「很多人吐槽“人人都是产品经理”这句话,其实在我看来,这句话的正确理解是“人人都应该学习产品经理的思维方式,来提升自己的专业能力”,不知道作者是否本意如此。当然,实际上它容易被理解为“我也可以做产品经理,创造一个伟大的产品”,那就很扯淡了。尤其水货产品经理的破坏力之强令人惊叹」,引发了诸多讨论。

我看了之后,意味深长的转发了一下:从来没人说人人都是程序员,这其实说明了一些什么……于是又引发了一番热议,比如:

对呀,也不会有人说「人人都是数学家」,「人人都是物理学家」…就算有人敢这么说,大家也不会上当呀。

嗯,写不好程序的程序员都改行当产品经理了。

最近程序员这么难招,应该是转型提前了。以前程序员30岁才考虑转型产品经理,现在特么的25岁就不想写代码了。

其实程序员和产品经理都是有要求的……但程序员真的需要很强的逻辑思维和反复的训练啊。

我发现产品经理和程序员之间,总有说不完道不尽的爱恨情仇,以前已经花篇幅写过很多了,到了今天,意犹未尽,不仅有的写,还能不重样。

先介绍下「纯银V」,这是一位纯粹的、优秀的产品经理,他有一个蝉小队,梦想打造出世界上最优雅的绝世好剑,他马不停蹄的打造一个又一个的产品,失败、成功、写文案、做原型、编段子、逗逼、写鸡汤,慢慢的,时间把纯银V变成了一个中年怪蜀黍,不变的是,他依然奔跑在实现梦想的道路上。

每次想到纯银,我脑海中都会出现一位孤独的剑客,他站在漫天黄沙的沙漠里,不停的拔刀,出刀,还鞘,千百次的练习,以期成就一击无敌于天下的武功。每个优秀的产品,就像孤独的剑客,他们眼中尽是一望无际的沙漠,只有不停的练习和跋涉,才能活着找到下一个绿洲。陪伴他们的,除了心灵的孤寂和找到绿洲的狂喜,还有枯藤老树昏鸦,还有古道西风瘦马……

啊,写得太煽情了,其实我根本没见过纯银,哈哈,但是我从杭州的一位产品经理眼睛里,同样感受到了这种气质。这样优秀的产品汪,值得每一个程序员的尊重,如果能和他们合作,是我们的运气,要珍惜。

说说我以为的产品经理起源吧。记得自己开始编程的年代里,并没有产品经理这种职位,程序员就叫程序员,需求就叫需求,美工就叫美工,测试就叫测试,只有管事管人的叫做经理。后来看了微软的组织模型,知道了世界上还有一种叫做产品经理但不是经理的职位。那时微软项目组大致有三种角色:

1、项目经理,负责项目立项、协调资源、保证进度、推进开发,最终交付项目或产品。

2、产品经理,负责产品的需求,原型设计,并且充当设计师和程序员的桥梁。

3、技术经理,负责解决产品相关的一切技术问题,包括但不限于技术选型、架构、编程语言、算法、数据模型和具体实现等。这个人带领一批程序员负责把产品经理和设计师规划出来的东西,变成现实,是不是很牛逼的样子?

当时对产品经理印象不深,但是微软一个小团队有这么多经理深深的震惊了我,如果不是不懂微软技术,那时我就想给微软投简历了。

后来互联网大潮澎湃而来,产品经理变成了一个炙手可热的职位,冯老师说周鸿祎让产品经理变得普及起来,我则认为,微信的张小龙让产品经理抵达了一个别人无法企及的高度,龙哥,不知道在产品经理中印象如何,在我们大部分程序员心中,他就是产品经理之神!为啥,因为龙哥之前就是个优秀的程序员啊。

关于产品经理的定义,我在「最可怕的产品经理」一文中有过详细的描述,不再复言。不过,由于我总是站在程序员一边,时不时在文章里、微博上和朋友圈中调侃产品经理,也算乐事,比如今天的题图,比如微博的转发,等等。终于有一天,杭州的产品经理坐不住了,他拍案而起:

哥,你真的不能再这样了。你看,铺地砖的时候,地砖都是硬的,如果严丝合缝铺在一起,容易变型,崩裂。所以地砖之间,总需要一些柔性的东西做填充,成为缝隙,保证地板砖的完整。工程师是硬的,客户是硬的,设计是硬的,市场也是硬的,那谁来做柔性的中间层来保证整个链条完整性呢?产品经理!

我们陪笑,到处跪,哄着,顺着,不是因为我们就是这样的人。我们只是想让正确的事情,持续发生!拉到外面单看做人,好的产品经理,都不是软蛋!

看到这段话,我的眼眶湿润了,尼玛多好的产品经理啊,快别跪着啦,起来起来,以后咱们就是一家人了。

说真的,产品经理不容易,我们程序员也不容易,当你们在泡妞的时候,我们在学习算法,当你们在购物的时候,我们在编写代码,当你们看电影的时候,我们在构建模型,当你们吐槽的时候,我们在修改bug,当你们去欧洲浪的时候,我们在修改下一波bug。终于,所有的需求都不再变了,上线时间提前了。

我们经过了五年的学习,掌握了两门编程语言,在未来的十年里,还有十门编程语言等着,长路漫漫,学没有线,永远不变的,就是变。

我们年轻的时候,经常有人对我们说:

像你这种程序员我见得多了

懂点编程就以为能够横行天下

其实行走江湖是一件很痛苦的事

会编程,有很多事情不能做

你不想种地吧

又不耻去打劫

更不想抛头露面在街头卖艺

那你怎么生活?

……

等我们长大了,变老了,终于买得起Mac和喜欢的电子设备了,又会有人对我们说:

我以前手也很快,他们都叫我快手哥

但我现在不够快了,因为来了更快更年轻的程序员

有一种职业很适合你,既可以帮你赚点银两,又可以行侠仗义,你有兴趣吗

为什么还不转型呢,你知道,程序员是吃青春饭的

肚子很快会饿了

做这一行最大的好处是不用做决定,因为到了35岁,年龄会替你做决定

……

时间就这样溜走了,产品经理和程序员,存在于世界的两级,他们沿着时光的大河奔走,时而独行,时而交汇,每次相逢,都能迸发出最灿烂的火光,那时候,你们就知道,有一款耀世的产品诞生了!

感谢他们!

转载于:https://www.cnblogs.com/hsha/p/4652530.html

相关文章:

DES加密算法安全性评估

DES加密算法应用误区 DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它…

css3伪元素选择器before 和 after 的使用

:before 的作用, 在子元素的最前面, 添加一个伪元素, 伪元素内容通过 content 控制,可以在content属性中写入文本内容,但是通常为空字符串。 :after 的作用, 在子元素的最后面, 添加一个伪元素, 伪元素内容通过 content 控制,可以在content属性中写入文本内容&#…

16 系统测试之功能测试

功能测试前言功能测试总结前言 系统测试一般要使系统软件运行于真实的硬件环境中,其更倾向于软硬件结合的测试。在本专题中主要介绍系统测试中的功能测试和性能测试。其他测试类型在本专题中咱不展开讲,会在以后的专题中详细说。 功能测试 对于功能测试…

TinyMCE的使用-安装

TinyMCE安装非常简单&#xff0c;它可以被初始化为<form>标签中的<textarea>&#xff0c;当提交表单时&#xff0c;TinyMCE编辑器的内容将作为<form>表单的一部分被提交。 步骤1&#xff1a;下载TinyMCE并将其放在网站服务器目录 下载TinyMCE将得到的zip包加…

查看存储过程死锁的存储过程

create proc p_lockinfokill_lock_spid bit1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示show_spid_if_nolock bit1 --如果没有死锁的进程,是否显示正常进程信息,1 显示,0 不显示asdeclare count int,s nvarchar(1000),i intselect ididentity(int,1,1),标志,进程IDspid,线程IDkp…

离群点检测算法-基础概念

定义&#xff1a; Hawkins给出的离群点的本质性定义&#xff1a;离群点是数据集中偏离大部分数据的数据&#xff0c;由于偏离其它数据太多&#xff0c;使人怀疑这些数据的偏离并非由随机因素产生&#xff0c;而是产生于完全不同的机制。 大致分类&#xff1a; 一例分析步骤&am…

17 性能测试

性能测试 前言性能测试性能测试的目标总结前言 系统级性能测试是验证系统做的好不好,进行性能测试的前提条件是系统做的是对的。 性能测试 系统级性能测试是为了发现系统性能问题或获取系统性能相关指标而进行的测试。一般在真实环境、特定负载条件下,通过工具模拟实际软件…

关于mysql archive存储引擎-专门存储审计和日志数据

来源:http://60.29.242.49/?p60 政府还有一个让数据库专家摊上更多事情的职能&#xff0c;就是安全控制和数据审计。 那些管理着海量数据仓库的企业官员常常得回答诸如“何人何时修改了什么”或者“何人何时查看了什么”这样的提问。那些拥有数以千计的员工&#xff0c;开展着…

使用bitblt提高GDI+绘图的效率(转)

最近在做使用GDI绘制K线界面发现传统的GDI绘制方式效率比较低&#xff0c;根本无法满足K线界面及时刷新的速度要求。 所以做了个GDI绘制图形界面的试验&#xff0c;改试验主要在一个600600的区域内每隔10MS绘制6060个点&#xff0c;每隔10MS改变其颜色&#xff0c;并记录每次绘…

Bruck:一个Web界面布局原型设计框架\n

Bruck是一个面向网页设计师的新型lo-fi原型系统&#xff0c;让设计师可以快速为客户构建响应式且易于访问的布局原型。设计师可以通过组合多达25个Web组件来建立各种布局原型。设计师还可以在Bruck提供的在线Playground中实时可视化组合布局。Bruck可以生成屏幕阅读器可访问和响…

白盒测试方法之语句覆盖测试

语句覆盖测试 概念需求示例测试用例分析设计测试用例脚本语句覆盖情况总结概念 语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。 需求示例 程序源代码如下: void func(int a, int b, double c

每天学习Linux(3)---pwd命令

Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说&#xff0c;每当你在终端进行操作时&#xff0c;你都会有一个当前工作目录。 在不太确定当前位置时&#xff0c;就会使用pwd来判定当前目录在文件系统内的确切位置。 1&#xff0e;命令格式&#xff1a; pwd […

恢复Opera11.50地址栏的下拉列表按钮

恢复Opera11.50地址栏的下拉列表按钮 我觉得新版本里取消这个功能很蛋痛. -------------------------------------------------- http://www.stormcn.cn/post/1066.html Opera11.50的地址栏从外观上已经默认取消了下拉列表的点击按钮&#xff0c;就是那个在地址栏最右边的倒三角…

大数据推荐(个性化推荐)

大数据推荐分享。三场讲座系统的讲解了关于基于大数据的个性化推荐的体系和针对模型的探索。作为讲师主讲了关于个性化推荐的一些流程和算法。 转载于:https://www.cnblogs.com/wenBlog/articles/10364415.html

白盒测试方法之条件覆盖测试

条件覆盖测试 概念需求示例测试用例分析设计测试用例脚本条件覆盖情况总结概念 条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。 这里要强调的是每个判断中的每一个条件,即使是同一条件,但在不同的判断中也需要分…

第三波精品Android源码袭来!免费下载

今天又汇总了一些源码供大家免费下载学习&#xff01;1.Android实现NewQuickAction快捷菜单NewQuickAction能根据点击事件发生的坐标来显示一个快捷菜单&#xff0c;比如点击位置在靠近底部&#xff0c;则弹出的菜单出现在点击位置的下面&#xff0c;反之&#xff0c;则出现在上…

记一次数据库崩溃的恢复

NEC集群&#xff0c;其中db-2操作系统出现异常&#xff0c;无法点击操作。重启同步主备数据库后&#xff0c;发现数据库出现异常&#xff0c;客户端无法连接&#xff0c;报错&#xff1a;ORA-01033、ORA-00600等。 经分析&#xff0c;是由于操作系统出现异常后强制重启导致数据…

javascript:为string类添加三个成员,实现去左,右,及所有空格

<script language"JavaScript"> //此处为string类添加三个成员 String.prototype.Trim function(){ return Trim(this);} String.prototype.LTrim function(){return LTrim(this);} String.prototype.RTrim function(){return RTrim(this);} //…

MongoDB基本使用

成功启动MongoDB后&#xff0c;再打开一个命令行窗口输入mongo&#xff0c;就可以进行数据库的一些操作。 输入help可以看到基本操作命令&#xff1a; show dbs:显示数据库列表 show collections&#xff1a;显示当前数据库中的集合&#xff08;类似关系数据库中的表&#xff0…

还是这个序列化的解释比较好懂

序列化&#xff08;Serialization&#xff09;是.NET平台最酷的特性之一。 1、为什么要序列化&#xff1a; 首先你应该明白系列化的目的就不难理解他了。系列化的目的就是能在网络上传输对象&#xff0c;否则就无法实现面向对象的分布式计算。比如你的客户端要调用服务器上的一…

InfoQ趋势报告:架构和设计领域技术演变详解

本文概述了我们对当前“架构和设计”领域的看法&#xff0c;这个领域侧重于基础设施模式、技术框架模式的实现&#xff0c;以及软件架构师必须掌握的设计流程和技能。关键要点&#xff1a; 我们看到了“演化式架构”设计需求的增长&#xff0c;这种架构建立在可替换性设计和关注…

白盒测试之基本路径覆盖测试

基本路径覆盖测试 概念独立路径测试用例分析设计自己再试试总结概念 要学习基本路径测试前还需要弄清楚一个概念独立路径。 独立路径是指该路径至少引入一系列新的处理语句或条件的路径。在流程图中从程序入口出发,一条边一条边地往下走,一直走到程序的一个出口,这些边构成…

hdu3321

Problem Description Professor Brute is not good at algorithm design. Once he was asked to solve a path finding problem. He worked on it for several days and finally came up with the following algorithm: Any fool but Brute knows that the function “funny” …

[leedcode 118] Pascal's Triangle

Given numRows, generate the first numRows of Pascals triangle. For example, given numRows 5,Return [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] ] public class Solution {public List<List<Integer>> generate(int numRows) {//杨辉三角形&#xff0c;把每…

bzoj 4025 二分图——线段树分治+LCT

题目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id4025 线段树分治&#xff0c;用 LCT 维护链的长度即可。不过很慢。 正常&#xff08;更快&#xff09;的方法应该是线段树分治并查集&#xff08;按秩合并&#xff0c;链长可以暴力爬&#xff09;或者 LCT 维…

黑盒测试之功能分解法

功能分解法前言概念需求示例测试用例分析设计总结前言 首先和各位道个歉&#xff0c;最近事情比较多&#xff0c;本来计划的一周一更推迟了这么久。今天咱们继续&#xff0c;开始黑盒测试方法部分的分享。 概念 在学习软件测试的时候经常听到功能分解法&#xff0c;很多人项…

java中Class.forName与new

一、使用Class.forName 1、装载类 Class clazz Class.forName("xx.xx.xx"); 2、初始化对象 clazz.newInstance() 二、使用 new new Object(); 使用Class.forName的好处&#xff0c; 比如加载数据库驱动&#xff0c;若更换数据库&#xff0c;则需要更换驱动。 如果使…

UVA 10041 Vito's Family

UVA_10041这个题目是一个贪心的题目。如果设按升序排列的si的数组为s[]&#xff0c;那么Vito的位置一定为s[(r-1)/2]。对于这一点&#xff0c;我们分两种情况进行讨论&#xff1a;①如果si的数量为奇数&#xff0c;那么Vito的位置一定取数组s[]中间的那个值s[(r-1)/2]。因为如果…

数据结构杂题集

Codechef SD ER • 给出一棵树&#xff0c;维护点集 ?&#xff08;加点删点&#xff09; • 如果 ? 的大小是偶数&#xff0c;输出&#xff1a;如果将 ? 中的点两两连上边权为树上距离的边&#xff0c;那么 ? 里的最小权完美匹配是多少• ?, ? ≤ 10^6 考虑边的贡献 交叉…

黑盒测试方法之等价类划分法

等价类划分法 概念需求示例测试用例分析设计总结概念 等价类是指某个输入域的子集,在该子集中每个输入数据的作用是等效的,也就是该子集中每个输入数据的揭错概率是一样的。等价类分为有效等价类和无效等价类。 等价类划分法是将输入数据分成若干个子集,从每个子集选取一个…