簡(jiǎn)單思維
? ? ? ? 簡(jiǎn)單思維就是找到事物最底層最基本的原理或規(guī)律蘑斧,然后基于此,通過組合须眷,架構(gòu)竖瘾,規(guī)范,進(jìn)行演化迭代柒爸,形成豐富的積累准浴,最終得到想要的結(jié)果。即基于簡(jiǎn)單的本質(zhì)來(lái)構(gòu)建一切事物捎稚。
關(guān)于“增乐横、刪求橄、改、查”
? ? ? ? 以前時(shí)不時(shí)就會(huì)聽人說一句話葡公,“研發(fā)就是做增罐农、刪、改催什、查”涵亏。 開發(fā)工程師有時(shí)候這樣說,往往是做久了蒲凶,自嘲的話气筋;外行人聽多了這句話,有些人就信以為真旋圆,也這樣說宠默。 以前聽了這句話,我首先就會(huì)認(rèn)為這個(gè)人肯定是個(gè)外行灵巧,壓根不懂技術(shù)搀矫,不懂項(xiàng)目研發(fā);如果他是個(gè)工程師刻肄,我就會(huì)附和著說瓤球,是啊,就是增刪改查敏弃,每個(gè)項(xiàng)目都一樣卦羡,都做一樣的事。 其實(shí)即使是研發(fā)工程師权她,對(duì)增刪改查的認(rèn)識(shí)也是不一樣的虹茶。 很大一部分工程師逝薪,做了很多個(gè)項(xiàng)目隅要,發(fā)現(xiàn)了在每個(gè)項(xiàng)目研發(fā)中,日常做的最多的就是增刪改查董济,大同小異步清,做了很多次重復(fù)了,最終有感而發(fā)虏肾,說出“研發(fā)就是做增廓啊、刪、改封豪、查”谴轮。還有一部分工程師,工作時(shí)間2-3年的吹埠,工作后一直忙著加班做研發(fā)第步,然后有一天發(fā)現(xiàn)每天就是跟數(shù)據(jù)庫(kù)疮装,做的就是增、刪粘都、改廓推、查,這個(gè)時(shí)候迷茫了翩隧,甚至覺得這或許就是真實(shí)的研發(fā)工作樊展。
“增、刪堆生、改专缠、查”的真相
? ? ? ? 研發(fā)真的就是做增、刪淑仆、改藤肢、查嗎?在討論這個(gè)問題之前糯景,我們不妨先來(lái)了解下一門語(yǔ)言 “SQL語(yǔ)言”嘁圈。
? ? ? ? SQL語(yǔ)言里對(duì)數(shù)據(jù)進(jìn)行操作只定義了幾個(gè)關(guān)鍵詞,分別是INSERT, DELETE, UPDATE, SELECT. 這四個(gè)關(guān)鍵詞蟀淮,對(duì)應(yīng)著 插入( 增)最住,刪除,更新(改), 查詢 四種SQL語(yǔ)句怠惶。 為什么sql數(shù)據(jù)操作只有這四種語(yǔ)句涨缚?因?yàn)橹恍枰@四種語(yǔ)句,這四種語(yǔ)句已經(jīng)把數(shù)據(jù)操作的全部行為包含進(jìn)去了:產(chǎn)生新數(shù)據(jù)策治,刪除舊數(shù)據(jù)脓魏,數(shù)據(jù)信息變更,查看數(shù)據(jù)通惫。 從數(shù)據(jù)的視角看茂翔,研發(fā)的實(shí)質(zhì)是數(shù)據(jù)管理,這也是現(xiàn)在“數(shù)據(jù)驅(qū)動(dòng)” 流行的主要原因履腋,數(shù)據(jù)的重要性越來(lái)越受重視珊燎,人們也傾向于把盡可能多的數(shù)據(jù)保存下來(lái),因而誕生了大數(shù)據(jù)遵湖。數(shù)據(jù)管理分兩部分:數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)操作(數(shù)據(jù)分析與挖掘 一般不包含在業(yè)務(wù)項(xiàng)目中悔政,通常會(huì)另設(shè)項(xiàng)目滿足)。數(shù)據(jù)存儲(chǔ)根據(jù)業(yè)務(wù)的特點(diǎn)延旧,選擇用關(guān)系數(shù)據(jù)庫(kù)(如Mysql)或者Nosql數(shù)據(jù)庫(kù)(如MongoDB)谋国,數(shù)據(jù)操作就是增、刪迁沫、改芦瘾、查闷盔。 現(xiàn)實(shí)里的業(yè)務(wù)項(xiàng)目中,90%以上的功能就是新增旅急,刪除逢勾,修改,查詢藐吮,導(dǎo)出(尤其是管理后臺(tái))溺拱,即使是復(fù)雜的功能,也只是增刪改查的各種組合而已谣辞,因此“研發(fā)就是做增迫摔、刪、改泥从、查”句占,這句話其實(shí)是對(duì)的,這就是研發(fā)的真相躯嫉,研發(fā)就是這么簡(jiǎn)單纱烘。
如何行動(dòng)?
? ? ? ?既然已經(jīng)知道了研發(fā)的真相祈餐,而真相又如此簡(jiǎn)單擂啥,就是“增刪改查”,那應(yīng)該如何行動(dòng)呢帆阳?
? ? ? ? 項(xiàng)目研發(fā)管理核心是要做好三點(diǎn):1. 提升效率哺壶;2. 保障質(zhì)量;3. 降低成本蜒谤;如果提升效率和保障質(zhì)量做好了山宾,成本自然就會(huì)大大下降,所以實(shí)際只需要解決提升效率和保障質(zhì)量這兩個(gè)問題鳍徽。這跟“增刪改查”有什么關(guān)系呢资锰? 當(dāng)然有關(guān)系。既然研發(fā)就是做增刪改查旬盯,那只要把增刪改查研發(fā)的效率提升上去了台妆,則總體效率自然就提高了翎猛。 “增刪改查”的功能開發(fā)效率又能提高到什么程度呢胖翰? 前人已經(jīng)做過很多嘗試了,比如Java開發(fā)中Mybatis代碼自動(dòng)生成器切厘,可以把跟數(shù)據(jù)庫(kù)操作(即增刪改查)的常用代碼生成好萨咳;市面上還有一些開源的代碼生成器;還有類似與萬(wàn)能表單代碼生成器(可建表疫稿,自定義配置字段等) 等培他。我早期的時(shí)候曾花了很長(zhǎng)時(shí)間研究代碼生成器鹃两,用于提升研發(fā)效率,經(jīng)過很多次的實(shí)踐舀凛、調(diào)整俊扳、驗(yàn)證,始終覺得不滿意猛遍,最終放棄了這種思路馋记。?
? ? ? ? 代碼生成器雖然能在一定程度上提升研發(fā)效率,但弊端也很明顯懊烤,主要有:
? ? ? ? 1. 出現(xiàn)大量相似(甚至相同)代碼(生成的代碼相似度通常都90%以上梯醒,甚至相識(shí)度達(dá)到99%),維護(hù)代價(jià)大腌紧;
? ? ? ? 2. 往往只是局部代碼茸习,沒有完整功能;
? ? ? ? 3. 往往沒法支持復(fù)雜的邏輯壁肋,若需要支持復(fù)雜業(yè)務(wù)邏輯号胚,需要做大量變更開發(fā)工作;
? ? ? ? 這些弊端浸遗,導(dǎo)致其在一個(gè)公司內(nèi)部中大型項(xiàng)目中涕刚,基本不再被使用。
? ? ? ? 那應(yīng)該怎么做乙帮? 我的思路是:把“增刪改查”做成無(wú)需開發(fā)的功能杜漠,只需要配置即可。配置的形式可以根據(jù)不同語(yǔ)言而定察净,比如PHP驾茴,可以直接用數(shù)組形式進(jìn)行配置。 我把這個(gè)思路定位為“配置驅(qū)動(dòng)開發(fā)”氢卡,把所有常用的功能锈至,組件,包括特殊功能等译秦,都做成可配置項(xiàng)的形式峡捡,最終做到除復(fù)雜的核心業(yè)務(wù)功能需要重點(diǎn)開發(fā)外,90%以上的功能無(wú)需開發(fā)即可完成筑悴,可以極大的提升研發(fā)效率并保障研發(fā)質(zhì)量们拙。
注:下一篇我將重點(diǎn)講解“什么是配置驅(qū)動(dòng)開發(fā)”。 請(qǐng)各位讀者多給些反饋阁吝,覺得寫得不錯(cuò)的給個(gè)贊砚婆,覺得寫得爛的拍個(gè)磚。