长春婚礼策划招聘:程凯征:从研发角度看产品设计

来源:百度文库 编辑:九乡新闻网 时间:2024/05/03 06:23:55

7月8日,CSDN移动开发者俱乐部在北京举办移动开发创意工坊主题活动,这也是俱乐部成立以来举办的首场活动,根据移动产品的开发路径,之后俱乐部还举办以“设计”、“开发”、“市场”为主题的系列活动。程凯征以一位标准研发人员的视角,将研发和产品设计之间的关系用“与、或、非”来阐述,展示了他对产品设计的独到理解。

演讲实录如下:

研发和产品之间的关系“与、或、非”

首先跟大家讲一下研发和产品之间的关系,其实说一下产品工作是从何而来?我其实做研发时间到现在有11年的时间,我记得从我刚刚开始踏入程序员行业的时候,其实没有产品这个职位,产品这个职位不是很重要的一个位置。那时候更多可能是一些叫做系统分析师,客户需求分析师,有这么一个位置。那个时候大部分的工作是由程序员完成的,程序员可能和项目经理直接到客户那个地方一去交流,接下来程序员开始做原型、设计。后来有一部分人专门分出来做一些用户的系统分析和设计,把剩下工作回头交给他们做。产品和研发部分家,两者一块做这个东西,东西做好之后交付给客户。

采用研发里头一个标准三个关系,叫做与、或、非,这三个关系形容研发和产品之间的关系。我想现在很多公司里面处在三个阶段都会,先讲讲非,刚才彦风老师讲的死对头,研发说这个东西做不了,设计应用说你一定要给我实现,两个人关系很僵,大家有很深的矛盾。或这个状态也有存在这个状况,有些是产品为主导,研发是你让我做什么就做什么,我也不想。或者干脆就由研发作主,研发说了算,研发老大说我们就这么做,产品帮我把界面加工加工,把细节补充补充就行了,这是或的东西。另一类公司处在与的状态,两边一起做事情,研发加上产品一起把这个东西做起来,会去参与一些讨论。

其实我们做研发和产品的时候,我们其实大家很多时候是忘了做这个东西最终目标,只有研发和产品两个人一起做事情的时候或者是两个团队一起做事情的时候,最后才有可能有一个丰盛的结果,有这么一筐草莓。研发人员到底应该具备什么心态?研发人员必须要有产品心态,用一句话叫做不想做好产品的研发不是好领导,也就是说这个研发人员要想继续往前发展,必须对产品有自己的一些感觉和一些概念,这样子才有可能把产品做好,以后才有可能有一些大的发展。否则他仅仅是一个敲蛋壳工具,那样的研发不要也罢。

这个公司里面怎么去协调研发和产品的关系,到底应该怎么做才能让研发和产品配合起来,把产品真正做好。这个东西是公司的文化问题,为什么这么说?如果说一个公司他从根本上觉得是应该做一个好的产品或者是把这个产品融入到他公司的文化理念中,组建他的团队和架构做相应产品,才可以真正做出好产品。把研发和产品人员堆在一起才能把产品做好,不是这样的。公司从上到下每一个人必须有这样的想法,这个地方可以举一个例子,在场没有阿里巴巴的同学吧?因为我有一个朋友叫做白鸭(音),大家可能认识比较多,在用户体验也是比较有名的人物。他去了支付宝之后,我记得在去的好象第一年,支付宝年会上讲了用户体验的问题,有一群人抱头痛哭,每个部门会有不同的目标,只有当整个公司意识到这个产品是至关重要的,用户体验是至关重要的,他才可以真正意义上做一些事情,把每个团队的人召集起来组成一个团队。融入到整个公司的文化和理念里面才有可能把这个产品做好。这是讲研发人员和产品的关系,怎么配合,怎么做事情。

做产品要了解设备的局限性

接下来我们回到研发角度来看一下无线网络究竟对我们产品设计造成什么样的影响?我想用无线网络,因为都是移动互联网的开发者或者是产品经理、交互设计,所以对于无线网络应该还是有一些了解的。包括上面写的这几个名词,GPRS/EDGE/WCDMA,大家对这三个网络或者说三技术他们能够传输数据量有没有研究?

这个数字我这里写到13KBPS到60KBPS,30KBPS-120KBPS,384KBPS,这些数字意味着什么?括号里面做了换算,当手机在GPRS网络支持下,每秒钟传输数据量只有1.6K到7.5K,1.6K什么概念?1600个字节,一个汉字是2个字节,可以数多少个汉字?一秒钟可以传输这么一点点数据量。到了EDGE之后,中国移动情况下,大城市,一般普通在外面郊区只是GPRS网络,地铁也是GPRS网络,EDGE覆盖网络也不是特别全,EDGE覆盖下每秒钟传输3.8K-15K,这个量其实也是一个非常小的数字,信息量非常少。到了WCDMA网络,速度稍微快一点,可以传输48K每秒钟。

