程式設計師的代碼為什麼永遠寫不完?

2021-02-19 CSDN


程式設計師和常人有著什麼樣的區別?是否所有的程式設計師都是天然呆?為何女性程式設計師的人數要遠遠少於男性?在本文中,我們將帶著種種疑問深入探討電腦程式員中的文化。

作者 | Jennifer Ouellette

譯者 | 彎月

責編 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下為譯文:

現如今,我們日常生活的方方面面都滲透著計算機的代碼。然而,普通人並不了解計算機編程的工作,也不清楚程式設計師正在悄悄地影響著整個社會。科技報導的記者Clive Thompson希望通過他的新書《Coders:The Making of a New Tribe and the Remaking of the World》來改變這一點。

在擔任科技記者之前,高中時期的Thompson曾是一名黑客,他自學了如何在早期的個人計算機上寫代碼,比如在Commodore 64上等。之前他還出過一本書《超乎想像的聰明:論科技如何改進我們的思維》(Smarter Than You Think: How Technology Is Changing Our Minds for the Better),書中推翻了末日預言者所信奉的看法:新的技術工具正在腐蝕我們的大腦,Thompson則認為這些東西實際上提高了我們的認知能力。他在《Coders》中說到:「我想讓一般人了解程式設計師,以及為什麼他們會比較注重某方面的東西,他們的激情在哪裡,他們的盲點又是什麼。希望普通人可以更好地了解程式設計師為我們創造的這個數字世界。」

提問:最終你成為了一名作家而不是專業的程式設計師。從很多方面來看,編程只是另一種語言,但許多作家都對這種工作敬而遠之。你覺得這兩種工作之間有相似之處嗎?

Thompson:程式設計師通過代碼進行溝通,而他們的溝通對象是機器。寫代碼的工作和寫作的工作都是腦力勞動,這是二者很大的相似之處。作家需要搞清楚如何創作一本小說、一篇文章、一本書。而程式設計師則需要設法考慮他們構建的代碼的結構,以及函數之間如何相互調用。這兩種類型的工作人員都喜歡連續工作12個小時,中途不會被人打斷,所以他們都可以在思緒的盡情飛揚中完成他們的工作。

兩者之間的區別可能在於人類可以理解具有歧義的內容,而計算機則不能。在你寫Python代碼的時候,任何一個小小的錯誤都會導致系統停止運轉。這就是程式設計師的工作與其他方面工程師的不同之處。在修理汽車的時候,如果你沒有擰緊一個車輪上的螺栓,那麼不至於整輛車都停止工作。但是在寫代碼的時候,哪怕是少寫一個括號,都會導致整個應用或整個網站宕機。我認為這是所有作家都感到很恐怖的一件事,因為他們都習慣了模稜兩可。

提問:在這本書中,你談到了一些典型的程式設計師的性格,但你自己也會感嘆程式設計師身上常見的刻板印象,比如他們很孤立、體型較胖、不擅長社交。是否有某種特定的人傾向於從事這個領域?

Thompson:現在有很多人都加入了程式設計師的大軍,但是你了解一些各行各業就會發現有一些特徵也似乎很正常。例如,編碼員善於邏輯思考,將大問題分解為小步驟。這種習慣也會體現在他們的日常生活中,因為他們需要花大量時間進行線性、精確的思考。此外,每個擅長編程的人都能夠應對一些令人費解的挫折。

這是程式設計師與普通人之間的分界線。好萊塢影片塑造的程式設計師都有一種刻板的印象,程式設計師整體坐在電腦前寫代碼。實際上,他們坐在那裡只是在盯著無法正常工作的代碼,並設法弄清楚如何修復這些代碼。這是程式設計師一輩子都做不完的主要工作。這種工作不會越來越好,因為你技術越好,所面臨的挑戰就越難。但是,一旦你改好代碼,程序開始正常運行時,那種成就感簡直無與倫比。程式設計師就是在日復一日地追逐這種快感。相比之下,那些殘酷的挫折時刻都不值一提,所以這群人非常擅長應對一次又一次地碰壁。

提問:你還介紹了一些程式設計師的歷史。女程式設計師可能是最早的一批程式設計師。後來,如你在書中所述,這個領域變成了男性的天下——男性佔據了絕對的主導地位。這中間發生了什麼?

