极客时间已完结课程限时免费阅读

19 | 作为程序员,你应该有产品意识

19 | 作为程序员,你应该有产品意识-极客时间

19 | 作为程序员,你应该有产品意识

讲述:宝玉

时长17:05大小15.61M

你好,我是宝玉,我今天分享的主题是:作为程序员,你应该有产品意识。
最近电视剧《都挺好》热播,没想到其中一段台词却引发了很多程序员的集体焦虑。台词说的是:“作为一个程序员,你的年龄已经很大了!我问你,你学新东西有年轻人快吗?”
是呀,年纪越来越大,而新技术却层出不穷,是难免会焦虑。但如果你真的每个新的热点技术都去跟,都去学,就可以不焦虑了吗?我看也未必,因为新技术一直会有,学习也都是有成本的,只要你不能一直跟上新技术的步伐,你就会一直焦虑。
那焦虑是怎么产生的呢?
在我看来,焦虑通常来源于压力,压力来源于对未来的不确定,对未来的不确定来源于不知道自己的价值在哪里,不知道未来是不是还能持续创造价值,会不会失业。
会不会失业,取决于你创造的价值是否高于你的工资水平,否则确实是有失业的风险。所以要想不焦虑,我们就要考虑如何提升自身价值,只要自己创造的价值够大,就不担心自己会失业,减少很多不必要的焦虑。

程序员的价值

虽然通常来说,技术水平越高,工资越高,但并不都是这样。你的工资,通常是和你创造的价值正相关的。而程序员的价值通常体现在两个方面。
第一,你的价值体现在你所做的产品之上。
也就是说,你所做的产品越有价值,你的价值就越大,相应的工资也就会高。
这也解释了为什么同一个公司内,负责热门产品的部门,奖金都能多分一点;在效益好的公司,不但不担心裁员,反而钱也拿的多。这些年程序员的待遇相对于其他行业要高,也主要是因为软件和互联网行业的产品估值高。
所以说,程序员的价值,并不完全是体现在技术上的,而在于用技术做成了产品,产品创造了价值,再回过头来成就了程序员的价值。
第二,你的价值体现在团队中的稀缺性。
很多时候程序员其实没机会去选择产品的。但即使在同一个产品中,技术水平相当的程序员,价值也有差别。那些价值高的程序员通常在技术上或者技术之外都有一技之长:
有的程序员能搞定别人搞不定的技术难题;
有的程序员擅长培训新人;
有的程序员擅长和业务部门沟通;
有的程序员能高质量地完成功能模块;
有的程序员能按照需求设计好的架构,可以让团队高效率低成本地完成需求。
这些有一技之长的程序员,能帮助团队创造更高的价值,也因为其独特性,难以被取代,具有稀缺性,所以价值也更大。
那怎样来提升价值呢?努力提升自己技术水平,让自己成为技术大牛,这肯定是每个程序员都坚持在做的事。但技术水平提升到一定程度后,会有瓶颈的,进展会非常缓慢。
这时如果也在其他领域同步发展,就会起到事半功倍的效果。比如说有的程序员会发展写作能力,写很多好的技术文章,在业界具有影响力;有的培养产品意识,让自己在技术之外,还能更好理解产品需求,能很好地和产品经理沟通,根据业务需求做出好的设计,写出高质量代码,帮助团队在项目过程上做的更好。
写作固然是提升个人价值很好的方式,但要在写作上有成就,需要建立在长时间不断练习的基础上。而产品意识,是程序员的固有思维中比较欠缺、正好可以互补的,相对比较容易掌握,也能取得明显的效果。

什么是产品意识

产品意识,本质就是一种思维方式,一种站在产品角度思考问题的方式。如果细分一下,产品意识包含:商业意识、用户意识和数据意识。

商业意识

