简单思维
简单思维就是找到事物最底层最基本的原理或规律,然后基于此,通过组合,架构,规范,进行演化迭代,形成丰富的积累,最终得到想要的结果。即基于简单的本质来构建一切事物。
关于“增、删、改、查”
以前时不时就会听人说一句话,“研发就是做增、删、改、查”。 开发工程师有时候这样说,往往是做久了,自嘲的话;外行人听多了这句话,有些人就信以为真,也这样说。 以前听了这句话,我首先就会认为这个人肯定是个外行,压根不懂技术,不懂项目研发;如果他是个工程师,我就会附和着说,是啊,就是增删改查,每个项目都一样,都做一样的事。 其实即使是研发工程师,对增删改查的认识也是不一样的。 很大一部分工程师,做了很多个项目,发现了在每个项目研发中,日常做的最多的就是增删改查,大同小异,做了很多次重复了,最终有感而发,说出“研发就是做增、删、改、查”。还有一部分工程师,工作时间2-3年的,工作后一直忙着加班做研发,然后有一天发现每天就是跟数据库,做的就是增、删、改、查,这个时候迷茫了,甚至觉得这或许就是真实的研发工作。
“增、删、改、查”的真相
研发真的就是做增、删、改、查吗?在讨论这个问题之前,我们不妨先来了解下一门语言 “SQL语言”。
SQL语言里对数据进行操作只定义了几个关键词,分别是INSERT, DELETE, UPDATE, SELECT. 这四个关键词,对应着 插入( 增),删除,更新(改), 查询 四种SQL语句。 为什么sql数据操作只有这四种语句?因为只需要这四种语句,这四种语句已经把数据操作的全部行为包含进去了:产生新数据,删除旧数据,数据信息变更,查看数据。 从数据的视角看,研发的实质是数据管理,这也是现在“数据驱动” 流行的主要原因,数据的重要性越来越受重视,人们也倾向于把尽可能多的数据保存下来,因而诞生了大数据。数据管理分两部分:数据存储和数据操作(数据分析与挖掘 一般不包含在业务项目中,通常会另设项目满足)。数据存储根据业务的特点,选择用关系数据库(如Mysql)或者Nosql数据库(如MongoDB),数据操作就是增、删、改、查。 现实里的业务项目中,90%以上的功能就是新增,删除,修改,查询,导出(尤其是管理后台),即使是复杂的功能,也只是增删改查的各种组合而已,因此“研发就是做增、删、改、查”,这句话其实是对的,这就是研发的真相,研发就是这么简单。
如何行动?
既然已经知道了研发的真相,而真相又如此简单,就是“增删改查”,那应该如何行动呢?
项目研发管理核心是要做好三点:1. 提升效率;2. 保障质量;3. 降低成本;如果提升效率和保障质量做好了,成本自然就会大大下降,所以实际只需要解决提升效率和保障质量这两个问题。这跟“增删改查”有什么关系呢? 当然有关系。既然研发就是做增删改查,那只要把增删改查研发的效率提升上去了,则总体效率自然就提高了。 “增删改查”的功能开发效率又能提高到什么程度呢? 前人已经做过很多尝试了,比如Java开发中Mybatis代码自动生成器,可以把跟数据库操作(即增删改查)的常用代码生成好;市面上还有一些开源的代码生成器;还有类似与万能表单代码生成器(可建表,自定义配置字段等) 等。我早期的时候曾花了很长时间研究代码生成器,用于提升研发效率,经过很多次的实践、调整、验证,始终觉得不满意,最终放弃了这种思路。
代码生成器虽然能在一定程度上提升研发效率,但弊端也很明显,主要有:
1. 出现大量相似(甚至相同)代码(生成的代码相似度通常都90%以上,甚至相识度达到99%),维护代价大;
2. 往往只是局部代码,没有完整功能;
3. 往往没法支持复杂的逻辑,若需要支持复杂业务逻辑,需要做大量变更开发工作;
这些弊端,导致其在一个公司内部中大型项目中,基本不再被使用。
那应该怎么做? 我的思路是:把“增删改查”做成无需开发的功能,只需要配置即可。配置的形式可以根据不同语言而定,比如PHP,可以直接用数组形式进行配置。 我把这个思路定位为“配置驱动开发”,把所有常用的功能,组件,包括特殊功能等,都做成可配置项的形式,最终做到除复杂的核心业务功能需要重点开发外,90%以上的功能无需开发即可完成,可以极大的提升研发效率并保障研发质量。
注:下一篇我将重点讲解“什么是配置驱动开发”。 请各位读者多给些反馈,觉得写得不错的给个赞,觉得写得烂的拍个砖。