這裡記錄每週值得分享的科技內容,週五釋出。
本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。
週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。
封面圖
重慶市很多山地,地形複雜,產生了特有的奇觀:被高架道路團團圍住的樓盤。(via)
本週話題:遊戲開發者的年薪
最近,推特上面有很多歐美的遊戲開發者,曬自己的薪水,使用 #GameDevPaidMe 這個標籤就能看到,從中可以瞭解國外程式設計師的收入。
下面是一個美國開發者的發言。
他有超過十年的開發經驗,年薪是20多萬美元。這還是在西雅圖,如果在灣區,工資可能還會再高一些。這跟我聽說的差不多,美國高階程式設計師的年薪,一般都會超過20萬美元(約130萬人民幣)。
我沒想到的是,歐洲程式設計師的年薪,比美國少非常多。
上面這個英國開發者,作為高階程式設計師,年薪居然才4萬英鎊(約36萬人民幣)。他入行時,更是少到1.5萬英鎊(約14萬人民幣)。歐洲其他國家的情況也差不多,年薪也就幾萬歐元,如果是東歐國家(比如波蘭),薪水就更低了。
這就是令我吃驚的地方, 西歐國家的人均 GDP 遠高於中國,但是程式設計師的收入居然與中國差不多,甚至還低於中國。
我敢說,國內高階遊戲開發者的年薪,肯定不止4萬英鎊(36萬人民幣)。我舉一個例子,去年有一條新聞,騰訊起訴了兩名90後前員工,他們都是遊戲開發,離職後違反了競業條款,加入了競爭對手。為了計算違約金,法院的判決書詳細列出了薪資水平。
吉某某於2019年3月4日提出辭職,工作至2019年4月1日。2018年4月至2019年3月期間,吉某某每月固定工資32,240元,騰訊公司於2018年11月以"稅前發放"名義支付吉某某344.38元,2019年2月支付吉某某其他獎金113.08元。騰訊公司另發放2018年年終獎203,240元。
按照上面列出的數字,工資 + 年終獎接近60萬人民幣。這比英國遊戲開發者的收入,高出了一大截。這個還只是騰訊的普通開發,算不上骨幹程式設計師。
結論就是,中國程式設計師的年薪已經不低了,雖然不如美國,但是一點不輸給歐洲,高階程式設計師的收入其實要比歐洲高得多。 如果人民幣以後升值,薪水差異就會更大。我在推特上說,如果以國內遊戲業的薪水去歐洲招人,可以招到非常好的程式設計師。網友在底下評論,人家的薪水是以每天工作8小時計算的,這也是事實。
以前我們總是說,中國的勞動力成本低,這種說法已經不成立了,現在歐洲程式設計師反而比國內更便宜。這樣的一個直接後果就是,外包行業在國內搞不下去了,軟體外包就是比誰的成本低,國內的外包行業已經在萎縮了,倒是收費高昂的軟體諮詢公司越來越多。
對於年輕程式設計師來說,這也是前所未有的挑戰。你的工資高了,但是面對的競爭也強了,你是跟全世界的優秀人才在競爭。如果國外程式設計師比你優秀,還比你便宜,那麼僱主可能不會選擇你,反正可以遠端開發。所以,大家要有世界眼光,不要滿足於跟周圍的人比,要以世界水平來要求自己。
深度剖析 React 原始碼
學習前端開發時,很多同學都有想法,想啃一啃框架的原始碼。
這是很好的想法。如果能看懂原始碼,用起來就會得心應手,個人能力也是很大提升。萬一還能向框架倉庫提交程式碼,成為貢獻者,那更是個人的榮耀和職業生涯的成就。
首當其衝的,就是 React 的原始碼。它是全世界最流行的前端框架,應用最廣,包含了很多重要概念(比如虛擬 DOM、hooks、fiber 等),多端適用,很有學習價值。
但是,React 原始碼量級實在是太大了(壓縮後接近 300KB),內部構成非常複雜。很多同學第一次開啟原始碼,就被"勸退"了,因為根本找不到程式碼入口。就算硬著頭皮讀下去,也是如墜雲霧之中。
就算這樣,考慮到下面幾點,我還是鼓勵大家啃一下 React 原始碼。(1)大廠面試會問到 React 原理,沒看過原始碼,很難深入理解。(2)讀原始碼能提升解決 bug 和效能最佳化能力。(3) React 框架本身是一個非常好的學習資料,可以學到怎麼寫出規範的和可維護的程式碼。(4)讀懂原始碼可以證明你的潛力。
本週的課程資料就是 《深度剖析 React 17 原始碼資料包》 ,由前京東資深前端工程師高少雲老師主講。這份資料從簡單的手寫 mini-react 入手,再到複雜的fiber、hooks,深入解讀 React 原始碼。
課程主要內容如下。希望能夠引導大家,真正入門 React 原始碼。
- 第一課:《初步解讀 React 的工作原理》,講解虛擬 DOM 和 JSX 的原始碼實現。
- 第二課:《Fiber 的背景與實現》,講解 Fiber 架構。
- 第三課:《深入解讀 Hooks》:深度解讀 Hooks 原始碼。
現在只需要微信掃描下方二維碼,就可以 0 元 獲得《深度剖析React原始碼》資料包。有意掌握 React 的同學,不妨學學看。
科技動態
1、
一家美國 3D 列印公司推出了木纖維列印,可以 3D 列印出木製品。
2、
國家廣電總局釋出統計,我國網民日均刷影片約100分鐘。這個時長應該已經超過了刷網頁的時長。
3、
山東省和河南省簽訂《黃河生態保護協議》,規定從河南流入山東的黃河水,如果水質改善一個等級,山東給予河南6000萬元補償資金;如果惡化一個等級,河南給予山東6000萬元補償資金。
4、
美國政府正在考慮透過一項新法律,如果企業遭到勒索軟體攻擊,法律將禁止向勒索者支付贖金。政府希望讓勒索者無利可圖,從而停止攻擊。
5、
一位澳大利亞賽車手創下了氫動力汽車續航的世界紀錄,他使用一輛現代牌氫動力汽車,單次續航887.5公里,共消耗了6.27公斤的氫氣。
6、
巴勒斯坦和以色列最近爆發軍事衝突,下面是一張5月14日凌晨的照片。右側是巴勒斯坦發射的火箭彈,左側是以色列"鐵穹"( Iron Dome)防禦系統發射的攔截導彈,兩方對射,看上去非常壯觀。
7、
北京大興建成全球最大的加氫站,日加氫量可達4.8噸,共有8臺加氫機、16把加氫槍。一輛總重4.5噸的氫燃料電池貨車,只需加氫3分鐘,就能續航350公里。氫能每公斤30元,與傳統貨車的加油成本基本相當。
8、32位股價不夠用
美國最貴的股票,目前是巴菲特的伯克希爾·哈撒韋公司 ,過去一年股價不斷上漲,已經達到了421,000美元一股。
這給納斯達克股票市場造成了麻煩,因為交易所使用32位格式儲存股價,能夠記錄的最大值是2^32 - 1
(4,294,967,295)。其中,留出4位作為小數,所以能夠記錄的最高股價為429,496.7295美元。只要伯克希爾·哈撒韋公司再上漲2%,就會超出這個最高價。
納斯達克市場已經暫停了伯克希爾·哈撒韋公司的報價,開始升級系統。巴菲特曾經被問到,為什麼不像大多數公司一樣拆分股票,讓股價變得便宜。他回答,這樣會吸引來很多不老練的短期投資者,他們根本不知道自己在做什麼,所以不會拆分股票。
文章
1、鴿子在我家視窗孵蛋(中文)
一對鴿子在陽臺的空花盆築了個簡易巢,然後在裡面下了兩隻蛋,並且孵了起來。作者觀察了半個月,終於看到小鳥孵出來了。
2、如何生成不規則邊框的背景圖(英文)
本文介紹為一個網頁元素新增不規則背景圖(上圖)的幾種方法。
3、Git 的 squash 合併(英文)
Git 分支進行合併時,有多種合併方式:直進合併、非直進合併、遞迴合併和 squash 合併。最後一種 squash 合併,指的是把待合併的節點彙總成為一個新的提交。本文介紹這種合併方式。
4、JavaScript 模組的程式碼重複性(英文)
作者做了一個實驗,他新建了一個 Angular 的標準專案,分析 node_modules 目錄裡面安裝的所有模組,對指令碼檔案的每一個函式計算雜湊值,結果發現61%的函式是重複的,莫非大家都是從 StackOverflow 複製程式碼。
5、Rust 的不知名貢獻者(英文)
我們都知道,很多語言的創始人、主要貢獻者是誰。但是,Rust 語言的主要貢獻者是誰,大家卻說不出來。本文介紹 Rust 語言背後的貢獻者。
6、微小變化帶來的大收益(英文)
作者講了幾個案例,都是網站細節的微小改進,帶來使用者體驗的巨大改進,比如 GitHub 的 favicon 顯示構建結果(上圖)。
7、使用 Go 語言學習蒙特卡洛模擬(英文)
本文采用 Go 語言,使用各種小例子,講解什麼是蒙特卡洛模擬。
8、走進半導體巨頭(英文)
美國 CBS 電視網的著名新聞節目《60分鐘》,最近播出了一期半導體特輯,訪問英特爾和臺積電的 CEO,報導晶片為什麼會出現短缺。這是節目的文字稿。
9、JavaScript 的延遲載入屬性模式(英文)
如果一個物件的屬性值需要非常昂貴的計算,我們可能希望,只有用到這個屬性時,才對它求值。本文討論這在 JavaScript 裡面應該怎麼實現,作者是著名的尼古拉斯·扎卡斯(Nicholas C.Zakas)。
工具
大家用桌面瀏覽器訪問這個網站,會列出你的電腦安裝了什麼應用(上圖)。這樣做的目的,是生成一個使用者指紋,從而追蹤使用者,作者寫了一篇詳細的文章,解釋這是怎麼實現的。(@jwenjian 投稿)
2、Chanify
一個開源的 iOS 裝置訊息推送工具,分為伺服器和 iOS App 兩個部分。安裝以後,可以將文字/圖片/檔案等各種訊息推送到 iOS 裝置。(@wizjin 投稿)
一個透過 GitHub Actions 自動更新的 RSS 閱讀器,每次更新後會釋出成 GitHub Pages 的靜態網頁。(@chuanqisun 投稿)
4、APK 線上分析
一個線上工具,用來分析、修改 APK 檔案(安卓應用安裝包),以及提取 APK 圖示。(@codemofa 投稿)
這個線上工具透過 WebRTC,可以將你的瀏覽器視窗分享給他人,也就是說,別人可以看到你在頁面上的一舉一動。
一個 Web 工具,透過拖拉自動生成程式碼倉庫的 README 檔案。
7、FicusJS
一個輕量級的 Web Components 開發框架,用於快速開發 Web Components 元件。
這個倉庫收集了 GitHub 釋出的官方 Web Components 元件,目前有17個,都是 GitHub 官網實際在使用的專案。
9、一紙簡歷
使用 Markdown 編寫簡歷的線上工具,支援模板與實時預覽,可以匯出為 PDF 檔案。(@shfshanyue 投稿)
10、木及簡歷
編寫簡歷的線上工具,與上一個軟體類似,有多個模板可選擇,原始碼見 GitHub。(@hua1995116 投稿)
資源
這個網頁收集了 FFmpeg 一些常見操作的命令列寫法。
該網頁收集各種編譯器相關的自學資源。
一本英文的 JavaScript 教程,免費閱讀。從零基礎的語法開始講起,為資料研究人員提供必要的 JavaScript 知識。
一個專門收集各種 IPv6 網路測試服務的網站。(@TulvL 投稿)
Starlink 的衛星上網,目前需要有地面站。網友在谷歌地圖上建了一個圖層,標出現階段所有的地面站位置。亞洲一個都沒有,所以國內就算有衛星天線,恐怕目前也無法使用 Starlink 衛星上網。
圖片
1、數學家的黑板
美國普林斯頓大學最近出版了一本《數學家的黑板》攝影集,收錄了很多數學家的課堂板書。
2、邁阿密的色彩
邁阿密是美國南方的旅遊勝地,是美國唯一一個外國出生的居民(58%)多於本土出生的居民的大城市。
GitHub 的一個產品經理最近移居邁阿密,感嘆這個城市的色彩,豐富得難以想象。她在自己網站上釋出了許多照片,下面是其中的幾張。
文摘
Oracle 公司的創始人賴瑞·艾利森(Larry Ellison)在回憶錄《軟體戰爭》(Softwar)裡面,回憶了他跟比爾·蓋茨的一段往事。
1993年,我打電話給比爾·蓋茨,討論了一些技術問題。我不同意他的觀點,並解釋了我的理由。比爾說:"我考慮一下,會給你回電話。"
四小時後,比爾·蓋茨回電話說:"我覺得你是對的,但是有幾個地方,我還沒有想通,你能解釋一下 A、B 和 C 這幾點嗎?"
我說:"比爾,你過去四個小時內一直在考慮這個嗎?"
他說,是的,這是一個重要的問題,我必須想通它,現在我們接著把它討論清楚。
我驚呆了。他投入時間和精力,反覆思考這個問題,得出結論我是對的,他是錯的。大多數人不願承認自己是錯的,比爾毫不猶豫就這樣做了。他唯一關心的就是對和錯。這使得他是一個非常危險的對手。
2、對於教育的三點思考
美國培訓行業的一個創業者 David Perell,最近在他的郵件列表裡面, 談了對美國教育的三點感想。
(1)表面上,美國人總是表現出來對教育很關心,學校暴露的各種運作問題都能上新聞媒體。但是,對於學生怎麼學習、在學校裡到底學到了什麼,美國人卻漠不關心。
David Perell 認為,其實應該反過來,需要關心的是學生是否真的學到了東西,而對於學校的各種問題倒是可以漠不關心。
(2)學生應該特別重視寫作課。
如果你不知道如何寫作,可能就不知道如何思考。
(3)老師們總是抱怨學生不聽課,但是很少想一想,自己的講課是否值得一聽。
言論
1、
機器學習模型的耗電量越來越大。目前,最複雜的模型 GPT-3,要使用 1,287 兆瓦的電能,相當於大型水電站的發電量,執行一次產生552公噸的二氧化碳排放量。
2、
很多創業公司是君主制,公司和創始人越來越難以區分,比如特斯拉公司。
-- 《創始人的控制溢價》
3、
創業公司的三個核心要素:團隊,產品和市場。其中最重要的是市場,使用者數量和增長率是決定性因素。創業公司失敗的第一大原因就是缺乏市場。
4、
領先他人一年,你會致富;領先他人十年,你會發瘋。
-- David Perell
5、
我已將手機更改為黑白模式,有效防止了手機沉迷。
歷史上的本週
2020年(第 108 期):陣地戰與奇襲戰
2019年(第 56 期):文科生為什麼不容易就業?
2018年(第 5 期):網際網路時代,做一個好人是划算的
訂閱
這個週刊每週五發布,同步更新在阮一峰的網路日誌和微信公眾號。
微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。
(完)