所谓商业意识,就是所做的产品是要有商业价值的。比如说成功的商业产品有 Windows、iPhone、Google 等,这些产品不仅满足用户需求,同时也能创造商业价值,让这些公司变成成功的商业公司,雇用了大批优秀的程序员,从而可以继续研究更多产生商业价值的产品。
其实很多程序员也有做产品的梦想,而且也有人付诸行动,业余时间做了不少产品,但是鲜有成功的。其中一个根本的原因就是,他们做的产品其实没有什么商业价值。
比如说程序员热衷于做个 Github 客户端、博客系统,虽然说确实有用,但是却没什么商业价值,没有用户愿意付钱,导致难以持续。
商业意识的另一方面其实是成本,成本意识也是程序员容易忽视的。比如说:
有时候为了炫技,采用了更难更酷的技术方案,而忽视了所采用的方案会导致很高的开发成本;
花了太长时间去开会而忽略了开会的成本;
有时候又为了省钱,舍不得买一些成熟的商业组件或服务,反而是浪费了更多成本。
如果程序员有商业意识,就可以在项目中有更好的成本意识,为项目节约时间、经济等成本,帮助团队打造更有价值的产品。

用户意识

所谓用户意识,就是说做产品时,你要能挖掘出用户的真实需求,让产品有好的用户体验。这需要你要有同理心,能站在用户的角度去思考和体验产品。
大部分程序员可能更多专注于程序上,所以在用户意识上确实有所欠缺。举例来说:
一个产品功能,产品经理在细节上没有定义清楚,程序员可能并不会主动提出,最终做出来的产品会不好用;
在做技术方案时,更追求技术炫酷,而不是用户体验更好;
在设计接口时,并没有考虑调用者的便利性。
如果程序员能跳出纯技术的局限,多一点用户意识,想到的问题将会多了很多维度,比如说:
能让自己的负责的模块有更好的体验;
让自己的技术方案更好地满足用户需求,用户更满意;
让自己设计的接口、API 更好用,与同事愉快合作。
做到这样,无论对产品还是对自身,都是价值的提升。

数据意识

所谓数据意识,就是在产品设计、产品运营时,通过数据来发现问题、证实结果。
典型的有 A/B 测试,通过数据来发现用户更喜欢哪个功能,哪个功能带来更多的收入。像微博的“时间乱序”功能,虽然很多大 v 吐槽,但是数据证明了这是一个好的产品设计,最终还是一样上线。上线后新浪根据数据不断优化,到现在反倒是很多人喜欢这个功能。
程序员虽然逻辑很好,但是大多对数据倒是不敏感,对编译警告、测试覆盖率、程序 Crash 的比例、API 错误率、一个函数内上千行代码、性能指标等等这些数据经常选择性忽略。
还有个典型的例子就是语言框架之争,程序员经常为某些语言或者框架争论不休,其实不妨基于数据分析,讨论上会更加客观。比如,从数据里你就可以明显看到 jQuery 和 React 近些年在前端的发展趋势。
其实产品意识,并不难理解,只是需要你往前更迈一步,在商业意识、用户意识和数据意识上去多思考,就可以帮你在项目中做的更好。

如何培养产品意识?

那么程序员要怎样培养产品意识呢?要培养产品意识,其实和程序员转管理的类似,首先要解放思想,然后要改变习惯,最后要多实践。这么说可能比较抽象,我们逐条展开来看。

首先要解放思想