这些数字又意味着什么东西?我们大家每一次拿出手机打开浏览器、某一个应用上网的时候,这些应用和服务器交互时间,网络延迟、传输请求头,这些东西全加在一起,什么数据都不传的情况下和服务器进行交互,需要一到两秒的时间。你希望用户打开你的应用和浏览器,等上5秒钟之内如果看不到结果,你的程序只能传输2-3秒钟,能够传输多少数据量?现在无线网络比较慢,有时候不稳定。我喜欢用最低限计算这个,3.8K×3秒,我相信很少公司或者是产品团队会从这个角度看这个事情。3.8K,就算4K,三秒钟就是12K的数据量,这个数据量对于互联网的应用,对于一些复杂应用来讲这是非常小的量。

再看一个数据,在场用过拨号网络有多少人?也不是很多,大家都知道在刚开始的时候拨号网络很慢,底下有一串数据,从14.4KBPS到128KBPS,ADSL是512KBPS,大家现在用家里面网通宽带都是从ADSL开始的。中国互联网真正的普及是从ADSL开始的。很多人原来用拨号网络前面这些人基本都是行业内的人,真正用户上来之后是从ADSL开始推广的时候,中国的宽带真正开始普及。

移动互联网的春天我觉得其实还没有来,从WCDMA看的话,刚刚开沾上边了,这时候你获得比较好的用户体验,必须在信号比较好的地方,有可能还不能移动。WCDMA拨号上网可以,但是你要真正在移动状态下,比如我走在路上查一个什么信息,这是非常痛苦的。这种环境的话,移动互联网的环境其实是给我们的这个产品的设计这个地方是带来了很多的挑战。所以从这个角度来讲,产品团队里面最好能有技术出身或者是甚至把技术人员融合到产品团队里,让他从这个角度看待我们的产品怎么做,交互上怎么处理。

基于刚才讲的网络状况,我们来看几个问题,这里可能会得罪一些人,反正我也无所谓。首先第一个初始化的时候,当你一个应用打开的时候,初始化的时候你都干了一些什么事情。很多公司刚开始从产品角度考虑,初始化的时候我需要用户客户端向我服务器做注册,提供一大堆信息,把我产品必要信息全部取下去,这是理想状态,于是乎有这样的产品,我第一次看到京东推出安卓客户端很高兴,我就装了,从此之后只看到他初始化的界面,从来没有进去过,我就放在这里叫做杯具的京东的安卓版,现在已经改良了,这是老板的启动。

第二个大家知道其实在用户打开一个应用的时候,他希望很快能够看到里面的东西而不是说我需要去等一些时间,我等你这个应用更新完内容看到一些数据之后,我才能进行一些操作。我进去仅仅是为了看一看或者是看我上次看的东西在不在,获取我自己想要的信息。这种情况下现有很多客户端做的时候不是这个角度出发考虑。他们做的时候,每天网站有更新内容,他把更新内容全部下载一遍,让用户看到最新的东西,这个出发点是好的,实际上用户用起来感觉非常糟糕。

当你在地铁里面,信号不是很好,分时段,这个情况下传输大量信息,这时候问题来了,京东、凡课、乐淘、一号店、一个都没有,我做的唯一事情就是返回退出,没有了,就是这个东西。有一个比较好的就是保留我退出的权利,不用等待,要不然还得硬退。为什么出现这种情况?产品人员做产品设计的时候,没有考虑到无线网络的状况,所用数据都要从无线网络取下来,这个需要时间的,是需要有一段时间的等待的。程序员做这个事情的时候,其实现在很多开发环境里面都可以模拟网络的速度,我建议程序员把通信模拟一定调到最小状态,哪怕稍微慢一些。最起码你做出来的东西符合环境,不是说模拟做的好好,到真机上不行了。

最后一个我这地方,我不是网易的托,目前为止看到这些相关移动网络的应用包括资讯类,我觉得做的最好实际上是网易新闻。好在什么地方?好在他标题边上一个圈圈,每次进来都可以看到我上次看到的内容,上次我有可能没有看完,虽然这些内容可能已经旧了,是昨天或者是前天新闻。我在地铁里没有关系,你在后台更新,对真正使用的人来讲这个感觉好很多。

站在研发角度,如何参与到产品设计