Thompson:女性在編程界遭到排擠的原因有點複雜。歷史上沒有發生過重大的事件,這種情況是三種或四種因素互相影響的後果。這也意味著我們無法通過一個解決方案徹底地解決這個問題。就像有個笑話說:對於這個問題,我們沒有一發即中的銀彈,只有很多的鉛彈頭。

早期從事編程工作的人都是精英,因為沒有人知道如何編程。各個公司聘請了邏輯思維一絲不苟的人,並且只培養了這群人。因此,才出現了Mary Allen Wilkes這樣的人,她說:「既然我不能成為一名律師,因為在1959年這個職業有濃烈的性別歧視,所以畢業後我只能去麻省理工學院,問他們還要不要程式設計師。結果他們說,要!」後來,她成為了第一個作業系統(可以說是第一臺個人電腦上的作業系統)的先驅。在當時,軟體不值錢。男子漢都去做硬體了。而軟體被當成了類似於秘書的工作。

隨著各家公司開發出了大量的代碼後,軟體操作就變得至關重要了,於是男人們開始逐漸產生了興趣。他們建立了所謂的矽谷文化——「我們僱傭某人不僅僅是因為他擅長編程,也不僅僅是因為他擁有這些技術,而是因為我們覺得他就是我們的一份子。」一直到20世紀80年代出現了一批像我一樣,從高中時代就開始在個人電腦上編程的人。幾年後,我們開始上大學,並學習計算機科學的課程,全身心地投入到這個領域。教授們說:「這些人才是我們應該教導的學生。我們應該改變我們的課程,要求每一位程式設計師從十幾歲就做黑客。」而就在當時,所有從事計算機科學領域的女性幾乎都崩潰了。

提問:最近有大量關於許多算法中固有的偏見的討論,特別是在社交媒體中。這讓很多非計算機科學領域的感到不解。他們會認為:「算法怎麼會有偏見?它可是數學啊。」

Thompson:首先,從字面意思來看,偏見通常會源自你需要解決問題的算法。例如,社交媒體中採用的推薦算法是由架構師設計,由程式設計師實現的某種「預測手段」。這種算法會不斷關注人們最常點擊的內容,設法找出人們最喜歡和著迷的內容。這一切都在為基於廣告的市場模式服務。人們往往會被有可能引發極度情緒(深深的憤怒、怨恨、恐懼)的內容所吸引。這種算法會把人們按下心理按鈕的行為視作用戶的互動,而這正是這種算法需要找到和推薦的內容。

其次,如果用帶有偏差的數據訓練算法,那麼算法也會產生偏差。我的書中有這樣一個例子:Henry Gan是Gfycat(一家做動畫GIF託管服務的公司)的程式設計師。Henry和他的團隊需要利用視覺學習神經網絡AI來識別圖片並自動進行標記。他們是一家小公司,所以他們並沒有從頭開始做。他們利用了一些由Google和Facebook等公司開發和訓練好的開源神經網絡軟體。

結果,他們發現在識別亞洲人的面孔時,這些軟體的實際效果很糟糕。對於Gfycat來說這是一個非常大的難題,因為他們的用戶群眾有很大一部分是流行音樂的粉絲。他們喜歡尋找亞洲主流明星的GIF動畫。Henry跟我解釋說,他們使用的AI的訓練數據集主要是白人,因為收集這些數據集的機構位於白人的國家。所以,你沒法利用這種算法識別亞洲人的面孔,這個AI非常不擅長區分亞洲人的面孔。反之亦然。在中國接受訓練的人工智慧主要針對的是中國人的面孔,因此在識別白人面孔就會遇到很大的困難。

提問:算法對媒體也產生了巨大的影響,當然有好也有壞。

Thompson:媒體受到排名算法的影響,甚至從「網站上最常轉發的10條新聞」的時代就開始了。這其實都算不上AI,實際上只是一種排序算法。給我一份今天轉發的所有內容列表,按人氣排序,排在前10位就是我們的排名列表。這幾乎是軟體工程師的條件反射。

有一個網站專門尋找播放次數為零的YouTube視頻。我經常想,我們能做的遠不止此。你可以利用軟體進行非常有趣的搜索。人們忽視的重點是什麼?你可以通過代碼和算法做一些非常酷和有趣的事情,之所以沒人這麼做是因為每個人都在追尋最容易獲取的利潤。尋找流行的東西,這是一種很划算的模型。但是,使用軟體的巨大靈活性感覺在這種模型中完全沒有發揮出來。

