每一年都會在軟體工程領域中出現新的趨勢,其中一些很快陷入困境,而另一些則從根本上顛覆了軟體的開發方式。
當任何一種創新成果帶著巨大的吸引力出現在我們面前時,人們會很快開始積極湧入,而這又會引導更多本打算旁觀的人參與其中。
每隔一段時間,又會出現一種不同於其他的創新 (有時候也表現為就有技術再復甦)。這種創新由其中的某一特定實現所驅動,以NoSQL浪潮為例,其就受到了MongoDB出現及快速崛起的重大推動。
這不是把列數據庫、鍵值存儲和其他多種數據存儲類型都混到NoSQL這個陣營了嗎?是的,但那個時候這種混淆就是現實,而且非常嚴重。每個人都高舉著NoSQL的旗幟,每個人都說他們離不開NoSQL,但實際上他們並沒有真正理解其中涵蓋的不同技術元素。對很多人來說,MongoDB實際上就是NoSQL。
如過這些組織能夠在做出技術選擇之前先拿點時間按部就班進行一番思考,則完全能漚避免這樣的折騰。
只要提出兩個主要問題,就足以合理評估眾多技術方案。但其中的挑戰在於要找到能負責任地回答這些問題的人,他們必須願意花時間回答這些問題,同時確保答案中不存在任何偏見。
問題一:我打算解決什麼問題?
如果沒有遇到某些特定問題,就不需要引入新的工具。而且,不要拿著解決方案反過來尋找問題,這是一種為了使用工具而使用工具的行為。換言之,如果不存在能夠證明新技術優於現有技術的具體需求,那麼就不要費力做這些沒必要的決策。
在這種情況下,我們不仿從最簡單的層面出發:
問題二:我放棄了什麼?
這個問題是更難回答的,因為我們必須對舊有/新的技術都要有很好的理解。有時候只有在實際利用新技術構建某些方案之後,我們才能理解該技術的真正內涵。或者,我們也可以找到那些曾在新技術投入過大量時間的實踐者並聽取他們的意見。
如果這兩種方法都不可行,那麼我們就真的需要考慮如何透過最小投資確定該工具是否具有價值。而且,如果進行了前期投資,又是否會增加撤銷計劃的難度?
* 從眾心理 – 每個人都聽過這種說法,但卻仍然很難擺脫出來。總之,請確保在選擇技術時,完全是因為它能夠解決您的實際需求,而非某些看似很牛的家伙也在做同樣的事。
* 厚今薄古 – 不少軟件開發人員總是傾向於低估長久以來使用的原有技術,同時過高估計新技術帶來的好處。這不是軟件工程師所特有的問題,每個人骨子裡都有點這樣的毛病。
* 存在偏見 – 我們都傾向於關注已經存在的情況,並忽略尚不明確的情況。而這一點與“厚今薄古”心態交織起來,有可能造成嚴重的破壞。因為這意味著我們不僅在本質上就更認可新技術,同時也在刻意忽略新技術中存在的弊端。
* 客觀地看待事物是一種挑戰,而了解並努力克服可能影響判斷的偏見,將幫助大家做出更為合理的決策。
如果您無法自信地回答這兩個問題,請退後一步重新進行評估。
那麼,讓我們回到主題:MongoDB 到底是不是理想的數據庫選項?是的,它當然是。但與大多數軟件工程問題一樣,這得分具體情況。對於那些為這兩個問題找到了確切答案的團隊而言,其中很多人發現了實際價值,並正在不斷挖掘 MongoDB 的巨大潛力。而對於那些還沒有回答這些問題的朋友,希望大家能夠從中掌握一些應對炒作周期的寶貴教訓——也祝願各位不要在學習過程中付出過高的代價。
https://www.infoq.cn/article/IBiwY6kdAuermcVwotxL
當任何一種創新成果帶著巨大的吸引力出現在我們面前時,人們會很快開始積極湧入,而這又會引導更多本打算旁觀的人參與其中。
每隔一段時間,又會出現一種不同於其他的創新 (有時候也表現為就有技術再復甦)。這種創新由其中的某一特定實現所驅動,以NoSQL浪潮為例,其就受到了MongoDB出現及快速崛起的重大推動。
這不是把列數據庫、鍵值存儲和其他多種數據存儲類型都混到NoSQL這個陣營了嗎?是的,但那個時候這種混淆就是現實,而且非常嚴重。每個人都高舉著NoSQL的旗幟,每個人都說他們離不開NoSQL,但實際上他們並沒有真正理解其中涵蓋的不同技術元素。對很多人來說,MongoDB實際上就是NoSQL。
如過這些組織能夠在做出技術選擇之前先拿點時間按部就班進行一番思考,則完全能漚避免這樣的折騰。
只要提出兩個主要問題,就足以合理評估眾多技術方案。但其中的挑戰在於要找到能負責任地回答這些問題的人,他們必須願意花時間回答這些問題,同時確保答案中不存在任何偏見。
問題一:我打算解決什麼問題?
如果沒有遇到某些特定問題,就不需要引入新的工具。而且,不要拿著解決方案反過來尋找問題,這是一種為了使用工具而使用工具的行為。換言之,如果不存在能夠證明新技術優於現有技術的具體需求,那麼就不要費力做這些沒必要的決策。
在這種情況下,我們不仿從最簡單的層面出發:
問題二:我放棄了什麼?
這個問題是更難回答的,因為我們必須對舊有/新的技術都要有很好的理解。有時候只有在實際利用新技術構建某些方案之後,我們才能理解該技術的真正內涵。或者,我們也可以找到那些曾在新技術投入過大量時間的實踐者並聽取他們的意見。
如果這兩種方法都不可行,那麼我們就真的需要考慮如何透過最小投資確定該工具是否具有價值。而且,如果進行了前期投資,又是否會增加撤銷計劃的難度?
人性總會把事情弄糟
我們必須記住,在嘗試以客觀中立的方式回答這些問題時,總會有人性因素跑出來作祟。為了有效評估技術,我們必須克服一系列認知偏見,下面僅舉幾例:* 從眾心理 – 每個人都聽過這種說法,但卻仍然很難擺脫出來。總之,請確保在選擇技術時,完全是因為它能夠解決您的實際需求,而非某些看似很牛的家伙也在做同樣的事。
* 厚今薄古 – 不少軟件開發人員總是傾向於低估長久以來使用的原有技術,同時過高估計新技術帶來的好處。這不是軟件工程師所特有的問題,每個人骨子裡都有點這樣的毛病。
* 存在偏見 – 我們都傾向於關注已經存在的情況,並忽略尚不明確的情況。而這一點與“厚今薄古”心態交織起來,有可能造成嚴重的破壞。因為這意味著我們不僅在本質上就更認可新技術,同時也在刻意忽略新技術中存在的弊端。
* 客觀地看待事物是一種挑戰,而了解並努力克服可能影響判斷的偏見,將幫助大家做出更為合理的決策。
總結
當某一創新成果出現 (或者復甦) 時,我們需要非常謹慎地回答以下兩個問題:- 這款工具是否能為我們解決實際問題?
- 我們是否真正理解該工具在開發中所做出的權衡?
如果您無法自信地回答這兩個問題,請退後一步重新進行評估。
那麼,讓我們回到主題:MongoDB 到底是不是理想的數據庫選項?是的,它當然是。但與大多數軟件工程問題一樣,這得分具體情況。對於那些為這兩個問題找到了確切答案的團隊而言,其中很多人發現了實際價值,並正在不斷挖掘 MongoDB 的巨大潛力。而對於那些還沒有回答這些問題的朋友,希望大家能夠從中掌握一些應對炒作周期的寶貴教訓——也祝願各位不要在學習過程中付出過高的代價。
https://www.infoq.cn/article/IBiwY6kdAuermcVwotxL
留言
張貼留言