序言
序言昨天下班前,产品小王把员工和工单的新匹配规则(基于乡镇街道信息的匹配规则)的文档交给了研发老王。小王很开心,因为这个功能自己想了很久,为了解决数据表大范围改动的问题,小王还创新性地用了标签的解决方案。现在研发老王慢慢地朝小王走过来了,小王嘴角微微上扬,期待着老王夸自己产品设计功力略有提高,还会用创新性的方式去解决问题。老王过来了,对着小王说,你是不是想以后的功能都做不了,去做功能设计的时候异想天开,都不去思考现实世界的规律,你到底行不行啊?小王又一脸懵,软件设计还要考虑现实世界的规律吗?
正文
在做一个功能的时候,往往有多种实现方式。比如在序言中,实现基于乡镇街道信息匹配员工和工单(比如A镇的工单只能派给A镇的员工),至少有两种实现方式,分别是:
新增乡镇街道数据表,完善派单功能的地址系统;
新增标签系统,以标签的形式去做匹配;
那么哪种方案更好呢?
第一种方案需要增加乡镇街道的数据表,改动范围大,工作量大,但是做好之后功能就更加完整,也能为更多功能做支撑;
第二种方案工作量小,解决效果好像也能达到预期;那么该选哪种解决方案呢?
在后续的研发中,显然第一种方案要比第二种方案好。
原因如下:
降低理解成本。面向对象编程的主要内容是对象,属性,方法,这三者对应到现实世界分别是事物,特点,动作,面向对象编程是对现实世界建模。举例说明,简单理解就是在现实世界有冰箱,冰箱是白色的且有制冷功能,那么在面向对象开发的代码中,对应有一个冰箱对象,这个冰箱对象有白色属性和制冷方法。(备注:以上是自己的简单理解,请研发大哥轻敲。)研发通过面向对象的编程思维实现功能,并且贯彻研发全过程,这样能保证研发过程更符合开发规律,有利于加快研发节奏。同时用户在使用功能时也能参照现实世界的事物去使用功能,降低理解成本。
叠加开发功能互联网公司崇尚敏捷开发,很多新功能都是基于已有功能才能实现,可谓环环相扣。尊重现实世界规律是保证叠加能在已有功能之上去开发新功能的重要条件。举例说明,如果后续要做调派功能(将一个员工临时从一个区域调派到另一个区域,目的是为了解决工单临时性爆弹的问题)。如果用标签系统实现乡镇街道信息的匹配功能,那么就无法实现调派功能。因为在标签系统情况下,员工没有乡镇街道地址属性的,从一个乡镇街道调派到另一个乡镇街道更无从谈起,如果强行实现,最多只能算是切换标签。
总结
尊重现实世界规律是做产品功能设计时遵守的重要规则,不但可以降低理解成本,提高研发速度,而且后续可以方便地叠加开发功能。
八点半产品轻食——每日产品加油站,期待关注。
tips:八点半产品轻食主打短小精悍,所以每篇文章的正文字数不会超过1000字。超出部分会被分为多篇文章发送的,读者可以根据文章标题进行判断,一般如果标题带有“上篇”,“下篇”字眼就是被分成两篇发送的。同时为了保证阅读体验,在上篇的最后会归纳下篇的主要内容。阅读愉快~
网友评论