為軟件王國(guó)立法:從硬件產(chǎn)業(yè)的內(nèi)幕說起
原創(chuàng)51CTO編者注:本文作者Paul Kimmel是codeguru網(wǎng)站上VB Today欄目的專欄作家,有著二十多年的項(xiàng)目經(jīng)驗(yàn),涉及到硬件和軟件的方方面面。Paul這么多年的項(xiàng)目經(jīng)驗(yàn)令他了解到,硬件產(chǎn)業(yè)中有著很多生產(chǎn)中的小秘密,而這些秘密如果跟軟件工程師們分享的話,是會(huì)帶來很多好處的。以下是譯文:
20多年來,我參與過很多的項(xiàng)目。現(xiàn)在,我是一名作者、專欄作家和顧問,從而能夠了解到更多我以前不可能參與的項(xiàng)目。最普遍、顯而易見的一個(gè)現(xiàn)象是,有大量從頭開始開發(fā)的軟件甚至沒來得及面世,就胎死腹中了。就算是那些現(xiàn)在已經(jīng)被用戶使用的軟件,也很少能夠在規(guī)定時(shí)間內(nèi)、嚴(yán)格按照預(yù)算或是預(yù)期的功能,滿足用戶的要求。
傳統(tǒng)觀念一直認(rèn)為軟件工程是很難開展的,每一個(gè)應(yīng)用軟件都是宇宙中全新的一個(gè)創(chuàng)造。所以,它就一直都是這種狀況,并將一直持續(xù)下去。
可悲的是,這種傳統(tǒng)觀念其實(shí)是一個(gè)謬論。
有一個(gè)叫做IEEE的硬件工程師秘密組織,他們有一個(gè)沒有跟軟件工程師分享過的小秘密。這個(gè)秘密就是用戶的權(quán)力、自由和選擇這幾個(gè)因素,必須被去掉。為什么他們沒有把這個(gè)秘密共享出來?因?yàn)榇蠖鄶?shù)的軟件工程師,都沒有通過一個(gè)標(biāo)準(zhǔn)化的測(cè)試,沒有學(xué)到他們的秘密握手(secret handshake),也沒有通過大幅的減薪來表明他們的決心。
不同于其它一些更加開放的組織,IEEE獨(dú)自把持著一些能夠讓軟件產(chǎn)品廉價(jià)、可靠、快速的要訣,而這一切是大多數(shù)軟件項(xiàng)目經(jīng)理做夢(mèng)都想不到的。
二十年行業(yè)經(jīng)驗(yàn)
在過去的20年之中,我一直在為企業(yè)、為程序員們做咨詢和寫作工作。在那一段時(shí)間里,我參與到了一些不需要與電腦直接打交道的項(xiàng)目中。這使我不得不具體地去了解這些不同設(shè)備的硬件規(guī)格,也正因?yàn)槿绱耸梗夷軌蛄私獾接布a(chǎn)中的許多小秘密:設(shè)備制造商很少從零開始制造產(chǎn)品。他們生產(chǎn)的硬件基本都是使用現(xiàn)成的部件進(jìn)行組裝,然后放到個(gè)花哨的盒子里。沒有幾個(gè)用戶會(huì)去研究它的原理,也沒幾個(gè)用戶會(huì)去看這些東西的設(shè)計(jì)藍(lán)圖。最終用戶所知道的是僅僅是這東西很炫,它能做很多工作,可以洗衣服,可以播放音樂,可以錄制電視等等諸如之類。其實(shí)說白了,硬件產(chǎn)品就是一些用了一遍又一遍的零件,只是換了幾個(gè)不同的漂亮盒子而已。
當(dāng)一個(gè)電子工程師(或者其它不是程序員的工程師)從大學(xué)畢業(yè)獲得了工程師學(xué)位之后,他們就加入IEEE(你可以上維基百科查一下IEEE這個(gè)縮寫,不過這并不重要。)(其實(shí)每個(gè)人都可以當(dāng)程序員,心理學(xué)專業(yè)的都可以給編寫代碼。)當(dāng)他們加入到IEEE以后,他們就相當(dāng)于拿到了一個(gè)保證書,確保他們可以拿到不錯(cuò)的薪水;用不著自己去另外創(chuàng)造,因?yàn)橛鞋F(xiàn)成的部件;也用不著白手起家去自己創(chuàng)業(yè)。
一旦這些畢業(yè)生加入IEEE以后,他們就可以領(lǐng)取到一本27頁的小冊(cè)子。這本小冊(cè)子包含了所有被IEEE定義為“可用”的芯片、零件、電阻、電容和電路。將來要用到的部件則必須從這本小冊(cè)子里選取,偶爾也會(huì)有新的東西需要被補(bǔ)充進(jìn)這本小冊(cè)子,但這必須通過高級(jí)委員私下投票決定,隨后每個(gè)從業(yè)者都會(huì)有領(lǐng)到一份新的小冊(cè)子。必須指出的是,只有高級(jí)的IEEE委員才能往這個(gè)“可用”的部件名單里添加內(nèi)容,而且這種機(jī)會(huì)也少之又少。
然而在軟件領(lǐng)域,情況就完全不是這樣了。只要有鍵盤,你就可以發(fā)明新的東西,并通過互聯(lián)網(wǎng)、電子郵件、版本控制系統(tǒng)等,很快讓你的發(fā)明出現(xiàn)在用戶的桌面上。但軟件開發(fā)人員所具備的創(chuàng)造力卻導(dǎo)致了混亂。如果要寫一本軟件開發(fā)的小冊(cè)子的話,那可能27,000,000頁都寫不完。軟件工程的困難之處也正是沒有誰能一錘定音,在開發(fā)過程中人人都有發(fā)言權(quán),而且每個(gè)人都可以各持已見。
硬件產(chǎn)品是如何制造的
51CTO編輯推薦:IT硬件名人堂:40年經(jīng)典產(chǎn)品和背后的故事(組圖)
在設(shè)計(jì)制造硬件時(shí),硬件工程師首先得像做晚餐時(shí)從雞肉、豬肉、牛肉或魚以及一堆蔬菜里選食材一樣,對(duì)相關(guān)的材料進(jìn)行選擇,然后才能組建好硬件。這樣,只要有需要,硬件工程師就能隨時(shí)組裝好成品。
不好意思,或許這個(gè)比喻可能會(huì)讓人犯迷糊,接下來我們?cè)偌?xì)說吧。
硬件工程師有幾點(diǎn)是必須牢記的。首先,他們必須把器件組裝到體積有限的一個(gè)殼子里;其次,他們只有很有限的器件可用;第三,這些器件都要被安裝到花哨的塑料包裝盒里,在電視上或是餐廳里為產(chǎn)品打廣告,人們往往會(huì)被漂亮的外包裝吸引而去購買它。這些漂亮的產(chǎn)品以極快的速度生產(chǎn)和制造出來,以至于IEEE協(xié)會(huì)和制造硬件的工程師們都不再關(guān)心這些硬件系統(tǒng)本身的功能是否完全切中消費(fèi)者的需求。
大規(guī)模生產(chǎn)漂亮硬件產(chǎn)品的關(guān)鍵,其實(shí)就是不要去創(chuàng)造新的部件,即使你用的這個(gè)部件只有百分之一的功能是真正需要的,只要你能按不同的方案重組這些部件,再換個(gè)酷點(diǎn)的包裝(如果可以的話,再把硬件的大小比之前做得小一點(diǎn))就可以做成全新的產(chǎn)品了。(1978年我有一個(gè)可以播放78 RPM的唱片的Zenith 收錄機(jī),可以用來播放音樂。2009年,我又有了一個(gè)很薄的iPod(對(duì)不起了,使用Zune的朋友們),它也只不過是播放音樂。人們只是想出了如何少使用幾種零件,但是其實(shí)這些零件大部分1978年的時(shí)候就已經(jīng)有了。
軟件是如何開發(fā)出來的
繼續(xù)我那個(gè)做飯的比喻。相比硬件開發(fā),在軟件開發(fā)時(shí),可能每個(gè)工程師都會(huì)有種饑餓感,那種感覺就像是埃塞俄比亞大饑荒,找不到現(xiàn)成可用的部件。沒有魚、豬肉、牛肉、雞肉和蔬菜這些食材,也沒有廚房、沒有器具,甚至可能連吃飯的時(shí)間都沒有定下來。而在吃飯的時(shí)間內(nèi),工程師們還在討論分子是如何構(gòu)成蛋白質(zhì)。(說了這么多,我不餓都不行了。)
其實(shí),目前的這種狀況,真的不是程序員的過錯(cuò)。程序員是聰明而富有創(chuàng)造性的,只不過他們?nèi)狈σ粋€(gè)可以控制他們的人,或者所謂“大祭司”。程序員有點(diǎn)像是在一個(gè)沒有法律、誰吼得大聲誰就贏的國(guó)度里干活,每個(gè)人有太多的自主權(quán),結(jié)果聰明反被聰明誤。比如51CTO之前發(fā)表過的從菜鳥到大師,細(xì)看程序員的五種層次一文中也說道,90%的代碼是由10%的程序員寫出來的。這一方面說明大師級(jí)程序員的重要性,但對(duì)于軟件產(chǎn)業(yè)而言,卻未必是一件好事。
真理就是……
軟件開發(fā)最終也還是會(huì)變成現(xiàn)成組件的拼裝。不同派別的程序員不用再問自己:我應(yīng)該使用ADO.NET、SQL、LINQ、XPO,還是其他方法來對(duì)數(shù)據(jù)庫進(jìn)行插入和讀出操作。到那時(shí),會(huì)有一個(gè)統(tǒng)一的數(shù)據(jù)庫操作層供所有這些人調(diào)用。這樣,我們的選擇范圍就可以縮小一些,也能夠接受比原來較少的薪酬。向我們軟件工程里的大祭司們起誓保守秘密吧,從此軟件項(xiàng)目就變成了組裝活,不會(huì)再出現(xiàn)失敗的情況。難道不能這樣嗎?
與此同時(shí),盡量用現(xiàn)成的代碼去編寫程序,盡量用已知的、夠用的技術(shù)來實(shí)現(xiàn)所需的功能,不用管它是否會(huì)帶進(jìn)很多不需要的功能從而把整個(gè)程序弄得一團(tuán)糟。還可以再換上幾個(gè)漂亮點(diǎn)的界面,這樣就能很容易做出了一堆很酷的新軟件。
原文:Hardware’s Dirty Little Secret, or Why Software Can be Mass Produced
作者:Paul Kimmel
【編輯推薦】