他們調(diào)查了3.9萬名程序員,制作了這份完成度極高的開發(fā)者報告
這是一份樣本數(shù)超過 3.9 萬人的調(diào)查報告,參與調(diào)查的開發(fā)者遍及全球。除了四分之一的開發(fā)者在學會開車前先學會編程之外,還有這些調(diào)查結(jié)果等你發(fā)現(xiàn)。對照這份調(diào)查報告,看看你跟世界上其他國家地區(qū)開發(fā)者之間的異與同各是什么?
Hello World:未來的工作可能發(fā)生巨變,不管從事何種工作,學會編程總是大有裨益。編程有助于培養(yǎng)計算性思維,而計算性思維在制定決策的過程中發(fā)揮著重要作用。傳統(tǒng)的簡歷可能會消失,招聘將會以應聘者的技能為首要基礎。我們在 2012 年底創(chuàng)辦了 HackerRank,旨在幫助每一位開發(fā)者找到適合他們的職位。HackerRank 的發(fā)展速度十分驚人——我們接觸了 320 萬名開發(fā)者,并在去年幫助其中的 2% 開發(fā)者找到了工作。這是我們第一次向 HackerRank 社區(qū)的開發(fā)者發(fā)起關(guān)于開發(fā)技能的調(diào)查。我們得到 39441 個開發(fā)者的反饋,從這些反饋中可以發(fā)現(xiàn)一些很有趣的現(xiàn)象,我們很高興能夠把它們分享出來。要知道,有四分之一的開發(fā)者在學會開車之前會先學習編程。
1 四分之一開發(fā)者在學會開車前先學習編程
你是從幾歲開始編程的?
編程起步不在乎早晚,在 39000 多名開發(fā)者當中,有四分之一在 16 歲之前就開始接觸編程。
而在 26 歲之后才開始接觸編程的開發(fā)者當中,有 36% 已經(jīng)成為高級或更高級別的開發(fā)者,可見他們的職業(yè)生涯發(fā)展得很快。
2 個人電腦的發(fā)展為 70 年代的孩子提供了契機
當前年齡和開始接觸編程的年齡
70 年代的孩子如果想要看到創(chuàng)新科技,他們必須自己動手去創(chuàng)建,因為他們別無選擇,那個時候沒有那么多資源教他們?nèi)绾伍_發(fā)軟件。在 45 歲至 54 歲的開發(fā)者當中,幾乎有一半(47%)在 16 歲之前就開始編程。而在 18 歲至 24 歲的開發(fā)者當中,在 16 歲之前就開始編程的要少得多(只有 20%)。
45 歲至 54 歲的開發(fā)者也是第一波接觸早期個人電腦的人,比如 Acorn Archimedes、TRS-80、Commodore 64 和 Apple 2。因為計算機教育資源的匱乏,他們所受的正規(guī)教育非常有限,但這也是他們自學編程的動力來源。
3 向致力于培養(yǎng)年輕開發(fā)者的英國致敬
從 5 歲至 10 歲就開始編程的開發(fā)者所占比例最高的國家
在這次調(diào)查中,包含至少 100 份反饋的國家有 17 個,其中英國擁有最多的早期開發(fā)者,他們從 5 歲至 10 歲時就開始編程,這些人現(xiàn)在的年齡在 30 多歲至 40 多歲之間。
在這些開發(fā)者還是個孩子的時候,Acorn Archimedes 進入了他們的視野。當時的學校與樂購合作,只要他們在樂購購物,就可以獲得免費的電腦,于是很多孩子都有機會接觸到電腦。這種模式后來歐洲和澳大利亞得到廣泛應用。
現(xiàn)如今,超前思維教育已經(jīng)在英國落地生根,他們要求小孩在 5 歲時就要開始學習編程。
英國當局反復強調(diào),盡早接觸編程為人們進入軟件行業(yè)打開了一扇大門,同時也有助于他們更好地理解計算性思維和對人們?nèi)粘I钣兄匾绊懙能浖到y(tǒng)。
4 幾乎所有的開發(fā)者都對學習如饑似渴
學習編程的途徑
似乎每一年都會出現(xiàn)一些新的編程語言、框架或軟件包,它們的身影遍布于開發(fā)者的博客上。剛開始是 Backbone.js,現(xiàn)在是 AngularJS 和 React。自學成了所有年齡段開發(fā)者的標配,這些開發(fā)者當中有 67% 擁有計算機科學背景,但仍然有 74% 的開發(fā)者表示,他們在一定程度上還是要依靠自學。
平均每個開發(fā)者已經(jīng)掌握了 4 門編程語言,他們表示還想再多學 4 門語言。學習的熱情程度依據(jù)年齡段有一定的差別——18 歲至 24 歲的年輕開發(fā)者計劃學習 6 門新語言,超過 35 歲的開發(fā)者則只計劃學習 3 門。
編程的目的就是要獨立解決問題,所以自學對于成為一名成功的開發(fā)者來說至關(guān)重要。在選擇下一個學習目標時,一定要遵循這樣的原則——把自己根植于某個領域,把學習看成是自我成長的手段。我們可以學習更多的工具,但工具時刻在變化,而最根本的學習動力其實是對編程的好奇心和興趣。
5 年輕開發(fā)者選擇在 YouTube 上自學,而不是通過書本
Stack Overflow 對于自學者來說是最好的去處,幾乎所有年齡段的開發(fā)者都上過這個網(wǎng)站。開發(fā)者們在網(wǎng)站上可以看到其他人之前已經(jīng)碰到并得以解決的問題。
不過,在選擇 YouTube 還是書本來學習編程這個問題上,卻有明顯的年齡段差異。年輕人更喜歡在 YouTube 上自學,而年長的開發(fā)者更喜歡通過看書來學習新技能。更準確點說,在學習一個新工具時,年輕一代中有 65% 會去 YouTube,而年長一代中有 85% 會選擇看書。
兩種方式各有自己的優(yōu)勢。YouTube 的學習模式具有系統(tǒng)性,就像學習大學課程那樣,有一定的結(jié)構(gòu)和穩(wěn)定的進度,而且你可以按照自己的節(jié)奏來學習。YouTube 的另一個好處是適應性,它可以隨著軟件行業(yè)的發(fā)展而變化,而書本則更適合作為計算機科學的基礎載體。任何人都可以很快地在 YouTube 上發(fā)布教程,盡管它們不像書本那樣會包含數(shù)年的精華積淀。不管是哪一種方式,有一點是很明確的:我們正處在計算機教育發(fā)展的浪潮之巔。
6 開發(fā)者學習的都是雇主最需要的編程語言
編程語言日新月異,但對于開發(fā)者來說,掌握核心的編程語言是最為重要的。目前雇主需求量最大的編程語言包括:JavaScript、Java、Python、C++ 和 C。
雇主需求量最大的編程語言與開發(fā)者所掌握的編程語言有著驚人的匹配度。Java、JavaScript、C 和 C++ 以及 Python 都是開發(fā)者掌握得最多的編程語言。
不過從行業(yè)來看,則存在一些變化。例如,Java 在金融領域已經(jīng)流行了多年,而 C 語言因其性能方面的優(yōu)勢在硬件、底層硬件 API 和跨平臺編譯器方面獨領風騷,C# 則在政府部門有更廣泛的使用。
7 JavaScript 框架方面的知識差異最明顯
雇主對 JavaScript 框架的需求和開發(fā)者對框架的掌握情況
編程語言并不會一出現(xiàn)就立馬被業(yè)界采用,而 JavaScript 框架卻改變了這一游戲規(guī)則。
JavaScript 框架的需求量相當大,因為 JavaScript 是唯一可以用于開發(fā)前端、后端、移動應用和瀏覽器插件的語言??梢哉f,JavaScript 統(tǒng)治了 Web 領域。很多雇主都希望開發(fā)者能夠同時掌握 AngularJS、Node.js 和 React。
不過,對于這三門語言來說,雇主想要的和開發(fā)者掌握的知識之間存在最大的差距。React 在這方面的差距最大,不過換句話說,這也為開發(fā)者提供了很好的機會,他們可以學習 React 來滿足雇主的需求。
造成知識差異的另一個原因是 JavaScript 的相關(guān)框架太多。JavaScript 生態(tài)系統(tǒng)發(fā)展得太快,這大概也是造成 JavaScript 框架知識差異的主要原因。
8 幾乎所有的雇主都很看重解決問題的能力
雇主最看重的技能
解決問題的技能幾乎是所有雇主都看重的一點,它比編程語言、調(diào)試技能和系統(tǒng)設計能力更加重要。計算性思維或解決復雜問題的能力比掌握基礎性技能更有價值。
不過,小公司和大公司關(guān)注點有些差別。比如,小型公司比中型公司更看重開發(fā)者對框架的使用熟練程度。
之所以存在這樣的差別,可能是因為框架對于初創(chuàng)公司來說更為重要,他們需要在短時間內(nèi)啟動項目和發(fā)布代碼,而框架可以幫他們做到這點。
9 實際經(jīng)驗比簡歷上的光鮮內(nèi)容更重要
大多數(shù)人認為,招聘者更喜歡那些從名校畢業(yè)的、擁有計算機學位的候選人。但實際上,他們更關(guān)心候選人曾經(jīng)做過些什么,而不是從哪所學校畢業(yè)。大部分招聘者表示,他們看重的是實際的經(jīng)驗,比如前一份工作做的是什么、經(jīng)驗年限和參與過的項目(包括在 GitHub 上的貢獻)。不管是大公司還是小公司,十個招聘者中有九個表示,過往的經(jīng)驗和經(jīng)驗年限可以作為技術(shù)能力的衡量指標,也是最為重要的參考因素。
實際做過什么比其他東西都要來得重要,而小公司在這方面比大公司更為迫切,其比例分別為 80% 和 66%。
簡歷上的東西(學位、教育程度、技術(shù)證書)反而是招聘公司最不看重的,這些東西無法真正衡量候選人的技術(shù)能力。從簡歷上最容易挑選出來的是“經(jīng)驗年限”,因為工作經(jīng)驗與工作年限有著直接的聯(lián)系。大規(guī)模逐個審核候選人的技能是有難度的,而經(jīng)驗年限卻可以作為有力的參考,盡管存在某些人工作時間不長但成長很快的情況。
10 招聘公司的高層非??粗貞刚叩?GitHub 和個人項目
招聘高層最看重的候選人品質(zhì)
招聘公司將 GitHub 作為考察候選人的補充項。C 級別的高層,如創(chuàng)始人、CTO 和副總裁,他們認為 GitHub 項目參與度比經(jīng)驗年限更重要,而學位在這里就更不值一提了。
也就是說,當候選人面到高層這一輪,簡歷上的東西已經(jīng)不那么重要了。大多數(shù)時候,C 級別的高層會讓其他招聘者代勞面試簡歷上的東西,而他們會專注于面試候選人參與過的項目和上一份工作的內(nèi)容。
11 開發(fā)者扎堆在科技巨頭所推崇的編程語言上
開發(fā)者想要學習的編程語言
開發(fā)者最為薄弱以及他們接下來最想學習的編程語言包括:Go、Kotlin、Rust、Scala 和 Swift。開發(fā)者追隨硅谷巨頭公司的趨勢越來越明顯。
谷歌的 Go 語言具有高并發(fā)和快速編譯的特點,而且有谷歌在背后提供大力的支持。谷歌將安卓的首選語言從 Java 改成了 Kotlin,鼓勵開發(fā)者使用 Kotlin。
另外,Twitter 在拋棄 Ruby on Rails 之后,將 Scala 作為首選的語言。而蘋果公司從 Objective-C 轉(zhuǎn)向 Swift 之后,開發(fā)者也不得不跟著轉(zhuǎn)移。畢竟 iOS 開發(fā)已經(jīng)成為主流,大部分開發(fā)者都不想落在他人之后。
12 人人都想學 Python
JavaScript 或許是雇主需求量最大的編程語言,而 Python 卻是各年齡段開發(fā)者最想學的語言,而且已經(jīng)有很大一部分人已經(jīng)掌握了 Python。
Python 因其簡潔、可讀性強和強大的科學工具包而聞名,它還成為計算機科學入門課程的一部分。
在年輕開發(fā)者當中有一個相對反常的趨勢:他們比年長開發(fā)者更不喜歡新出現(xiàn)的語言(如 Go、Kotlin 和 Scala)。實際上,Go 語言剛好是一個汾水嶺。18 歲至 24 歲的開發(fā)者根本不關(guān)心 Go 語言,而 45 歲至 54 歲的開發(fā)者把 Go 語言視為他們最喜歡的語言之一。而 JavaScript 卻正好相反。
有意思的是,大部分新語言(包括 Go 語言在內(nèi))都從舊語言那里借鑒了某些語言特性。Go 語言的主要設計者之一在數(shù)十年前發(fā)明了 C 語言。年輕開發(fā)者有著與生俱來的學習欲望。他們更傾向于全面地學習編程語言,即使有些是他們不喜歡的。而年長的開發(fā)者則會有選擇性地學習,他們根據(jù)自己的經(jīng)驗選擇他們認為更有生命力的編程語言。
13 Node.js 獨占鰲頭
Node.js 是大部分開發(fā)者最喜歡的框架,作為可用于后端開發(fā)的 JavaScript 框架,Node.js 成為全年齡段開發(fā)者的不二之選。而在前端框架方面,我們都知道,AngularJS 和 React 才是當下的時興,不過這種喜愛也只存在于年輕開發(fā)者當中。
45 歲至 54 歲的開發(fā)者對 AngularJS 和 React 的喜愛程度不如年輕人,但他們卻更喜歡 Vue.js。
14 相比人才短缺,技術(shù)能力的評估才是招聘中最大的難題
根據(jù) 7000 多家雇主的反饋,簡歷目前仍然是招聘過程中最為常見的評估依據(jù)。我們的調(diào)查數(shù)據(jù)顯示,81% 的招聘經(jīng)理在最開始會使用簡歷來篩選候選人。
被問及招聘過程中最大的挑戰(zhàn)是什么,招聘經(jīng)理們一致表示,對候選人技術(shù)能力的評估是最大的難題,這個問題比人才短缺還要嚴重。與此同時,只有 55% 的開發(fā)者表示簡歷可以反映出他們的真實技術(shù)水平。
15 開發(fā)者更看重工作與生活的平衡
招聘經(jīng)理在招聘描述里會著重描述職位的技術(shù)棧要求、工作內(nèi)容和福利,但這些不應該成為吸引人才的主要因素。
相反,開發(fā)者們最關(guān)心的是工作和生活的平衡。開發(fā)者們將這點列為他們最期待的一項,而職業(yè)成長僅位居第二。其中,美國開發(fā)者比其他國家(如亞洲和歐洲)的開發(fā)者更看重這一點。
盡管在小公司工作并不是大多數(shù)人的愿望,但仍然位列前三。對于 25 歲之后的開發(fā)者來說,工作和生活的平衡是最重要的一件事情,當然,對于 18 歲至 24 歲的開發(fā)者來說,其重要程度會稍低。
加拿大的開發(fā)者更看重薪資報酬,而澳大利亞則把公司文化放在首位。
我們發(fā)現(xiàn)這里存在一個矛盾點,就是開發(fā)者一方面希望做到工作和生活保持平衡,另一方面又對學習和成長充滿渴望。事實上,因為工具變化無窮,要跟上變化的腳步會讓開發(fā)者感到精疲力盡。不過,好奇心和興趣會讓他們沖忙動力。專注于做自己喜歡的事情,可以更好地平衡工作和生活。
16 彈性工作制大受歡迎
我們知道,工作和生活的平衡對于不同的人來說具有不同的意義。于是,我們進一步深入了解開發(fā)者們真正想要的是什么。
總的來說,彈性工作時間(安拍在早上 10 點到晚上 8 點之間)是實現(xiàn)工作和生活平衡的一種方式。
開發(fā)者希望他們的上司跟關(guān)注產(chǎn)出,而不是呆在辦公室座椅上的時間。遠程辦公也是不錯的選項。25 歲以后的開發(fā)者非常希望能夠進行遠程辦公,而 25 歲至 44 歲之間的開發(fā)者強烈建議在下班后關(guān)閉電子郵件。
17 職業(yè)成長對于學生來說最為重要
學生在找工作時最關(guān)心的是他們將來在職業(yè)方面的成長空間,薪資僅拍在第 7 位。工作與生活的平衡對學生來說也很重要,但僅拍在第 2 位。
學生們渴望學習,不斷挖掘自己的潛力,所以把工作與生活的平衡放在了后面。
18 VIM 編輯器大獲全勝
VIM 還是 Emacs?
VIM 打敗了其他編輯器,大獲全勝。VIM 的擁護者說,VIM 是一款非常強大的基于鍵盤命令的編輯器,這也就是為什么那么多開發(fā)者喜歡 VIM。
19 創(chuàng)始人在 10 歲之前就開始編程的比例是其他角色的 3 倍
從 5 至 10 歲就開始編程
15% 的創(chuàng)始人在 10 歲之前就開始編程,而其他角色比例只有 5%。





