天天看點

@程式員,你該如何選擇技術方向?

01、困惑的提問

昨天,讀者小何在微信上問了我這樣一個問題:

二哥,我剛參加工作一年,感覺什麼也不精通。大學學的是 Java,但這一年來 Python 特别火,有幾個轉到 Python 的同學工資竟然比我高。我是不是也應該轉呢?

類似這樣的問題還有一些,比如說阿堅:“我現在大一,學的是 C++,聽說畢業後不太好找工作,二哥什麼好的建議嗎?”

對于初入職場或者在校的同學來說,選擇哪一門語言意味着未來的收益(掙到的錢)可能會有顯著的不同。

況且技術的更新疊代實在是太快了。你完全預料不到!如果選擇錯了,付出的代價也是沉重的。

不知道你有沒有這種感覺啊,前幾年盛行的安卓,好像一下子就涼透了。背後的原因也很簡單,就是微信公衆号和小程式的推而廣之,導緻 APP 的需求量大幅降低。

就在去年這個時候,我還特意買了幾本安卓的書,學習了一下,在 CSDN 上順帶分享了幾篇學習筆記,閱讀量還不錯。但最近聽朋友說,他在公号上推安卓方面的文章時,閱讀量真的是慘不忍睹啊。

02、技術方向

從大的層面來看,技術方向可以分為兩種:前端和後端。計算機“文盲”經常性會把後端誤認為是“背景”(網站管理背景)——做外包這些年,我遇到過不少這樣的甲方,每次我都需要耐心地給他們解釋好一會兒。

那接下來,我就要開始解釋了(開個玩笑)。我們來談談前端和後端的一些趨勢吧,大家可以作為參考。

1)前端

前端工程師近兩年來非常吃香啊,尤其是前端前面加了一個“大”字之後,也就是現在非常流行的“大前端”,就好像“大資料”一樣。(借此機會,你可以體會一下“大哥”和“哥”之間的差别有多大)

我想,前端技術裡面最不會過時的就是 HTML + CSS + JavaScript 了吧。為什麼這麼說呢?因為它們是前端開發的基礎,并且标準也在逐年更新。如果你用開發者模式觀察一下的話,你會發現,所有網站的源代碼裡面都少不了這老三樣。

排名第二的應該是 Node.js,它逐漸成為了前端開發的基礎技術,正在變得越來越重要。上個月,我在使用 Jekyll + GitHub Pages 配置個人網站的時,它就要求我要先安裝 Node.js 環境(由此可見吧)。

排名第三的應該是 Vue.js / Angular / React.js,它們在 2018 年的時候已經成為趨勢,2019 年也沒有呈現出任何的頹勢。尤其是 Vue.js,其作者尤雨溪因為長得帥,成為了廣大前端程式員心目中的大神(偶像)。

排名第四的應該是 Stencil,其官方的介紹如下:

Stencil is a toolchain for building reusable, scalable Design Systems. Generate small, blazing fast, and 100% standards based Web Components that run in every browser.

我先蹩腳地翻譯一下,大家将就看看。Stencil 是一個工具鍊,用于建構可重用的、可擴充的設計系統。可以生成小巧的、快速的、 100% 的基于标準的 Web 元件,關鍵的是可以在所有的浏覽器中運作。

這就厲害了,不需要考慮浏覽器的相容性,還能夠和任何主流的架構(Vue.js / Angular / React.js)搭配使用。

排名第五的應該是 PWA(Progressive Web Apps),漸進式 Web 應用程式,快速、可靠,還能夠讓使用者感覺像原生應用一樣,體驗非常棒。Google 提出的概念,應該不會差。

好了,前端就說這五個吧(排名僅供參考啊)。

2)後端

說到後端,可能會有人開玩笑說:“主流不一直是 PHP 嗎?”雖然說這是一句玩笑話,但是,我并不怎麼敢反駁。

