The Silver Bullet Syndrome by Hadi Hariri 看後感
最近看到這一段 演講 覺得很有意思,想在這裡分享一下。演講者在討論程式設計師們不斷盲目地追逐新的技術。
演講大意
雖然這個演講大約花了 50 分鐘,但是頭 35 分鐘都是用例子來說明我們在怎樣在追逐新的技術。
在最後 15 分鐘才是作者真正想帶出的東西。
我們以寫程式來解決我們現在的問題,然後我們發現我們在寫程式的時候,寫程式的技術也有一些不足。
因此,我們不斷創立新的技術(例如新的程式語言 / 框架),試圖解決現有技術的問題,然後它們再產生新的問題。
我們想要有一顆銀彈去解決我們所有的問題。但是這顆銀彈並不存在。因為每種技術 / 解決方法 只會在某個情境下能夠發揮作用,同一個方法到了另一個不同的情境下,也許會完全無效。
例如,大人物們的公司正在使用這套技術,不代表我們也要在使用,因為大家要解決的問題不同、公司的規模和對技術的容錯能力也不同。
除了因為希望這顆不存在的銀彈能解決所有問題外,大家因為以下的原因決定使用新的技術:
- 一些大人物說他們的公司正在使用這套技術,所以我們也跟著用。
- 因為求職時認識很多新技術會增加成功機會,所以我們也跟著用。
- 因為大家都在學這個,所以我們也要跟著學這個。
技術人員都很熱衷於去學習使用新的技術。但不斷盲目地學習新的技術能否為自己帶來價值?
講者認為,我們決定去 學習 / 使用 一個新的技術,不是因為以上的三個原因。
學習新技術的原因是建基於我們要去解決甚麼問題,而能否解決問題才是程式設計師的價值。
例如,寫程式和更新程式不是我們的目標,「解決現有的問題」 / 「能否以更少的資源來解決問題」 / 「解決了這個問題後能為公司省下金錢」 等等才是我們的目標。
例如,使用這個技術後,使用的 電腦資源 / 人力資源 是否會減少?日後維護這個系統的成本會否減少?
講者認為,我們要是為了解決一個問題去使用一個新的技術,我們還要考慮到:
- 技術的成熟度:大公司們可以使用一些相對沒有這麼成熟的技術,因為這個技術有問題時他們有足夠的資源去解決,但是不夠資源的小公司們不能。
- 技術的學習曲線:學習這個技術的時間會否比使用現有的技術來解決問題更省時間?
- 使用一項新技術的機會成本:這包括學習的時間、這些時間所帶來的金錢成本、把現有技術轉移到新技術的成本等等。
希望我沒有曲解講者的意思。講者不是叫我們不去學習任何新技術(因為理論上使用現有的技術也可以解決大部份的問題),講者是叫我們不要盲目地使用新的技術。
新的技術還是要去學習,但是不要盲目地把新的技術硬套在現有的問題上。因為這個技術可能沒有來得比一個舊一點的技術解決這個問題來得有效。
如果你覺得這個內容有用,不妨分享給你的朋友。
這是我的 Facebook、Twitter、Instagram 和 Threads,有興趣的話歡迎 Follow。
如果你認為我的文章有幫助,歡迎 請我喝一杯咖啡。