科技愛好者週刊(第 222 期):四十年程式設計感想

阮一峰發表於2022-09-09

這裡記錄每週值得分享的科技內容,週五釋出。

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

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

封面圖

8月12日是今年最後一次"超級月亮",攝影師在德國法蘭克福拍到了一個超級大的月亮,在公寓樓之間出現。"超級月亮"指的是,滿月正好發生在月球軌道的近地點。(via

本週話題:四十年程式設計感想

上週,國外程式設計師論壇 Hacker News 有一篇熱門文章《四十年程式設計感想》

作者說,他8歲學程式設計,今年46歲,再過兩年,就是學習程式設計四十週年了。他寫了一大堆自己的感想,都是肺腑之言。

我覺得說得挺好,發人深思。他的文章很長,我摘錄一些重點內容,與大家分享。

(1)程式設計是長期職業

你開始步入這個行業時,應該意識到,程式設計師是一個長期職業,你可能會從事20年甚至更長。你應該從長期角度看待程式設計。

在長期中,技術來來去去,語言也來來去去,精通一種技術或語言,並不能保證你的長期職業發展。

你的目標不必侷限在學習什麼語言或框架,只要吃透基礎知識,你可以學會任何你想要的東西。

(2)多嘗試不同的事情

你的程式設計生涯很漫長,剛剛開始時,不要急於求成。你只需要動手寫程式碼就可以了,任何程式碼都沒有關係,寫完一個軟體,再寫下一個。

寫不同的軟體,嘗試不同的事情。你會發現,自己需要學習很多不同的東西。你按什麼順序學習它們並不是大問題。

不要變得僵化,抱住某個領域不放。幾乎任何學科都可以教給你一些東西。如果你太僵化,抗拒學習其他領域的知識,那你就輸了。

多學習一些困難的東西,容易發現自己的問題。

你可以給自己定一個目標,比如"每週二做一件以前從沒有做過的事情"。

當然,你最終需要深入某個領域。李小龍說過:"我不怕練過一萬種拳法的人。但是一種拳練了一萬遍的人,我怕他。"

(3)目標是變得更好

不管使用什麼技術,你的目標都應該是動手做出成果,讓自己變得更好。

20年後,你跟別人說:"我是一個擁有20年經驗的程式設計師。"別人就會問你:"這20年你做了什麼?"

你的職業生涯最終就是回答這個問題:你問自己,這20年我做了什麼。

理想的情況是,20年來,你真正擅長了某件事,而且這件事是社會需要的或者有利可圖的,你以某種方式"讓它變大"。這樣你就會擁有一個成功的職業生涯。

(4)繼續工作

儘管已經46歲,我仍然喜歡編寫軟體。雖然成為偉大程式設計師的機率已經為零了,但是在這個年齡,我依然可以完成一些工作。

程式設計既不是短跑,也不是馬拉松,而是日記。在日復一日的累積當中,完成你的事業。

作為一名程式設計師的關鍵,就是"繼續工作",做出有價值的產品。

最早的程式設計師出現在1957年。經過這麼多年,軟體依然是一個年輕的行業,這意味著,我們仍然在初級階段,這個世界還會有無限的有趣工作可以讓你變得更好。

科技動態

1、確保未拆封

如何保證貨物沒有拆封過?

一位德國程式設計師提出一個簡單的方法:你把東西放在密封袋裡面,裡面再裝入彩色的豌豆或大米。

這些彩色顆粒會形成隨機分佈,一旦拆封就很難復原。

你在密封后,拍下照片發給收件人,對方收到貨物後,再用軟體甚至肉眼,檢查一下彩色顆粒的分佈是否跟圖片一致,就可以確定有沒有被拆開過。

2、密碼硬幣

澳大利亞發行了一枚五角硬幣,紀念澳大利亞訊號局成立75週年。

該局主要工作是維護和破解密碼,所以硬幣上印了四個密碼,一個比一個難。負責人說,如果有人可以破解這四個密碼,就可以申請到訊號局工作。

結果,硬幣發售當天,四個密碼就全被破解了,具體的密碼和解碼詳見這篇文章

3、最小的遊戲機

一位英國程式設計師自己動手,製作了一個世界最小的俄羅斯方塊遊戲機。它的大小跟大拇指差不多,就是一塊晶片加上四個按鈕。

晶片的正面是0.91吋的液晶螢幕,背面是一個紐扣電池,所有程式碼都是開源的。他製作好的成品在網上出售,價格20美元。

4、無人機公路

英國政府決定大力發展無人機送貨,在英格蘭主要城市之間建立了一條265公里長的"無人機高速公路",這條路專門供無人機飛行。

無人機登記後,就可以上路,一路上都要跟地面感測器報告方位,並接受指揮,防止碰撞。

英國政府估計,到2030年這條路同時將有90萬架無人機在飛行。這種專用道路以後可能越來越多,只供無人車和無人機使用,地面是無人車,天上是無人機。

文章

1、知乎水印事件(中文)

網友發現,知乎網頁暗藏水印,用來發現是誰截圖。這個事件曝光以後,知乎又把這個功能下線了。

2、太陽能無人機有什麼用?(中文)

本月,中國航空工業集團研製的"啟明星50"大型太陽能無人機首飛成功。本文介紹這種完全依靠太陽能供電的無人機有什麼用。

3、我國兩種長臂猿野外滅絕(中文)

過去幾十年,中國分佈的白掌長臂猿、北白頰長臂猿在野外均沒有被監測到,可以認為已經野外滅絕了。

4、CSS Grid 在 Figma 的應用(英文)

Figma 操作皮膚使用 CSS 網格來實現,作者詳細介紹它的實現,網格原來還能這樣用。

5、99美元的 Chromebook 是什麼體驗?(英文)

作者為了測試 Flutter 應用在低端裝置的表現,花99美元買了一臺全新的聯想 Chromebook 筆記本。他原本預期會很糟糕,結果完全出乎他的意料。

6、軟體工程師如何成為全職"創作者"?(英文)

作者是一個軟體工程師,從 Uber 辭職以後,全職依靠創作(寫文章、賣課程、做影片等等)為生。他寫了對這種商業模式的思考。

7、美國需要大量機器人(英文)

一個美國人給美國政府寫的政策建議。這篇文章有價值的地方是提出了一個觀點:機器人越多,創造的就業崗位越多。作者認為,傳統看法是錯的,機器人實際上有助於創造人類就業。

8、Python 星號*的用途總結(英文)

一篇面向 Python 初學者的科普文章,介紹星號*在這門語言的各種含義。

工具

1、lldap

一個輕量級的 LDAP(一種使用者認證協議)開源實現,簡化了使用方法。它自帶前端,可以跟很多後端應用結合,為這些應用提供身份驗證服務。

2、NESBox

一個開源的遊戲平臺,支援多人線上,一起玩 NES(俗稱 FC 紅白機) 遊戲,有 web 版和桌面版。目前已經有很多遊戲,預計有 1000+ 遊戲,參考這篇介紹文章。(@mantou132 投稿)

3、JuiceFS

一個面向雲原生設計的檔案系統,可以掛載各種雲端儲存,當作本地磁碟使用。(@DASWU 投稿)

4、Urara

一個靜態部落格生成器,基於 SvelteKit。(@kwaa 投稿)

5、Cleanup Photos

這個網頁工具可以清除照片上不要的物體。使用者上傳照片以後,框選不需要的物體,系統會自動清除這些物體,用背景填充照片。

6、OurBoard

一個線上白板,你建立一個房間,把網址分享給其他人,大家就可以在一塊網頁白板上共同塗寫。

7、gh-dash

GitHub 官方命令列客戶端gh的外掛,可以在命令列以皮膚形式,顯示倉庫的 PR 和 issue。

8、Rectangles

這個網頁上,一個方塊代表10分鐘,一天24小時就是144個方塊。可以一眼看到,當天還有多少個方塊空著。

9、Nginx Proxy Manager

Nginx 經常用作反向代理,這個工具為反向代理提供一個 Web 管理介面。

撲克牌掃碼器

最近,有人將條形碼與撲克牌結合在一起。

他在每張牌的牌邊印上了條形碼,旁人根本意識不到,但是使用掃碼器可以分辨是什麼牌。

為了進一步增加隱蔽性,他還用特殊墨水,將條形碼隱藏起來,人眼看不見,只有在紅外線下才會顯示。

他買了一臺帶有攝像頭的樹莓派,在攝影頭上裝了紅外濾光片,將其改裝為條碼掃描器。

最後,他寫了一個 iOS 客戶端,將樹莓派的掃描結果顯示出來,每張牌是什麼。下面就是實際的效果。

墨水也可以改成紫外線熒光墨水,在紫外線下會發光,這會比紅外線更容易識別。

這個專案的完整程式碼,公佈在 GitHub

資源

1、賈伯斯檔案

賈伯斯家人建立的網站,用來為後人儲存史蒂夫·賈伯斯的各種材料。目前剛剛建立,內容還比較少。

2、從零開始的神經網路(Neural Networks from Scratch)

一個英文的圖文互動教程,使用簡單的語言和圖片,解釋什麼是神經網路。

3、隨機的谷歌街景

這個網站隨機展示谷歌街景的照片,世界各地都有。(@shenzhw 投稿)

4、中華遺囑網

這個網站提供遺囑的知識和服務,屬於半官方組織,收費不低,但是比自己去找專業服務還是方便和便宜一點。

圖片

1、猴子洗紅薯

日本宮崎縣的猴子,有一種奇特的行為,會在海里洗紅薯,洗了以後再吃。

傳說是當地人冬天生火,猴子們也喜歡待在火堆旁取暖。有人用火烤紅薯,順手就給了猴子一個。猴子們拿到遞給它們的熱乎乎的紅薯,馬上就要吃,但是覺得很燙。

有一個猴子開始在水中冷卻紅薯。這種習慣逐漸蔓延到整個猴群,幾乎所有猴子都學會了這種行為。

但是,科學家認為,這個傳說是無稽之談。猴子在海水中紅薯,只是為了增加一點鹽分。

2、逃出埃及的車流

美國內華達沙漠每年舉辦一個藝術節,叫做"燃燒的人"(Burning Man)。

今年的活動本週結束,上萬輛車從沙漠裡面的舉辦地離開,駛向最近的一個高速公路路口。結果造成了大堵車,整整堵了10個小時。

有人從空中拍下了這個罕見的"沙漠大堵車",戲稱就像傳說中的"逃出埃及"。

文摘

1、 Foo 大師的故事

Foo 大師遇到了一家大公司的面試官。

面試官說:"面試時,我問很多 Unix 程式設計師,他們在新興的程式語言方面有多少年經驗時,他們都會皺眉或生氣。這是為什麼?"

Foo 大師站了起來,開始在辦公室裡不斷踱步。

面試官不解地問道:"你在做什麼?"

"我正在學走路",Foo 大師回答。

"你不是自己走進辦公室的嗎,"面試官驚呼道,"而且也沒有摔倒,你明明已經知道如何走路了。"

"是的,但是我是第一次來這層樓。" Foo 大師回答。

聽了這話,面試官恍然大悟。

言論

1、

一位護士問臨終的病人,他們有什麼遺憾。她後來總結出了5個最常見的回答。

不要忽視夢想。不要工作過久。說出想法。交朋友。要開心。

-- Paul Graham

2、

一位醫生曾經告訴我,醫學院沒教的一件事情是,醫學和當醫生是有區別的。

醫學是一門生物科學,而當醫生是一種社會技能,涉及到管理期望、瞭解醫保制度、人際關係、有效溝通等。

-- 《醫學和當醫生的區別》

3、

醫院最喜歡的病人是慢性病患者,他們依賴醫院,但是又不會很快病死而不能支付賬單。

美國的醫療體系依靠患者賺錢,因此預防疾病並不積極,只有2.9%的醫療支出用於預防醫學。這造成的結果就是,病人的壽命雖然長,但是健康的時間並不長。

-- David Perell

4、

經驗就是每個人為自己犯的錯誤起的名字。(Experience is the name everyone gives to their mistakes.)

-- 奧斯卡·王爾德

5、

有一個程式設計原則叫做 DRY(Don't repeat yourself,不要重複自己),指的是儘量不要有重複的程式碼。

更好的名字應該是 SPOT(Single Point Of Truth,單點事實)。程式碼需要修改時,你只需要在一個地方修改,而不必改動多個地方。

-- Hacker News 網友

歷史上的本週

2021年(第 174 期):全能程式設計師 vs 特長程式設計師

2020年(第 123 期):網際網路公司與湘軍的軍制

2019年(第 72 期):當代人不再有手稿

2018年(第 21 期):人生的水平運動和垂直運動

鳴謝

國產軟體 FlowUs 提供個人專欄服務(檢視週刊專欄),整合了"文件+表格+網盤",適合知識庫、資料管理、檔案儲存多種用途。

(完)

相關文章