产品经理可谓是一个需要各方面能力的岗位:罩得住程序猿、哄的住设计狮、要怼得过客户,还得应付得了老板。要不要学技术,更是一个老生常谈的话题。笔者根据平时积累的经验做一些分享,希望和大家多多交流。
首先简单介绍自己:九零后学生物非技术出身目前搞云计算的产品经理。所以,在学习相关专业技术的方面有一些心得体会,和大家分享一下。希望给一些非技术出身的产品新人一些经验,如有不足之处也欢迎各位产品大牛给予指正。
问题
作为产品当你给研发小伙伴提需求后,肯定听过这几字:实现不了!如果你脸皮够厚的话肯定会反问一句,不就是根据手机壳换个APP主题颜色么,有啥实现不了的……即便研发同学说可以做!但是研发成本比较高,需要xxx个人天的工作量才能开发完,现在其他需求排满了没有时间做,你内心又想改个颜色需要这么长时间么。其实也都是开玩笑的例子,但是在现实工作中,一个需求提出来,可能是老板提的、客户提的或者是产品自身提的,作为产品首先需要评估这个需求的优先级以及可行性。而在评估的时候不需要明白需求具体的代码实现方式,但是大方向的实现逻辑一定要懂,只有这样才不会和研发提出一些不合逻辑的需求:
比如设计列表的筛选条件的时候,要知道列表的查询都是通过SQL语句实现的,你得明白SQL是什么,通过SQL语句大致都能对数据进行哪些操作。对接第三方系统的时候,第三方提供哪些API,可以实现什么功能最好要做到心中有数。从另一个方面来说,你想实现什么功能,需要什么API来实现需要和研发沟通后,让第三方进行提供(首先是第三方能提供定制化的API作为的前提)。当然这种情况一般产品只需要把需求讲清楚,需要哪些API是研发来输出即可。但是,如果产品懂一些的话会很大程度上提高沟通的效率。类似于这样的例子不胜枚举,总之产品这个岗位,个人认为还是需要懂一些技术的,下面就大概讲一下如何学习技术方面的相关知识。
如何学习?
笔者本身是非科班出身(大学中计算机公共课只学习了一些计算机的基础知识,语言学的还是VB……)。学习技术知识首先要有高效学习的方法。其次需要根据自身情况确定一个学习的范围。
学习方法
最高效的方法还是参考前辈们的经验,笔者在刚转行的时候买过一些书籍,其中也介绍了一些产品为什么要懂技术,大概都要学什么东西,对于当时还是产品技术小白的我受益匪浅,叫什么名字就不提了以免打广告。其次,如果你需要了解需求的底层技术,去一些技术论坛搜一下如何实现相应的功能,一般都会有一些文章,多看看几篇了解基本的原理即可。在平时工作中你的研发小伙伴也是你的良师益友,遇到问题虚心请教,一般情况下大家也都会知无不言的。总之,学习方法千千万,我说也并不一定适用你,一定要找到适合自己的一套学习方法,才能更高效提升自己。
学习范围
需要学习什么内容是需要根据公司产品情况、负责的项目、负责的功能模块有针对性的学习。
比如:负责的产品是APP,一定要了解IOS/安卓的客户端知识,二者的区别,交互规则都是怎样的。BS架构的产品,客户端则是web浏览器,用户操作界面当然也是依托浏览器进行,相应可以了解前端的相关知识,比如:html、CSS、JavaScript等相关知识。客户端只是做页面可视化的展示和少量的事务处理,而应用主要的事务逻辑在服务端实现,这又引入了服务端的内容,服务器是什么?前后端是如何发生交互的?接口是什么东西?有的时候服务端将前端提交的数据处理后需要保存到数据库中,数据库顾名思义当然是保存数据的东西,其中比较常用的是关系型数据库,例如MySQL。现在很多云服务商也提供很多对象存储的产品,用于存储非结构化的数据(图片、视频、音频等)如有需要也可以了解一下。笔者所在公司的业务是做云计算的,与公司业务息息相关的知识更需要学习,例如:云服务器、云数据库、弹性公网IP、对象存储、负载均衡等等。对于小白同学来说,如果有明确的方向,那就针对性的规划学习范围;如果没有明确的方向,建议每个方面的知识都要了解一些。
说到这里想起来有一点是基本上都必须要了解的,就是一些计算机的基础知识,当下比较流行的编程语言都有什么;数据都有哪些类型,它们具体表示什么;程序是怎么进行一些逻辑判断的等等。
笔者最早也曾尝试过转型做程序猿,自学了一段时间的计算机基础知识和java编程。后来转做产品后以为当时学的一些东西没什么用,毕竟不用写代码。但是,在实际工作中逐渐发现之前积累的技术知识,对于产品设计还是很有帮助的。
踩过的坑
虽然有些技术是产品必须要学习的,但是千万不要被技术扰乱我们的产品思维。
曾经有一段时间,当我接到新的需求后,首先想到的不是用户使用场景,不是用户背后的真实需求,而是从技术的角度考虑如何去进行产品设计,想的是背后的数据库、表如何设计。可想而知,当这个需求实现后也仅仅是能用,用户体验极差,甚至做出来的东西都不是用户真实想要的。
一度为了迎合技术实现,从而忽略的产品设计的本质。为了实现某个需求,过度的