解放思想,其实就是说,对于程序员,不要总是单纯的用技术眼光看问题,也可以从产品的角度看问题。这两者有什么区别呢?
举个例子,办公聊天软件 Slack 可能很多人都知道,是一款在线沟通协作软件。在国内可能知名度要低一些,但是在海外有大量企业用户,非常的火。
这款软件在刚出来的时候我就知道,不过那时候我觉得这不就是一个聊天室么,我都能写一个!我站在技术角度也做了不少分析:
这个软件前端还是用的 jQuery,如果用 React 应该可以做的更好;
这个软件跨平台是基于 HTML5,如果是原生代码也许性能可以更好;
还是 REST API,如果用 GraphQL 那 API 请求效率会更好;
从国内访问的话,速度太慢了,应该架设一些国内的服务器或者 CDN。
而现在,我会同时也从产品角度分析 Slack:
它的商业价值,在于它把工作的沟通,变得高效又好玩;
消息都在云端,检索也方便,也不担心像微信一样换设备消息就没了;
其开放 API 的设计,让它和很多其他办公软件可以无缝集成,极大提升了效率;
Slack 需要付费才能查看到 10000 条之前的消息,这是个很有意思的设计,当你已经有 10000 条消息时,说明已经有足够的意愿去付费了。
其实这两个角度也代表了两种不同的思维方式,一种是很多程序员熟悉的技术思维,一种是产品思维。
技术思维会关注用什么技术,关注技术细节,关注功能“如何”实现;产品思维会关注用户体验,关注一个功能所创造的价值,会去思考为什么要或者不要一个功能。
这两种思维不同,也很容易导致沟通上的误解。比如程序员会更多考虑技术实现,产品经理会更多考虑产品设计。如果都能往前迈一步,程序员有产品意识、产品思维,产品经理能有一点技术思维、工程思维,那么相互沟通起来就会更通畅。
这两种思维之间的差别,其实也正是要培养产品意识的关键点。要想培养产品意识,就是要从纯粹的技术思维,有意识地培养产品思维。从关注技术、技术细节,到关注用户体验,关注产品创造的价值。

然后要改变习惯

改变习惯是是指在日常使用产品、开发产品的时候,多站在产品的角度思考,去思考它的商业价值、用户体验、使用场景等等。
比如你学习专栏用的极客时间 App,你聊天用的微信。使用一些具体功能时,可以思考一下这些问题:
这个产品的商业价值是什么?
为什么要有这个功能?是为了满足用户哪方面需求的?
这个产品目标用户是谁?
这个功能的使用场景是什么?
这个功能的体验好不好?有没有更好的方式提升体验?
也许你没法马上有清楚的答案,但寻找答案的过程也是一个很好的学习的过程。
如果你是程序员,在开发功能、设计架构的时候,也不妨跳出技术之外,从产品角度思考一下:
这个功能的需求是什么?我是否完全理解了需求?
如果你是这个功能的用户,你觉得还有哪些地方值得改进?
哪些技术可以帮助提升用户体验?
这个 API 用起来是不是好用?有没有更好的设计?
除了对产品的思考,日常工作中,遇到一些问题,也可以从产品思维的角度去想想。
一个常见的场景就是,产品经理一下子提交了一堆新的需求任务,影响了正常的开发进度,这时候你不一定要拒绝他,你就可以和他一起把需求的优先级梳理一下。你就知道哪些要优先做,哪些其实没有那么着急,方便更好的安排你的工作。
还有像产品经理提交了一个技术很复杂的需求,你可以不用着急马上拒绝或者说要很长时间,而是跟他探讨一下这个需求背后要解决什么问题,是不是可以有替代的解决方案,既能降低技术难度又可以满足需求。
自己开发的功能模块完成后,可以把自己当成用户试试,如果觉得体验不好或者有更好的建议,都可以反馈给产品经理。

最后要多实践

光有理论还不够的,最好能自己实践一下。
你不妨在业余时间做个小应用程序,或者设计一个原型,做完了再找你的朋友试用一下,让他们提提意见。在做产品的过程中,你自然会去站在产品的角度去思考,这会让你对产品方面有更多感悟。
其实不用担心没有什么好的想法,可以从日常生活中,自己的需求、家人和朋友的需求中,去找到合适的产品需求。我当初做过很多产品都是这样的来的:
给孩子照的照片太多,写了个工具批量生成缩略图;
老婆工作上需要经常对网页截取整张图片,设计一个帮助截图的工具;
帮父亲建了个家谱应用;
给校友们建了一个网上交流的论坛,写过一个论坛系统。
用心观察,类似的需求你也可以找到很多。

总结

