歡迎光臨
每天分享高質量文章

程式員,你能真正掌握多少程式設計技術?

(點選上方公眾號可快速關註)


英文:Andrew Wulf,編譯:伯樂線上 – HansDo


我總能看到一些公司在招聘廣告裡這樣描述他們的崗位要求:“有豐富的從零開始構建 iOS 及 Android 應用的經驗;精通移動及 Web 技術,包括 Java、HTML5、CSS3、JavaScript 和 AJAX。“


(可世上根本)沒有這樣的人:一個人只能真正精通一個(技術方向),而在其他方向上技術平平。你也可以在精通一門技術後轉而鑽研另一種技術,(但這會讓你很快)忘掉前者的很多細節。這樣或許已經足夠讓你輕鬆唬住很多人,讓他們認為你無所不能、無所不曉——但真遇上棘手的問題,你也只能靠運氣了。


今時不同往日,當代任何一個主流領域的技術都相當複雜,並且不斷地變化,需要人投入大量時間。只是利用業餘時間學習的話,連保持跟進某個技術領域的最新動態都很困難,更不用說從零開始“精通”這項技術了。因此,只有參與一個真實的專案才能讓你真正學習一套新的(技術)環境。而能夠同時參與開發大型原生 Android、iOS 應用以及響應式 Web 客戶端程式的又有多少人?


在過去 34 年的程式員生涯裡,我很少同時在多個技術領域上工作。我的第一份工作是在 Supermini 上開發,後來用 Apple 寫 6502 彙編、在PC 上寫 Pascal,我的兩個創業公司的開發環境都是 Mac 和 C。在為別的公司(包括 Apple)工作時, 我先後用過 C、一點 C++、Objective-C/WebObjects, 然後轉向基於 Java 的 Web 前後端開發(但很少同時開發這兩者)。再後來,我寫了一些 JavaScript,做過基於 C++ 的遊戲程式設計, 最後,就是我現在做的: Objective-C 和 iOS。為了掌握各種新知識,這中間的每次技術轉變我都花了幾年時間一邊做一邊進行大量的學習。


如果出於某些原因,有人真的能夠同時精通 Android 和 iOS,甚至是 Web ,那麼作為一個真正的全才,我想他的期望薪酬會遠遠高出多數公司願意給出的價格:公司實際上只想以最低的工資水平招幾個“什麼都能做”的人以節約成本。我至今無法理解有人能夠同時成為許多方面的專家,以及他們怎麼能同時掌握不同的技術、開發不同平臺的應用並與時俱進。我認識一些才華橫溢的人,但我不記得有哪一個能夠像耍雜耍一樣將多種技術玩弄於股掌之上,並開發出能體現精湛技藝的應用。


好吧,可能會有一些例外吧,但是我始終認為多數人做不到這一點。一個人固然能先精通一種技能,然後再嘗試精通另一個,但這個過程中必然會忘記很多前面的知識。去年我有幾個月無所事事,等著被公司解僱(公司所有的技術都早已經落伍被替代了,他們開始把整個品牌打折出售,所以顯然我的下崗也只是早晚的問題)。我花了一個月做了一些 C++ 開發,然後是 Node.js, 最後還搞了一段時間 Swift。今年再回顧這些學過的技術時(我的新工作用的是 Objective-C),我發現我已經忘了之前學到的大多數內容。如果不是經常使用的東西,肯定會很快被忘到腦後。當我用 PHP 重新搭建我現在這個部落格系統時,我掌握過的各種語言在我腦袋裡全都糊成了一片。


如果你用過 Objective-C、然後使用 Swift 做 iOS 開發的話,那至少兩者還有一部分重疊。不過 Android 開發跟 iOS 相比可不僅僅只是另一種語言的差別了:你需要掌握完全不同的開發工具、佈局方法,以及如何支援多個版本的作業系統,並相容 24000 多種安卓裝置。另一方面,單單要跟上今年六月 WWDC 裡釋出的新變化就要花很大的功夫,Apple 釋出的示例程式碼並不相容最新 beta 版的 Xcode 更是雪上加霜。 就算你能不寫程式碼,每天能看完最新的影片、讀完最新的檔案和示例程式碼,不過這樣你又哪來的勇氣稱自己是個專家呢?


除了安卓和 iOS 這兩個截然不同的複雜移動開發環境,現在的 Web 開發也添了不少亂,尤其是此起彼伏層出不窮的各種 JavaScript 框架, 要跟隨它們的變化真得有三頭六臂才行。而且從跟我共事過的 JavaScript 程式員來看,他們甚至連一個框架的變化都跟不上(嗯,我說的就是 AngularJS)。


所以如果你找到這樣一個人選,他/她:iOS 和 Android 開發不在話下、JS 桌面/移動端 Web 程式設計小菜一碟;熟練運用現代風格的 API 又能相容各個老版本 OS,各種 UI 設計方式優劣如數家珍,諸多瀏覽器特性及安卓裝置特例瞭然於胸,還總能以破紀錄的時間交付無 Bug 的產品…那你就真的賺大了——對了,他應該還願意以低於市場價為你工作。


回想我開始程式設計那會,一切都原始而簡單。我只需要掌握一種語言,一種作業系統,而不需要任何框架。即使在我的兩家初創公司,我也只需要掌握 C 語言,瞭解 Macintosh 和偶爾的一些 68K 彙編。時代變了,但我們還是隻有一個並不遵循摩爾定律、也沒法升級的大腦。


最後,假如你能(真正的)同時做 Android、iOS 和移動 Web 開發,並寫出大師級的作品的話,我要向你致敬!當然同時,我也希望你也能拿到你應得的三倍酬勞。

看完本文有收穫?請轉發分享給更多人

關註「資料分析與開發」,提升資料技能

贊(0)

分享創造快樂