StackOverflow 發佈了 2019年的年度程序員調查,這個調查報查有90000名程序員參與,這份調度報告平均花了20分鐘,可見,這份報告有很多的問題,也是很詳細的。這份報告有一些地方,讓我有了一些思考。
首先,我們先來看一下之份報告的 Key Results:
Python 成為了過去一年中成長最快的語言,把Java擠到了第二位,排在後面的是Rust語言。有半數以上的被訪者在是在16歲寫下自己的第一行代碼。DevOps Specialists 和 Site Reliability Engineers 是程序員中最有經驗,技術最牛,薪資最好的職位。(這對應於國內的——系統架構師)在幾個頭部的程序員大國中,中國的程序員最樂觀的,他們相信在今天出生的人會有比他們父母更好的人生。對於歐洲的程序員來說,比較法國和德國的程序員,他們對未來並不太樂觀。對於最影響程序員生產力的事,不同的程序員有不同的想法。第一部分,Developer Profile
在第一部分中,我們可以看到,中國程序員參與這個調查的並不多,程序員主要集中在美國、歐洲、印度這三個地方。所以,這份報告更偏國際上一些。這對於我們中國程序員也有很大的幫助,因為一方面可以看到世界發展的趨勢,另一方面也可以瞭解我們和世界有什麼不一樣。
對於技術職業來說,整個世界的程序員開始趨於全棧和後端,有51.9%的人是全棧,50%的人是後端,32.8%的人是前端……在這些人中,很多程序員都選了多項,中位數是3項,最常見是前端、後端和全棧全選的。然後,接下來是選兩項的,選兩項目的包括:數據庫管理員和系統管理員,DevOps Specialist 和 Site Reliablility Engineer, 學術研究者和科學家,設計師和前端工程師。
從這些數據中我們可以看見:前後端的界限越來越不明顯,設計師和前端的界限也開始模糊。這應該說明,工具和框架的成熟,讓後端程序員和設計師也可以進入到前端工程師的領域,或是前端工程師開始進入後端和設計的領域。總之,複合型人才越來越越成為主流,而前後端也趨於一個相互融合的態勢。
在接下來的圖表中,我們可以看到有80%以上的人是把編程當成自己的愛好(包括相關的女性)。
真是應了那句話——“Programmers who don’t code in their spare time for fun will never become as good as those that do”,是的,如果你對編程沒有感到一種快樂,沒有在你空閒的時候去以一種的興趣愛好方式去面對,那麼,無論是編程,還是運動,還是去旅遊,都不會有太多成效的。
在接下來的編程經驗上,有兩組如下的數據:
學習編程的年限
編程的年限
我們可以看到無論是學習還是編程,隨著時間的拉長,其人數佔比越來越少。
下面我們再來看一個年齡圖:
調查報告從20歲開始每隔5年劃分一個年齡段,我們不難發現從25-29歲開始每個年齡段都比前一個年齡段人數急劇減少大約30-50%,比如25-29年齡段佔總人數27.6%,而30-34則只有19.3%。以此類推,到60歲以上,就只剩1%。可以看出5年是大多數程序員的轉型週期。這是合理的,因為5年時間足夠一個人積累足夠的經驗技能為職業轉型做準備。
我們也可以看到50歲以上的程序員只有4.2%,大約是參與調查人員的300多人,如果這些人20歲左右參加工作,那麼說明他們在1990左右就開始寫代碼,事實上那個時間點別說是程序員了,連電腦用戶都不多。電腦和互聯網真正暴發的時間還是在1995年 – 2000年之間,不過,那個時間點程序員的總體人數也不多,而行業越來越火才會導致大量的人進入到這個行業中,這個轉換過程基本上去需要3-5年,也就是從2000年後才開始有大量的人擁入程序員這個行業,程序員的人數在過去30年間也是呈增漲態勢的,所以,我個人認為,所謂的“眾多老程序員”的比例會被2005年以後大量擁入程序員行業的
但是,我們還是要正視老牌資深的程序員越來越少的這個事實,在這份報告第三部分中說了一些和程序員職業生涯相關的調查,如下:
在被問到有多少人對自己的職業滿意的時。有40%的人覺得很滿意,而有34.3%的人覺得一般滿意,有10%的人說不清,還有15%的人是不滿意的。可以看到有不少人是對這個職業生涯是有想法的。在被問到有多少人想轉管理而可以掙得更多時。有30%的人是說想轉的,有51%的人是明確不轉的,還有20%的人是說不知道。可見,想轉管理的人最多可能會有一半的人。在被問到有多少人想轉管理時。有1/3的人是明確不想轉的,而有1/4的人是明確是想轉,而有36%的人則是不說,觀望中。可見,的確是有很多想想轉管理的。我們可以看到,程序員中並不是所有的人都是可以堅持這麼長時間的,這也挺正常的,對很大一部分人來說,對這個職業是有或多或少的不滿意的,也有一部分人可能會隨著技術的更新被淘汰,還有另外很大一部分人是想轉管理的。所以,能夠長時間地跟上形勢長時間地喜歡寫代碼,並且對程序員這個的職業長期滿意,不想轉管理的,的確是為隨時年齡的越大也越來越少
但我們完全可以看出來,程序員的主力軍在20-40歲這個區間,而30歲左右的程序員是年富力強(經驗和能力都很好)的黃金時間。
老程序員在國外似乎不會存在多大的問題,但在國內會有一些問題,所以,對於像我一樣喜歡寫代碼、打算長久做程序員的兄弟,這裡分享一些相關的經驗。
持續高效地學習。軟件行業的新技術層出不窮,舊的技術淘汰很快,所以我們更要多多學習基礎技術和原理,那些都是很難改變的,並且基礎紮實了後,學習新的技術也才會更快速。其間我們也不要亂學新技術,我們要關注那些有潛力的技術,也就看準了再學(參看酷殼的《Go語言、Docker和新技術》)。注意,而是跟上大時代已經比較不容易,引領時代的人還是少數,所以,還是要更為高效地學習。積極面對他人的不解。 很多時候,總是會有人說:“到了你這個年紀怎麼還在做程序員?”,這句話感覺就是對程序員這個職業的一種羞辱,社會的價值觀感覺容不下大齡程序員。這個時候,我一般會跟他們解釋到,我40來歲了,我覺得自己的狀態還很好,工作完成沒什麼問題,偶爾加班到凌晨也行,新知識和技術我學起來不比年輕人慢,我在這個年紀有的經驗比他們都多,而且,我這個年紀還在寫代碼,說明我真的喜歡這個事,第二部分,技術
首先,在這部分,主要是瞭解一些技術,這部分的技術可以給於程序員們一些指導。
最流行的語言最熱門的語言
最流行的語言
最熱門的語言
我們可以看到,
Javascript/HTML/CSS是很多人都會用到的,後面的是SQL,這個也沒什麼問題,無論前後端的人,或多或少都會要用到的,這些技術感覺已經成為了基礎必會的技術了,就像數中的加減乘除一樣。Python/Java/Shell 是後端開發主流語言的前三強,Python在今年超過了Java。這裡讓我比較好奇的是居然還有很多人用Shell,這估計跟運維有關,所以,Python的熱可能也是通過運維和大數據相關。流行語言後,第二梯隊的是 C# / PHP / C++ / TypeScript / C ,接下來的是: Ruby / Go / Swift / Kotlin /WebAssembly / Rust… 。但在最被程序員喜歡的編程語言中:Rust / Python / TypeScript / Koltin / WebAssembly / Swift / Go… 都是排在前幾名的。通過這些個信息,我們可以看出主流技術、有潛力的技術,傳統過氣技術,以及相關薪資,對我們在選擇編程語言上有一定的啟示。
在後面,我們可以看到:
在 Web 開發框架上,主流使用還是 jQuery, React.js,Angular.js 為最前面的三個前端開發框架。而被程序員所喜歡的則是 React.js,Vue.js,Express, Spring,程序員非常不喜歡 Drupal,jQuery,Ruby on Rails 和Angular.js……在其它開發框架/庫/工具上,主流是Node.js、.NET、Pandas、Unity 3D、Tensorflow、Ansible、Cordova、Xamarin……而程序員比較喜歡的是.NET、Torch/PyTorch、Flutter、Pandas、Tensorflow、Node.js …在操作系統上,主流使用Linux、Windows、Docker、Android、AWS……,而程序員最喜歡的是Linux、Docker、Kubernetes、Raspberry Pi、AWS、MacOS、iOS……在數據庫上,MySQL、PostgreSQL、MSSQL、SQLite、MongoDB、Redis、Elasticsearch是比較主流的,而程序員非常喜歡的是,Redis、PostgreSQL、Elasticsearch、Firebase、MongoDB……,程序員比較討厭的是 Couchbase、Oracle、Cassandra、MySQL。
接下來的開發工具中,我們可以看到:
Visual Studio Code 成為了最流行的開發工具。讓我沒有想到的是跟在後面的是 Notepad++(好久沒用這個工具了,我得找回來用用了),而IntelliJ、Vim、Sublime Text排以後面。 Eclipse 和 Atom 動力不足,Emacs 開始變得小眾了。程序員主要的開發平臺還是Windows佔了近1/2, MacOS和Linux隨後,各佔1/4。有38%的人使用容器技術做開發,30%的人使用容器做測試,在生產線上使用容器的有26%看樣子編程開發工具還是Visual Studio 和 IntelliJ的天下,MacOS/Linux正在搶Windows的開發市場
接下來,StackOverflow給了一個技術圈的圖
從上面這個圖中,我們可以看以技術的幾圈子:
Microsoft圈 – Windows、.NET、ASP.NET、C#、Azure、SQL ServerJava圈 – Java、Spring手機圈 – Android、 iOS、Kotlin、Swift、Firebase前端圈 – Javascript、React.js、Angular.js、PHP大數據圈 – Python、TensorFlow、Torch/PyTorch基礎平臺圈 – Linux、Shell、Vim、Docker、Kubernetes、Elasticsearch、Redis……其它圈子 – C/C++/彙編圈子、Ruby圈子、Hadoop/Spark圈子、……看到誰的圈子大了吧,圈子大的並不代表技術實力強或是有前途,不過可以代表在那個圈子相關的關聯技術,一方面,可以給你一些相關的參考,另一方面,整體可以讓你看到全部的目前比較主流的技術。
第三部份 工作
在第三部份工作中,我們可以看到如下的一些數據:
從工作中我們可以看到,程序員還是比較關心技術和公司文化的,換工作也是這個職業很正常的特性,他們並不喜歡被打擾,希望有足夠的時間,而對於工程質量還是很有追求的。
最後用一張程序員的“每週工作時間” 來結束本文!
另外,想學習前端的小夥伴們可以關注+私信回覆:【資料】已經為大家準備好最新的前端資料。
私信回覆《資料》免費獲取