抽象一步是我相当喜欢的一种工作态度。
抽象
什么叫抽象?抽象就是在有一件事情出现的时候,稍微跳脱一点,用一种更加通用化,更加根本的方式解决问题。“授之以鱼不如授之以渔”,“磨刀不误砍柴工”,“釜底抽薪”,“治标治本”等等所描绘的场景都是一种抽象。
对于技术领域,如果需求是改一个文案,并且可以预见这样的需求会是比较频繁,一定要对这样的需求进行抽象,抽象为一个方便的内容管理工具,而不仅仅做体力活。若是没有这个能力,今天拿到需求写了个A,明天改成B,后天再改成C,改了一个月以后就会吐槽产品经理需求变化多,吐槽业务没想明白。这些都是抽象的功力不够。
外界的需求,遇到的问题如同大海表面的波浪,一味跟随会晕船,稍微抽象一点就下沉了一些,波动就少了。需求一直在变,而他背后的抽象的意图相对稳定;技术的方案中这一点体现得更加明显,越通用,越抽象的东西越稳定。
我在看很多同事的工作,都会问一句话:这里有没有抽象一步的可能性。单单这一个问题常常开启更高效更深层解决问题的道路。
抽象一步
抽象其实并不难理解,很多人也在做,而我发现真正的关键的是抽象到什么程度。
我认为最好的抽象是仅仅抽象一步。既不能不抽象也不能抽象超过一步,走到两步三步去。不能从一个需求出发,然后就进入深邃的思想世界,不断的抽象,思考到问题的终极情况并且根据这个终极情况做事情。
比如刚才提到的改文案的例子,显然一次抽象就是做一个可以很快改文案的工具。但是聪明的工程师灵机一动,仅仅是改文案还不够抽象,应该把改banner也一起考虑进来,变成一个更加通用的内容管理系统,这叫抽象两步;进一步抽象下去,这不仅仅是可以管理内容,更加通用的解题方法是一个系统里面所有资源的编辑系统等等。。。沿着这个思路不断进行下去就是多次抽象。
多次抽象的问题
多次抽象的问题在于:
第一:它需要的资源过多。每多抽象一步,所需要的资源常常大幅增加一次,复杂性也是大幅增加。很有可能所需要的时间比较明显的超过了一次抽象的时间,更是远远的超出了最初需求的时间。持有这种想法的实施者尝尝会面对想做没有时间的困境,常常梦想等什么时候空下来,需求少一点的时候再来做这个终极大杀器,然后,常常就是没有然后了。
第二:它无法获得支持和理解。对于合作方(包括需求方,包括团队成员,包括支持方),一步的抽象清楚干脆,所有的人很容易理解,很容易达成一致并且获得支持。对于多于一步的抽象,整个思考过程就变得晦涩,不稳定,达成共识的可能性降低,因为那是一个完全在自己脑子里面的世界,是基于现实构建出来一层抽象,在这个还没有被大家认知的一次抽象上构建二层抽象,就如同《盗墓空间》里面的第二层梦和第三层梦一样,非常的不稳定。没有可见的事实摆在所有人的面前,沟通成本和说服工作明显提升。持这个想法的人常常会苦恼于别人无法理解自己的工作,无法预见自己所预见的未来。然后,也是没有然后了。
一步抽象的好处
与多步抽象相比,一步抽象的好处恰恰就是在这里:
第一:它所需要的资源较少,可能仅仅比头疼医头的方法多了可以接受的一些资源。磨刀不误砍柴功,我觉得就是比较好的一步抽象,若是临时做一把刀,一定要耽误开柴功了,要是开柴先从炼铁开始,估计这个时间成本没有人能够接受。