程序員的代碼為什麼永遠寫不完?
程序員和常人有著什麼樣的區別?是否所有的程序員都是天然呆?為何女性程序員的人數要遠遠少於男性?在本文中,我們將帶著種種疑問深入探討計算機程序員中的文化。
打開今日頭條,查看更多圖片作者 | 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翻譯,轉載請註明來源出處。
※為何優秀的程序員不斷離開?| 暢言
※為什麼雷軍指責「華為不懂研發」?| 暢言
TAG:CSDN |