本文目錄一覽:
- 1、現在php已經飽和了嗎,為什麼薪資都不高了?
- 2、想做副業,學編程,學哪種語言比較好?(零基礎)
- 3、北京最近有什麼兼職可以做?
- 4、雲計算需要學習哪些課程?
- 5、2017年,Web 後端出現了哪些新的思想和技術
- 6、程序員的工資為什麼那麼高
現在php已經飽和了嗎,為什麼薪資都不高了?
首先,php沒有飽和,依然有很多公司提供崗位,但是相比較其它年份,今年的崗位相對較少。
其次,php受到golang語言的衝擊,不止是php,python,java等都受到golang的衝擊,只不過php更大,因此相對來說崗位少了許多。
然後,不止php,很多語言的崗位都開始兩極分化,也就是說,初級崗位的薪資很低,而高級崗位的薪資很高。
最後,php不會消亡,在web開發領域,它的便攜性,高效率開發的特點很難被取代,語言永遠不是編程的核心,算法和數據結構才是重中之重。
想做副業,學編程,學哪種語言比較好?(零基礎)
最近有很多同學問我,我是一個零基礎的小白,到底學習哪一種語言比較好?作為一個寫了十年代碼程序員,用過七種語言的我來說,必須要強調一下,語言只是一種工具,當你真正理解了要做的事,選一個順手的就行。跟工具一樣,哪天有新的好用的語言出來,把舊的扔掉就好。
我今天寫這篇文章的目的是想給大家一個參考。
決定用什麼語言的因素有有很多,比如性能,內存佔用,開發難度,運維難度,目標平台,可執行文件大小,代碼可維護性,項目周期,項目規模,招聘難度,團隊構成,歷史遺留問題,甚至派系鬥爭等。
比如騰訊就有大量歷史遺留的C和C++的服務器代碼,畢竟20年前沒得選。又比如空降技術負責人可能會為了讓自己人上位,讓自己團隊出成績,選擇用其他語言或者框架對本來工作良好的系統進行重構。
下面開始聊語言
Python
先說python,是因為這個語言小學生都開始學習了,以後不會python要被小學生欺負了。語法簡單,除了前端幾乎萬能,可用的庫極其豐富,能想到的功能幾乎都有現成的庫可以用。不管是搞爬蟲,做人工智能,機器學習,數據分析,還是自動化運維,自動化測試,python幾乎都是首選。不想當程序員還想學習一門語言的話,學習python就沒錯了。缺點是慢,但是能讓機器累的事,何必讓人來累。
PHP
PHP是世界上最好的語言,可能這個已經成為很多程序員的梗。
我沒用php開發過大型項目,自己做東西的感覺是這語言非常簡單,以前用的人很多,招聘容易,但是不適合做複雜的項目。現在用得越來越少了,迅雷以前有不少運營活動頁面是PHP做的。
C
C的語法足夠簡單,應該是最接近機器語言的高級語言,適合編寫操作系統底層,驅動程序,硬件相關的程序以及看重性能的程序。由於過於簡單,構建大型程序的複雜度非常高,建議想往研發方向走的同學都學習一下C語言。
可以對計算機一些底層原理了解,比如指令執行過程,內存管理,異常,多線程,編譯過程等又更深層次的了解。掌握C語言再學習其他語言會變得很輕鬆,學習破解也有幫助,畢竟彙編基本都可以反編譯出C代碼。
C++
C++是一個糟糕的語言,這不是我說的,這是Linux之父說的。我自己用C++四五年時間,越到後面就感覺這句話越有道理。
首先C++的強大是毋庸置疑的,但是作為一個跟C一樣偏底層的語言,如果不理解寫的代碼背後到底發生了什麼事,如果出了錯,你是永遠不可能知道錯在哪裡的。
一個沒有垃圾回收的語言,不用智能指針很容易導致內存泄漏,錯誤的用了智能指針不但內存泄漏之後不好解決,還容易導致提前釋放等問題。
C++支持強制類型轉換,如果轉換前後的內存結構不一樣,很有可能導致各種隱性問題。還有Java之類非原生語言的異常處理都是語言自定義的異常,而C和C++中的異常很多都是操作系統層的異常。
Windows下一個簡單的try catch,你覺得可以抓到try中所有的異常,但是由於異常處理函數的指針保存在棧上,這時一個棧溢出可能直接導致異常處理函數指針被覆蓋,異常會出現在你意想不到的地方。微軟有大神曾說過,想你的代碼後續可維護就刪掉代碼中所有的try catch。
又由於語言非常底層,當程序出現底層崩潰的時候,想解決掉這個崩潰往往要讀一些彙編,這時候如果使用了大量的模板,比如stl和boost,那生成的彙編幾乎完全不可讀。看過stl代碼的人應該都知道這玩意兒寫的有多晦澀,就導致了你想用一個C++庫,如果不了解這個庫的實現原理,那大概率會出錯。
C++的複雜度又讓你很難真的理解那個庫的原理,結論就是C++強大,但是必須用的人也強大。C++直到現在還在瘋狂的增加特性,我用了四五年我自己都不敢說自己會玩C++,能用其他語言就優先考慮其他的,把C++作為最後的選項,不建議新手學,除非你的目標領域必須使用。
Rust
Rust是為了解決C和C++的各種問題而出現的語言,性能接近C++,通過所有權限,不用垃圾回收就解決了生命周期管理。有包括管理,又有極其嚴格的編譯器檢查,能編譯通過的代碼就不會有大問題,編譯器直接把水平不夠的新手擋在了門外,通過解決出問題的人是方式,從根本上解決了C++的問題。
我第一次用rust寫個小程序就跟編譯器較了一天的勁。它的缺點就是學習難度太大,語言太小眾,庫太少,很多輪子都要自己造。但是隨着微軟之類的大廠使用,相信之後發展會比較好,新項目如果需要C或者C++可以優先考慮rust。
Java
我現在主要也是一個Java程序員,對於Java這個語言我並沒有什麼很特別的感覺,配套設施完善,什麼都能幹,體驗非常贊,就是內存佔用有點難看。想搞安卓考法的必修,阿里有大量的服務器項目使用Java。
唯一想吐槽的是gradle這個構建系統,版本問題搞得很頭疼。
JavaScript
js是前端的必修課,沒得選,然而node讓js也萬能了。用node做過後端項目後,感覺動態類型語言還是不太適合,由此帶來的低級錯誤很多,雖然可以用typescript解決,但是最終還要編譯成js,無法直接調試。由於沒有原生的多線程支持,利用cpu也只能通過開多個進程的方式。小項目的後端做着玩還可以,大點的還是考慮Java或者是go吧。
Lua
Lua是極其輕量的語言,語言特性接近js,runtime非常小。作為一個腳本語言,性能出色,內存佔用低,很適合各種嵌入式設備或者插件系統。
Go
這玩意兒一定是谷歌為了解決自己後端項目中遇到的問題而開發的語言,各種特性直戳痛處。語法簡單,規範嚴格,這就讓不管什麼水平的開發寫出來的代碼差距都不會太大。
靜態類型,沒有默認參數,沒有異常處理,可以降低犯低級錯誤的概率。編譯成原生代碼,可內嵌C代碼,原生支持協程和多線程,可以保證性能,支持跨平台編譯,輸出單文件方便部署,這些優點帶來的問題是Go的指向性太強,只適合做高並發api類的後端服務。
想用Go開發其他任何領域都會覺得特別彆扭,類似C的語法過於簡單,又沒有泛型,導致很多功能都顯得很啰嗦。但由於Go解決了部署問題,跨平台問題,降低了研發人員的水平要求,降低了犯錯誤的概率。
關於這些語言的性能沒有絕對的排序,但根據我做項目帶團隊和面試的經驗,絕大多數的程序員的水平都還碰不到語言的性能瓶頸。一般來說對語言的理解以及多線程,算法,網絡,數據庫,緩存。硬件甚至業務的理解都比語言的性功能影響更大。
再次強調,語言只是工具,只有適不適合,沒有好與不好。基礎強大,用哪個都不怕,基礎太差,用什麼都尷尬。
只是會語法並不是掌握了這門語言,要知道程序背後發生了什麼。比如C++的對象模型,Java的虛擬機,垃圾回收,Go的協程,js的promise,rust怎麼編譯通過等等。
基礎是一門語言的核心,不管學習哪一門語言都要重點學好基礎。
北京最近有什麼兼職可以做?
有很多兼職可以做,比如去京東庫房兼職每天四個小時,也可以去一些便利店兼職,一些飯店也可以兼職
雲計算需要學習哪些課程?
雲計算學習課程大綱
1.Linux雲計算網絡管理實戰
2.Linux系統管理及服務配置實戰
3.Linux Shell自動化運維編程實戰
4.開源數據庫SQL/NOSQL運維實戰
5.大型網站高並發架構及自動化運維項目
6.網站安全滲透測試及性能調優項目實戰
7.公有雲運維技術項目實戰
8.企業私有雲架構及運維實戰
學雲計算可從事的職業
1、雲系統管理員:配置和維護的系統,包括基本的雲平台,解決出現的問題,並計劃未來雲的能力要求。
2、雲計算工程師:負責雲計算和數據中心項目交付計劃和技術方案的制定,負責雲基礎架構、上雲數據遷移、雲容災備份以及雲可靠性、安全性等的規劃設計及實施工作。
3、雲計算開發工程師:負責設計和開發面向雲服務的分佈式軟件。
4、雲計算架構師:領導雲計算項目的開發和部署,確保系統的可擴展性、可靠性、安全性、可維護性,並在預算內達到業務和IT業績表現要求。
5、運維工程師:負責雲計算項目實施和運維,做好網絡存儲、數據庫、備份、恢復、同步等相關工作。
2017年,Web 後端出現了哪些新的思想和技術
1. 網絡交互的多樣性
1.1 Http1.1協議日漸式微,Http2和websocket,以及更多的自定義協議將會成為主流。
Web後端將不僅僅是一個web後端,而變成一個大後端,或者叫 中端+後端(這個概念阿里巴巴很早就有了)。隨着移動互聯網的發展,以及物聯網的興起(在這裡我把mobike的單車看作是物聯網的一個終端),用戶的接入方式由單純的瀏覽器,向著多種接入設備進行演進。 在這個概念之下,用戶的定義會更廣泛,站在後端的角度看來,連接上服務器的不再是一個個的用戶,而是一個個的終端,並存在多個終端同享一個用戶的情況(多端登錄)。 因此在這個趨勢之下,整個後端的接入層(比如nginx之於web)將會走向更廣闊的天地,對於任意一個設備來說,他將同時利用多種協議和多種方式連接到不同的接入點來達成自身的功能。
1.2 網絡協議與網絡信息交互的樣式多樣性
從最早的webService,到後來的json-rpc,和thrift再到如今的 protobuf(grpc)等等,我們開始為不同的數據交互設計了不同的序列化協議和調用協議,然而受到環境(移動終端的弱網絡狀態),性能(網關服務,與網絡調用)的影響,我們開始使用大量容錯性更強,數據量更小的數據傳輸方式,來滿足我們的需求。
在早先的web中,http+from表單的提交成為我們的標配,然而在今天,TCP都不一定成為必選項,UDP和UDP的改進協議都在被不同的公司進行嘗試,甚至於KCP都有可能成為大家考慮的方案之一。
2.數據多樣性開始成為設計的焦點。
2.1 在早先的web後端中,表設計和功能開發構成了日常工作的絕大部分,所有的後端人員都在試圖讓一切的用戶操作落入CRUD的抽象範疇里(比如 Restful),然而CRUD怎麼會滿足我們的抽象需求呢。
自從memcached和redis在被大量引入後端開發之後,我們可以看到,後端人員在對數據的理解上有了大量的改變,我們不再單單把數據視為RDBMS裏面的一行,而是圍繞着業務本身對數據進行了分類。最明顯的是,狀態數據的引入,在開發中,我們將用戶的部分信息,視為一個用戶的狀態,在狀態數據的基礎上,讓用戶的行為變成狀態遷移的觸發,在表現上看我們讓用戶的信息存儲到redis和memcached 里就是最RDMBS不能有效滿足我們的抽象需求的一次改進。
2.2 從狂熱的Nosql到Nosql和RDBMS的共存,代表了後端開發人員對數據這一個方式的新理解,而傳統的行存儲到列存儲,到監控常用的基於時間序列的數據庫都開始進入了我們的視野。
幾年來,大量的開發者,開始將用戶產生的數據進行了更詳細的歸類,不再是rdbms一刀切的方式, 我們會詳細地劃分出用戶的狀態數據落入到Nosql,將用戶的操作數據落入到RDBMS(表述不一定全,但在類似於訂單支付之類的具有冪等性要求的操作中要求事務的完備等),將用戶的行為統計落入時間序列數據庫, 將用戶的大量相關資源(如頭像圖片)將會落入到我們的對象存儲中。在後端開發的手冊里,數據格式的多樣性成為了必須考慮的問題。
3.圍繞着數據的收集,存儲,計算,索引查詢,分析 成為後端的常態
3.1 後端角色的含義,在人手不足的公司里,很難存在一個專註於後端業務開發的開發人員了,在大數據的浪潮下,後端開發人員開始兼職起了數據系統的開發工程師。 隨着互聯網大量技術的演進和發展,任何一個職業都很難找到一個明確的界限,因此圍繞着數據的收集,存儲,計算,分析,和索引查詢都會成為後端開發人員的必備技能。
3.2 數據收集
(1) 隨着分佈式,集群化,多IDC的發展,不同於運維的系統性能收集,後端開發開始着重於收集與應用運營過程相關的各類指標和數據,
除了日常的業務開發,同時還會伴隨着應用調用過程的耗時,目標服務可用性等數據的收集,常見的如java的 metrics,zipkin等開源第三方的工具開始被廣泛借鑒和引用。
(2) 用戶行為和終端信息的上報收集,隨着大數據的開展,以及精細化運營的要求,後端逐漸開始接觸到用戶相關信息和終端運行狀態的信息上報,
收集上來的數據不僅用於用戶的畫像分析,同時也為客服的用戶追蹤,用戶的操作行為做出決策,通常表現在當用戶投訴某一筆業務的失敗時,便於開發人員的快速定位和排錯。
3.3 數據存儲
接着上面的數據收集,數據的傳輸和存儲成為了繞不開的功能,kafka的大規模運用,HDFS,HBase等工具也開始成為了後端開發日常的一部分。
3.4 數據計算
然而存儲的原始數據是沒有價值的,後端又開始了他們的數據清洗和數據處理的道路,storm,spark成為了後端的新秀,與用戶運營統計分析(俗稱跑策略跑算法)不同,當前語境下的後端數據計算,更多是一個短耗時,小規模的計算,典型的則比如風控系統,和預警系統,針對用戶的行為和流量的多少,對惡意用戶進行甄別和快速干預。
3.5 數據索引查詢
(1) 隨着業務的擴充,任意一個app幾乎都內置了相應的搜索引擎,Lucene,solr也成為了後端程序員必備的技能之一,不管是精確搜索,還是模糊匹配,後端身上背負的業務也越來越多。
(2) 准實時數據的搜索也將成為常態,在近幾年的發展中,如何快速地在一個巨量的數據中,完成RDBMS中的 join,distinct統計等成為後端工程師不得不面對的問題
3.6 數據分析查詢
AI和深度學習已經拉開了序幕,圍繞着數據本身的挖掘,學習,也開始成為了產品側的需求,但理想歸理想,現實歸現實,後端的同學們在這個方向上仍然還是摸索狀態,但長遠來說跑不了了。
4.架構設計的更進一步
2017年里,SOA的名詞正在淡出視野,微服務成了替代SOA的高頻詞,Serverless也開始走向了廣大後端的知識技能圖譜,不管是追新也好,滿足需求也罷,我也向諸位舉例一些常見的單詞,然而掛一漏萬請諸位擔待
4.1 CQRS(命令查詢職責分離模式)
將傳統CRUD的寫操作,進行異步化,後端配合讀寫數據庫的分離。以及消息隊列的引入,將寫操作相關的一些耗時操作(驗證,走流程)等進行異步化,常見的如電商中的訂單。
4.2 actor
Erlang的actor的興起,不管是golang Goroutine,還是scala/java的akka,都在深刻地影響着後端系統的架構設計。
4.3 CRDT和最終一致性
分佈式系統的興起,也帶來了可用性和一致性的矛盾問題,協同兩個進程間的數據成為了每一個後端繞不過去的坎,為了達成最終一致性,各類方案如雨後春筍般冒出。
4.4 reactive
當android上的流行庫Rxjava,從前端走向後台的時候,也意味着後端也開始進入了響應式編程的時代,java的 vert.x就是其中的例子,那種request-response一招破萬法的時光不再有了。
5. 運維和devops對後端的要求
5.1 安全,穩定,高效,經濟
(1) 隨着業務走向穩定,以及互聯網的發展,網絡服務的安全性開始成為了後端的核心之一,由於法律的不健全,對違法分子的追責難度大,違法成本低,網絡安全攻擊將會在將來的一段時間內成為常態,這就對後端的程序特別是對外的接口設計提出了更高的要求。
(2) 多機房,異地容災,數據備份。健壯的後端一直是後端應用的要求之一。新的時間裏,後端的可用性,穩定性依然是每一個後端都要面對的問題。
(3) 以前一個用戶只有一個電腦,瀏覽網站的時候,只在獲取數據的時候與站點有交互。現在隨着電子設備,智能設備的增多,一個用戶能夠接入網絡的設備也在增多,同時長連接和並發數也會增多,因此高性能的接入網關開始成為了後端人員關注的焦點,比如圍繞着intel的dpdk各類應用也是紛至沓來。
(4) 經濟,利用雲服務的即買即用,用完即退的特點,使得在開展運營活動的時候,後端不用向運維徵求和購買大量的機器。 然而為了在運營活動的短時衝擊和突增流量的情況下後端應用能夠平穩地運行,對後端人員的部署和調度能力提出了更高的要求。
5.2 更規範的軟件開發流程
git+jenkins+ansible的開源組合,開始無法滿足開發和運維的需求,項目管理的集成,測試人員的介入,都要求後端的軟件工程工具從各自為陣的開源工具,走向一個大一統的系統,需要我們將 需求,BUG管理,迭代版本,開發,測試,灰度,藍綠部署流程都進行集成。
5.3 雲服務,容器化之爭
公有雲,私有雲,混合雲,以及容器等相關的雲計算技術,也在推動者後端的技術改革,後端面對的不再僅僅是一個物理機器,或者虛擬機,而是一個更複雜更多樣性的環境,對後端業務之外的技術和調度要求將越來越高。
相對於前端,後端實在是一個特別籠統的說法,正如上面提出的觀點,很多的技術其實並不屬於後端工程師,他們有的時候叫 運營開發工程師,有的叫大數據工程師,但為了相對於前端的劃分,因此我把他們的工作內容都划到了後端裏面去,畢竟相對於技術研究,他們面對的都是一些技術應用的場合,很多的開源軟件只要達到了理解原理如何使用的水平就已經足夠應付日常工作了。
程序員的工資為什麼那麼高
每個行業的工資是市場決定的。得分析需求與供給。
---
供給:
程序員並不多。據說中國也只有200萬會寫程序的人(占人口0.14%)。相當少。
另外,印度270萬程序員(最多的),也只佔人口0.2%的樣子。
我們先從西方國家的角度出發吧。雖然和中國印度不一樣,但也有很大的參考價值。
美國的Tech行業(包括IT在內)工作人員達到700萬;占人口的2%以上。
英國類似,160萬員工,也佔到2.4%。其它西歐國家應該都是差不多的比例。
不過拿整個行業來對比不恰當。因為高科技行業其中只有一小部分人是搞程序的。美國專業從事軟件程序的人口呢,好像只有102萬(根據2010年的人口普查);0.3%。
另外,在美國的職業排行中,程序員在所有職業當中人口數量排行第三十,還少於:
律師職業,104萬;金融資產管理,110萬;大學老師,130萬
如果覺得金融和律師工資高很合理,那程序員工資高也是合理的。
話說,軟件行業還詳細分類,分各種語言各種平台各種特殊要求。編程語言的話;熟悉Java到專業程度的程序員只有其中30%。Python估計20%。C不到10%。像Golang之類的小眾語言,1%都沒有。(或許可以參考一下github上的用戶數據)。
我們假設倫敦只有0.3%的人是寫程序到專業程度的,那就是四萬人左右。如果倫敦一家公司必須招Golang經驗的人,能選擇的程序員可能只有三四百人的範圍了。如果再要求人家Python和Golang都會,那可能少到只有50個人選是合適的。隨便看看一家科技公司的招聘要求,都會有好幾個亂七八糟的,比如這語言那語言、什麼SQL啊、Linux啊、機器學習啊、雲端計算啊。。。每家公司要求也都不一樣。真能完全符合他們所有要求的人可能只有幾個甚至根本不存在。能找到滿足兩三個要求的人已經算很不錯了。
其它行業沒這麼麻煩,一個職位總是有很多人都能勝任的。選擇多了,公司就有條件把工資壓低之類的。但是在程序招聘方面,談工資的權利在程序員手裡,因為對方沒有選擇。程序員本來那麼稀有,非常適合要求的程序員更是稀有之稀有,不能錯過。
(在簡歷上寫什麼都會的人一抓一大把;但是人家公司也不傻,能看穿。這些東西到精通的地步都需要好幾年的經驗。如果某個程序員真能夠精通了其中兩三件,又正好符合公司所要的,那價值無上限啊。稀有度決定一切)
(也有不一樣的,一些高科技大公司比如google、facebook,他們不一定要求人家具體會做些什麼,因為反正什麼類型都會招收一些,而且有耐心培養。但是人家找的基本是高能力的人,強調problem-solving能力、邏輯清晰、抽象思維、創新思維、有直覺的、等等。達到這種境界,會什麼不會什麼都不重要,反正都能很快學會新技能。但是一般公司沒這耐心,沒這遠見,只想儘快找一位能馬上解決特定問題的員工)
(當然也不能說一個程序員的價值取決於他熟悉多少種計算機語言什麼的。請別這樣理解。許多程序員「高階技能」更是一種訓練出來的思考維度,和編程語言無關。這些維度決定一個人能否有效解決某一類問題。具體用什麼語言並不重要。不過吧,如果只接觸一門編程語言,思維肯定會有些捆綁)
---
需求:
好吧,倫敦有那麼幾萬個程序員。假設平均兩年換一份工作。如果市場穩定了(滿了),那每個月新空出來的職位應該只有幾千個吧?但是倫敦的招聘廣告明明每個月都十幾萬個啊。而且一年一年越發多。這隻能說明:找不到人了!
很多公司都是招不到程序員的狀態。有些公司一開始很天真,掛一個他們自認為很好招到人的低職位廣告,準備四萬英鎊年資(30多萬人民幣)。結果時間過去了幾個月,發現過來面試的偶爾幾個選手也都不適合,只好把年資提升到六萬、八萬、十萬。最後終於來了一位程序大牛,非常適合,但是人家被另一個給出15萬鎊年資的公司給搶了。結果掛了一年多還在等人;老闆的美夢都這樣被現實毀滅掉了。
(在倫敦四五萬鎊年資的程序員當然也有不少,因為這些人總能找到一個能接受他們的公司。要麼公司等得太不耐煩了只能選他們,要麼成功裝逼就混進去了。也或許是真找到了最適合的一家了。。。可是意識不到自己的稀有程度,低估自己的價值,有點可惜。有些人大概工作了幾年才會有這種意識吧,然後追求的工資開始飛速漲價。)
總體來說,倫敦(以及西方各地)的程序員工資很高是有道理的。因為需求高於供給高得太多太多了。其它行業都是公司來選員工。但是這行業還真是員工來選公司。這也可能導致各種不公平吧。許多員工在五十萬年資(人民幣)的範圍混,也有許多員工在百萬以上(因為他們找到了自己稀有之處,並且運用了)。反正平均可能在八十萬左右(比倫敦的平均薪資高一倍),但是很少有人的收入在這個平均值,一般是在兩個極端。
中國是否處於類似的情況,好像是的。道理應該也很相似。如果你在找一千萬人,但是只有幾百萬人能做到,肯定也會這樣。而且其中每一個職位大概只有10-100人能做得好;做得到底好不好又很容易判斷出來,薪資差距自然很明顯。
---
程序員收入比其它職業高是事實。而且一點都不虛。
世界需要很多人來干這些事,能幹的人又太少了。
這些程序員只要有幾年經驗在幾家公司,累積掌握到了獨特(僅限於自己)的一套技能,總能找到高薪的有價值的工作。因為他們是稀有動物啊。只要有一家公司正好非常需要那一套獨特的技能,稀有程度已經很明顯了。問題是不止一家認為他們稀有,所以各種搶破頭。因此稀有的高級程序猿可以挑來挑去。公司競爭搶程序員而不是程序員競爭入公司。
---
最後講幾句關於未來:
首先,在所有職業當中,程序員是增長得最快的。大家應該都能看得出來。很多傳統工作類型已經漸漸被取代了。正是因為程序員把這些工作內容自動化了。這個趨勢肯定會繼續下去。
最簡單的一例應該是收銀員工作。以前需要好幾十個員工來負責收銀的超市,現在只需要一兩個收銀員。超市裡各種越來越先進的自動收銀機器。至少在英國大多超市是這樣的吧。整個人工收銀行業在未來可能就不存在了。哦,還有金融行業現在幾乎所有交易都是自動程序操作的。
其實大多行業,遲早都會有類似的淘汰現象發生。目前,大家不會想到有一天醫生會被軟件取代。可是仔細想一想,一個軟件能分享和同步全世界所有的醫療數據來做一次診斷,遠勝一個人的腦力所能做到的。律師分析歷年來的案例和檔案去找出漏洞的能力也可能不如一個軟件程序。其他行業我就不一一說了,以後值得另外好好寫一寫。
這些變化會遠遠超過幾次工業革命的變化。軟件行業是唯一能堅持得比較長久的。這些其它行業被自動化軟件化也都需要這些程序員來實現和維持。但是未來幾十年內,需求只會越來越大。與其它行業的工資差距也會越來越極端。
感覺很多非行業的人有一種錯覺。。。
錯認為編程(或Tech)就是很多行業當中的其中一個而已。
我只能呵呵。
幾百年前的人也會認為「工業」只不過是一個小行業,因為人不多。隨着科技的發展,工人成了主流,這「工業」開始分成各種各樣劃分開來的新行業。後來服務業(白領)又突然發展起來了,分裂成現在大家所熟悉的各種行業。
下一次工作變革就是編程。它會慢慢形成很多獨立行業。現在已經能看得出來啊,軟件行業裏面已經有很多不同方向的。。。我幹不了A,A幹不了B,B幹不了C,C又幹不了我所做的。但是我們都是「程序員」。在以後,我們就不會再說「他是程序員」,而說「他是A」,「他是B」。因為到以後大多數人都是程序員。一百年以後,「程序員」這個詞就毫無意義了。
(當然也不是永久的;AI之類的也總會取代程序員,最後讓軟件寫軟件。將來下下下一個paradigm是什麼我們都猜不到吧,無法想像。那時可能都沒有「工作」這般概念。但是程序員的崛起作為目前一個大的paradigm shift,這是能確定的哦,畢竟這才是一步一步走向AI必須經過的一段歷史)
漢語中的軟件與英語中的software。。。含義好像不太一致?我覺得任何程序員寫的都可以叫做software,不一定僅限於公開給大眾下載用、有界面的應用。比方說,那些自動化交易程序,或者一些公司給內部開發的特殊功能,或者谷歌背後的搜索引擎後端,或者一輛汽車一台照相機裏面的系統。。。甚至一個drone,這些也都是軟件吧??
作為一個收入(可能是)amazon程序員中top%10的程序員, 我來很簡單的分析一下一般程序員的心態:
首先程序員對自己的財力是有比較清晰的認識的,是有點錢,但是跟公司這些經常遇到的中層高層一比。。。。基本是人家零頭。跟更富裕的公司的程序員比也是心酸,看到論壇上有人又分享跳槽XXXX拿到了YYYYYYYYYY的package,自慚很窮,。正所謂人外有人,天外有天。程序員愛上網,自然對網上各種驚為天人的富二代的財力也有清晰的認識。
但是coding老子天下第一呀!↖(^ω^)↗ 你看這個設計,嘖嘖嘖,除了我, 還有誰?!(#^.^#) 哪些VP,director還不是靠我把系統搭建的這麼好,組裡離了我那就要玩完!是的,程序員往往會在技術上「自視甚高」,越年輕的越這樣,學了一個XXXX技術然後發現某資深程序員在這方面不熟悉,就會小欣喜的覺得自己比別人強。
所以在這種心態下,程序員為什麼要炫富呢? 這就好比我在劍法上有一定的造詣,但是(自以為)內功天下第一,為什麼不去秀內功而要去秀劍法呢?
所以你絕對看不到程序員在朋友圈分享這些:
今天去了新開的愛馬仕店看了看,哎,沒什麼新東西,稍微能看上眼的我已經都有了。
哎,這個burberry新款風衣真漂亮,決定今年的生日禮物就是它了!
怎麼說呢,我發現XXX家的化妝品更好更適合我呀!YYYY家的以後我都不用了,可惜之前買了很多,浪費了1個月零用錢。。。5555
覺得留學租房不是很方便,所以家裡在美色島(搜了的人會知道是富人區)買了套房子,有3層可以看到華盛頓湖哦(暗示湖景房), 歡迎大家來玩,國內的小夥伴來旅遊包吃包住哦!
他們會分享的是:
今天去參加了XXX技術峰會,哎,沒什麼新東西,基本都是老生常談,這個AAA宣傳的厲害,其實只不過是BBB理論的一種新應用吧了,還是沒有解決CCC的缺陷。(內心OS:所以你看我懂AAA,BBB和CCC哦,我很有知識很厲害吧,快表揚我!) ( ^ω^ )
哎,這個新的分佈式數據庫看起來挺不錯的,最近正在學習,有興趣的同學一起研究呀!(內心OS:你看這個我已經學會了哦, 你會嘛?快表揚我!)(⁎⁍̴̛ᴗ⁍̴̛⁎)
怎麼說呢,這個XXX機器學習模型相對於YYY模型更好一些,因為#¥%#¥…省略各種討論和論文引用。(內心OS:我是機器學習的專家喲,快表揚我!)(≧∇≦)
我們組發明了一種新的超牛逼的算法/數據庫/分佈式計算框架/語言/庫/服務/引擎, github上火了呀,歡迎大家使用,歡迎評價哦! (內心OS:我是站在技術最前沿的人,我好厲害的,快表揚我!)⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄
結論:比起財力上的優越感,智商和知識上的(自以為是的)碾壓和超越,技術實力的被認同,更能讓程序員有快感。
他們就是這麼一群在自己的小世界裏偷偷的有着自己的小驕傲的人們,一群被PM誇獎一下「好厲害」,就會一邊輕描淡寫的回一句「沒有啦~」,一邊心裏樂開花的幫PM加班一整天趕進度的人們,很可愛吧。
最後掛一個自己對「什麼是編程」的體會的答案,努力寫的比較淺顯易懂(反正寫的乾貨也不會有人去看 =( ・᷄ὢ・᷅ ) =),非程序員也可以看下哦,覺得對您有幫助的話,可否點個贊幫我實現擁有一個萬贊答案的小心愿呢。先行謝過 。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/240555.html