BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

张大磊谈产品规划
录制于:

| 受访者 张大磊 关注 0 他的粉丝 作者 张逸 关注 5 他的粉丝 发布于 2010年8月23日 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!
14:18

个人简介 张大磊(Ray Zhang)多年工作于研发一线,对项目管理、软件产品设计与企业应用架构有较为丰富的经验和独到的见解。 Ray Zhang曾任微软公司开发技术经理,致力于为国内外顶尖的软件企业提供解决方案架构咨询。亦曾任微软资深项目经理,负责所在事业部下一代核心产品的设计 与研发管理,作为Excel产品组在大中华区的第一位项目经理,他带领团队成功发布了多个软件产品版本,受到全球多个国家/地区用户的普遍欢迎。 Ray Zhang还是微软金牌讲师评委与TechED最受欢迎讲师。

MPD大会是中国软件研发管理者自己的年会,是本土操作实践与海外研发经验分享的年会,主要面向以下软件开发管理人士:首席技术官(CTO)、研发总监、产品经理、开发主管、测试经理等与软件研发团队密切相关的领导成员。

   

1. 张老师你好,我们现在来在亚太软件研发团队管理年会,非常高兴能请到张老师来接受我们的采访,首先请张老师简单的介绍一下自己。

大家好,我叫张大磊,和各位一样,都是一直在做软件。在我的职业生涯里面,和大家没有太多的区别,我也做过程序员,做过架构师,做过项目的一些主管。基本上在我刚工作的前五六年内,一直是带着团队在做一些项目,然后做各种各样的,包括大家用过的一些很多银行的系统,后台大都是我设计的。在过了几年之后,我加入了微软,在微软前几年做架构师,做架构师的时候设计一些微软合作伙伴的下一代核心产品的技术架构。在微软的职业生涯的后几年,是在做一些项目管理的工作。在我们的Excel产品在中国这边的第一支队伍,就是我和我的同事带起来的,从最开始的做很简单一些小的修修补补的补丁之类的功能,一直到最后从十四、十五开始,把所有的功能全部拿到这边来,从头到尾的规划、设计、开发、测试,全部完成,都是在我这边和我的团队一起完成的,现在我是在和朋友做一个小公司,然后加入了创业队伍。

   

2. 张老师今天的演讲是谈到产品规划设计阶段的项目管理,首先想请张老师介绍一下怎么来界定产品的规划阶段和设计阶段?

这个问题非常好!我觉得产品的规划和设计阶段,还是比较容易界定的。在规划阶段,只要做一件事情就行了,搞清楚你的用户想要什么东西。在设计阶段,就是把用户想要的东西做出来。简单来讲就这样,当然在其中会牵涉到各种各样技术的细节。我觉得主要的界定就是在如果你觉得你已经非常好的了解用户的需求,已经心里对用户想要的东西,有了很明确的概念的话,那可以进入下一步的设计阶段。否则的话,在此之前,可能所有的设计工作做了都是会白费的。

   

3. 那么规划阶段和设计阶段有没有产生重叠或者迭代的情况?

我觉得这个需要分成两个,把设计分成两个来讲。一般来讲,如果是大家所谓的总体设计,一些一般设计(general design),它很可能是在规划阶段一直重叠的,因为大多数的公司里面做产品的团队、做规划的团队(Team)和做设计的团队(Team),不一定是同一个团队(Team),这些个 团队(Team)要在同时工作,做出一些愿景的文档来。然后除此之外,可能在一些细节的设计上是很难会重叠的,不管你是用各种各样的敏捷的开发方法学,还是Workflow,还是最简单的那种A couple of boys的编程,一般细节的设计都和规划上去重叠。

   

4. A couple of boys的设计也需要有这种规划吗?

对,是,因为基本上像很多国内的一些小公司,比较作坊式的团队,可能是一两个牛人,把这个东西做出来。他其实也是有个规划的阶段,只不过可能在他的大脑中完成了已经。

   

5. 那么在规划阶段怎么来你确定你典型的用户,对典型用户的需求,怎么样去满足他,是否都要满足?

