只會寫程式碼的程式設計師永遠無法出色?
程式設計師和常人有著什麼樣的區別?是否所有的程式設計師都是天然呆?為何女性程式設計師的人數要遠遠少於男性?在本文中,我們將帶著種種疑問深入探討計算機程式設計師中的文化。
現如今,我們日常生活的方方面面都滲透著計算機的程式碼。然而,普通人並不瞭解計算機程式設計的工作,也不清楚程式設計師正在悄悄地影響著整個社會。科技報導的記者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優化了房屋的租賃,最終會影響到房地產市場。歷史在一遍遍地重複,當你看到某家科技公司鎖定了人們的某個興趣時,通常他們都會優化自認為這是對大家有益的事情,但結果卻會給其他人帶來間接的傷害。
“我自己是一名從事了5年前端的老程式設計師,辭職目前在做講師,今年年初我花了一個月整理了一份最適合2019年學習的web前端乾貨,從最基礎的HTML+CSS+JS到移動端HTML5到各種框架都有整理,送給每一位前端小夥伴,這裡是小白聚集地,歡迎初學和進階中的小夥伴。"
加學習QQ群:615094426 微信:webdu123
相關文章
- 程式設計師永遠不要再犯的5個程式設計bug程式設計師
- 幽默:不懂OO或DDD的程式設計師永遠無法get到這個幽默程式設計師
- 程式設計師永遠不應該相信"抽象“程式設計師抽象
- 永遠考慮那個擁有更強寫作能力的程式設計師程式設計師
- Oracle 程式設計師吐槽:永遠不會再為 Oracle 工作了 !Oracle程式設計師
- 頂級公司程式設計師,一天只寫100行程式碼?程式設計師行程
- IT人永遠不老,老程式設計師價值何在?程式設計師
- 程式設計師如何寫出好程式碼?程式設計師
- 好程式設計師不寫程式碼程式設計師
- 【漫畫】程式設計師永遠修不好的Bug——情人節程式設計師
- 當程式設計師寫不出程式碼了……程式設計師
- 菜雞程式設計師是如何寫程式碼的?程式設計師
- 程式設計師的工作就只有寫程式碼麼???程式設計師
- 中國程式設計師與美國程式設計師寫程式碼的區別分析程式設計師
- ios程式設計師提高程式設計能力萬無一失的辦法iOS程式設計師
- 會計憑證BTE替代 程式碼寫法
- 裝逼只服程式設計師!用程式碼寫出租廣告,網友回覆亮了:程式碼有點爛啊程式設計師
- 程式設計師只吃青春飯?大齡程式設計師都去哪了?程式設計師
- 無程式碼程式設計程式設計
- 給程式設計師的幾點程式設計經驗----《編寫高質量程式碼》程式設計師
- 一個老程式設計師的程式設計之路,寫給年輕的程式設計師們程式設計師
- 作為程式設計師,這份Markdown備忘單你永遠需要程式設計師
- 程式設計師,你真的會寫簡歷嗎?程式設計師
- 新時代程式設計師都用什麼寫程式碼?程式設計師
- 為什麼程式設計師千萬不要重寫程式碼?程式設計師
- 程式設計師寫的跳轉程式設計師
- 身為程式設計師寫一百萬行程式碼的感覺程式設計師行程
- 千萬不要相信程式設計師在加班時間寫的程式碼!程式設計師
- 老程式設計師的10個程式設計小技巧,教你寫出高質量程式碼!程式設計師
- 好程式設計師寫出來的程式碼,就叫好程式碼嗎?你錯了!程式設計師
- 程式設計師需要重新考慮無程式碼開發的原因。程式設計師
- "無程式碼"時代的到來,還需要程式設計師嗎?程式設計師
- 面試了一個2年程式設計師,竟然只會curd!面試程式設計師
- 這些資深程式設計師的程式設計小技巧,教你寫出高質量程式碼!程式設計師
- 為什麼程式設計師喜歡在半夜寫程式碼?程式設計師
- 好程式設計師分享javascript中的常見的相容寫法程式設計師JavaScript
- 1024程式設計師節,向用程式碼改變世界的程式設計師致敬!程式設計師
- 十年程式設計師的告誡:千萬不要重寫程式碼!程式設計師