提問:你在寫這本書時,感覺最驚訝的是什麼?

Thompson:真正讓我感到意外的一件事情是,你可以發現軟體開發人員很享受提高效率和優化的樂趣。他們很喜歡優化一些笨重或具有重複性的工作。幾乎所有的工程師都很關注運行效率的提高。節省勞動力,鞏固步驟,簡化工作,加強人類的能力。但是,似乎他們沒有辦法停止這樣的思考。例如,Scott Hanselman整天都在談論編程,甚至在晚餐時間,家裡的其他人正在做飯,而他卻批評他們的做事效率太低,他說:「我開始了對晚餐代碼的審查。」

這種下意識的條件反射正是商業模式的來源。Facebook推送的一則新聞中說:「讓我們來加速和優化一切工作。」Facebook加速了我們關注其他人的能力。Facebook對我們了解周圍的朋友的方式進行了巨大的優化。這本身是一件好事,但同時也出現了很多問題。在諸多信息的幹擾下,我們很難集中注意力做一件事情,因為有多事情即將出現在你面前。

這個問題貫穿了整本書:軟體工程師對優化的追求永無止境。但有時這會變成《猴爪》一書中所說的詛咒。我可以想像這種詛咒從個人擴散到整個社會。就像優步一樣,他們優化了汽車的受歡迎程度,但也給汽車行業帶來了破壞。還有Airbnb優化了房屋的租賃,最終會影響到房地產市場。歷史在一遍遍地重複,當你看到某家科技公司鎖定了人們的某個興趣時,通常他們都會優化自認為這是對大家有益的事情,但結果卻會給其他人帶來間接的傷害。

原文:https://arstechnica.com/gadgets/2019/04/how-the-new-art-form-of-coding-came-to-shape-our-modern-world/

本文為CSDN翻譯,轉載請註明來源出處。

作為碼一代,想教碼二代卻無從下手:

聽說少兒編程很火,可它有哪些好處呢?

孩子多大開始學習比較好呢?又該如何學習呢?

最新的編程教育政策又有哪些呢?

下面給大家介紹CSDN新成員:極客寶寶(ID:geek_baby)

戳他了解更多↓↓↓

 熱 文 推 薦 

☞ 馬雲:騰訊是阿里的成長伴侶;華為 2 萬 CNBG 員工「投奔」餘承東;18 歲學生索賠蘋果 10 億美元 | 極客頭條

☞ 取代 JavaScript!Python 成 Stack Overflow 最受質疑程式語言

☞ 流量為王,程式設計師如何打破 8 秒原則?| 技術頭條

☞ 5G 賦能教育信息化?

☞ 源碼洩露是裁員報復還是程式設計師反抗 996?

☞ 深入淺出Docker 鏡像 | 技術頭條

☞ 特斯拉全新自動駕駛晶片最強?英偉達回懟,投資者用腳投票

☞ 她說:為啥程式設計師都特想要機械鍵盤?這答案我服!

☞ 西安奔馳女車主哭訴維權背後, 區塊鏈究竟能否還消費者以尊嚴?

System.out.println("點個在看吧!");
console.log("點個在看吧!");
print("點個在看吧!");
printf("點個在看吧!\n");
cout << "點個在看吧!" << endl;
Console.WriteLine("點個在看吧!");
Response.Write("點個在看吧!");
alert("點個在看吧!")
echo "點個在看吧!"

點擊閱讀原文,輸入關鍵詞,即可搜索您想要的 CSDN 文章。

