1. 程式人生 > >@程式設計師,你該如何選擇技術方向?

@程式設計師,你該如何選擇技術方向?

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:把浮躁的心安定下來,讓時間來證明一切。專注於你當下選擇的語言,深耕的同時注意擡頭看一看就行了。

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

&n