从产品及开发角度看复杂与简单

在IT行业将近工作了有10年左右时间,接触过不少产品。有硬件的,台式机,笔记本,各类Pad等。有软件的,Win平台,Mac的,Linux的。Pad和移动端的各类App。各种功能,各种界面。甚至自己做的很多系统,应用之类的。有时候也会进行或深入或浅薄的思考,产品层面,内部代码层面,甚至并不是很敢兴趣的市场层面,一直想记录下些东西,说说自己的体会之类。

自从苹果公司的产品出来之后,一瞬间大家好像对产品,用户体验等概念有了新的认识。特别是移动互联的兴起后,到处都是产品经理的身影,以前做Web应用的时候,似乎做产品的已经被列在了设计阶段,而现在,产品的地位提升了很多,这里有很多客观因素也是存在的。

先说说行业内对产品的定义,因本人从事的是互联网行业,目前也连带移动互联,主要从事Android开发中,因此所论述的产品涵盖了这2个领域,也可以说是小小心得。为什么说产品的地位提升很多呢?很多时候做产品的和后端的码农可以说是存在非常多的矛盾,但是又是互相依赖的,譬如假设一个做互联网产品的不知道HTML, CSS, 那是可以肯定的说做出来的原型图是非常脱离现实的,而且这也是非常基础的部分,如果说到用户体验,不懂前端,如果设计出好产品呢?

认识产品、开发

当然前提也尤为重要,产品经理必须非常清楚和了解产品的概貌,不仅从产品本身来说,更要从产品所附属的整个行业的一个大方向来说。这对产品经理的要求是非常高的,因为接下来需要做的事情,就要将这个宏伟的产品分阶段,也就是产品层面的战略了,我的理解是设计迭代中的每一环。要知道做互联网,或者移动互联的产品,必须是要有非常宏大的目标,想象非常庞大的用户量要使用这个产品,导致了各种各样的用户,包含各种各样的用户习惯去做,这些个阶段中,每个阶段的目标不仅仅是产品的提升,更是培养用户的方式,而且也配合到整个产品所属公司的战略。

因此做产品,必须清楚目标,并且能为目标做出妥善的计划,即是所谓的里程碑。 从大方向来说,产品经理确实是非常苦难的一个角色,但同时也是一个强悍的角色,因为要懂那么多东西,确实很牛叉。

相对来说,产品涉及的“面”上的东西较多,以上是从产品的更新迭代来说的,那么来说说产品本身的细节问题,目前很多产品,公司,包括独立开发者,都崇尚简单。我想从两个角度来看这个东西。

第一、产品中的流程。任何产品的使用,都逃不过流程,注册需要流程,用户购买需要流程,用户发信息需要流程等等。如何将复杂的流程做简单了,那就是说产品设计是成功了,并且从用户角度来说,不但流程简单,而且,当面对高级用户时,也能及时提供这类用户的特殊需求,也必须将复杂的一面交给这类用户自己定制。
第二、产品中的界面。大部分产品都是有UI的,UI如何操作合理,高效,不让用户反感的情况下,培养用户等等,这些都是需要UI来做的,那么懂一些Web的控件,App的控件, widget, Desktop App 的控件,组件之类的,是非常有必要了。

但是,基本控件,其实人人都知道,这个无法满足用户需求的,那么这个时候开发必须要登场了。

开发人员,典型的工程师思维,不管前端如何简单,但是,开发人员必须非常了解每个细节,因为开发人员必须要做实现。每一项 特性,每一个 功能 背后可能有好多层好多种关系交织在一起,必须去了解、规划、整理出其中的细节,才能实现前端简单的功能。所以,简单和复杂其实是共同体,在这个共同体中,开发人员应该是担当了基石的作用。如果说产品可以做到前端的功能表达,而具体业务逻辑是由开发来做的话,那么我想这之间还必须要有程序设计人员作为桥梁。

程序设计也是非常tough的工作,也是包含各种需要考量的东西,个人觉得架构师这个职位可以说是程序设计中的总设计。虽说产品已经从需求那里提炼出了UI和各种idea,但是正如产品的局限性来看,无法看到产品背后的实现,因此,架构师还是需要不停的和需求、产品做沟通,同时要考虑到开发实现,毕竟是全局工程啊。

那么这个时候,架构在必须游走在复杂与简单之间,来回推导,进行抽象。

设计产品、开发产品

需求,产品,架构,开发这些都是很重要很费神事情,有很多方法可以作为推进项目的方式,甚至还有配套的工具来加强效果、弥补不足。

本人最为推崇的是迭代开发,好处是目标清晰,并且一旦全身心投入进去,产品的进度应该无需担心,本人平时在开发中,也会碰到这种情况,只要是想好了,特别是每个Mile stone,非常清晰的知道要开发什么,需求边界是什么,设计原型是什么,这些细节把握清楚之后,跟着功能走,一般都会在很快的时间内完成,而不用刻意去计算项目花费时间。

其实整个开发过程就是一个从简单到复杂,再从复杂到简单的多个过程。从最简单的原始需求慢慢挖掘出细节,通过对细节的揣摩,进行各个层面的抽象,这里不得不提UML, 真是个好东西,有描述功能的用例图,描述静态结构的类图、包图、构建图等,有行为的时序、活动、状态等。抽象出来后,开始搭建软件架构,各种超类,接口的编写,又是来回推导,很有意思的是,这些动作也是从简单到复杂,再从复杂到简单。还真是你中有我,我中有你啊。

当然从前端来看,那应该就是极尽简单,有这么复杂的后台逻辑做支持,产品才可以放心的去构建。 当然其中也有测试之类的,也很重要,简单与复杂在测试中也是存在的。

那么,这么看来,每当产品经理看着简单明了的产品,能想到后端复杂的逻辑,每当设计开发看着大片大片的代码,想到前端优雅的操作。这个时候才真是感到Team的强大,生活的和谐内。。。