程式設計師是做什麼的?未來計算機變得智能,就不需要程式設計師了嗎?

2021-01-14 騰訊網

Computers are useless.They can only give you answers.–Picasso

計算機沒有什麼作用。他們只能告訴你答案。——畢卡索

很多人認為計算機變得如此智能,所以在不久的未來將不再需要程式設計師。另外一些人認為程式設計師是天才,他們在電腦前能不斷地解決複雜的數學難題。甚至不少程式設計師對他們是做什麼的都沒有清晰的概念。

在這篇文章中,我想給不知情的人解釋一下程式設計師到底是做什麼的:

程式設計師是將人類想法翻譯成計算機語言的譯者。

他們是兩種世界之間的紐帶。你認為維護這個紐帶很容易嗎?

人類世界的背景

The problem with people is that they’re only human.–Bill Watterson

人類的問題是,他們只是人而已。——比爾·沃特森

人類是生物進化的產物,並且擁有獨特而寶貴的器官——大腦,它能為程式設計師提供想法。大腦有組合複雜的新大腦皮層(對人類而言是獨特的),還有從哺乳動物和爬行動物繼承的舊結構。舊的大腦結構主要負責生殖(性)和生存(尋找食物或者躲避危險)。新大腦皮層進化成能夠更好地支持這些功能,但是,它開始產生奇怪的副作用——意識、思考和好奇心。幸虧這些副作用的影響,人類產生了文明並在數千年後發明了計算機。

一些人相信經過數千年的發展,人類應該變成完全沉悶的、理性的、可預測的生物,但是這並沒有發生。人類舊的大腦結構、複雜的心理和社會行為往往使人們不理性,不可預測並帶有欺騙性。並且,人類有糟糕的記憶力、強烈的情感和個人興趣。但是,程式設計師沒法選擇與更理性的物種工作,他們不得不與人類共事並且把人類的想法翻譯成計算機語言。

計算機世界背景

Part of the inhumanity of the computer is that,once it is competently programmed and working smoothly,it is completely honest.–Isaac Asimov

計算機非人性的一部分表現是,一旦完成編譯並且順利運行,它將忠實地完成工作。——艾薩克·阿西莫夫

計算機是人類文明的最佳發明。它由CPU、主板、內存、硬碟驅動器、顯示器和其他部分構成。計算機將我們的文明推入一個新的水平,使我們的生活更有意義並充滿樂趣,還彌補了我們大腦的缺陷。很可能計算機比人類更聰明。(不過,我有點關心如果這成為現實後,計算機還需要人類程式設計師嗎?)

現代計算機具有完全邏輯性、直接性和順從性。如果你知道它應該做什麼並且知道如何命令它,那麼和計算機一起工作是快樂的。唯一的問題是,計算機只會做你告訴它去做的。因此,你應該有清晰的思路並且在見你的上司或客戶時保證計算機不出岔子。

在人類和計算機之間的翻譯

翻譯中會遇到三個主要的挑戰:

1.語言歧義。人類語言是模糊、複雜並且雙關的,例如:「這個程序不能提供良好的用戶體驗」。文化、背景和上下文語境都會對溝通和含義造成影響。與之相反,所有計算機語言都是準確、直接的,與上下文無關。

2.細節層次。人類的溝通是籠統而不帶有過多細節的,例如:「我想讓這該死的程序運行起來」。這樣可以節省時間與精力,但由於缺少詳細信息,會產生兩個比較大的問題——誤解和不確定性。而計算機需要所有細節——每件事都要說清楚。

3.思維模式。人類習慣於思考需求、結果與解決方案之間的關係,例如:「這份報告應該在2秒內運行,而不是2個小時」。然而,計算機需要算法——按照步驟去達到想要得到的結果。

為了寫出優秀的軟體,程式設計師們必須克服這些困難,理解人們的想法並將之轉換成計算機語言。

一名優秀程式設計師所具備的能力

我們可以看到,一名優秀程式設計師應該具備應付兩個不同世界的兩套技能。

理解人類的需求並提出解決方案:

1.溝通——與人建立聯繫的能力,能夠同他人親密的交談,並有勇氣去嘗試分享自己的觀點。