今天,我们一起分析了程序员的价值体现,主要体现在两方面:所创造产品的价值和自身的稀缺性。程序员有产品的意识,可以帮助产品和自身提升价值。
产品意识,主要包括商业意识、用户意识和数据意识。要提升产品意识,首先要解放思想,然后要改变习惯,最后要多实践。
当你慢慢培养了产品意识,不仅可以通过技术来打造更高价值的产品,也可以让你在技术之外有一技之长,能在项目中创造更大价值,减少技术快速革新带来的焦虑感。

课后思考

请你也从技术角度和产品角度分析你常用的一款产品,同时也欢迎你分享一下你对于产品意识的思考或故事。欢迎在留言区与我分享讨论。
感谢阅读如果你觉得这篇文章对你有一些启发,也欢迎把它分享给你的朋友。
分享给需要的人,Ta购买本课程,你将得18
生成海报并分享

赞 5

提建议

上一篇
18 | 原型设计:如何用最小的代价完成产品特性?
下一篇
20 | 如何应对让人头疼的需求变更问题?
 写留言

精选留言(18)

  • 易林林
    2019-04-09
    程序员的焦虑是自己吓着了自己,一些负面词汇听多了,潜意识里难以平息内心的恐慌(码农、大龄程序猿、996、ICU等等),只想着能赚钱的时候赶紧赚一笔,至于技术进步和长远打算,都只是锦上添花而已,愿意做出一些无价值的付出。越临近这些负面词汇的边缘越是心急如焚,要么逃命去吧,要么留在原地观望,要么综合培养自身硬实力和软实力,前两种会逐渐淘汰,后一种会有顽强的生命力。 宝玉老师这里讲到产品意识,我认为这是一种软实力的培养,它能辅助你的硬实力做出更好的项目,也能拓展自身在技术以外的视野。其实,有时观察下来,技术能力强的人一直忙个不停,可以解决很多问题,问题却好像没玩没了似的;技术能力一般,喜欢沟通,具有一定产品意识的人,上午一杯咖啡,下午一杯茶,安安心心按时下班,轻轻松松交出项目成果。我认为,程序员在一定的阶段,不能只关注自身技术实力的成长,忽略了其他方面的成长。这就像一个偏科的人,永远拿不到第一名,而那些各科成绩均衡,没有一科成绩第一的人却成为了第一的道理是一样的。 有句话,一直记得很清楚:吾生有崖,而知无崖。学新技术也是一样的,不一定死搬硬套的要去学会,这样学习成本会很高,但一定要去关注,知道什么时候、什么地方可以用得上,一般有经验的技术人都能在短时间内学会,尤其对大龄技术人员。一旦时间久了,关注的点就不一样了,思维就开始转换,然后从更高、更深的层次去考虑问题,才能真正体会到“技术是工具”这句话的深刻含义:工具可以换,思维可以变,灵活多变最重要。 宝玉老师的专栏一期期认真看下来,对于软件开发、软件项目管理、软件工程管理,有了更多全新的认识,无论从技术上还是管理上都解决了以前纠结的一些问题。
    展开

    作者回复: 👍赞,有非常独到的思考!

    共 2 条评论
    35
  • alva_xu
    2019-04-10
    InfoQ上有篇文章供参考: 35岁的程序员是“都挺好”还是“都挺惨”? https://mp.weixin.qq.com/s/1q82RO4gRAXtuFeDGV4qRw 实际上,和年轻人相比,在学习能力上,总会有瓶颈。不拼体力、不拼脑力,我们拼经验,拼沉淀,拼吃的盐比你多。所以,我们在成长过程中,一定要注重学习、消化和沉淀,从表层易变部分向底层基础部分转移,从程序员向架构师产品经理转型。持续学习、多学方法论,不断扬弃,顺势而为!
    展开

    作者回复: 👍是的,需要注意综合发展,不能光拼写程序

    共 2 条评论
    7
  • Felix
    2019-04-18
    我在开启一个项目之前,经常拉产品和对应开发一起开kick off会议,其实目的只有一个:让开发有产品意识,让产品有技术意识,最终项目也更容易成功,过程也更加顺畅

    作者回复: 👍这是一个非常好的经验,谢谢分享!

    6
  • LDxy
    2019-04-09
    Windows 系统已开始就是作为一个产品开发的,最初的项目团队应该是很有产品意识的;而Linux 系统的开发者最初好像并不是把它作为产品开发的,这是不是也是造成如今Linux 和Windows 相比对大多数用户的易用性差别很大的原因?这是不是也是产品意识差异导致的结果?能不能作为一个说明产品意识的例子?

    作者回复: 我觉得Windows和Linux产生的差别还是因为产品定位的不同导致的。前者是商业产品,面向普通用户;后者是开源产品,面向专业用户。

    6
  • 果然如此
    2019-04-10
    极客时间app分析 这个产品的商业价值是什么? 知识付费 为什么要有这个功能?是为了满足用户哪方面需求的? 为了满足用户的求知欲望,提供优质并实惠的付费课程 这个产品目标用户是谁? 极客们 这个功能的使用场景是什么? 手机方便,可随时随地学习,可看文字,可听音频 这个功能的体验好不好?有没有更好的方式提升体验? 整体功能还可以,可优化评论多次回复、搜索、相关课程推荐等
    展开

    作者回复: 👍很有价值的分析。 同时也帮你把反馈转发给极客时间的产品设计了:)

    5
  • 青石
    2019-04-09
    赞同老师的“价值体现在产品之上”。技术能力越强,增长曲线越缓慢。实际开发过程过程又大多是满足需求,而不关注质量。企业雇佣关系也更倾向于成本低、增长曲线高的程序员(大不了用你的薪水雇佣两个),所以就出现老程序员的无奈。那么技术在达到一定程度后(增长曲线减慢,收益比下降),同时横向扩展,丰富自己的知识体系结构,不失为一种保值方式。 技术通过努力都可以达到差不多的水平,不同的是思维方式和所处的高度。不断学习的过程,其实就是让自己了解的更多思考的越多,思考的越多站的高度自然更高。 入门时写代码是为了实现功能,深入下去会想了解它的实现方式,接着尝试举一反三将思想运用到其他地方。 培养产品意识也是从全局看问题,站的越高,望的越远。
    展开

    作者回复: 🤝谢谢补充,非常有价值👍

    4
  • 传说中的胖子
    2019-04-09
    过去两年里刚刚经历了一个失败的项目,因为不知道怎么做是正确的,去参加了PMP的培训并通过了考试,转过头来看整个项目,学到的东西比写代码学到的东西多得多。这种对于项目失败的恐惧,恐怕只有亲身经历过的人才能体会,同时也改变了我对技术与管理的理解。 这种产品意识、项目管理意识的软性技能真的是会改变程序员的思维方式,最起码我不在追求具体实现,而是去寻找能够解决问题的技术手段或者成熟的方案。 所有技术都是为了项目或者说项目创造的价值服务的,在考虑时间成本、技术学习成本、实际应用效果之后在去执行,找到一个平衡点,解决问题的思考就会有一个标准,事情会简化很多。
    展开

    作者回复: 👍赞同,除了技术之外,还有很多知识值得学习。技术本质是工具,是为了更好的为产品创造价值。

    4
  • ヾ(◍°∇°◍)ノ゙
    2019-04-18
    优秀的的人才一定是复合型,有全局观的意识(多方面的思维)分析问题和解决问题能力。

    作者回复: 👍赞同,有全局意识就是能整体看问题,多方面多角度看问题。

    3
  • Expif
    2019-04-18
    同意,作为一个10多年的技术人,决定要去做系统分析了,以上的这些思维方式的转变以及思考问题的角度说的很切入要点,这些文章都可以反复拿过来进行仔细品味,肯定对以后的工作有所帮助。

    作者回复: 系统分析除技术之外最重要一点就是得搞清楚业务需求是什么,所以如果你更有产品意识,对你确实会有更多帮助。 祝顺利!

    2
  • Rivers
    2019-04-17
    我是一名产品经理,因为觉得产品经理应该有技术意识所以来学专栏了😂

    作者回复: 😄其实道理是一样的,所以文章中我也提到了: > 如果都能往前迈一步,程序员有产品意识、产品思维,产品经理能有一点技术思维、工程思维,那么相互沟通起来就会更通畅。 关于工程思维、架构思维,我们专栏都有介绍:)

    2
  • 巫山老妖
    2020-01-26
    我最常用的一款产品:微信读书 技术角度分析: - 核心功能是通过原生实现,比如书本阅读页,体验会更好,更流畅 - 一些偏弱交互的通过H5来实现,能够更好实现动态更新 - 一些非核心能力,比如读书小队、答题等通过小程序来实现 产品角度分析: - 商业价值:满足了很多人的阅读诉求,通过购买书币和无限卡来实现收益 - 产品体验:界面简洁易用,给用户带来沉浸式阅读体验 - 一些阅读运营活动,比如读书小队,好书分享获得无限卡等,让用户保持阅读习惯和提升产品活跃性
    展开

    作者回复: 👍 感谢总结分享

    1
  • 打工皇帝
    2019-10-16
    我是一个UI设计师 阴差阳错 学习到软件工程 从视觉的位置 变成 UX 从需求分析 用户调研 需求设计 信息架构设计 业务流程 用户画像 用户体验地图 原型设计 设计迭代 视觉设计 UI走查 视角变得更全了。 原来很抗拒软件工程 没想到这么有用哈哈

    作者回复: 是的,软件工程很有用👍 其实完整学完后,你不止是可以从需求、产品设计这个角度,你还可以更高一层,站在整个项目的高度看问题,这样你会更懂开发测试,更懂项目经理,更好的和他们沟通,从而对你自己的职业发展也帮助更大!

    1
  • 小老鼠
    2019-09-16
    1、小黄车OfO是不是好产品,若好为什么关门了,而支付宝共享单车确火了。2、负责产品就产品经理一个人吗?Scrum PO算不算产品经理?

    作者回复: 1. OfO不是产品的失败,而是商业模式的失败 2. Scrum的Product Owner主要是负责组织Scrum的行为,但和产品经理没关系。 产品经理负责的是对需求的分析和产品的设计,反过来负责产品的是以项目经理为主,整个团队都要负责。

    共 2 条评论
    1
  • javaadu
    2019-04-20
    推荐一款自己使用的app:iBetter。 iBetter是用来做习惯管理(用户价值)的,用户体验非常好(体验),并且跟自己公司的其他产品形成了app矩阵,可以互相推荐,在推荐的过程中会有比较精美的广告推送(商业价值),分为免费版和付费版(商业价值),免费版只能管理三个习惯。 iBetter的产品运营做得也很棒:每次完成习惯,都有一定的分享引导;有完整的勋章体系;有app的推荐入口;有用户的反馈入口等等。
    展开
    1
  • 一路向北
    2019-04-10
    程序员培养产品思维,相当于多了一个维度的竞争力,而且对于能力的提升也是相辅相成的。
    1
  • ifelse
    2022-06-26
    产品意识,主要包括商业意识、用户意识和数据意识。要提升产品意识,首先要解放思想,然后要改变习惯,最后要多实践。--记下来
  • 龙猫
    2021-01-01
    看过一句话:手里只有锤子的人,所有的问题都是钉子。努力培养培养多元化思维才能尽量避免偏见。
  • 大名府卢员外
    2020-10-15
    老师讲的都是合理场景的流程。但从我从业以来的观察,国内互联网往往缺少履行科学流程的培养基,什么都图快,以团队经常加班代价来完成任务。这种已然成为互联网的不良风气。我蛮新上微软那种风格,允许你精致打磨产品,不提倡加班,质量优于速度。