從讀者群體裡了解一下,洛陽做 PHP 的程式員真的蠻多的,盡管開源 PHP 的官方團隊已經解散了。不管怎樣,一個鐵打的事實是,PHP 語言在過去的 20 年裡給許許多多的人帶去了工作機會。

在我們繼續聊下去之前,請允許我驕傲地宣稱一件事:我是一名 Java 程式員。Java 到底有多牛逼,已經不需要我再吹了,反正我已經靠它吃飯了許多年,未來還要再吃幾年。

(雖然不用吹,但多少得說幾句)

Java 是一門以 Class 為機關,高度面向對象的進階程式設計語言。Java 的設計初衷是“寫一次代碼,在哪裡都可以用” 。Java 可以完成任何規模的任務,是以它是很多公司在做商業級項目的時候的首選。

Jame Gosling 在 1995 年的時候設計了Java,似乎 Java 一出生就有做老大的氣質。事實上,确實做了好多好多年。

那 Python 呢?

Python 是一門擁有簡潔文法的進階程式設計語言。一位名叫 Guido van Rossum 的荷蘭大佬在 1991 年就設計了它。Rossum 設計 Python 的初衷是為了讓代碼讀起來更輕松,并且讓程式員寫更少的代碼。

曾經有一位 Python 的粉絲寫過一首名為 The Zen of Python (Python 之禅)的贊美詩,我們來欣賞一下。

優美勝于醜陋

寫得很不錯吧?我覺得這位粉絲太有才了。

當然了,Python 火的原因可不是因為 Python 的優雅,而是人工智能和資料分析。涉及機器學習、深度學習、神經網絡這些高大上的領域,絕對避不開 Python。是以可想而知嘛。

限于篇幅原因,後端技術我們就到此為止。

@程式員,你該如何選擇技術方向?

03、到底怎麼選

說了這麼多,關鍵的問題來了,到底選擇什麼技術方向呢?

前端程式員已經很明确了,按照我說的趨勢去選就沒錯了。後端程式員呢?來看一份榜單吧,資料來源于可靠的 TIOBE。

@程式員,你該如何選擇技術方向?

看完這張榜單,我相信你心裡應該也有數了,對不對?

比如說小何,沒必要糾結是選擇 Java 還是 Python,這兩門語言現在霸占了狀元和探花的位置。據我所知,Java 工程師和 Python 工程師的薪資待遇并沒有明顯的差别。如果不打算往人工智能和資料分析方向轉的話,抱緊 Java 這個大腿就行了。

就未來的發展前景來看,Java 也并沒有呈現出任何的頹勢。如果你有一部安卓手機,幾乎所有 App 都是用 Java 寫的。大型網站的後端,比如說淘寶、京東也都主要是用 Java 開發的。大型的企業級應用,比如 CRM 系統、ERP 系統也大多數是用 Java 開發的。越來越火的大資料,其主流架構 Hadoop 的開發語言也是 Java。

不過,從增長的百分比來看,Python 的增幅最大,這說明 Python 的潛力十足。如果時間充足的話,可以自學,以備後患。反正我已經準備學習了。

至于阿堅同學,也沒必要過于憂慮,三年畢業後還不至于找不到工作。畢竟 C++ 的底蘊還是在的。況且,如果把 C++ 吃透的話,學習其他語言也完全不在話下。

04、最後的忠告

選擇技術方向,選擇一門語言,本質上都是一種投資。

在日新月異的科技時代,沒有人敢打包票說未來幾年後一定流行什麼,不流行什麼。還是那句話,技術更新疊代太快了!

那怎麼讓投資收益最大化呢?

說實話,我也沒有定論(皮一下)。

A:選擇年輕的語言(技術方向),意味着風險越大,因為它就像流星一樣,燦爛,但易逝。有句俗話,你也聽過:“風險越大,回報也許也大”。

B:選擇市場已經認可的語言,意味着越穩定,畢竟活得越久越需要能耐。

C:把浮躁的心安定下來,讓時間來證明一切。專注于你當下選擇的語言,深耕的同時注意擡頭看一看就行了。

好了,我說完了我的看法,說說你的吧?