2.意圖——從談話中提取有用的信息,理解並使之有意義。

3.邏輯——為不懂讓步的計算機整理、剔除那些人類思想中含糊而有爭議的內容。

4.創造力——挖掘、轉變人類的想法,從而創建優秀的解決方案。

5.構思——利用人類友好的接口和便捷的互動性來包裝編程思想。

6.大局觀——清楚解決方案是如何適應全世界的用戶、企業以及其他,從而使你的程序更有用。

告訴計算機該做什麼,並建立解決方案:

1.邏輯(再次強調)——把程式設計師的想法組織整理成有凝聚力的軟體思想和計算機指令

2.技術——發現並理解科技黑箱(對於99%的人來說是黑箱)。

3.程式語言——學習美觀的、富有邏輯的、清晰明了的語言,從而把程式設計師的想法提供給電腦。

4.算法——精通讓計算機完成任務最高效的方法。

5.建模——在軟體代碼中建立抽象和模型,從而掌握並操控想法。

6.實踐(比如代碼重構、單元測試、持續集成)——周期性活動,以保持系統可靠、健康與可改變。(關於代碼重構,可參見伯樂在線博客《明星軟體工程師的10種特質》這篇文章中的第3點。)

面向人類和面向硬體對象/系統的程式設計師有很大不同。

不與人溝通的程式設計師不是好程式設計師。一個優秀的解決方案需要計算機世界與人類世界的雙重技能。只有連接起兩個世界,才能成為一個真正的優秀程式設計師。

