頂級程序員的思維方式評《代碼之美》第五條牛逼
公司里曾在北美作為產(chǎn)品研發(fā)經(jīng)理的資深人物某日和我閑聊,說到中美程序員的差別,北美的程序員,尤其是發(fā)明那些根本性東西比如JAVA, 比如Message機(jī)制,用得都是非常簡單的辦法,一方面,英語作為母語,與程序設(shè)計(jì)語言更加靠近,比中國的象形文字來的近,另一方面,這些北美的程序員似乎都深諳大道至簡的道理,代碼都寫得很簡單,當(dāng)然問題的思維方式更為系統(tǒng)。相對的來說,國內(nèi)的技術(shù)人員總是習(xí)慣把問題復(fù)雜化,不僅理解問題復(fù)雜化,解法也復(fù)雜,有時(shí)正是因?yàn)闆]有理解核心代碼的設(shè)計(jì),反而使得解法更加背道而馳。 《代碼之美》這本書,剛好給了一些關(guān)于北美(但不限于)的頂級程序員的例子,與其說它是講代碼之美,到不如說是講他們的思維方式,我們甚至可以窺見他們的價(jià)值觀,個(gè)人的體會是,這本書里面的頂級程序員們體現(xiàn)了以一系列思維習(xí)慣值得國內(nèi)同行參考:
第一:非常認(rèn)真全面的研究問題/客戶需求,比如在為霍金開發(fā)只用一個(gè)按鈕的交互軟件時(shí),他們很快意識到按鈕不止表達(dá)01,按扭的時(shí)長可以成為一種模擬輸入,從而為長按和短按分別設(shè)計(jì)更細(xì)化的選項(xiàng),由此簡化了后面的設(shè)計(jì)。
第二:總是希望用一個(gè)個(gè)案抽象一種模型,并用于更大的范圍,前面的程序可以服務(wù)給盲人,Google著名的MapReduce算法開始用于統(tǒng)計(jì)百萬億網(wǎng)頁上的詞頻率,后來用于所有分布式環(huán)境
第三:永遠(yuǎn)尋求簡單的方式來解決問題,不過有個(gè)技巧,就是可以把復(fù)雜的難題恰當(dāng)?shù)姆指。MapReduce算法體現(xiàn)了一種簡約之美,如同我們常講的中間件,屏蔽一切分布式,普通的程序員都可以依靠MapReduce和GFS來寫用于上千臺機(jī)器的分布式應(yīng)用。 在另一章開源ERP5的項(xiàng)目中,復(fù)雜的ERP項(xiàng)目的一級類僅有五個(gè),Resouce, Node, Path, Movement, Item, 這些概念加上Order和Delivery的業(yè)務(wù)基本項(xiàng)構(gòu)成了基礎(chǔ)業(yè)務(wù)模型,這個(gè)設(shè)計(jì)思維有點(diǎn)像說宇宙是四大元素組成的。 另一個(gè)不錯(cuò)的案例來自Linux內(nèi)核小組關(guān)于驅(qū)動的研究。 這個(gè)模型的抽象能力的缺乏,估計(jì)是中國工程師的軟肋,也是思維復(fù)雜化的原因。硅谷軟件人才IC(India/China)比比皆是,但能夠定義軟件行業(yè)的,還都是白人;蛟S,這個(gè)刪繁入簡的抽象能力,早在中國人學(xué)語文的時(shí)候被虛情假意的形容詞淹沒了。
第四:對于技術(shù)難題的靈感需要等待,從這本書看起來,軟件天才是不存在的,幾位頂級程序員都遇到一籌莫展的問題,有些幾個(gè)月也沒有解法,有的是某次喝咖啡的靈光一閃,或者干脆關(guān)鍵的程序都是在喜馬拉雅山下的山村寫的。
第五:他們都懷有程序改變世界的信心,在關(guān)于安全通訊的一章結(jié)尾,作者深信他們對于世界的民主化在做貢獻(xiàn),在他們看來:人類文明的代碼,越來越需要程序員對其進(jìn)行重新編程,然后重新接入社會這個(gè)操作系統(tǒng)中。比如,基因序列分析,商業(yè)軟件,計(jì)算機(jī)建模,更不要說互聯(lián)網(wǎng)上的多次革命,Email, Blog, SNS, VoIP。
這下理解為什么Google敢于對抗各國政府。
PS:但是對抗不了中國政府啊。
編輯:admin 最后修改時(shí)間:2019-07-31