我觉得有三条,第一是轻协议,尽可能的轻、小,传输数据量小。协议本身量要小,把通道留给真正的内容。少量多次,不要指望一次把所有事情干完。我就一次只干必要事情,少量多次。这样对用户来讲一个是访问的成功率高,第二可以一步一步进入你的程序里面,可以再留下。第二就是数据一定要压缩,现有可能有一些接触开发的团队或者是一些产从技术来讲没有压缩数据,真正有用信息只有一点点,大部分的量浪费在协议本身。还有就是按需下载,要什么东西下载什么东西,不是我一股脑给用户下到后面,用户看到爽了,每个月底交话费骂死你。第三是缓存数据,避免等待,把之前访问数据留下来,用户下次进来看到他之前的数据,不要等最新的内容,有时候真的等不起。

看完这个移动无线网络之后,我们再来看移动终端有什么特点,这些特点意味着什么,怎么针对这些特点做一些相应的设计。刚才提到现有移动终端发展已经非常非常快了,现有移动终端计算能力已经比航天飞机计算能力高出很多,这是我看的新闻。在这种情况下,移动终端能做什么事情呢,大家可能会问移动终端现在计算能力那么强,为什么有的地方说移动终端是资源受限环节,这个资源到底是什么资源?我想应该是这个资源,大家看一句话找劳工应该找用智能手机的。有人看过句话吗?第二句话因为他每天都要回家充电,因为现在移动终端上现在最缺是电池、电量。我相信在座用智能手机应该很多,是不是每天基本上要充一次电,随时都在充电,到了座位上把USB插上,不知道什么时候手机就没电了。这种情况下要注意怎么来设计这个东西。

第二个移动终端的特点就是每一步终端都是与众不同,这个里面包括什么?包括终端的IMEI的号,这个东西山寨机除外,山寨机很多IMEI号是重的,还有一个IMSI号,大家有知道是干什么用的吗?这个号是存在你SIM卡里的号,是你SIM卡唯一的标识,在移动终端是没有手机号的概念,有人知道这个事情吗?这个地方我给大家稍微普及一下,其实我们在手机里面SIM卡只有一个IMSI的号,手机号是移动运营商分配给你一个号码,当你的手机联网之后你拿这个IMSI号去移动网络注册,他把你的IMSI号跟手机号绑上,别人给你打电话是通过IMSI号找到你,移动终端没有手机号这个东西,取不到手机号,如果取到手机号也有办法,我回头可以教你们小的办法。第三个是蓝牙,蓝牙的麦克地址(音译)每一个手机也是不同,每一个终端都有自己的标识,这种情况下我们又能够做什么?对于产品的设计又能够做什么样的推动和驱动?

第三个,问大家一个问题,这个图是战斧式巡航导弹,他有哪些传感器?有对军事感兴趣的吗?都有哪些传感器?其实东西很少,有摄象头,可能是红外或者是其他光伏,有陀螺仪,GPS,接下来带一个炸药就出去了。战斧式巡航导弹作用很多,可以摧毁敌人目标,可以做很多事情。但是我们移动智能终端,目前每一台终端发出能力比战斧式巡航导弹厉害,你又能够做什么?真正去做一个导弹吗,这个也不太现实。可以一会来看一下。

看一下第一个,避免后台运行,频繁操作,这里我举个例子,我曾经在我这个手机上装一个软件,TalkBOXS(音译),相当于一个对讲机,可以和国外朋友一起聊天,讲一些东西。当我有一天发生一件事情之后,我就把它卸掉了,永远不用这个东西了。为什么?那天晚上我把手机充满电,没问题,绑掉了,安心睡觉,等我早上起来的时候我的手机已经关机了。我很诧异,难道我的手机坏了吗,我把手机打开,安卓手机里面可以由一个功能可以看到哪个程序耗电量最高,我一看是TalKBOXS,把电用完了,我把它卸载,不会用它了,我用了它之后我没办法打电话、接电话,一天的事情就完蛋了。对用户来讲电量是非常非常重要的,尽可能不要在后台做一些事情,这样子的话对于电量敏感的用户他是非常反感这个东西。

