///
程序員的自我實(shí)現。
你在生活中有沒(méi)有那種感覺(jué)?就是總能發(fā)現各種“低效率”的場(chǎng)景,總受不了這樣的場(chǎng)景,總想給提一個(gè)改進(jìn)的方案。比如說(shuō),當你和一群人一起排隊的時(shí)候,你的內心會(huì )不會(huì )發(fā)出一個(gè)吶喊:這太愚蠢了!這么多人就這么傻傻地等著(zhù)?我們肯定有更好的辦法!
想要增加效率、減少摩擦,想讓一切以最順暢的方式運行,這也是一種美學(xué)追求,是生活黑客、工程師、特別是程序員的價(jià)值觀(guān)……甚至是一個(gè)情感需求。
像排隊這樣的事兒是有學(xué)問(wèn)的。我們在超市排隊,都是有多個(gè)收款通道,每個(gè)通道排一個(gè)隊,這種方法的效率并不是最高的。人們自動(dòng)選擇當前看上去最短的一隊,但這其實(shí)是一種賭博:有的隊里趕上一個(gè)買(mǎi)的東西特別多、或者遇到付款技術(shù)問(wèn)題等待時(shí)間特別長(cháng),后面的人都會(huì )受影響。銀行的排隊方法就更公平一些:只排一個(gè)隊,輪到哪個(gè)窗口服務(wù)就去哪個(gè)窗口,減少了不確定性。當然超市的特殊情況是人們都推著(zhù)購物車(chē),只排一個(gè)隊擺不開(kāi)。不過(guò)有的超市仍然會(huì )做一些改進(jìn),比如說(shuō)給買(mǎi)的東西少的顧客提供快速通道。
凡是低效率的地方,都可能是信息技術(shù)的應用機會(huì )。你可以給每人發(fā)個(gè)號碼,然后各個(gè)窗口按順序叫號;你可以接受電話(huà)或者網(wǎng)上預約;有些餐館會(huì )給等待的顧客發(fā)個(gè)無(wú)線(xiàn)的、會(huì )亮燈的排隊器,到現在也沒(méi)被手機APP取代。我看還有人專(zhuān)門(mén)建立數學(xué)模型模擬比如說(shuō)一個(gè)大學(xué)食堂的排隊情況,尋找平衡了效率和運營(yíng)成本的最優(yōu)解。
我們這一講要說(shuō)的不是具體問(wèn)題的解法,而是這個(gè)精神。你看到一個(gè)效率問(wèn)題,應該想想能不能優(yōu)化它。你應該有一雙隨時(shí)能發(fā)現效率應用的眼睛。
《連線(xiàn)》雜志專(zhuān)欄作家克萊夫·湯普森(Clive Thompson)是科技圈的長(cháng)期觀(guān)察者,他不但觀(guān)察技術(shù)而且觀(guān)察發(fā)明和使用技術(shù)的人。湯普森 2019 年出了一本專(zhuān)門(mén)講程序員的書(shū),叫《編碼者:一個(gè)新部落的形成和世界的重塑》(Coders: The Making of a New Tribe and the Remaking of the World)。我感覺(jué)這個(gè)書(shū)名中的“coder”,是比“程序員(programmer)”更雅致的一個(gè)說(shuō)法:程序員強調的是職業(yè),編碼者 —— 或者叫“寫(xiě)代碼者” —— 強調的是行為。
寫(xiě)代碼是一種能定義你的身份的行為,因為這個(gè)行為會(huì )改變你的想法和眼光。湯普森在書(shū)中講了很多程序員的故事,特別是在著(zhù)名公司工作的那些最新一代程序員的工作和生活,可以說(shuō)是一部程序員文化大觀(guān),全書(shū)都非常值得讀。我最感興趣的是書(shū)中提到程序員思維有一個(gè)最大的特點(diǎn),那就是對效率的執著(zhù)。
湯普森講到一個(gè)住在舊金山的華裔小伙兒,叫杰森·何(Jason Ho)。小何是個(gè)編程高手和極端意義上的生活黑客。
小何說(shuō)他小時(shí)候有一個(gè)德州儀器的 TI-89 計算器,他發(fā)現這個(gè)計算器提供 BASIC 語(yǔ)言編程功能,就自學(xué)了編程,然后竟然在這個(gè)計算器上實(shí)現了任天堂的《塞爾達傳說(shuō)》游戲!我聽(tīng)著(zhù)感覺(jué)不太可能,也許他只是實(shí)現了游戲的一部分功能,但不管怎么說(shuō)這也挺厲害。
小何喜歡對生活做各種優(yōu)化。他喜歡吃拉面,去日本旅游的時(shí)候就在地圖上找到東京的各家拉面館,自己寫(xiě)了個(gè)程序,按照拉面館評分和距離自己旅游路線(xiàn)的遠近,使用算法找到了每頓飯的最優(yōu)解。他買(mǎi)房子的時(shí)候寫(xiě)了個(gè)程序,按照自己設定的方式根據地點(diǎn)、價(jià)格和周?chē)畔⒂嬎懔嗣總€(gè)房產(chǎn)的“長(cháng)期價(jià)值”,然后他忠實(shí)地買(mǎi)下了這個(gè)軟件中排名分最高的房子。他是“量化自我”的堅定執行者,記錄了自己做的每一件事、花費的每一分鐘,分析了每一頓飯的營(yíng)養,并且據此搞了一個(gè)健身計劃,而且實(shí)現得很成功。
而小何最大的特點(diǎn)就是干什么都追求效率。他把能讓計算機自動(dòng)完成的事兒全都自動(dòng)化,他忍受不了自己做需要重復的、“無(wú)聊”的事兒。
恰恰是這個(gè)特點(diǎn)給小何帶來(lái)了財務(wù)自由。小何的父親是個(gè)兒科醫生,有一次為了記錄辦公室人員考勤,打算去商店買(mǎi)個(gè)員工打卡用的表。小何一聽(tīng)怎么都這個(gè)年代了還有人這么落后的方法考勤呢?手機 + GPS 不就解決了嗎?他讓父親別買(mǎi)那個(gè)表,自己花了三天時(shí)間寫(xiě)了個(gè)自動(dòng)考勤程序,父親一用果然好使。小何就把這個(gè)應用做成了一個(gè)網(wǎng)站(clockspot.com),專(zhuān)門(mén)給各個(gè)公司提供考勤服務(wù)。結果這個(gè)網(wǎng)站火了。他開(kāi)了個(gè)公司,只雇了一個(gè)兼職客服人員,自己只做做程序的技術(shù)維護。這個(gè)程序給小何帶來(lái)了足以整天在世界各地旅游的收入,而他號稱(chēng)每個(gè)月只需要工作 20 個(gè)小時(shí)。
我看小何這個(gè)商業(yè)模式有很強的運氣成分,他不但發(fā)現了一個(gè)點(diǎn),而且搶在別人前面占據了這個(gè)點(diǎn)。有人認為像 Google 那樣的大公司只要隨便動(dòng)動(dòng)手就能把小何的市場(chǎng)搶走,但是畢竟目前這個(gè)點(diǎn)還在。
不過(guò)這個(gè)故事的精神可不是“市場(chǎng)提供機會(huì )” —— 市場(chǎng)里一直都有各種機會(huì ) —— 更不是“知識改變命運”“時(shí)間就是金錢(qián)” —— 而是自動(dòng)化。你找到一個(gè)效率的痛點(diǎn),寫(xiě)個(gè)程序幫人們解決這個(gè)痛點(diǎn),因為程序是自動(dòng)的,你基本上就一勞永逸了。
這個(gè)精神是效率的精神:你不是通過(guò)自己多工作而掙錢(qián),你是通過(guò)讓別人和自己都少工作而掙錢(qián)。
但程序員追求效率并不只是為了掙錢(qián)……可以說(shuō)主要不是為了掙錢(qián)。而是為了爽。
湯普森采訪(fǎng)了很多程序員,效率是他們的一種情感驅動(dòng)。他們看到各種事物都想著(zhù)能不能自動(dòng)化一下,能不能讓程序替人做。
這幫人從小寫(xiě)個(gè)數學(xué)作業(yè)都會(huì )編程做。有個(gè)女程序員說(shuō)她走在街上,看見(jiàn)街頭的行人,都忍不住想象能不能設計一個(gè)傳送帶代替他們走路。她排隊上飛機會(huì )充滿(mǎn)挫折感,被時(shí)代的低效率所震驚。有個(gè)男程序員有感于自己的親戚朋友經(jīng)常抱怨他不聯(lián)系,就寫(xiě)了一個(gè)自動(dòng)腳本,時(shí)不時(shí)地、隨機地向親友發(fā)送問(wèn)候短信。還有個(gè)哥們把給女友寫(xiě)情書(shū)也自動(dòng)化了。
追求效率幾乎是程序員的職業(yè)病。有個(gè)程序員抱怨領(lǐng)導總愛(ài)在開(kāi)會(huì )的時(shí)候講笑話(huà):你知道你講一個(gè)笑話(huà)會(huì )耽誤多少人的工作時(shí)間嗎?咱們有事兒不能快點(diǎn)說(shuō)嗎?
這不是傳統意義上什么“眼里總有活兒”的事兒,更不是受不了自己閑著(zhù) —— 而是受不了低效率,受不了別人的笨,受不了局面的愚蠢。這也不僅僅是能讓機器做的就不應該讓人做,而是一種美學(xué),是一種欣賞,一種自得:哪怕這個(gè)方法只能提高一點(diǎn)點(diǎn)效率,我也感到很愉快。
湯普森不是專(zhuān)業(yè)程序員,但是他自己也喜歡編程,寫(xiě)了不少自動(dòng)化腳本。他有個(gè)項目是這樣的。作為作家,湯普森為了讓文章的詞匯量顯得更有文采,會(huì )經(jīng)常查閱同義詞詞典,看看能不能找到好的替代詞。電子版的、網(wǎng)上的同義詞詞典很多,你要做的就是用瀏覽器訪(fǎng)問(wèn)一個(gè)網(wǎng)站,輸入一個(gè)詞,按回車(chē)就行,這夠簡(jiǎn)單吧?湯普森認為還不夠。他通過(guò)搜索,發(fā)現有個(gè)網(wǎng)站提供可以用程序直接調用的詞典查詢(xún)的 API 接口。他寫(xiě)了一個(gè)腳本,只要在自己的終端直接輸入一個(gè)命令,就能返回一個(gè)詞的同義詞。
這個(gè)做法跟在網(wǎng)頁(yè)上查詢(xún)有本質(zhì)區別。腳本返回的只是同義詞,而網(wǎng)頁(yè)返回結果的時(shí)候會(huì )附帶各種看得見(jiàn)和看不見(jiàn)的東西。網(wǎng)頁(yè)查詢(xún)要耗費多出很多倍的計算機時(shí)間。
但是你能感覺(jué)到那個(gè)節省下來(lái)的計算機時(shí)間嗎?這個(gè)腳本的作用有多大呢?湯普森估算了一下,假設他寫(xiě)作的時(shí)候每小時(shí)查詢(xún)兩次、每次節省2秒鐘,他每年大約因此節省了一個(gè)小時(shí) —— 遠遠抵不上創(chuàng )造這個(gè)腳本花費的時(shí)間。
但是他每一次用自己的腳本查詢(xún)同義詞,都會(huì )感到一陣快感……“就如同效率的毒品流過(guò)血管”。
計算機科學(xué)家、Perl 語(yǔ)言的發(fā)明人,拉里·沃爾(Larry Wall),有句名言:『懶惰是程序員的一個(gè)核心美德?!?/p>
好,那既然懶惰是程序員的美德,為什么有那么多程序員整天加班,中國程序員還流行“996”呢?
從追求效率這個(gè)角度來(lái)說(shuō),程序員加班是個(gè)聽(tīng)起來(lái)有點(diǎn)荒誕的事兒。這就好像廚師營(yíng)養不良、作家抱怨找不著(zhù)書(shū)讀、警察擔心自己的人身安全一樣 —— 這些事兒都有可能是真的,很多廚師自己吃的營(yíng)養配比真的有問(wèn)題……但你可是廚師??!你肯定不是沒(méi)有條件做,你是沒(méi)做好,你是缺乏這個(gè)意識,你的職業(yè)榮譽(yù)感受到了威脅。
美國程序員不流行加班。大部分人上班晚來(lái)但是不晚走,很多人每天實(shí)際工作時(shí)間根本不到八小時(shí)。硅谷有些公司愛(ài)加班,特別是創(chuàng )業(yè)公司會(huì )很忙,但是總體來(lái)說(shuō),編程是一種比較輕松的工作。
編程不但是腦力勞動(dòng),而且是一種技藝,甚至可以說(shuō)是一種藝術(shù)。你得看誰(shuí)聰明,不能看誰(shuí)工作時(shí)間長(cháng)。好的程序員必須對效率極其敏感,他會(huì )強烈地在意代碼夠不夠簡(jiǎn)潔夠不夠高效,而不是寫(xiě)了多少行。
湯普森講到 Facebook 公司一個(gè)叫 Yan Jinghao 的程序員。他一年的總編程時(shí)間大約是 1000 個(gè)小時(shí) —— 相當于每個(gè)工作日 4 個(gè)小時(shí)。他在 Facebook 工作三年總共寫(xiě)了 39 萬(wàn)行代碼,但是他給公司刪除了 50 萬(wàn)行代碼:相當于每小時(shí)刪除 39 行。他對公司代碼庫的貢獻是“負”的。對此他感到很自豪,因為他提升了公司代碼的效率。
所以編程這個(gè)事兒,你不能比誰(shuí)寫(xiě)的代碼多,而應該比誰(shuí)寫(xiě)的代碼少。你不能看誰(shuí)最后一個(gè)離開(kāi)公司,應該看誰(shuí)最先把活做完。
中國程序員為什么 996 呢?我看過(guò)一些程序員的討論,沒(méi)有人認為真的是活兒太多做不完,也沒(méi)有人認為中國程序員比美國程序員笨。大家都抱怨是管理的問(wèn)題,是對工作的評估方式的問(wèn)題。
我理解這可能是因為中國公司沒(méi)有建立一個(gè)講效率的文化。但是這不要緊,我相信局面會(huì )好轉的,因為程序員自帶講效率的種子。關(guān)鍵是管理者應該尊重程序員,搞一個(gè)工程師說(shuō)了算的企業(yè)文化。
效率是程序員的個(gè)性發(fā)揮。這是你讓世界按照你的想法稍微變一變,往你喜歡的方向稍微轉一轉。這是程序員的自我實(shí)現。
貼圖素材&圖片:Google Image
文字:得到APP
聯(lián)系客服