曾經翻譯了一篇文章《現在雲戰爭(真的)開始了》 最後埋了個坑,說要寫寫雲時代到來後程式設計師該何去何從?時間倏一下就過去了兩個月,要是再不及時填坑,久了可能就忘了。
變遷
如果雲時代如我們今天所設想的那般,雲端計算如水電氣一般成為網際網路的基礎設施,無所不在般的到來,那這的確又是一個巨大的技術時代變遷,而感覺上一次我所經歷的技術變遷是從傳統的 IT 到網際網路。
和別的行業不同,成為程式設計師不僅需要持續保持學習,更重要的是保持足夠快速的學習和適應能力。IT 技術的變化發展似乎就像一列火車,它按自己的時刻表轟隆隆向前,你只能按它的節奏和速度去乘車,並跟隨它向前奔行。
從我個人接觸的第一門程式語言 BASIC 算起,差不多有二十年了,我發現我每一次更換主程式語言似乎都對應著技術變遷。BASIC 算是我中學階段的程式設計啟蒙語言,後來到大學後開始學習 C 語言,但大學快畢業參加實習時,發現市場上需要更多使用類似 PB、Delphi 這類拖拽式整合開發工具來開發企業 C/S 應用,那時正是 C/S 應用的紅火年代。
再後來實習完後我沒去工作,考了研究生。兩年後,進入銀行做金融交易類系統,那時用的一種比較特殊的可以嵌入 SQL 語句的 C 語言,好像叫 Pro C(假如沒記錯的話)來做後端服務程式。不過當時技術的發展變化是 B/S 結構開始逐步取代 C/S 結構的程式,Java 的 J2EE 有些開始側漏出王霸之氣,不斷攻城略地,當時另一家國有大行已經開始逐步用 Java 來取代 C 實現交易系統。那時很多技術人員都在懷疑 Java 的效能是否能支援這麼大交易量的系統,如今想必大家都不會有類似的顧慮了,而去年雙十一支付寶已經登頂全球最高併發的金融交易系統了。
而從進入研究生開始我就一直自學 Java,雖然工作頭一年維護和編寫了不少 Pro C 的程式。一年後,我跳槽了,換到了電信行業,做運營支撐系統,從此一直使用 Java 作為主程式語言到現在。在此期間為了做 Web 開發也用過 Javascript,幾年前移動網際網路火起來時,還看過一下 iOS 的 Objective-C,但沒多久蘋果推出了 Swift,覺得還是專注點好,就放棄了。期間後端語言比較有亮點的是 Google 的 Go 語言,但也就是剛出時瞭解了一下,一直保持觀望。如今卻是想明白了,雖然程式語言經常推陳出新,代表了一些技術潮流的趨勢,但並不重要,也不需要隨時保持跟進。一定時期內你只需要精通一門主流語言,何謂主流去 TIOBE 看看排名就知道了,結合你的實際工作環境需求在一門主流語言上做到精通。
如果雲時代到來是否意味著我們程式設計開發模式的徹底變化?其實我現在已經不畏懼這個了,對於一個跟得上學習節奏要求的程式設計師來說,任何語言或開發模式的變化未來你都可以快速的學會。有時候我們感覺技術變遷眼花繚亂,似乎跟不上了,一些新東西新名詞完全沒聽說過,這太正常了。環境每天都在變化,雖然我們需要快速的技術變遷適應性,但並不是隨時隨地的適應性。
有一種動物叫蠑螈,這個物種的歷史可夠悠久的了,是侏羅紀中期演化的兩棲類中的一類。
這種生物適應能力太強了:把它放在沒有光線的地方,兩天之內它就可能把眼睛退化掉;如果再把它拿到有光線的地方,兩天之內它就會長出眼睛;把它扔到水裡它就退化掉肺長出鰓,把它撈出來放到陸地上它就退化掉鰓長出肺。
這種生物雖然擁有強大的環境適應能力,從侏羅紀到現在有一兩億年了,但並沒因此向更高階進化,只是在原地變來變去,最終淪為了人類科學家的玩具。所以程式設計師不需要像蠑螈這樣極速非凡的適應變化能力,對環境的變化反應敏感過度。
面對技術變遷,程式設計師的有效適應性,是有意識的選擇與堅持。
價值
雲時代,雲端計算成為了水電氣般的基礎設施,必然帶來程式設計師的進一步分化。今天我們面臨的很多分散式問題,都由基礎設施提供的各類服務給解決或遮蔽了。就像今天我們開發程式也利用了很多作業系統提供的能力,而作業系統或虛擬機器或容器是現在我們依賴的基礎設施。
目前像提供作業系統這類基礎設施的公司並不會多,所以很可能未來留存下來的能提供雲基礎設施的公司也不會多。而大部分的基礎技術問題都將由提供雲基礎設施的公司來解決,所以今天糾結於做純技術開發還是業務開發的同學,在雲時代必然面臨明確的選擇分化。
雲時代的雲公司,它們的核心業務和麵臨的問題就是今天這些純粹的技術問題,除了要能夠解決並封裝成服務,還需要不斷的降低成本和優化效率,而在雲上的降低成本和優化效率這是真正意義上的技術價值的直接體現。亞瑪遜能夠連續 44 次降價來阻止競爭對手進入,正是技術綜合實力的體現,未來必然只有少數雲公司能夠把提供服務的成本控制在自由市場競爭的價格之下,而一心追求技術之巔的程式設計師選擇進入這樣少數的雲公司將成為必然。
而另一部分對業務更感興趣的程式設計師,更喜歡做業務開發,他們的價值又該如何體現?雲公司封裝了業務開發面臨的核心技術難度,面向雲開發已經成為絕大部分初創公司的選擇,那麼是否意味著面向雲的業務開發程式設計師的價值將會下降?
前段時間看了一篇文章《IT人的巨流河》,這是一條如何向業務證明 IT 工作價值的巨流河。而我現在所能看到的是進入雲時代後,業務開發的程式設計師最大的核心價值恐怕就是需要在這樣一條巨流河上建立橋樑。面向業務開發的技術人員需要去看清、理解業務的價值鏈條,並在這個鏈條上嵌入展現技術的價值。
如果說,雲時代的雲公司們提供的基礎設施和技術服務將是一輛車的發動機,那麼面向業務開發的程式設計師其實提供的就是變速箱。未來可供選擇的發動機可能不多,那麼車輛差異化能力的變速箱倒是很關鍵了。(好吧,其實我對汽車原理並不熟,不知道這麼比喻是否恰當)
無能怎樣變化,看清並抓緊整個價值鏈條的一環才能避免徹底的被邊緣化。
...
蒸蒸日上的行業或公司,就像一輛剛提的新車,若你不過是在其中幹著空濾的活,還沒有點危機感麼?
寫點文字,畫點畫兒。 微信公眾號「瞬息之間」,遇見了不妨就關注看看。