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