科技愛好者週刊(第 160 期):中年碼農的困境

阮一峰發表於2021-05-28

本雜誌開源(GitHub: ruanyf/weekly),歡迎提交 issue,投稿或推薦科技內容。

週刊討論區的帖子《誰在招人?》,提供大量程式設計師就業資訊,歡迎訪問或釋出工作/實習崗位。

封面圖

雲南紅河州的蝴蝶谷,5月出現蝴蝶大爆發,數量是十年來最多,估計達到1.5億隻。(via

本週話題:中年碼農的困境

上週談到了遊戲開發者的年薪,我後來想到,曾經在 B 站看過一個影片,也是講這個事情。

我又重新看了一遍,還是感到說得很好,想分享給大家。下面就是我總結的影片主要內容,下文的"我"都是指影片的講述者。

2008年,哈工大研究生畢業後,我和同宿舍的同學一起來了上海。他在盛大遊戲工作幾年後,回了廣州老家,我們就很少聯絡了。

前一段時間,我有事找他,就聊了一下近況。他本科和碩士都是計算機專業,現在廣州的一家遊戲公司上班,還在寫程式碼。我們都已經35歲了,我也想知道,這個年齡段的中年碼農,現在的行情怎麼樣?

他跟我說了幾個情況。首先,跟大家想的一樣,加班非常厲害。週一到週五,每天基本是晚上十點下班,如果遇到專案上線或者重大更新,那肯定是凌晨兩三點下班,通宵也是有的。週六還要正常上班。

他現在的這家公司比較坑。遊戲公司給研發人員的基本工資不會太高,你的很大一部分收入來自專案獎金。去年他們公司有一個專案上線,就在上線之前,把整個專案組解散了,要麼辭退,要麼分配到其他的專案組。公司這是為了節省成本,少發獎金。很多公司都這麼幹,沒有辦法的,員工永遠是處在弱勢的地位。

然後,我很好奇,也是很多人好奇的,985高校的計算機碩士,工作到現在有12年了,收入是多少呢?他跟我說,他的月薪是每月稅後三萬多,具體多少他沒說,獎金我也沒問。

我是自由職業者,會擔心下個月的收入,我覺得他在公司上班,可能相對穩定一點。他說自由職業者的所有擔心,他作為上班族都有,擔心會被裁員。裁員是所有中年碼農,或者說所有中年職場人士,都避不開的一個話題。35歲到40歲的這些職場人士,如果職位做不到中層,你的人力成本是很貴的。把你最佳化掉,僱傭那些剛畢業的年輕人,對公司是更優的選擇。他們更有體力,也更聽話,執行力也更強。很多公司裁員時,第一考慮的就是中年的中低層職員。作為中年人,如果你平時不加班,萬一績效評得不好,那就可能被最佳化掉。

我剛畢業時,很多同學和同事可能心裡想的是,寫幾年程式碼,程式碼寫得好之後去轉管理層。後來有一些人真的轉了管理,但是更多的人是轉行,不做碼農了,因為年紀大了,各種體力都跟不上了。轉管理層畢竟是少數,因為僧多粥少,只有那麼幾個位置,而且有些人就不適合做管理,喜歡寫程式碼。就算成功晉升管理層,往上走就更難了,很多時候只能走到中層,很難走到高層。所以,對於中層管理者,前面說的那些中年危機,他同樣都有。

現在已經有很多三四十歲的碼農了,好訊息是有一小撮人,像我同學那樣,依然在寫程式碼,壞訊息是很多公司對於中年的碼農比較苛刻,由於他們的綜合人力成本比較高,很容易被最佳化掉。這就是現狀。

下面對於那些年輕的碼農,我給幾個建議吧。

(1)要有積累。不管是文字、影片、專案、程式碼等等,一定要有積累,要在本職工作以外,有一個東西你可以慢慢的累積下來。最開始的幾年,可能都沒有什麼收益,但你最好還是要堅持下去。我覺得,積累是一種很強大的力量,比學習能力更重要。因為隨著年齡的增長,你的學習能力是在下降的,而且行業和技術迭代比較快,一直有新東西出現,你必須不斷地保持學習,這很困難。

(2)要讓自己不可或缺。公司制定了很多很完善的流程和制度,目的就是為了讓每一位員工都可以被替代,一旦有人離職,都可以在短時間內找到替代他的人,這樣才能保持公司的正常運轉。個人的策略其實就是跟公司相反,讓公司不容易找到替代你的人。如果公司需要花費較長時間或者較大的成本,才能找到合適的人來替換你,那麼你就是不可或缺的。

(3)要保持開放的頭腦,要善於接受。每個人的見識是有侷限的,世界是多元的,每一次交流都是認知的碰撞。很多人就是不善於接受別人的觀點,很固執。我並不是說,讓你無腦地贊同別人,而是你願意去嘗試或者驗證別人的觀點。這樣才會給自己帶來更多的機會,蠻幹是沒有出路的。中國大部分碼農的現狀是不樂觀的,如果你不多去思考的話,情況可能會更加的不樂觀。

Authing 身份雲

以後,週刊會不定期推廣國產軟體精品和新品,每週詳細介紹一款軟體。如果大家有意推廣自己的產品,歡迎與我聯絡(Email:[email protected])。


本週的主角是北京蒸汽記憶科技有限公司的 Authing。去年他們在週刊上亮相過,經過近一年的密集開發,Authing 產品有了大幅度改進,功能穩定性顯著提升,SDK 也更加完備,所以想再給大家介紹一下他們。

如果用一句話表達,Authing 做的是身份認證和授權管理的 SaaS 服務。說得通俗一點,他們透過雲服務,幫外部應用解決使用者登入和許可權設定問題,國外稱為 IDaaS(ID as a Service),中文譯為"身份雲"。

使用者的認證和許可權管理對軟體來說特別重要,不僅要保證資料安全,還要滿足各種協議和使用場景,對企業來說往往是開發難度大,既耗時又費人力。

Authing 就是為了解決這個痛點而生的,透過將使用者資料與軟體本身的功能解耦,使得開發者不必自建身份管理系統,只需要呼叫 Authing 的雲服務,不僅提升了安全性,還節約了開發時間。

小到幾行程式碼的登入表單,大到企業應用的身份中臺,你都可以在他們的平臺上進行定製,整個過程方便快速,而且價格低廉。

具體來說,Authing 提供三種不同的使用方法:

(2)如果不想讓使用者跳到外部登入頁,就使用他們提供的前端登入元件,嵌入自己的 Web 或移動端頁面,完全不需要自己實現登入 UI 和認證邏輯。

(3)自定義登入 UI 和認證流程,這樣靈活性最大,但需要自己呼叫 API 開發,目前 Authing 提供 10 餘種主流語言或框架的 SDK

值得一提的是 Authing 提供多端支援,Web 頁面、移動端、原生 App 和小程式等,都可以接入。具體使用哪一種認證(密碼、手機二維碼、社會化登入和多因素認證等),需要自己在後臺配置。至於更復雜的許可權控制,就請看文件了。

為了減輕開發負擔,尤其是企業應用的開發,Authing 新上線了"應用市場",支援常見的雲服務平臺(比如,阿里雲、騰訊雲)。如果你的應用架設在這些雲平臺,那麼只要安裝一次對應的適配層,就能實現當前平臺上所有應用的單點登入。


你也許想不到,他們是一家 95 後開發者成立的創業公司,才不到兩歲,業務就已經蒸蒸日上,完成了多輪融資,每⽉的使用者規模達數千萬,支援著幾萬個企業級應用,國內大型企業(比如中國石油、國家電網)、事業單位(比如高等教育出版社)、知名外企(日本豐田、德高集團)和眾多的創業公司都是他們的客戶。

尤其難得的是,他們還熱心於技術傳播和使用者教育,寫了很多科普文章。我推薦大家看一下他們的部落格論壇,裡面有很多不錯的原創內容,比如《LDAP 協議入門》《單點登入教程》。這說明他們把產品真正當作一種技術理想,這在國內是不多見的。

最後,歡迎大家試用他們的服務,前 3000 次的認證是免費的,此後只對活躍使用者收費,不登入就不收費。更多問題,可以去論壇提問和諮詢。

科技動態

1、142年的種子實驗

1879年,一位美國植物學家在密西根州採集了大量植物種子,裝瓶後埋在土裡,希望幾十年或幾百年後再挖出來,看看種子是否還能發芽。從那以後,大約每隔20年,該實驗的看護者就會挖出一個瓶子,將種子重新播種。

2021年4月中旬,密歇根州立大學的幾位老師挖出了其中的一個瓶子,種下了裡面的種子。到了4月23日,第一株幼苗破土而出,截止到5月初,已經有11株幼苗發芽了。

這是世界上執行時間最長的實驗之一,已經進行了142年,植物學家希望它至少還能持續80年,延續到22世紀。

2、Amazon Sidewalk 網路

Amazon 公司宣佈,將在6月份啟動一個叫做 Sidewalk 的共享網路。以後,使用者只要購買了 Amazon 的硬體裝置(比如 Echo 智慧音響、Ring 智慧門鈴),這些裝置就會分享使用者家中一小部分頻寬,給附近的電子裝置共享,讓那些裝置可以網路通訊。

這樣一來,物聯網裝置只要具有藍芽模組,就可以隨處上網,大大擴充套件了功能。舉例來說,運動時可以只帶一個手錶,不用帶手機,就將運動資料發到網上;再比如,追蹤項圈可以將寵物的 GPS 座標實時發到網上。

3、扁平義大利麵

義大利麵通常是螺旋狀或管狀,這樣的麵條有一個缺點,就是很佔包裝空間。一大包義大利麵,真正的容量可能只有包裝體積的40%。最近,卡內基梅隆大學的研究人員發明了一種扁平義大利麵,煮熟以後會變得捲曲,圖片是麵條水煮前後的對比。

它的原理是在平坦的麵條上刻出溝槽,這些溝槽的形狀和深度,是研究人員事先使用計算機和物理實驗確定的。水煮時,由於溝槽面的膨脹小於平滑面的膨脹,導致麵條捲曲變形。理論上,還可以讓麵條水煮後呈現更復雜的形狀。

4、豬皮移植

河南周口某醫院為燒傷病人移植豬皮,手術利用豬皮覆蓋保護患者被燒傷的皮膚,等到患者新皮膚組織再生後,移植的豬皮會自行脫落。

嚴重的燒傷病人需要多次移植。該醫院稱以前有過患者進行多次豬皮移植手術,"當時一共用了6頭豬。"

5、

谷歌的 Fuchsia 作業系統正式亮相,用在自家的智慧家居控制器 Nest Hub 上面。這是谷歌的第三個作業系統,前兩個是安卓和 ChromeOS。

6、

Facebook 在《紐約時報》等美國大報,刊登全版廣告(下圖),抨擊蘋果公司的新版本 iOS 允許關閉使用者追蹤,認為這樣將打擊美國小企業,因為 Facebook 無法為他們提供幫助了。

四種螢幕

瑞士巴塞爾的一個基金會,委託當地的藝術家,創造了一個裝置藝術品,使用四個螢幕展示當前時間,完成後會放到機場和火車站。

這四個螢幕分別代表了顯示技術的四個階段。

第一個是1960年代的機械點陣屏(Flip-Dot),透過電磁方式翻轉黑白圓點,來顯示內容。

第二個是1970~1980年代的單色液晶 LCD 屏,透過螢幕底下的燈管發光,只能發藍光。

第三個是2000年左右的 LED 屏,透過紅色、綠色、藍色的發光二極體的不同組合,顯示出彩色。

第四個是當代的液晶 TFT 屏,使用很小的薄膜電晶體,使得解析度可以做得很高。

文章

1、使用 Notion API 建立自己的賬本(中文)

Notion 最近開放了 API,作者詳細介紹如何寫一個 Python 指令碼,呼叫 Notion API,將支付寶和微信匯出的交易記錄,輸入 Notion 形成一個賬本。

2、如何畫出螺旋曲線?(英文)

作者使用通俗語言,介紹螺旋曲線的數學含義,並給出多個 JavaScript 示例。

3、樹莓派架設公網網站(英文)

作家介紹如何在家庭網路之中,使用樹莓派架設一個網站,然後透過埠對映,供外網訪問。

4、Linux 系統的磁碟分析工具 gdu 用法(英文)

gdu 是 du 命令的 Go 語言版,用來分析 Linux 和 MacOS 系統的磁碟佔用情況,提升了執行速度,並且有命令列圖形介面。

5、為什麼我們從 Webpack 切換到 Vite?(英文)

Replit 解釋為什麼將前端打包工具,從 Webpack 轉為 Vite。

6、JavaScript Web Cryptography API 的用法(英文)

瀏覽器原生支援 Web Cryptography API,用於加密和解密,本文透過舉例,介紹這個 API 的用法。

7、x86 計算機的棧頂位置(英文)

C 語言變數儲存在記憶體的棧(stack)裡面,從棧底開始存放,直到棧頂。這個概念很容易混淆,因為棧底是記憶體的高位地址,棧底是記憶體的低位地址,本文就來分析這個概念。

8、山羊吃草問題(英文)

如果把山羊拴在穀倉大門上,山羊的活動面積就是上圖粉色的部分,具體大小容易算出來。

數學家對這個問題進行了很多發揮,其中有一個版本就是,如果把山羊拴在一個圓形穀倉裡面(下圖),請問繩子的長度是多少,可以讓山羊的活動面積達到穀倉的一半。

工具

1、Slidev

這個工具使用 Markdown 格式編寫 PPT 幻燈片,功能較多。

2、Vulture

一個 Python 的靜態程式碼檢查工具,可以發現沒有用到的程式碼。

3、Send

Mozilla 基金會曾經推出了一個檔案分享服務,後來停止開發了。社群就接過來,做成完全的開源版,現在可以自己搭建,並且有 Web、命令列和安卓等各種客戶端。

4、Sequencer 64

一個架子鼓的網頁模擬器。

5、Id128

一個 JavaScript 庫,生成 UUID(通用唯一識別碼),支援多種演算法。

6、Pyodide

這個庫是瀏覽器的 Python 執行時,透過 WebAssembly 指令碼讓網頁執行 Python 程式碼,可以透過它載入一些人工智慧或者科學計算的庫。

7、Zulip

一個團隊協作工具,將聊天和電子郵件的執行緒模型結合在一起,類似 Slack,但是更像一個內部論壇。

8、Play.js

一個 iOS 應用,提供 JavaScript IDE,允許在 iPhone 和 iPad 上開發 Web 和 Node.js 應用。

9、Magician

一個國內開發者寫的 Java 的網路協議解析包,可以用作 HTTP 和 WebSocket 伺服器,支援 TCP 和 UDP 通訊,使用簡單。(@yuyenews 投稿)

10、NewTabEditor

Chrome 瀏覽器的外掛,可以讓新標籤頁變成一個文字編輯器。(@5A59 投稿)

資源

1、CSS 學習教程

谷歌出品的 CSS 教程,內容很豐富全面,一共有24課。(@wxyudl 投稿)

2、Iconic

一個開放式的圖示倉庫,可以分類查詢圖示,免費下載。

3、WebGL 指紋

一些大型網站使用 WebGL 生成使用者指紋,用來追蹤使用者。這個網頁列出了不同公司使用的追蹤程式碼。

4、MANUZOID

這個網站可以搜尋100多萬種產品的英文產品說明書。

5、鳳凰架構

一本中文的開源書籍,介紹如何構建一套可靠的分散式大型軟體系統,可以免費閱讀。(@1228857713 投稿)

圖片

1、世界最長的公寓樓

俄羅斯聖彼得堡有一座25層公寓樓,長達990米,彎彎曲曲,像一條長蛇。

照片看上去有很多棟樓,其實都是連在一起的。整座建築有35個入口,3000多套公寓,如果每家有一輛車,就要解決幾千輛車的停車問題。

2、印度山城

艾索爾(Aizawl)是印度米佐拉姆邦(Mizoram)的首府,整座城市完全建在山上。

整個山頭密密麻麻都是房子,綿延幾公里,還有四通八達的馬路和公交系統,非常壯觀。

文摘

1、 賈伯斯反對第三方硬體

摘自《矽谷革命:成就蘋果公司的瘋狂往事》一書。

蘋果公司最早的產品 Apple II 計算機,是聯合創始人沃茲設計的。他是一個具有共享精神的工程師,很看重硬體的擴充套件性,所以他賦予 Apple II 極大的擴充套件性,內建了七個外接卡插槽,並經過精心設計,每張外接卡都能以自身的 ROM 晶片來執行內建軟體。如此靈活的設計讓 Apple II 能夠執行大量的應用程式,同時也使得很多第三方公司為 Apple II 開發硬體。

不過,後來 Macintosh 電腦的設計負責人 Jef Raskin 有不同的想法。他認為,擴充套件插槽帶來的複雜性(必須允許使用者拆開電腦),是阻礙個人電腦普及的原因之一。而且,很多第三方硬體質量參差不齊,不一定能夠按照預想的方式工作。不同的第三方硬體也缺乏一致性。

他認為,蘋果公司應該推出標準化的、易用的、價格實惠的電腦,這樣才能讓產品大賣,允許硬體的擴充套件性只會徒增成本和複雜性,所以應該儘量避免。

賈伯斯在很多事情上都和 Jef Raskin 有不同意見,但是唯獨對硬體的擴充套件性看法相同。他也認為,擴充套件性是設計上的缺陷,而非特性。據說賈伯斯以前就很反對 Apple II 有太多的擴充套件插槽,所以他宣佈 Macintosh 永遠都不提供擴充套件插槽,外殼要密封起來,只留下兩個串列埠。

後來,他的一生中推出的所有蘋果產品,擴充套件性都非常差,都不允許有第三方硬體擴充套件。

這樣做雖然能保證對產品的控制,但有一個嚴重的缺點。由於計算機技術發展很快,硬體很容易過時,第三方擴充套件可以增加裝置的適用性,幫助產品滿足不同的需求,延長銷售壽命。一旦禁止,就必然要求公司要源源不斷地推出受歡迎的產品。

言論

1、

電視機的解析度越高,螢幕尺寸就會越大,所以 8K 電視機不太可能進入家庭。正常情況下,在 3 米的距離觀看電視,8K 螢幕需要達到300英寸,否則意義不大,4K 解析度也有類似問題。

較高的動態範圍和較寬的色域,對於電視機可能更有意義。

-- 佳能公司資深研究員

2、

中國的大城市喜歡建造超高層建築,我將這種現象稱為"貧困時代的遺產"。過去的貧困時代仍然給整個社會留有一種落後的價值觀,建築物拼命比高度,展覽館、音樂廳、機場拼命比面積。

建築物適當的高一點,適當展示形象可以,但不應將建築物的高度視為現代化的象徵。

-- 《專家談深圳賽格大廈晃動》

3、

如果你的身家達到440億美元,你也不會想忍受管理手下的小兵。

-- 國外網站評論張一鳴辭去位元組跳動的 CEO

4、

1979年,袁隆平的雜交水稻技術被引入美國,這是中華人民共和國曆史上的第一個智慧財產權轉讓案例。

-- 維基百科的"袁隆平"條目

歷史上的本週

2020年(第 109 期):播客的價值

2019年(第 57 期):分享知識是否違反人性?

2018年(第 6 期):未來還需要苦學外語嗎?

訂閱

這個週刊每週五發布,同步更新在阮一峰的網路日誌微信公眾號

微信搜尋"阮一峰的網路日誌"或者掃描二維碼,即可訂閱。

(完)

相關文章