相關焦點

  • 程式設計師編程入門必知!程式設計師需要學什麼
    什麼是編程? 編程就是讓計算機為解決某個問題而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。學習語言的過程中還要有機會進行檢驗,不能只編寫代碼,還要檢驗代碼的結果運行是否正確,也就是某些可以運行結果的軟體我們要有,不過許多的程式語言都要求有被程式設計師設計來講代碼轉換成機器能理解的語言的編譯器。其他一些語言,比如Python,使用可以立即轉換成程序而不需要編譯。一些語言有自己的往往包含著代碼編輯器、調試器和/或者翻譯以及調試的IDEs(集成開發環境)。
  • 大學裡的計算機老師很好,為什麼不做一個薪水更高的程式設計師呢?
    專業程式設計師和大學計算機教師之間還有很大的差別,大學計算機教師沒有責任自己編寫程序,大學計算機教師的主要任務是向大學生灌輸知識,很多程式設計師都有很強的編程能力,但離宣講和接受工作還有很大差距,不要指望大學計算機有很強的編程能力,因為編程能力的培養需要具體的項目訓練,簡單的類理論水平東西會更多
  • 大齡程式設計師找不到工作,程式設計師真的是吃青春飯的嗎?
    程式設計師這行業就是吃青春飯的,於是也有許多這個行業的新手開始追問,程式設計師真的是吃青春飯的嗎?在這裡,我借用一位老程式設計師的話:程式設計師不是年紀大的都轉行了,而是技術差的都被淘汰了。當然,如果一味這樣說也過於偏頗了。所以,今天小編給大家說一說,到底這個程式設計師與青春飯是一種什麼樣的聯繫呢?
  • 《近匠》程式設計師客棧,程式設計師背後的經紀人
    傳統大型外包公司競爭激烈,收費標準往往混亂不透明,競價問題導致需求方選擇困難。新興平臺豬八戒網、碼市、猿團等,都試圖在外包、眾包方向做創新嘗試。本期《近匠》專訪程式設計師客棧的創始人陳柯好,程式設計師客棧匯聚了眾多籤約程式設計師,定位中小型企業用戶,以遠程工作模式提供標準化項目外包服務。那麼我們就一起來看一下陳柯好的創業歷程以及對於國內外包市場的觀點。
  • 孩子以後又不做程式設計師,學少兒編程到底有什麼用?
    01 學少兒編程,不等於要做程式設計師 面對家長的這個誤解,家長們可以問一下自己,「送孩子去學畫畫的家長,都是希望孩子會成為職業畫家的嗎?送孩子去學鋼琴的家長,都是希望孩子成為鋼琴家嗎?
  • 外國程式設計師說:中國程式設計師能吃苦,這是悲哀嗎?
    在編程界,雖然編程絕大部分都以英文為載體,但中國的程式設計師的整體水平,已經達到了世界排名的前列。美國程式設計師社區HackerRank曾經做過一個調查:哪個國家擁有最好的開發者,結果讓人大跌眼鏡。一名來自中國重慶的軟體工程師張世宓(音譯),就是中國程式設計師的一個縮影。為了拿到計算機科學博士學位,兩年前移民英國,如今在HackerRank工作,而他在社區函數式編程領域中,排名第十。
  • 在中國,程式設計師這行能幹一輩子嗎?
    魚羊 蕾師師 發自 凹非寺量子位 報導 | 公眾號 QbitAI已經超過35歲的C++,它的創造者現在在做什麼?二是工作強度真的很大,「晚上12點的北京,都見怪不怪了」。好不容易到了周末有點個人時間了,他也不敢放鬆——這會兒不看技術貼、論文,就沒時間去跟上技術更新的節奏了。每天的工作都被生活裹挾,回家就想躺在床上睡覺。谷同學這樣自嘲,他也坦言,自己如今幾乎沒有什麼社交。
  • 一款讓程式設計師編程更智能的開發工具Kite
    對於程式設計師而言有一項剛需,就是花費時間搜索網際網路的相關開發文檔和代碼示例。  Kite正是為了解決這樣需求而誕生的,對於許多從事Python的程式設計師而言,Kite極受青睞。所以Kite的工程師正在尋求添加對C#,Java和Javascript等語言的支持來擴大用戶群。  那麼,Kite如何幫助程式設計師變得更有高效?
  • 中國程式設計師的男女比例是多少?
    超過80%的程式設計師年齡在20-40歲之間。對於程式設計師這個職業來說,需要大量精力和體力的投入。20-40歲是程式設計師工作的黃金時期。根據統計數據,仍然有10%左右的程式設計師年齡在40-49歲之間,這部分人基本上都是已經在管理崗位上,但是,依然對編程有著濃厚的興趣,會做部分實際的編程工作。從上圖中還可以看到,有4%的程式設計師,年齡在10-19歲。這說明程式設計師的工作,對於人行年齡基本沒有什麼限制,有些程式設計師從中學時期就開始動手寫程序,並且做得相當不錯。圖中我們也對比了普通網民的年齡分布(黃顏色部分)。
  • 開發者: 你是白領程式設計師還是藍領程式設計師?
    一位執行長講述了他的一個經歷: 他的一位程式設計師同事沒有獲得了大學文憑,而是在一所職業技術學校學習了兩年,這位同事並不是沒錢進入大學,實際上一開始他是在一所頂尖的工程技術大學學 習,但是他認為學校的許多課程是完全是無意義,比如學習歷史、政治學、哲學和社會學等,與計算機科學不搭界。他對此很痛恨,在第一年退學後他進入一所兩年 制學校,專注於自己的興趣,而不是其它他認為不需要的課程。
  • 程式設計師憤怒了:我們不僅要當管理者還要當CEO!
    世界上最苦逼的職業是什麼?——程式設計師。誰沒有女朋友註定孤老一生?——程式設計師。夜間出沒的生物有哪幾種?——吸血鬼、殭屍、程式設計師。這些調侃也就算了,現在居然還說程式設計師當不了管理者!是可忍孰不可忍!程式設計師憤怒了:我們不僅要當管理者還要當 CEO!許多初創公司在挖掘和培養一個出色的計算機工程經理的問題上,存在普遍的誤解。人們總覺得天才工程師都是異常執著的代碼狂人,對成為一個領導者完全 不感冒。這是對工程師們的一個極大的誤解!在其他的團隊中,你慧眼識英雄,那為什麼到了計算機工程團隊你就滿腦糊塗了?這無疑會對你的人才資源庫造成深遠 的破壞。不服,是吧?
  • 西安是歷史與科技交融之城——訪全球最年長的程式設計師若宮正子
    83歲的日本程式設計師若宮正子女士,在網絡世界上有著「全球最年長程式設計師」「全球最勵志奶奶」等稱號。此次來到西安參加第二屆全球程式設計師節,若宮正子毫不掩飾自己對這座城市的喜愛。2018年第二屆全球程式設計師節將於10月24日在西安盛大開幕。23日,記者見到了前來西安參加全球程式設計師節的若宮正子女士。今年83歲的她出生在東京,退休前一直在銀行工作,跟計算機行業並無關係,退休後才開始接觸編程。若宮正子生性樂觀、喜愛交流,退休後她也對計算機產生了濃厚的興趣,想通過計算機與外界有更多的接觸溝通。雖然在學習的過程中也遇到過不少難題,但她樂在其中。
  • 在一線城市上班的程式設計師,家庭一般是什麼樣的?
    程式設計師也是一樣,看起來是一項技術很高的工作,需要從業者有很強的專業背景,受過很好的教育,說具體點,就是名校計算機相關專業,這些專業的高考分數都很高。但這只是過去了,程式設計師的含金量就像100元面值的人民幣一樣,隨著年代在不斷縮水。
  • 暴漲的比特幣、特斯拉與被程式設計師統治的世界
    對於這個命題,同樣深受阿西莫夫影響的T先生認為:這種暴力增長核心是,程式設計師在統治著這個世界。他因此發揮想像力討論了以下7個問題:1、最優秀的人去做什麼了?2、人類的恐懼是什麼;3、程式設計師真的在統治世界嗎?
  • 阿里低調程式設計師蔡景現:靠著寫代碼登上了胡潤富豪榜
    人們對程式設計師的印象總是刻板印象,只有「格仔恤衫,背包,禿頭,人又笨又有錢」。他們熬夜加班是正常的。透支生活換取高薪是猝死的高風險群體。程式設計師沒有未來嗎?真的不是。一名程式設計師三年前通過編寫代碼製作了《胡潤百富榜》。 蔡景現,花名多隆出生於1976年。1991年進入蒼南中學。
  • 這些程式設計師說,穿成偽娘寫出來的代碼更好
    近日,微博程式設計師女裝大賽完美落幕,通過這次比賽,增強了各位程式設計師的編程熱情,陶冶了...什麼?你還以為程式設計師是那種格子襯衫配拖鞋的邋遢形象嗎?現在已經穿格子裙配白絲襪了好嗎?穿女裝已經成了程式設計師拿offer的加分項,各位實習僧趕緊get起來啊,頂級程式設計師書單裡除了《頸椎的康復指南》還增加了《從入門到女裝》你不買嗎?
  • 程式設計師必讀的三十本經典書籍
    《代碼大全(第2版))》做了全面的更新,增加了很多與時俱進的內容,包括對新語言、新的開發過程與方法論的討論等等。2、《程式設計師修煉之道》對於那些已經學習過編程機制的程式設計師來說,這是一本卓越的書。 或許他們還是在校生,但對要自己做什麼,還感覺不是很安全。就像草圖和架構之間的差別。
  • 程式設計師的代碼可以做什麼?還能告白!今天可算是知道了
    程式設計師的代碼可以做什麼?還能告白!今天可算是知道了在現在網際網路遍布的社會,每個人衣食住行都跟網際網路緊密結合在一起,似乎沒有了網際網路人們的生活就會少了一些東西。人們的個人信息還有生活習慣都跟網際網路中無形有自己的一個縮影。
  • java新手程式設計師馬上入職了,擔心看不懂代碼,應該做哪些事情?
    是對未來的工作充滿好奇,還是有那麼一絲緊張,或者是其他複雜的心情,我記得我第一次工作的時候,第一天上班足足提前了2個小時在公司的樓下等著,到點時再上樓,因為當時聽說北京堵車,生怕自己會遲到了,可見面對第一份工作是有著多麼高的敬畏之心呀。
  • 程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥
    程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥?假如你有一個程式設計師的女朋友,突然給你發了一串數據(68656c6c6f 62616279),你知道什麼意思嗎?該怎麼回她呢?程式設計師的智商即使不高,應該也算合格的吧,要不然怎麼能與冰冷的機器交流呢。至於程式設計師的情商,那就有待考量了,敬請期待。