产品经理的主要职责
做为一名新进产品经理,甚至一名资深PM,你可能都或多或少对这个职位产生某种迷惑。到底什么是产品经理?这个职位的主要职责是什么?在IT产业的 不同领域,甚至在同一领域的不同公司,这个职位的定义似乎都有不同。
本文尝试根据自己多年的产品经理经验,给出产品经理的主要职责。 虽然在不同的公司,产品经理的角色和职责互有差异,但是有一些关键职责是任何一个产品经理都应承担的。可以将其归纳为如下六个方面:
1、市场调研
市场调研是指研究市场以了解客户需求、竞争状况及市场力量(market forces),其最终目标是发现创新或改进产品的潜在机会。
可以通过下面的方式进行市场调研:
- 与用户和潜在用户交流
- 与直接面对客户的一线同事如销售、客服、技术支持等交流
- 研究市场分析报告及文章
- 试用竞争产品
- 仔细观察用户行为等
市场调研最终会形成商业机会、产品战略或商业需求文档(BRD),详述如何利用潜在的机会。
2、产品定义及设计
a) 产品定义是指确定产品需要做哪些事情。通常采用产品需求文档(PRD)来进行描 述,PRD可能包含如下信息:
- 产品的愿景
- 目标市场
- 竞争分析
- 产品功能的详细描述
- 产品功能的优先级
- 产品用例(UseCase)
- 系统需求
- 性能需求
- 销售及支持需求等
b) 产品设计是指确定产品的外观,包括用户界面设计(UI,User Interface)和用户交互设计(User Interaction),包含所有的用户体验部分。在大型公司里,PM通常和UI设计师或互动设计师一起完成产品设计,不过在小公司或者创业公司里,产 品经理也许需要全包这些工作。
这是产品经理工作中最有价值的部分, 如果产品经理工作中不包含这部分内容,那几乎可以肯定滴说,那不是产品经理的工作。
3、项目管理
项目管理是指带领来自不同团队的人员(包括工程师、QA、UI设计师、市场、销售、客服等),在预算内按时开发并发布产品。其中可能包括如下工作内 容:
- 确保资源投入
- 制定项目计划
- 根据计划跟踪项目进展
- 辨别关键路径
- 必要时争取追加投入
- 向主管领导报告项目进展状况等
在大型公司里,通常会有项目经理来处理大部分项目管理工作,产品经理只需提供支持。不过在创业公司里,产品经理 通常需要自己进行项目管理。在有些公司,技术负责人也可能做为项目经理,处理大部分项目管理事宜。
4、产品宣介
主要包括和内部同事如老板、销售、市场、客服等沟通产品的优点、功能和目标市场,也可能包括向外界如媒体、行业分析师及用户宣介产品。
大公司的产品经理通常都有产品市场、市场推广和媒体关系(PR)团队帮忙进行对外的产品宣介。
这是除了产品定义和设计之外,对产品经理而言价值第二高的工作,尤其是在向老板、市场同事宣介产品并让他们感到兴奋的时候。
5、产品市场
主要是对外的信息传播——告诉外界有关产品的信息。通常包括制作产品数据表、手册、网站、Flash演示、媒体专题以及展会演示等。
在大型公司,产品市场工作通常不会由PM来负责,这些公司会有专门的产品市场经理来打理此项工作。当然,这种分工最大的缺点就是导致沟通效率较低, 并会削弱对外传播。
在某些公司,“产品管理”和“产品市场”被认为是同义词,会由一个人担当两者的职责。而在那些将产品管理团队和产品市场团队分开的公司,后者会打理 本节所提及的工作职责,同时他们也可能会承担“市场调研”、“产品宣介”和“产品生命周期”管理的部分工作。
6、产品生命周期管理
指那些随着产品经历概念化->发布->成熟->退出市场整个生命周期中的产品管理活动。
主要包括的工作有:
- 产品定位
- 产品定价及促销
- 产品线管理
- 竞争策略
- 建立或收购合作伙伴
- 识别并建立合作关系等
产品经理和产品市场、BD及市场沟通同事一起完成这些工作。
诊断Java内存溢出方法:Java heap dump触发和分析
为了分析java应用的内存泄漏,使用thread dump往往解决不了问题。使用jstat【eg:jstat -gcutil pid 1000 5】工具查看运行的java应用的heap size,perm size ,survivor ratio等,当时你无法知道是什么对象把堆填满了。
什么是 Java heap dump
首先需要搞懂什么是java heap,java heap是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个时间点上打了个快照(snapshot)。
如果你不懂啥是snapshot,点击这里
触发 Java heap dump
有以下方法出发heap dump
- 使用$JAVA_HOME/bin/jmap -dump来触发,eg:jmap -dump:format=b,file=/home/longhao/heamdump.out <pid>
- 使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮。生成的dump文件在java应用的根目录下面。
- 在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成dump文件。
- 使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。
分析 Java heap dump
1:使用IBM HeapAnalyzer
IBM HeapAnalyzer是一款免费的JVM内存堆的图形分析工具,它可以有效的列举堆的内存使用状况,帮助分析Java内存泄漏的原因。
下载解压后有一个ha413.jar,执行: java -Xmx512m -jar ha413.jar /home/longhao/heapdump.out
执行结果如图所示:
2:jhat
jhat(Java Head Analyse Tool )是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言OQL,分析相关的应用后,可以通过http://localhost:7000来访问分析结果。
示例: $JAVA_HOME/bin/jhat -J-Xmx512m /home/longhao/dump.out
3:Eclipse MemoryAnalyzer
Eclipse Memory Analyzer是一个快速并且功能强大的Java heap分析器,能够帮助你查找内存泄漏和减少内存消耗。在File>Acquire Heap Dump>configure>HPROF jmap dump provider设置一下分析应用的JDK,点击相关应用列表来生成heap dump并分析。
在socket,nio中的有些API中,申请的内存是直接向OS要的,在堆中分析内存是查看不到的,可以通过-XX:MaxDirectMemorySize=<size>来设置应用向OS直接申请的最大内存数。
设置JVM内存溢出时快照转存HeapDump到文件
诊断内存溢出是一个有难度的事情,可以在生产环境试一试下面的参数,在发生内存溢出OutOfMemoryError时做HeapDump并保存到文件,然后分析该文件看是否能查到蛛丝马迹。
set JAVA_OPTS=-Xms100m -Xmx192m ^ -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:\jakarta-tomcat\webapps
Java Heap Dump文件格式是一个HPROF二进制格式,需要特殊的工具才能进行分析,而这个文件通常都比较大,如果你的Heap Dump文件超过了几百MB,那就不要再寄希望于jhat了,因为jhat需要数倍于dump文件的内存。这个时候你可以用MAT(Memory Analyzer),用MAT你可以在有2GB可用内存的机器上分析大约1GB左右的Dump文件。