不会写代码的产品经理不是好的产品经理
英语在线教育网站扇贝网在招聘工程师的时候提到:“鼓励工程师未来成为产品经理(并非歧视产品经理,而是我们对找到合适的产品经理已经绝望)”。如今也有越来越多的创业团队强调产品经理与工程师合一。我们知道在传统的软件开发中,这两个职位分工明确,设计的归设计师,实现的归工程师。那么,为什么会出现这样的趋势呢?
在《形式综合论》这本1964年出版的关于建筑设计的导言中就给出了预言:“这个时代强烈需要能够综合把握实际世界的组织的设计师,但真正的工作却不得不交给天分不高的工程师,因为设计师们把他们的天分隐藏在了毫无责任感的自命不凡中。” 设计师的天分是其直觉能力,但随着现代化的推进,设计问题面对规模和影响因素的急速增加。并且这些因素相互之间有相关性,需要依靠理性解决。对创业团队来说,把理性的工程师训练成合适的设计师,比发现一个有天分而且理性思考的设计师要更容易。这本书是一个在崇尚天赋直觉的氛围中强调理性的重要性。
不自觉的设计和自觉的设计
随着理性的介入 ,设计过程也经历了从不自觉的设计到自觉的设计:
不自觉的设计有些像农村里面盖房子,没有设计图纸,一切都在工匠心里:以前是怎么盖的,照着盖就好了。盖好以后出了问题,自己搭个梯子就能马上修理好。
自觉的设计:现在开发商盖商品房,一切都已经设计好了以后,施工方可以完全按着设计图纸来做,分工明确。当然,现在你买房子,只能接收最后的成品,出了问题也只能找专业人员来修理。
不自觉的设计的好处是:有问题及时反馈修正,出现问题实事求是的解决。
自觉的设计的好处是:能解决许多设计问题,但面对复杂的影响因素,比如设计一个现代化的城市时,常常无法规划,出现按下葫芦起了瓢的尴尬局面。
那我们日常设计软件解决方案的过程中是采用的哪一种呢?
我们常常宣称,不追求完美的设计,而是具体问题具体分析的,能解决问题的方案就是好方案。这里有两个问题:
1、为什么大多数时候实事求是的一个一个的解决问题可以得到不错的结果?
也有会出现问题难以解决,总是被各种后续问题所困扰?有经验的工程师知道这是务实的不自觉的设计方案。也就是逐条消除不满足需求的地方。也能达到不错的结果。
2、为什么不能设计出一个完美的方案?有了它,就可以一劳永逸的解决问题?
因为问题所在的环境的复杂,所以导致问题无法简单刻画。好的解决方案需要和问题的模式匹配起来,才能更好的解决问题。所以重要的是找出问题的模式,也即那些对最后的方案造成影响的因素,用金字塔的方式将其组织起来,划分好问题以后,再解决的时候;就更容易权衡。
这本书讲什么
这是一本通过描述设计过程来抽象出设计方法的书。作者是建筑领域的大牛,但其抽象出的方法,在设计领域影响深远。软件领域经典著作《设计模式》一书的前言中,特别提到受Christopher Alexander提出的模式语言的影响。通过层次化概念来把握问题的实质,这样,对具有相关紧密的因素构成的子系统即可抽象出来复用,或者作为其它解决方案的基础。这个图解的方式来找出问题的模式的过程,非常像分析哲学里面通过不断的澄清概念来达到对事物本质的理解,这其中重要的是不要被语言禁锢了问题的结构。那些不容易被语言表达出来的问题的结构也应该引起重视,所以最好引入图解来更好的表达问题。这也是软件设计领域 “高内聚,低耦合”和复用组件的思想来源。
案例分析
《微信技术总监周颢:一亿用户背后架构秘密》
链接:http://tech.qq.com/a/20120515/000224.htm
一文中提到了技术理念的四大法器:大系统小做、让一切可扩展、要有基础组件、
轻松上线。其中大系统小做是典型的高内聚低耦合的思想,基础组件其实是强调那些已经模式化的模块的复用;这两点是自觉设计的核心。
一切可扩展是为了应对环境的变化,修缮工作的;轻松上线则是强调通过迭代使用来改进设计,这两点则是不自觉设计的优点。