天天看點

一個故事告訴你什麼才是好的程式員

一個故事告訴你什麼才是好的程式員

從一個故事說起

在應用開發如此友善的今天,我總是會聽到有些人有這樣的疑問,“隻是做 應用 開發的話,還有沒有必要學習諸如作業系統,編譯原理這樣的課程呢?”,亦或是會聽到這樣的話,“會用這個架構就行了,它底層是怎麼實作的不用去管。”還記得我在大一學 C 語言的時候,就聽過有同學說我以後是想從事 Java 開發的,C 語言這種學來應付一下考試就行,指針什麼的其他語言又沒有,就不用去管啦。

真的是這樣嗎?剛好今天看到一個有意思的故事,從故事中我看到了答案,這個故事是是艾薩克·阿西莫夫 的科幻巨作《基地》中的一個片段。故事是這樣的:

在銀河系中,随着戰争的蔓延,文明從銀河系邊緣開始逐漸退化,許多星球雖然還保留着核電站等高科技産品,但是已經不知道它們是如何運作的。

而有這樣一顆小行星,我們暫且稱之為 科技星 吧,在大戰爆發前它搜集了銀河系中的各種科學文獻,并且彙聚了一大批的頂尖科學家。這顆小行星沒有被卷入戰争,而是将技術一直傳承下去。

科技星周圍的星球觊觎它所擁有的高科技,想将之奪取。而科技星又沒有自保的武裝力量,在這種情況下,科技星如何自保呢?這裡最有意思的地方,正是科技星所使用的科技宗教的戰略。

當後來其他星球上的高科技出現問題的時候,會向科技星求救。科技星就會派遣工程師前去維修,但是呢,他們将各種身份都進行包裝,比如,工程師不叫做工程師,而是叫做“僧侶”,核電站也不叫做核電站,而是叫“聖殿”,維修也不叫做“維修”,而是叫做“祈禱”,也就是說,對核電站維修這一項工作完全被宗教化了!

而此時科技星提供的說法是這樣,因為這顆星球上的人做了壞事,比如違反法規,發動戰争等等,觸犯了神靈,是以神靈剝奪了他們使用能源的權力。而如果想要恢複能源,就必須對自己的行為忏悔,祈求神靈的原諒。是以當工程師進入核電站進行維修的時候,所有的星球居民一起下跪祈禱,而當核電站恢複的時候,大家紛紛稱頌神的偉大。

為什麼那些擁有核電站星球的人們會對來維修的工程師“膜拜祈禱”呢?其根本原因還是在于核電站這樣的高科技對他們而言是神秘的,未知的東西。 盡管他們擁有這樣高科技的東西,卻沒有與之比對的認知和知識儲備。

再回過頭來看看一開始的問題,你是否明悟了呢?我們也是掌握着上層應用架構這種“高科技”,我們知道怎麼去配置,怎麼去調用,就像上面故事中普通星球的人知道怎麼啟動,關閉核電站一樣。但一旦出了無法解決的問題,或者是遇到了什麼性能瓶頸,似乎我們能做的,隻能去各種技術群裡,找那些大神“祈禱”了。

再來說說人工智能

在今天,人工智能這個名詞已經逐漸為人們所熟知。而未來,人工智能的應用場景隻會越來越廣泛,面向 AI 程式設計也必然會是一種趨勢。

那麼現在從事于 Web 或是 Android 等應用開發的程式員需要去學習機器學習或是深度學習相關的知識嗎?我的回答是 YES 。有人說我又不想從事于人工智能的開發工作,為什麼還要去學它呢呢?我想說的是,為了避免成為上面故事中那些普通星球的居民。再過幾年,當你碰到一個會跟你說話的機器人或是更加奇妙的事物的時候,我們應該是對它的一些實作細節感興趣,會有探究的欲望。而不是在那裡感慨着造物主真偉大,竟能造出一個這樣神奇的東西。

話又說回來,在機器學習或是深度學習的學習過程中其實也很容易陷入到這種隻會調用上層 API 而不知底層原理模型的境地。因為在今天,有很多庫類都可以讓你輕松實作一條語句就直接使用某個算法模型,是以很多人就不再專注于對底層模型原理的學習。在機器學習的學習過程中,相信大多數人應該都看過這樣一張圖,

一個故事告訴你什麼才是好的程式員

我們來看看這張圖中 Hacking Skills 和 Substantive Expertise 的交界處,這裡叫 Danger Zone,即危險區。意思是如果你隻會程式設計和調用機器學習的 API,調參數,那麼你就處于一種很危險的境地。

結語

一個好的程式員,不應當滿足于學習到了什麼新的技術或者學習了什麼新的算法模型。真正有價值的東西,往往是那些人們不樂意去學的底層的,枯燥的内容。

我們應該認識到,單單隻會上層應用開發或隻會調包調模型而不懂底層原理,那這種開發人員的知識體系便如空中閣樓。看起來華麗壯觀,但實際上卻地基不穩。一旦出現一點問題這座閣樓便會頃刻崩塌,并且無計可施,隻能到處“祈禱”。

對未知的事務保持好奇,不斷學習,探究事物的本質,原理。在我看來,這才是程式員之道。

繼續閱讀