第二条每一个终端上都有自己唯一性标识,用这种唯一性标识我们可以用来做什么?原有互联网产品设计的时候我们可能都会有一个东西叫做用户名、密码,用户要用这个登录网站做自己的个性化设置和自己的事情。用户终端上需要用户名、密码吗?这里再举个支付宝的例子,大家知道支付宝有移动版,安卓版本和iPhone版本,在安卓版本里面每一个人在支付宝上互联网上都有用户名、密码,需要在手机上做绑定。最早支付宝绑定之后每一次启动之后还需要用户去输入用户名和密码,作为他们团队内部考虑就是从用户安全性角度出发考虑这样的问题。其实从产品角度来看的话,这个东西一看是对的,我这样会安全一些。但是这个不太雅观的话来讲,我那个朋友是支付宝无线产品经理,他来主导支付宝和客户端的工作,他们安全部门提出让他们加一个用户名、密码每次交现。就问说意外怀孕怎么办?其实手机是很私人化的东西,平时你都会带在身上。你的钱包里头卡也是一样的。银行卡、信用卡,钱都会在钱包里。当你有一天发现手机丢了之后,你的卡丢了之后第一件事情干什么?银行挂失。作为支付宝客户端其实也是一样。当你手机丢了之后第一件事就是支付宝挂失。其实密码这个东西根本不存在这个需求,反而给用户支付便利带来一定困扰。这是我跟我朋友探讨,他给我讲一个故事,是对是错大家可以回头思考一下。至于纯粹移动互联网的应用,这里面其实更可以考虑一下我们到底还要不要用户名、密码这个东西,这个地方可以是开放的。

第三个很多传感器我们能来做什么?传感器能得到什么数据?包括加速度,包括手机角度,可以看到手机当前状态,摄象头可以判断周围环境。这个东西对我们的产品设计有没有影响?影响是非常大,但是我们现在这些移动产品或者说交互设计往往是从用户角度出发考虑的。这个东西有一个局限,是什么?你是以人为中心,不是以科技出发去考虑这个问题。从我研发的角度出发去想这个东西,当我有传感器、有加速度,有陀螺仪的时候,我知道用户手机当前是什么状态,他在坐车还是跳舞、还是走路,还是干什么其他事情,这些东西又能带来什么东西,这里不做结论性讲述。大家可以回去思考一下,从研发角度看到这么多东西,他可以做什么东西,可以做的东西很多,很好玩,也可以给我们生活带来很多变化。这个是从移动终端角度看产品的设计。

第三部分就是关于UI,这个有一点班门弄斧,我还是从我研发角度看UI的东西。很多时候我相信很多产品人员包括交互设计在一个产品的设计做完之后或者是跟研发交流过程中会遇到一个问题,研发很多时候会告诉你这个东西很难做,或者是我们没法做,做不了。到底是不是这个样子?我来告诉大家UI的开发分为三个阶段,第一个阶段叫做原生组件,这个很好理解,系统给你什么样的建材,你就用什么样的材料做你的产品。所有研发看完这个文档之后都会做,很容易,很容易搭起来,界面效果不告诉你,原生东西不会好看什么地方去,看起来像一个实验性的产品。接着到了第二阶段,就是我们可能会对界面上比如说颜色、边框颜色、背景色、每一个按钮的颜色会去做一些要求,就是我们会提出意见,研发说行,我给你改一改,把每一个组件稍微做一些变化和调整,做一些色彩上的配置。这个做完产品有一点样子,这个东西是不是最好看,肯定不是,但是很多公司我想到这一步已经到头了,就停在那个地方了,这就是一个目前能够看得到的大部分的产品的状态。就像刚才的彦风老师讲的,苹果交互,第二级、第三级就用iPhone原来的UI设计,原生的东西冒出来的。第三层真正意义做的比好的客户端他的UI是通过自定义组件实现的。什么是自定义组件?能干什么事情我后面会讲。怎么衡量一个平台上的UI到底能不能做的漂亮,做成什么样子?这个平台如果能做游戏,这个平台就有一切可能,你的UI上面所有这些东西都是可以改变的。大不了我按游戏的方式做这个应用,所有图标,LOGO、抬头都可以改,我们产品人员、交互人员跟研发人员打交道的时候可以由一些底气,你在上面玩玩游戏,在这里可以做一些东西。

看一下自定义组件到底有什么样的意义?首先第一个就是视觉效果上质的飞跃,自定义组件就是交互设计和产品设计最后做完了这个效果是什么样子,研发自定义组件开发完就是什么样子,一个象素都不会差。这系视觉效果上质的飞跃。第二部分他可以封装一部分的复杂界面交互逻辑,可以把这些交互逻辑封装到自定义组件里面,点了这个东西之后其他的联动上做一些反应和数据,都可以放到这个逻辑里面去。而且这个封装完了交互和显示部分可以重用,你今天这个地方开发完了,以后其他地方用了相应东西一样也可以用。而且第四个好处就是易于调整和修改,当我们某一天交互做了调整或者是界面上做了调整,自定义组件修改起来比较快,可以说得心应手。这个是四个好处。

最后希望我们在座产品人员回去之后和我们研发人员一起加上老板和闲杂人等,最后一句话就是多多赚钱。