好的程序員做不出好的軟件設計

發(fā)布時(shí)間:2011-8-31 20:26    發(fā)布者:Liming
關(guān)鍵詞: 程序員 , 軟件
你不能看到一個(gè)程序員還不錯,就把他推到系統分析師、軟件設計師或軟件架構師的位置上。如果你在團隊或公司里尋找一個(gè)能勝任軟件架構師或設計師這樣重要位置的人時(shí),首先出現在腦子里的想法通常是在程序員中選一個(gè)最好的。別這么干。這樣的位置不是隨意的找個(gè)不錯的程序員就能勝任的。把你最資深的程序員晉升到這個(gè)位置也未必就合適。乍一聽(tīng)你可能感覺(jué)荒誕。為什么我不能讓一個(gè)程序員去做系統設計呢?畢竟,他們是設計程序的,不是嗎?的確是的,沒(méi)錯。但你要明白的事情是,設計軟件相對于編寫(xiě)程序,它需要的是一套完全不同的技能。

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

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

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

  如果你專(zhuān)注于一種語(yǔ)言,并能做到精通掌握,那你遇到的問(wèn)題模式很可能就限制于跟這種語(yǔ)言相關(guān)的領(lǐng)域。簡(jiǎn)言之,如果你懂PHP,那所有的問(wèn)題都基本上是跟Web開(kāi)發(fā)相關(guān)。相同的道理,如果你全部的知識都集中的Java上,那你對所有問(wèn)題的解決思路都會(huì )沿著(zhù)面向對象的方向,即使是使用過(guò)程式編程對于解決你的問(wèn)題會(huì )更優(yōu)的情況下,你也會(huì )如此。

  一個(gè)程序員,只懂得一、兩種編程語(yǔ)言,這會(huì )嚴重的限制他的解決問(wèn)題的能力。例如,如果你的編程語(yǔ)言是C語(yǔ)言,對于手頭出現的問(wèn)題,你絕對不可能想出一種面向對象的解決思路,因為你的編程語(yǔ)言不提供這樣的語(yǔ)言特征。跟Haskell程序員不一樣,C++程序員不可能想出函數式解決方案。你的編程語(yǔ)言里提供了結構體和枚舉類(lèi)型與否,會(huì )嚴重的影響你剖析一個(gè)問(wèn)題的方式。如果你使用的語(yǔ)言的能力很弱,或你只知道少數幾種語(yǔ)言,你解決問(wèn)題的能力相應的會(huì )被削弱。

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

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

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

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

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

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

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

來(lái)源:博客園
本文地址:http://selenalain.com/thread-74953-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页