無腦的信仰是如何毀掉程式設計師

評論
評論

Fotolia_53501567_XS-560x373

 

(本文翻譯自 How Religion Destroys Programmers,最初發表在 brotherb外刊評論 上。)

我對自己有了新的發現——上天給了我神奇的能力,讓我總能做出正確的技術選擇。有些誇張,但的確很神奇。 回首我的開發生涯,我認為我使用的任何一種程式語言都是在當時那種場景下最好的。 同樣的,我選擇的框架,甚至作業系統也是最好的。是的,我有這樣驚人的能力,就是從技術的海洋中挑出最好的。這些技術我甚至不用親自試一遍,但我卻極力捍衛我的選擇。

可能當你在閱讀本文的時候,你已經發現了你也有這種神秘的能力。

大多數開發者有技術信仰

這是真的。不要不好意思,你不是一個人。我,幾乎每一個人,都與你同在。

Fotolia_52594846_XS_thumb

我們有些人已經從這種自我洗腦中清醒過來。另一些人則還非常幸福地並沒有意識到我們所處的困境。但是我們中的大部分人至少擁有一個為自己信奉的技術信仰。這很自然,因為大多數開發者進入軟體開發這個領域是因為他們對軟體開發充滿了熱情。任何你熱愛的事情都非常容易導致你對它產生一些非常不客觀的看法。

拿體育迷來舉個例子,我自己並不是一個體育迷,但我知道不同種類運動的粉絲篤信他們支持的隊伍是最棒的,儘管所有的證據都指向了相反的方向。

對自己選擇和想法的捍衛是人類的天性。 我們容易採納新的想法,但是我們虔誠地捍衛我們已有的,而不需要太多的證據來支持他們。 問題在於我們傾向於把我們對事情的看法與我們的身份,甚至我們作為人的價值捆綁在一起。需要靈魂深處的搜索,但是如果你看一下你自己,你很有可能會發現,你可以列舉出最好的作業系統,程式語言以及框架等等。

無知不是福

這種自我強加的信仰導致的問題是,它讓我們看不到真相。在我真正使用了一台 Mac 之前,我曾經花了無數時間爭論它為什麼這麼垃圾。具有諷刺意味的是,我現在正在一台 Mac 上面寫這篇文章,但是我透過遠端桌面使用 Windows Live Writer 來寫。

我的觀點是,我們​​大多數人極力爭辯我們選擇的技術是最好的,而甚至沒有嘗試過別的技術。

想像一下,似乎很可笑。但是甚至今天,我都能發現我還是這樣。

當我審視自己,問自己為什麼的時候,我發現,大部分動機來自於我對我所學到的和掌握的知識的自豪和對我所不知道的知識的恐懼這兩者的結合。

我發現,如果花一些時間學習一門技術並了解為什麼別人這麼喜歡它,我就不會如此輕易地把我不知道的技術當做“垃圾”或者“廢物”一樣扔掉。 正如他人所說,一個人的垃圾正是另一個人的寶藏。

關於無腦信仰的問題

即使我不告訴你,你也知道,在這個世界上,無腦 (腦殘) 的狂熱是一股毀滅性的力量。你只需要去你最喜歡的國家新聞網站或者讀一點歷史就知道怎麼回事了。

Fotolia_53739553_XS_thumb

雖然沒有太多開發者會為 PHP vs C#這樣的問題而大動干戈 ——儘管我曾在這樣一次相似的、挑釁性的、如今我極力反對的討論中被指責不該丟椅子——很多開發者還是喜歡大聲爭論自己的意見,甚至盛氣凌人地推翻他人的工作。我相信你們一定看到過很多這樣的情景——如果你們常常上網的話。當我大膽的發表一些關於 JavaScript 的負面文章時,我自己也吞下了這樣的苦水

所以,我們可能覺得,我們的無知並沒有傷害任何人,並且我們覺得他們活該因為他們明顯是錯的,然而真相是,我們的無知造成了相當多的破壞。回首過去,我感到非常羞愧,因為我將 Perl 程序員貶低得一無是處,完全否定他們的辛苦成果,並且非常無知地推舉我神聖的靜態類 C 語言為可以淨化他們的唯一救世主。

但是最重​​要的是,我發現我傷害的其實是我自己。

別再打自己臉了,蠢貨!

我職業生涯最大的成長得益於,在我尋找一份 C#開發的工作時,得到了一個非常好的機會去做一個 JAVA 計劃的架構師。我被這個決定折磨得夠嗆。因為我認為 JAVA 是垃圾、是邪惡的。JAVA 缺少像 C#那樣的屬性,需要手寫 getter 和 setter,所以每一個寫 JAVA 代碼的人明顯是蠢貨。

我幾乎略過那份工作,但是我覺得待遇很好,可以勉強一下自己忍一忍過去算了,就像一個戰俘等待有一天我的微軟大帝可以拯救我。我想,我至少得脫離那種噁心的 JAVA 寫法。然而,經過了一些年的開發,編寫良好的 JAVA 程式單元測試之後,我發現,其實不僅 JAVA 沒那麼屎,這個語言的一些長處和一些 JAVA 框架也值得稱讚。

更重要的是,我開始意識到我過去的程式偏執使我關上了很多扇門。 我開始覺得,可能我過去所有的技術選擇都不一定是最好的。我開始思考,其實許多最流行 ​​的技術,它們之間並沒有那麼大的區別。

我開始意識到,相對於無腦崇拜某個我湊巧選擇的技術,廣泛地理解一系列技術和程式語言可以使我變得更有價值。 現在,我發現我對單個的技術理解得特別快,因為不再是「閉門造車」,我可以用我的大腦去比較和對比不同程式語言和技術之間的區別,這樣使我對所有的一切都有了更深的理解。

說了這麼多,我的觀點就是,對技術的選擇持封閉態度最後只會傷害你自己並限制你作為一個開發者的個人成長。

(這裡有兩本很好的書可以幫助你打破這些壁壘:「Seven Languages ​​in Seven Weeks」「Seven Databases in Seven Weeks」 )

 

沒有最好的

在製作超過 40 部非常廣泛的技術和程式語言的 Pluralsight 課程 之後,我發現了一些真相。真相是,有很多很好的方法能做成同一件相同的事情,使用不同的工具和技術。

真相是,所有的程式語言和技術都有一些大錯誤和大弱點。

真相是,你學的不同技術越多,你越能發現大多數技術核心的東西是非常相似的。我指的是,編寫軟體的核心概念,無關乎技術和程式語言語法。

跟我一樣,你也會發現,如果你願意接受其他技術並且承認自己的無知,並從中學習,那麼,不管你去了哪裡,你都會找到很多樂於助人的友好人士,他們非常樂於把他們知道的東西教給你。

(ps:讀了這篇部落格,你可能會認為我是個偽君子,因為不久以前,我聲稱 C++ was not back 以及 JavaScript was doomed )。但我認為,我在這兩篇文章中說的是實話,而且我不認為這和我在這篇文章中說的相矛盾。對實際使用過的技術持批判態度是可以的。你沒必要喜歡所有的東西。我的觀點是,儘管,因為現如今的諸多程式問題,我不喜歡 C++,而且我覺得 JavaScript 不是做 Web 的最優雅的語言,但我承認這兩種語言有他們的長處,並且他們在很多情況下是有效的選擇。)

 

相關文章

評論