相關焦點

  • 為什麼程式設計師喜歡在半夜寫代碼?
    幾年前因為在inside.com上發了一篇文章《Why programmers work at night》,解釋為什麼大部分工程師,包括他本人,總是遵循著「吸血鬼的生活作息」來寫代碼。《Why programmers work at night》最後還寫成了一本書,可以在Swizec Teller的網站上購買電子書或實體書籍。
  • 程式設計師不僅僅是寫代碼
  • 菜雞程式設計師是如何寫代碼的?
    每個程式設計師都要歷經從菜雞到大牛過程蛻變胡過程。當初大家起點都差不多,工作多年後,有些人依然停留在菜雞,有些人卻已成為大牛,所有的事情,都是一點一滴習慣養成。讓我們看看菜雞程式設計師是如何寫代碼的?有可能找到你當初的影子,甚至是現在的影子。
  • 對程式設計師來說最難的是寫代碼嗎?
    相信看到這個標題的同學們都有自己的想法,可能剛剛進入這個行業的同學們會非常認同寫代碼就是程式設計師的主要工作,然而當你工作一定時間之後,寫代碼將變得不是那麼「重要」了,在悟空問答中眾位大咖為這個問題提供了多種多樣的答案:    答案一:寫代碼是程式設計師最主要工作,但是卻不是最難的工作,最難的是踢皮球和吵架!
  • 如此沙雕的代碼注釋,原來程式設計師都是段子手
    某站後端代碼被「開源」,同時刷遍全網的,還有代碼裡的那些神注釋。我們這才知道,原來程式設計師個個都是段子手;這麼多年來,我們也走過了他們的無數套路.首先,產品經理,是永遠永遠吐槽不完的!網友的評論也非常扎心,說看這些代碼就像在閱讀程式設計師的日記,每一頁都寫滿了對產品經理的恨。然後,也要發出直擊靈魂的質問:你是尊貴的付費大會員嗎?
  • 我究竟為什麼要每天埋頭寫代碼?
    但是,程式設計師似乎不同。如果有人氣勢洶洶地衝到一個程式設計師的辦公桌前,報告了一個bug,然後怒吼道:「為什麼會發生這樣的事?!」應該對此負責的程式設計師只是有氣無力地坐在那裡,然後說,「你去寫票吧,我們會做調查。」哇,我當時想——「我們會做調查」,他們沒有費盡心機討好權威,沒有慌慌張張地做解釋,而我想成為他們那樣的人。
  • 為什麼程式設計師編寫的第一行代碼是Hello,World
    幾乎每當一個新手開始編寫代碼時——甚至當一個經驗豐富的程式設計師決定學習一門新語言時——他們做的第一件事就是讓計算機說「你好,世界」。每一門手藝都有自己的學問,而「你好,世界」是軟體文化準則的關鍵部分。事實上,我認為它闡明了編碼文化的一些核心方面——好的、壞的和醜陋的。沒有人真正知道是誰首先命令計算機說「你好,世界!」
  • 都2021年了,為什麼想回看5分鐘前寫的代碼就這麼難
    如何才能夠回溯那些被自己覆蓋掉的代碼片段?美國田納西大學的助理教授 Austin Z. Henley 介紹了自己開發的工具 Yestercode,它能讓回溯代碼就像播放視頻拉進度條一樣簡單。這個工具在程式設計師們聚集的社區 HackerNews 上引發了人們的討論。
  • 不僅僅是寫代碼,而是完成作品
    整天不停的寫代碼,開發業務需求,周而復始,日子長了,感到厭倦。有時回想,應該在過去的某個時期我也曾陷入過這樣的循環中,後來又是如何脫離的呢?代碼與緣由這要回歸到從寫代碼這件事上開始。寫代碼是因為有需求,需求來自業務的發展需要,需求經過產品經理再傳遞到程式設計師。剛開始,作為一個新手程式設計師,不停的為各種需求寫代碼。開發完一個,接著又是下一個,生生不息,循環不止。
  • RPA和無代碼來了,是因為程式設計師根本不夠用了
    眾多網友不禁擔心:程式設計師會因此失業嗎?其實在「刷新 CTO」第二期《無代碼開發到底是不是偽需求》中,微軟(中國)CTO 韋青已回復過該問題,「『低代碼/無代碼』這兩個詞不是站在專業程式設計師的視角來說的,應是站在沒有編程經歷的人員的角度來說的……有人認為『無代碼來了,是不是就不需要程式設計師了』?不是的,而是程式設計師根本不夠用了!
  • 為什麼程式設計師命中注定應該玩桌遊?
    簡單地說,不玩桌遊,是程式設計師的損失,玩了無愛,那一定是一個假程式設計師 :-)不信? 聽我細細道來。。。氣質匹配,相性相吸首先,讓我們來看看,一個有理想,有追求的程式設計師應該具備什麼樣的氣質,以及為什麼,它們和桌遊是辣麼的猩猩相吸。。。
  • 程式設計師可以放心了 AI自己寫代碼竟全靠複製粘貼
    DeepCoder是如何寫代碼的呢?方法是從別人的程序中「取」出代碼,並將它們重新組合成混合代碼,然後代碼就work起來了,程序就拼湊出來啦。在茫茫的代碼之海中找到什麼是該複製的,該把它粘貼到什麼地方,做什麼樣的修改,這不就是現在有些程式設計師的必備技能嗎?因為用剪切不太道德啊。
  • 國外女程式設計師分享如何直播寫代碼
    想要直播一下我在業餘時間內為開源項目領域所做的工作,儘管在youtube上的大部分直播都是關於遊戲的。我比較擅長於NodeJS的硬體庫方面的工作(儘管大部分項目都是自己的)。並且我在youtube上曾經開啟過一個房間了,那為什麼我不繼續做下去?我的欄目可以叫做:基於JavaScript的硬體開發。
  • 爐石代碼:都是魚人寫的?鐵證如山,難怪bug頻出,程式設計師背鍋了!
    這個真統計不出來。只說我知道的起碼就有這麼幾個:1、凡是進入標準的狂野卡,無論你之前有還是沒有,都不能分解原來就有的卡(非贈送);2、冒險模式因為種種原因直接關閉;3、霜之哀傷亡語不能觸發;4、各種閃退各種崩潰;5、酒館日常打烊,原來是全年無休,現在是看心情隨便休;6、文本bug就不提了。
  • 程式設計師最不喜歡的語言為什麼是Java、Python?
    那麼,這些令人不快的、不受歡迎的程式語言都是哪些呢?為什麼程式設計師如此害怕使用這些程式語言呢?如果有機會的話,很難不會加入一些理論,甚至說一些不明智的話。或者為一些因為錯誤的原因而不喜歡的程式語言辯護。更準確地說,StackOverflow 統計的是「正使用該語言或技術進行開發,但沒有表示有興趣繼續使用的開發人員的百分比。」
  • 為何程式設計師工資高?
    但是程式設計師不一樣,一個牛X的程式設計師,產能可能頂的上幾十個程式設計師,寫代碼有時候不是拼人力的事情,做項目需求才需要對人,寫代碼的時候天才一個人就可以單槍匹馬解決一群人的問題。這也是科技行業的特點,一個天才勝過一堆庸才,算法時代尤其如此,並且差距只會越來越大。這也有點像人類科學的發展,少數天才科學家可以讓人類科學躍進一個時代。
  • 看外國女程式設計師如何直播寫代碼
    並且我在Twitch上曾經開啟過一個房間了,那為什麼我不繼續做下去?我的欄目可以叫做:基於JavaScript的硬體開發。當然,我並不是第一個在直播平臺直播代碼的,Handmade Hero是我見到的第一個直播代碼的人。接下來Vlambeer的工程師們也開始了直播代碼,他們在Twitch上直播Nuclear Throne項目的開發。我也特別喜歡Vlambeer工程師們的直播。
  • 阿里程式設計師寫的這一行代碼,被國家博物館收藏了
    近日,國博又增加一件令人意想不到的特殊藏品——程式設計師寫的代碼。這一行代碼說普通也普通,但是,它的背後卻代表著更深層的非凡意義。2020年伊始,新冠肺炎在全國爆發,舉國上下進入最嚴峻的抗疫狀態。2020年2月初的凌晨1點半,阿里團隊程式設計師提交了健康碼的第一行代碼。十天後,健康碼在全國幾百個城市推廣,傳遍了大街小巷。
  • 賣掉 3000 平房子,50 歲程式設計師回國寫代碼,三個月內融資 2000 萬美元
    賣掉 3000 平房子,50 歲程式設計師回國寫代碼2000年,在美國摩託羅拉工作的陶建輝是妥妥的「人生贏家」,擁有自己3000平的大房子、穩定高薪的工作,妻子兒子在美生活優渥他看好物聯網的前景,親手編寫 TDengine 的代碼,在前三個月他一個人寫了兩萬行代碼,「將一個時序空間數據引擎,變成了一個可以對外測試的產品TBase,離真正商業化的產品,又近了一大步。」2017年前十個月中,他幾乎天天都在改Bug,每當解決一個Bug,就高興得請團隊吃飯。
  • 程式設計師為什麼不自己單幹?
    本文轉載自公眾號  一個程式設計師的日常此篇文章來源於知友的提問「為什麼程式設計師不單幹,自己寫程序賣啊啥的……而要去公司上班領死工資?」這對於在校的和剛工作不久的程式設計師來說是一個非常好的問題,甚至我相信不少人自己也想過。毫無例外,我在學生時代也曾經有過類似的想法。以下是我的回答。