我對自己有了新的發現——上天給了我神奇的能力,讓我總能做出正確的技術選擇。
有些誇張,但的確很神奇。
回首我的開發生涯,我認為我使用的任何一種程式語言都是在當時那種場景下最好的。
同樣的,我選擇的框架,甚至作業系統也是最好的。
是的,我有這樣驚人的能力,就是從技術的海洋中挑出最好的。這些技術我甚至不用親自試一遍,但我卻極力捍衛我的選擇。
可能當你在閱讀本文的時候,你已經發現了你也有這種神祕的能力。
大多數開發者有技術信仰
這是真的。
不要不好意思,你不是一個人。我,幾乎每一個人,都與你同在。
我們有些人已經從這種自我洗腦中清醒過來。另一些人則還非常幸福地並沒有意識到我們所處的困境。但是我們中的大部分人至少擁有一個為自己信奉的技術信仰。
這很自然,因為大多數程式設計師進入軟體開發這個領域是因為他們對軟體開發充滿了熱情。任何你熱愛的事情都非常容易導致你對它產生一些非常不客觀的看法。
拿體育迷來舉個例子,我自己並不是一個體育迷,但我知道不同種類運動的粉絲篤信他們支援的隊伍是最棒的,儘管所有的證據都指向了相反的方向。
對自己選擇和想法的捍衛是人類的天性。我們容易採納新的相法,但是我們虔誠地捍衛我們已有的,而不需要太多的證據來支援他們。問題在於我們傾向於把我們對事情的看法與我們的身份,甚至我們作為人的價值捆綁在一起。
需要靈魂深處的搜尋,但是如果你看一下你自己,你很有可能會發現,你可以列舉出最好的作業系統,程式語言以及框架等等。
無知不是福
這種自我強加的信仰導致的問題是,它讓我們看不到真相。
在我真正使用了一臺Mac之前,我曾經花了無數時間爭論它為什麼這麼垃圾。具有諷刺意味的是,我現在正在一臺Mac上面寫這篇文章,但是我通過遠端桌面使用Windows Live Writer來寫。
我的觀點是,我們大多數人極力爭辯我們選擇的技術是最好的,而甚至沒有嘗試過別的技術。
想象一下,似乎很可笑。但是甚至今天,我都能發現我還是這樣。
當我審視自己,問自己為什麼的時候,我發現,大部分動機來自於我對我所學到的和掌握的知識的自豪和對我所不知道的知識的恐懼這兩者的結合。
我發現,如果花一些時間學習一門技術並瞭解為什麼別人這麼喜歡它,我就不會如此輕易地把我不知道的技術當做“垃圾”或者“廢物”一樣扔掉。正如他人所說,一個人的垃圾正是另一個人的寶藏。
關於無腦信仰的問題
即使我不告訴你,你也知道,在這個世界上,無腦(腦殘)的狂熱是一股毀滅性的力量。你只需要去你最喜歡的國家新聞網站或者讀一點歷史就知道怎麼回事了。
雖然沒有太多程式設計師會為 PHP vs C# 這樣的問題而大動干戈——儘管我曾在這樣一次相似的、挑釁性的、如今我極力反對的討論中被指責不該丟椅子——很多開發者還是喜歡大聲爭論自己的意見,甚至盛氣凌人地推翻他人的工作。我相信你們一定看到過很多這樣的情景——如果你們常常上網的話。當我大膽的發表一些關於JavaScript的負面文章時,我自己也吞下了這樣的苦水
所以,我們可能覺得,我們的無知並沒有傷害任何人,並且我們覺得他們活該因為他們明顯是錯的,然而真相是,我們的無知造成了相當多的破壞。
回首過去,我感到非常羞愧,因為我將Perl程式設計師貶低得一無是處,完全否定他們的勞動成果,並且非常無知地推舉我神聖的靜態類C語言為可以淨化他們的唯一救世主。
但是最重要的是,我發現我傷害的其實是我自己。
別再打自己臉了,蠢貨!
我職業生涯最大的成長得益於,在我尋找一份C#開發的工作時,得到了一個非常好的機會去做一個JAVA專案的架構師。
我被這個決定折磨得夠嗆。因為我認為JAVA是垃圾、是邪惡的。JAVA缺少像C#那樣的屬性,需要手寫getter和setter,所以每一個寫JAVA程式碼的人明顯是蠢貨。
我幾乎沒有接受那份工作,但是我覺得待遇很好,可以勉強一下自己忍一忍過去算了,就像一個戰俘等待有一天我的微軟大帝可以拯救我。我想,我至少得脫離那種噁心的JAVA寫法。
然而,經過了一些年的開發,編寫良好的JAVA程式碼單元測試之後,我發現,其實不僅JAVA沒那麼屎,這個語言的一些長處和一些JAVA框架也值得稱讚。
更重要的是,我開始意識到我過去的程式碼偏執使我關上了很多扇門。我開始覺得,可能我過去所有的技術選擇都不一定是最好的。我開始思考,其實許多最流行的技術,它們之間並沒有那麼大的區別。
我開始意識到,相對於無腦崇拜某個我湊巧選擇的技術,廣泛地理解一系列技術和程式語言可以使我變得更有價值。
現在,我發現我對單個的技術理解得特別快,因為不再是“閉門造車”,我可以用我的大腦去比較和對比不同程式語言和技術之間的區別,這樣使我對所有的一切都有了更深的理解。
說了這麼多,我的觀點就是,對技術的選擇持封閉態度最後只會傷害你自己並限制你作為一個開發者的個人成長。
(這裡又兩本很好的書可以幫助你打破這些壁壘:《七週七種語言》和《七週七資料庫》)
沒有最好的
在結束這篇文章之前,但願你能相信我說的”世上沒有最好的技術或者程式語言“。
我不是在用說程式語言各有各的好、各自處理不同的情況來侮辱你的智商,。因為真相遠比這個深刻。
在製作了超過40部非常廣泛的技術和程式語言的課程之後,我發現了一些真相。
- 真相是,有很多很好的方法能做成同一件相同的事情,使用不同的工具和技術。
- 真相是,所有的程式語言和技術都有一些大錯誤和大弱點。
- 真相是,你學的不同技術越多,你越能發現大多數技術核心的東西是非常相似的。我指的是,編寫軟體的核心概念,無關乎技術和程式語言語法。
跟我一樣,你也會發現,如果你願意接受其他技術並且承認自己的無知,並從中學習,那麼,不管你去了哪裡,你都會找到很多樂於助人的友好人士,他們非常樂於把他們知道的東西教給你。
本文最初發表在 brotherb 上。