我觉得这也是大家都在商量的问题,在我个人的看法来讲,先回答你后一个问题,典型的用户的需求都要满足是完全不可能的,因为基本上可以看到,我们大都数做的产品,也是有一个八二法则,也是80%的人需要20%的功能,20%的人需要80%的功能。所以我们需要做的,如果你要做一个大众产品的话,你的定位是一个大众市场的话,你需要想的是怎么样把20%的精力来满足80%的人的需求,这是对后一个问题。前一个问题就是典型用户怎么来界定的,一般我们典型用户界面都是先去根据这个市场上的Customer Segmentation,用户群体的分层、分类,在不同的用户群体里的分类,找出一些他们有共性的地方,再从共性中抽象出一些典型的用户来。

   

6. 产品规划阶段的话,是对需求要有充分的了解,是否需要把需求深入的非常细化。在这个过程当中,是否需要用到像UML,或者通过用例的方式来确定需求呢?

我觉得在产品的规划阶段,需求是重中之重,可以说是最核心的东西。但是需求在产品规划阶段是很难很难去细化的,因为在规划阶段你要参与到的一些规划的团队(Team),涉及到的一些引用的流程、方法、人员,都不适合把它做的非常非常细化。但是我们也是要在规划阶段尽可能的做一些细化工作,这些细化工作主要是以场景(scenario),是以用户的场景,基于用户的场景,像UML等等工具的话,这个是取决于每一个产品本身,因为有的产品团队,他对UML很熟悉,他可以把UML等等的工具,UML毕竟是一种工具,他可以阐释的非常的简单、简明易了,这样他就拿UML的一套工具去和客户去沟通,和开发人员去沟通,和设计人员去沟通。这样的话,如果能很好的用起来是非常好的,如果只是为了把UML工具用起来,而去再和客户沟通的时候,解释一些客户不懂的概念,画一些客户不懂的图,可能效果会适得其反。

   

7. 如果要规划一个可能会引领行业趋势的产品,该怎么去获取需求?是通过自己关起门来想,有一个很好的创意,还是通过客户充分的调查。因为我们听说像苹果的乔布斯,他从来不做市场调查,只需要照照镜子,就能获取需求了。

我觉得这个问题非常好,Steve Jobs本人我没有打过太多的交道,所以我也不知道他是不是照照镜子就可以知道用户的需求。但是据我了解,绝大多数公司的产品都是在用户的需求了解很深入的情况下,当然了解用户需求的办法有很多种,不一定非要是去发问卷调查等等市场调查方法。我知道像 苹果(Apple)很多成功的产品,包括像大家都知道的iMac、iPod、iPhone、iPad,包括像iWork等等,他们也是做了很多很多非常细致的用户需求的调研,尽管它不是像常规的去买第三方的数据等等,或者是去满大街的发问卷这样的方法,但他们也是很了解用户需求的,所以在我看来,我觉得每天闭门造机的那种是很难做出来很好的产品。

   

8. 对于一款非常成功的产品,在设计阶段,最重要的是架构呢,还是用户体验,或者是其他的一些因素?

我觉得在设计阶段,最重要的东西,可能很难说某一个东西是最重要的东西,因为大家都知道木桶理论,如果你的用户体验非常漂亮,但是你的架构很差,你这个产品刚起来就崩溃(Crash)了,或者你的架构非常非常的好,但是用户用起来的话,需要十次点击才能进到某一个功能,这样的可能都很慢。所以我们得获取到一个平衡点,就是在任何一个方面,都不是非常差的情况下,在突出其中的一两个竞争性优势,才能做一个很有创意很好的产品。

   

9. 那在设计当中,像你在20年的行业经验,在做设计的时候,你一般是采用什么方式来做设计,会用到哪一些设计的工具?

首先重申一点,我没有二十年的行业经验,我只有十几年的行业经验。在设计阶段,我觉得这个是因人而异,有的人在设计阶段,当然设计分很多种,包括最上面的一些用户体验的设计、视觉元素的设计,比如Visual Desig、Graphic Design,包括中间的一些Interactive Design,交互式设计,包括底下的一些元数据的设计等等,包括底下的架构设计等等,这些每一个都有不同的,就是不同的领域所用的工具。但是在我看来,这个工具本身并不是很重要,因为我了解的,我接触过的一些,包括像iPone团队的,包括像微软Office团队、Windows团队的大多数的最早的设计素材,都是在这个白板上,什么上简单的画一画,拍几张照片,然后拿回来大家开始讨论。讨论完了之后,到最后的话再采用专业的工具,PhotoShop之类的再把它给,或者动画的工具,才把它给写到规格说明书(Spec)里面去,所以我觉得工具可能不是非常重要,只要是大家沟通好就行。

   

