因為一些原因,程式設計師(高手和初學者都有)中有這樣一種觀念,認為跟普通人對比起來,他們的思考方式多少有些“不同”。
同時,這種傳言(myth)流傳至今,以至於連非程式設計師都開始認同了。
據我所知,程式設計師思考的方式完全沒有任何獨特之處(我是說,作為一名程式設計師,我的觀點有所偏頗,但我盡力保持公平)。
程式設計(採用的思考方式)趨向於採用下面幾種“習慣”進行選擇:
- 分析
- 邏輯性
- 排他性
不管這些“習慣”的重要性順序排名是否合理,但是我們應該回過頭看看,它們是如何適用於程式設計和程式設計之外的世界。
“分析”指的是,對系統進行觀測,確定其功能,並且對比預測的結果確定系統的工作情況。一般來說,對程式工作原理進行建模,於此同時檢視程式的程式碼,並且(用模型的模擬結果)與我們所期望的程式結果進行對比。
“邏輯性”講究“論據”,通常用於推斷某些東西是對是錯及其原因。幾乎所有計算機程式都有關於“是”與“非”的一些形式或者表現法,事實上,所有的語言都是為了這些概念設計的(邏輯程式設計)。
最後,排他性。排他性意味著你完全沉迷於某些東西,到了排斥所有或者大部分其他東西的地步。雖然排他性被普遍認為是一種消極特徵,但是當你忙著用計算機幹 活時,事實上它能便於你專注和沉醉於你正在做的事情。在大部分其他職業領域,排他性很可能對你的職業有很大的傷害,不過從操作的角度來說,計算機是相對安 全的,所以,當你在操作的時候用不著左顧右看,或者朝後看,所有的操作都顯示在你面前的螢幕上。計算機程式設計人員甚至有一句話來形容這個區域中形成的精神狀 態,當你身處其中的時候,整個世界好像消失了,你所有的感覺就只有跟電腦的對話而已。
還有什麼其他職業會有這樣的傾向?
分析,在科學的所有表現形式中都很重要,人們可以通過分析弄清楚事物的運作發展,它是科學方法的基石之一。化學、生物或者任何其他領域的東西可能複雜難 懂,當你是一名在這些領域工作的工程師,努力研究其中的事情時,分析也是相當方便的。事實上,到目前為止,我認為分析對於我們所有人而言是很重要的,從小 孩子拿起玩具扔掉並觀察其下落,逐漸地開始研究地球模型的重力,到這個小孩35年後開發一些空間程式。當我們觀察周圍的世界並在有限的範圍內運用分析來預 測未來的時候,分析是我們永遠的伴侶。火車來的時候,不要穿過去,否則你會被壓扁的。
實際上,邏輯是數學一個分支的正規表現形式,所以任何數學家和分析家,邏輯分析都是他們使用的工具之一。不過除了數學和程式設計之外,邏輯和“邏輯思維”還有 廣泛的應用空間,每一個審訊嫌疑犯的警員都會用它來區別真話和謊言,律師用它來讓法官或者陪審團相信只有他的委託人才是有理的,而不是其他人。小孩用它來 判斷誰在撒謊。邏輯思維,就像分析一樣,是我們永恆的伴侶,它適用於不同行業的所有人士或者某種程度上的,某些時候也適用於貿易,以及我們的日常生活。如 果你比大多數人更擅長邏輯思維的話,雖然每個人都有一定程度上的邏輯思維能力,但是你會發現某些任務執行起來會更加容易。
最後,排他性。這是一個棘手的問題,因為來自沒有電腦的世界的大多數人容易消沉,但我在努力讓它成為良性迴圈。如果一個科學家(或者研究這個問題的人)緊 緊抓住某些東西不放,無法入眠,是因為他們一直在思考問題,那同樣是一種排他性。通常,在計算機上程式設計或者除錯的時候,就會發生這種事;不過硬體工程師、 作家或者其他人或多或少也會有這種經歷。
具備這三種特質有助於你安排你的程式設計生涯,不過我所知道的最好的程式設計師是那些在現實中對這三方面都有節制的人。他們不會忘記那樣才是一個人,他們與別人聊 著術語,而不是漫無目的地閒聊,他們不相信自己的智力比別人好或者有所差異。程式設計就跟其他每一樣事情一樣,你會去做,是因為你喜歡它;如果運氣好的話,沒 有人會因為你腦袋上的耳垂形狀而強迫你去做你不喜歡的事。
每個人——甚至那些連一行程式碼都沒寫過的人——都可以學習程式設計到一定程度,我見過很多相反的主張,但就個人而言,我還沒見過我無法在幾個星期之內教會程式設計基礎的人,加入他們:
- 願意學習
- 願意花時間
這在經典的場景中或許會很難,但就個別而言,我相信會成功的。
顯然地,有人存在心理缺陷,在那種情況下,他們也許不可能但可以明確地將世界劃分為“可程式設計”部分和那對於我來說距離太遠的“永不可程式設計”部分。程式設計是一 種可以學習的技術,你也許不是下一個Linus Torvalds,但是如果你有足夠的耐心並且持之以恆的話,你將有能力實現自己的目標。
程式設計師的思維跟其他人並不存在差異。
原文:Jacques Mattheij 譯文:敏捷翻譯 – 李盛暉
如需轉載,但請註明原文/譯文出處、譯文超連結和譯者等資訊,否則視為侵權,謝謝合作!