色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

好的程序員做不出好的軟件設(shè)計(jì)

  本文是從 Good Programmers Make Bad Designers 這篇文章翻譯而來(lái)。

  你不能看到一個(gè)程序員還不錯(cuò),就把他推到系統(tǒng)分析師、軟件設(shè)計(jì)師或軟件架構(gòu)師的位置上。

  如果你在團(tuán)隊(duì)或公司里尋找一個(gè)能勝任軟件架構(gòu)師或設(shè)計(jì)師這樣重要位置的人時(shí),首先出現(xiàn)在腦子里的想法通常是在程序員中選一個(gè)最好的。別這么干。這樣的位置不是隨意的找個(gè)不錯(cuò)的程序員就能勝任的。把你最資深的程序員晉升到這個(gè)位置也未必就合適。

  乍一聽你可能感覺荒誕。為什么我不能讓一個(gè)程序員去做系統(tǒng)設(shè)計(jì)呢?畢竟,他們是設(shè)計(jì)程序的,不是嗎?的確是的,沒錯(cuò)。但你要明白的事情是,設(shè)計(jì)軟件相對(duì)于編寫程序,它需要的是一套完全不同的技能。

  讓我們來(lái)看看為什么一個(gè)好的程序員就未必可以做一個(gè)好的軟件設(shè)計(jì)師。但首先,讓我們來(lái)問(wèn)問(wèn)自己一個(gè)問(wèn)題,是什么讓一個(gè)程序員變的優(yōu)秀,甚至杰出?要想成為一個(gè)好的程序員,你需要有能力實(shí)現(xiàn)真實(shí)世界里重要的軟件。只能夠?qū)懗鲆粋€(gè)簡(jiǎn)單的文本編輯器是遠(yuǎn)遠(yuǎn)不夠的。

  為了能做到可以解決重大的、復(fù)雜的編程問(wèn)題,一個(gè)程序員需要在某個(gè)特點(diǎn)的編程語(yǔ)言上進(jìn)行數(shù)年的經(jīng)驗(yàn)積累。也就是說(shuō),為了能熟練的使用這種語(yǔ)言、熟悉這種語(yǔ)言的各種特色,他必須專注于這種語(yǔ)言。問(wèn)題就在這兒。

  對(duì)于只有錘子的人,他能解決的問(wèn)題就是釘釘子

  如果你專注于一種語(yǔ)言,并能做到精通掌握,那你遇到的問(wèn)題模式很可能就限制于跟這種語(yǔ)言相關(guān)的領(lǐng)域。簡(jiǎn)言之,如果你懂php,那所有的問(wèn)題都基本上是跟Web開發(fā)相關(guān)。相同的道理,如果你全部的知識(shí)都集中在Java上,那你對(duì)所有問(wèn)題的解決思路都會(huì)沿著面向?qū)ο蟮姆较颍词故鞘褂眠^(guò)程式編程對(duì)于解決你的問(wèn)題會(huì)更優(yōu)的情況下,你也會(huì)如此。

  一個(gè)程序員,只懂得一、兩種編程語(yǔ)言,這會(huì)嚴(yán)重的限制他的解決問(wèn)題的能力。例如,如果你的編程語(yǔ)言是C語(yǔ)言,對(duì)于手頭出現(xiàn)的問(wèn)題,你絕對(duì)不可能想出一種面向?qū)ο蟮慕鉀Q思路,因?yàn)槟愕木幊陶Z(yǔ)言不提供這樣的語(yǔ)言特征。跟Haskell程序員不一樣,C++程序員不可能想出函數(shù)式解決方案。你的編程語(yǔ)言里提供了結(jié)構(gòu)體和枚舉類型與否,會(huì)嚴(yán)重的影響你剖析一個(gè)問(wèn)題的方式。如果你使用的語(yǔ)言的能力很弱,或你只知道少數(shù)幾種語(yǔ)言,你解決問(wèn)題的能力相應(yīng)的會(huì)被削弱。

  語(yǔ)言塑造了我們的思維方式

  有人說(shuō),我們的語(yǔ)言塑造了我們的思考和認(rèn)知這個(gè)世界的方式。我基本上認(rèn)同這個(gè)觀點(diǎn)。當(dāng)一個(gè)人的母語(yǔ)里的名詞都有性別之分時(shí),他一定不會(huì)同說(shuō)其它種母語(yǔ)的人那樣一提起“警察”這個(gè)詞就基本上認(rèn)為是男的。當(dāng)一個(gè)人的母語(yǔ)里對(duì)藍(lán)色和綠色不區(qū)分時(shí),他對(duì)世界的感知會(huì)和那些有區(qū)分的人的感知大不一樣。

  如果我們回首中世紀(jì)學(xué)校的三學(xué)科,它們被描述為:語(yǔ)法解決概念和對(duì)象如何在書寫和話語(yǔ)中被表現(xiàn),用邏輯對(duì)它們進(jìn)行分析,最終以修辭為目的同他人交流。對(duì)于我們來(lái)說(shuō),編程語(yǔ)言也有語(yǔ)法。如果我們的編程語(yǔ)言不夠強(qiáng),我們對(duì)事物和概念的認(rèn)識(shí)以及對(duì)如何表達(dá)它們都不會(huì)有完整的視野。

  語(yǔ)言,我們用來(lái)跟人們、跟計(jì)算機(jī)交流的功能,明顯的影響著我們的思考方式。我們對(duì)語(yǔ)言知道的越豐富、越多,越能幫助我們提高解決問(wèn)題的能力。

  那么,什么樣的人更合適?

  那么,一個(gè)在某一兩種編程語(yǔ)言里具有專長(zhǎng)的程序員,在當(dāng)他解決一個(gè)問(wèn)題時(shí),會(huì)存在一定的局限。他會(huì)局限于他使用的語(yǔ)言允許他做的事。因此,他不會(huì)成為一個(gè)好的軟件設(shè)計(jì)師或分析師。

  如果我們不用這些優(yōu)秀的程序員,誰(shuí)又能擔(dān)當(dāng)軟件設(shè)計(jì)的任務(wù)呢?當(dāng)然不會(huì)是那些完全不懂編程的人了。我們需要的是一種通才。一個(gè)優(yōu)秀的軟件設(shè)計(jì)者必須通曉過(guò)程式,面向?qū)ο笫剑瘮?shù)式,以及邏輯式編程語(yǔ)言 —— 還包括各種優(yōu)秀的軟件開發(fā)方法論。他不能只熟悉一種方法模式、像一個(gè)專業(yè)領(lǐng)域人員那樣。當(dāng)然,他自己并不能寫出復(fù)雜的程序,因?yàn)樗闹R(shí)太寬泛。盡管如此,他卻能正確的判斷出怎么樣的設(shè)計(jì)才是一個(gè)正確的解決方案。如果問(wèn)題是處理一個(gè)釘子,他會(huì)找來(lái)一個(gè)熟練使用錘子的人;如果問(wèn)題是處理一個(gè)巨石,他會(huì)叫來(lái)爆破部隊(duì),而不是讓你徒勞的用錘子白費(fèi)力氣。

it知識(shí)庫(kù)好的程序員做不出好的軟件設(shè)計(jì),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 杭锦旗| 泗水县| 普洱| 泉州市| 永清县| 分宜县| 岑溪市| 中阳县| 同心县| 开原市| 贵定县| 泰兴市| 阳朔县| 清水县| 新营市| 阿尔山市| 穆棱市| 绿春县| 临潭县| 宁化县| 桃源县| 菏泽市| 昆山市| 睢宁县| 香河县| 阳东县| 峨眉山市| 陇川县| 公安县| 阜阳市| 调兵山市| 武威市| 通河县| 冀州市| 沅陵县| 葵青区| 黎城县| 南安市| 永泰县| 安图县| 清丰县|