10. 谈到工具的话,其实敏捷一般来说也是认为一种工具,也不是特别重要,而且很多都是从白板开始的。你在演讲当中也会谈到开发方法,对于像敏捷开发,像Scrum,也是现在很热的一个话题,你会在规划设计阶段,会推荐会选择用那一种开发方法?

这个问题非常好,因为现在很多人是对一些敏捷的开发,尤其向Scrum等等推崇备至。我觉得这么多人去追捧(follow),是有它的内在优势在里面,包括它能够更快的适应需求的变化,通过不同的迭代(iteration)来尽快有一个快速的原形,展现在用户的面前,或者客户的面前,可以更早期的得到反馈,这个当然是有各自优势。但我想强调的是,所有的开发方法选择都是为了我们某一个项目(Project)或者产品(Product)服务的,所以你可能需要根据自己的需要来确定相应的开发方法学。我有一个朋友叫Scott Brook,他写很多Scrum的书,事实上他在和自己的团队做一些项目时候,他自己也并不是用敏捷,我觉得这是一个很正确的做法。我们不能因为某一种,敏捷可以看作是一种束,不能因为每一种束去禁锢软件发挥的空间,还是需要根据我们实际情况,如果用户的需求非常非常的多变,你的每一个release需要的迭代周期非常短,可能像这种敏捷就比较好一些。如果你的用户长期需求相对比较固定,你的这些团队和对整个市场的把握相对比较好,不一定非得去采用敏捷的方式。

   

12. 现在对于设计来说,一般有两种情况,可能也跟传统的方式和敏捷方式有点相似,有的是先设计都做完 ,再做编码。还有一种代码就是设计,比如敏捷里边的TDD这种方式,你看这两种观点,怎么来评价呢?

我觉得这两种观点,它的形成都是有他的一些客观的存在的基础,比如说像,我接触过的一些,相对一些大型的产品或者项目,你可能很难去做一个代码,就是设计这样的推行下去。因为比如说有一个500人同时工作在一个Code Base上面,今天这个人Check in了一堆代码,上面加了几行简单的注释,其他的人可能产生的影响等等,其他人可能需要四百九十九个人,每天花十分钟看一看别人在做什么,这样他也就不用上班了,就可以直接读读别人的代码就下班了。这个还是根据实际的情况,一般来讲对一些大中型的项目,可能前期先做一些比较好的设计,当然这里的设计主要是指一些架构、一些应用模式方面的设计,一般不是用户体验的设计。一般这些相对小型的项目,比如像50人以下的项目团队,如果在你的时间非常紧或者你的每个迭代周期非常短的情况下,会有一些压力,会直接用你的代码做一些设计,在一些简单类的层面上做一些低层次的设计就可以了。

   

13. 说到产品规划对于IT软件从业人员,应该对产品规划接触的还是比较少。那对于普通的开发人员来说,如果希望能够从事这个产品规划这个行业,你能不能给他们提出一些建议,或者是一些认为他们应该怎么去做,才能够成为一名成功的产品规划师?

首先我觉得这个问题,我自己也不知道怎么样才能成为一名成功的产品规划师,原因我也不是专职做产品规划的,我只是在做项目管理的阶段接触到了产品规划,我们也是有很多专业的Product Planning的人,但是我从来没有做过这个职位。不过据我了解到,我觉得大多数Product Planning做的事情,基本上是两类,第一类是市场(Market)相关的,也就是说你需要做各种各样市场的调查,考虑清楚这个大方向,这个趋势(Trend)就相当于一个潮流,像一条河一样,它要往哪里走。如果这条河是往东走的,那你往西走了,你可能很难会取得巨大的成功,这是第一个要把握清楚这个市场的趋势,包括技术的趋势;第二点就是设身处地的站在用户的角度上,想想你一件事情怎么样可以做到最好,不是更好,而是做到最好。因为你想想,如果你现在在每天在用的各种各样的生活用品,每天在用的各种各样的软件,如果让你去重新设计一遍,你会怎么样把它设计出来,它会有什么优缺点,然后你再在你的方案上,再去改变,再去怎么设计,它会有什么优缺点,平衡各种各样的成本、效益等等的考虑之后,你会去怎么做,我觉得其实是一些思维训练的东西,也是非常重要的,这是我想给大家的一些建议。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT