每年,海外最大的程式設計師集聚地之一Stack Overflow都會在自家開發人員社群發起一次大規模調查,來給程式設計師們畫個像。從最喜愛的技術、工作偏好,甚至年齡學歷性取向,堪稱程式設計師世界一年一度的人口普查。
今年是釋出年度開發者調查結果的第八年,也是受訪者數量最多的一年。與往年調查相比,今年的調查增加了幾個有趣的主題,比如人工智慧和編碼倫理,對於這個最近爭論聲頗高的話題,80%的受訪程式設計師聲稱,開發人員應當考慮他們程式碼的正確用途,但管理者更需要為程式碼的後果負責。
超過10萬名開發人員參加了這一平均問卷填寫時間超過30分鐘的調查,從對填寫時間的容忍足以看出程式設計師的耐心。
以下是今年調查結果的一些重要內容:
- DevOps和機器學習是當今軟體行業的重要趨勢。與這類技術相關的語言和框架的熱度也不斷上升,在這些領域工作的開發人員的薪水最高。
- 只有很小一部分開發者表示他們會寫不道德的程式碼,或者他們沒有義務考慮程式碼的道德影響,但除此之外,受訪者看到了很多灰色程式碼。開發人員不確定他們將如何報告道德問題,並對誰最終負責不道德的程式碼有不同的看法。
- 開發人員總體上對人工智慧提供的可能性持樂觀態度,但對AI的危險性態度並不一致。
- 在我們的調查中,Python在程式語言的熱度有所上升,超過了今年流行的C#,就像去年它超過了PHP一樣。
- 在評估未來的工作時,不同型別的開發人員應用不同的優先順序。女性認為最重要的是公司文化和專業發展的機會,而男性則認為他們最優先考慮的是薪酬和特定技術。
開發者型別:後端開發人員最多
將近60%的受訪者認為自己是後端開發人員,約20%認為自己是移動開發人員。 最常見的組合是後端,前端和全棧開發人員。 高度相關的職業是資料庫管理員和系統管理員,DevOps專家和系統管理員以及設計人員和前端開發人員。
寫程式碼是一種愛好?
許多開發人員的工作並不是以寫程式碼為主。超過80%的受訪者表示敲程式碼是他們的一種愛好。 工作之外的其他興趣或責任似乎並沒有減少開發者對敲程式碼的興趣。
調查顯示,負有照顧責任的父母,經常戶外活動的人比其他群體更容易愛上“搬磚”。
學習方式
在學習新內容時,超過80%的受訪者依靠Stack Overflow Q&A。
此外,開發人員理解良好文件的價值,因為超過80%的人在學習時也將文件用作學習資源。
電腦使用時長:多數程式設計師每天工作時間在9小時以上
我們的受訪者包括專業程式設計人員,學生和業餘愛好者。 絕大多數人通過桌上型電腦和筆記本進行程式設計,通常會投入9-12個小時。
健康習慣:六成以上程式設計師從不鍛鍊
開發人員說,他們不會經常因為工作量而跳過飯菜,而且大多數人表示他們至少會做少量運動。 超過60%的受訪者表示至少每週鍛鍊一次,但選擇“從不”運動的人數最多。
程式語言:JS最受歡迎
JavaScript連續六年被評為最常用的程式語言。
Python的排名上升,今年超過了C#,去年剛超過了PHP。
技術關聯
我們看到專業開發人員和整體開發人員的技術選擇緊密結合。
一些相關的技術通常聚集為一個生態系統,開發者通常會選擇使用同一種生態的程式語言。
在這張圖表中,我們看到一個用於Web開發的大型叢集(JavaScript,HTML和CSS)通過SQL連線到Microsoft技術(C#,Visual Studio和.NET Core)。沿著左邊,我們看到了一個將Java,Android和iOS連線到Linux,bash / shell和Python的連線。 其他較小的相關群集包括Scala / Spark,C / C ++和其他包含特定語言IDE的小型技術。
AI技術:危險和驚喜共存
部分開發人員參與討論了當今世界機器學習和人工智慧作用的重要性:哪些技術可能會帶來危險後果?哪些技術又令人興奮?
關於何種技術是最危險的,每個答案都大致相同,開發人員對此沒有多少共識。但“最令人興奮的AI技術“的回答中,得票最多的是工作可以實現自動化。
AI威脅:誰的責任?
開發人員認為,機器學習和人工智慧演算法背後的創造者和技術人員是最應該對人工智慧所帶來的社會問題負責。
開發人員對人工智慧問題的關注取決於他們所做的編碼工作。例如,當計算機變得比人們更聰明時,資料科學家對演算法公平性的關注度將比任何其他問題提高1.5倍,這是任何型別開發人員中最重視的部分。
許多開發者討論了是否將系統性偏見納入到演算法決策中,以解決AI被濫用而自身不具備檢查和推理的決策途徑的缺陷。
會不會寫不當用途的程式碼?
在假設情況下,當要求開發人員為不當用途的產品或目的編寫程式碼時,超過一半的受訪者表示他們不會寫這樣的程式碼。
道德情景可能很複雜,大約三分之一的受訪者認為要取決於具體情況做決定。
大多數開發人員認為,管理者是為不道德程式碼的結果負最終責任的人。 不到20%的受訪者表示,編寫用於不道德目的的程式碼的開發者是最應該對此負責的。
幾乎80%的受訪者聲稱,開發人員應當考慮他們程式碼的正確用途。
在這道題的開放性回答裡,我們看到了開發人員關於責任的深思熟慮。程式碼的不道德的使用只是偶然情況,但開發人員可以成為抵禦不道德程式碼的最後一道防線。
完整報告線上版:https://insights.stackoverflow.com/survey/2018/#overview