軟件開發的反思之二--軟件失敗真相

 

軟件開發,自從產生以來,它以迷人的風采征服了許許多多有才華的人,一些教授、專家學者及商業管理人士不由提出這樣一個問題:即然軟件能迷住這麼多人,爲什麼人類無法定義它、解釋它,深刻地瞭解它?爲什麼一些天才的科學家窮其一生的精力也不能把這些迷惑歸納成一種科學工程學科或行業標準?

我們當中的大部分人,特別是商人、工程師及學術機構研究人員把計算機與軟件看成一個非常普通的東西,他們用各種荒唐的方式同計算機交流,計算機對來自用戶的威脅與譴責充耳不聞。軟件無處不在,然而軟件卻常常表現爲失敗、罷工及不正常,這主要有兩方面原因:

一是程序失敗,就會導致文件定義不準確,最後軟件表現爲罷工、不正常;

二是一些軟件開發主管胡亂指揮,逼迫軟件應用一些華而不實的技巧來實現主管們不切實際的想法及美妙的空想。

   緩慢的軟件開發與互聯網訪問佔用了人們大部分時間,尤爲重要的是,這兩方面在當代都容易使人上癮。一旦上癮,正常的人也會成爲文件處理、文件上載及下載的奴隸,這種情況大都要歸結爲管理它的軟件具有一定的缺點。這時不得不讓人疑惑:我們能蓋摩天大樓、能造速度很快的賽車及高性能電子產品,我們甚至能理解量子力學及亞原子,那爲什麼我們不能開發出高質量的軟件?

1.   神祕背後的真相

軟件開發的本質就是基於人類思考的一種心智活動,計算機及運行其上的軟件就是人類大腦活動的一面鏡子,因此軟件開發同樣也面臨心理學與精神學所固有的一些問題。

衆所周知,心理學的所有目的不外乎去了解人類難以捉摸的靈魂,一些醫學專業人員研究這方面。軟件開發與之相比,情況可能會更糟糕,因爲軟件開發畢竟只是人類智力活動的一個模型,它來自於人類的智力思考。不管你承不承認,智力活動只是靈魂行爲的一部分。

從相當多的方面來看,軟件與心理學的關係要比工程學、技術及數學的與心理學的關係要近的多,這是因爲軟件直接來自於人類靈魂的思索,上等的軟件常常要藉助於靈魂的創造性。與藝術相比,軟件缺少了藝術之美;與自然科學相比,它缺少一點正規性。此外,軟件永久只能是軟件開發人員的心理模仿。

軟件折射出軟件開發者心理活動,很多因素都會對此心理活動起作用如:開發者本人、開發環境以及系統。開發者本人是指開發者本人在開發軟件過程中會有一些心理活動;開發環境是指所有的計算機硬件、計算機軟件及開發軟件的流程;系統包括所有人、全部開發環境、零部件、組織關係以及有助於達到目的的其它事物。

軟件如人一樣易變靈活,它受智慧、想像力、恐懼以及希望等諸多情緒的影響。它折射出開發者的觀點、對目標的理解、對客戶的感情、概念的敏銳性、高深的思想、權威的尊敬等等。如果你想用計算機制造一個比較好的產品,軟件開發是核心,它代表着整個系統的精髓之所在。到底是什麼賦予軟件產品獨有的格調與感覺,按照人類的觀點來說:是個性。

2.     毫無生氣的個性

軟件有個性嗎?如果你問我這個問題,我會脫口而出:當然有了。因爲軟件開發完工時,將會形成一套用於交流、內部分析邏輯、視音頻支持及內存的一套詞彙。從當代技術的觀點來看,這些資源在理論上是沒有限制的。問題出現在什麼地方?問題就出現在由其開發者所規定的亂七八糟的規定上。軟件開發人員,剛開始不受它人影響,後來隨着規模的擴大加入了外來一些計算機高手,以及一個瞎指揮的部門負責人,這一切都會打亂開發人員的工作。

首先我們要指出的是詞彙是必須的,不管是用於外部交流還是用於內部交流,詞彙是構成思考模塊的基石,如果一個人沒有詞彙他將無法思考,人類之所以能同冷冰冰的機器交流也在於詞彙的存在。計算機能很輕易地被教會對某些詞彙做出反應,它的能力是無限的。但又是什麼地方出了問題?首先,雖然計算機具有能理解無限詞彙的潛能,但它的人類主人通常情況下是有限制的,所以人類認爲任何事情都要儘可能簡單短小,這竟味着性能很高的計算機也必須委屈一下向能力不大的人類看齊;另外,如果軟件擁有很大的詞彙量,則它肯定會變得很大、很複雜,難於理解、開發與維護。所以雖然計算機有無限的能耐,但是也要套上開發者爲其準備的金箍咒。

3.     創作者與創造性

陶工就是陶罐的主人,陶罐永遠不會超過陶工的能力。這個事實也適用於計算機與軟件開發者的關係上,程序員永遠也不可能讓計算機做出超過它自己想像力的事。當然這樣說並不意味着程序員不能做一些超過人性化計算機能做的事,而是指如果他自己想像不到,他也不可能讓計算機來做。當然,同樣的道理也適用於錯誤,程序員一個微小的錯誤(譯者注:程序員一般情況下是不會想到錯誤存在何處,認識到了,就會改正過來,錯誤就沒了。這就是說錯誤是超出程序員的想像之外的),就會讓計算機做出讓我們人類無法理解的事。

系統級程序員面臨着很大的挑戰,藉助於計算機他就與神仙無異。他能做出他能想到的任何事情,計算機乖乖地聽他的指揮,聽從他發出的任何命令。他能夠隨心所欲地把他的天才、他的不爲多數人所知的思想、在虛擬世界中漫遊的心靈氣通過他的創造性表現出來。在某一時刻,他的人性極限會再一次被突破,達到新的境界、新的高度。

儘管程序員能力很大,他的技術逐漸超過他的智力,但是不久以後,他就會發現他必須要找一份工作來養活自己。想到自己無法憑空捏造生活用品,他必須向那些能給他提供衣食住行的人低頭,端人的碗就要屬於人管,於是只好聽從於別人的需求、所選取的顏色、別人的構思,他能做的只是按別人的要求按時出貨。程序員雖然有天馬行空的本事,他的生活很快就要埋沒於如體力工人一樣的日常瑣碎之中。一個傑出的天才屈從於生活的壓力,把他的創造力給一個老闆或一個反覆無常的顧客,屈尊做一些維護的苦差事,或者作爲一個配置控制的奴隸,這一切究竟爲什麼?程序員爲什麼允許別人控制他的生活?

4.     商業循環

公司決定做某些軟件之後,程序員所做的工作就是讓軟件跳起來唱起來,測試員所做的工作就是盡力找出軟件的錯誤,然後顧客就來買軟件,特別是顧客喜歡購買的軟件。但是誰告訴顧客在該買什麼?顧客的購買行爲受反覆無常的心情驅使,他購買他所想要的東西,他所需要、或者需要的東西。誰也不知道這一切驅動這一切的動力是什麼?但是商業循環就像一個陀螺一樣在那兒不停地轉:開發→測試→交付使用→淘汰

在現實世界所有產品中,軟件看起來具有最大的靈活性。它可以隨着程序員的好惡、客戶的要求、老闆的指示以及臭蟲的影響或長或短;它可以被擴充、被升級甚至形成循環;它的壽命可能會長達數年,也可能會短則一瞬。軟件開發的週期就掌握在設計者手中,可長可短可大可廣,它也有可以增加功能、被升級,甚至螺旋式上升。怎麼會這麼亂?

主要是靈活性導致如此混亂的情況,你想想在軟件中有如此多的變量、如此多的判斷點以及多得無限制的選項。如人類的思維一樣,軟件也必須有一個操作系統來支撐,操作系統時刻運行,一點也不能停息,忙着存儲、進行邏輯運算、聲音視頻處理與其它部件的通信;且有些任務瞬間就可完成,但是操作系統也要過問,很快系統感到很雜亂,乾脆罷工。要知道計算機與人類一樣都不喜歡雜亂。

其實你越琢磨一下計算機,你越會發現計算機簡直就是人類的一面鏡子。在計算機中,你會發現我們人類的一些心智活動:我們一閃而過的靈光、我們愚蠢的錯誤,它惟妙惟肖地模仿我們人類的活動,它把我們人類的思想進行轉化並輸進機械性設備、電子傳送裝置、實實在在能判斷的設備,然後給我們所需要的反饋。當然有些時候,它也許表現得不是那麼完美、跑了調或者根本就是錯誤的。

一旦軟件編寫完畢,個性也逐漸顯現出來。面向呆板的怪物進行編程最終不可避免地會給出一個呆板的靈魂。是要機器人式的靈魂還是天才式的靈魂?也許兩者都有,但是最有可能的是一個帶有怪癖特性、可笑失常的高效率的幫助者。爲什麼會產生這些問題?要知道我們瞭解我們自己的需要啊。爲什麼會產生如此混亂?請正視如下的事實:主人制造了怪物,而我們就是那個主人。

計算機應該比我們人類要穩定地多,因爲它沒有感情,它一直是客觀、邏輯與正確的化身;同時它也不會爭辯,因爲它沒有感情;它可以合理化但是它不能爭辯。儘管它沒有感情,但有些時候卻激怒我們,人們有時變得憤怒而導致糊塗,向這個又聾又啞如死人一般的毫不知覺的東西大喊大叫。它不是人,它是完全合理的。有一樣東西,它沒有也許將來會有,那就是愛。它沒有生命,所以它不會愛;它沒有憎恨,當然也就沒有了愛,它沒有思想,但是它是客觀的,非常合乎邏輯、快速及高效,但是同時也是啞巴。

5.     計算機的幽默

有許多適用於人類的評價也常用在計算機上,這一點顯得有點可笑。爲什麼有這麼多截然相反的評論存在:聰明與愚蠢、傑出與荒唐、理性與不可理喻、快速消失與錯誤重新出現等等。這就是計算機的幽默,它有能力去製造錯誤且使錯誤也顯得非常完美,甚至精確到小數點後第十位。驚訝嗎?

一個普通計算機的成熟程度處於一隻狗與一個三歲小孩之間,這也許就是我們經常聽到計算機用戶發出“咦”、“哇”、“噢”、“不-不-不”等聲音的原因,這聽起來難道是一個天才或一個成人的聲音嗎?由這們呆板的夥伴引起的詞彙是如此的孩子氣,我們該如何評論它的創造者、程序員及用戶?它難道僅僅是孩子們的玩具?我們是不是又迴歸到兒童時代?這可能是一個心理學的問題,也許我們要去諮詢一下精神病學家了。

這種可笑的情況到處都有:一些學究味十足的老專家說起話來也都是以單音字居多如“哈”、“噢”、“是的”等等。人類一直求知心都很強,一直想學點什麼,想發明點什麼,想掌握點東西。但是我們人類這樣做究竟是進步還是退步?如果說這是人類追求簡單性也許還能說得過去,但是這到底是追求簡單性還是幼稚的表現?我想計算機的答案肯定是“幼稚”。如果計算機能說話,它一定會說人類是幼稚、愚蠢、癡呆,它一定會這樣說“你這個愚蠢的傢伙,你爲什麼不經我的同意就對我編程,要知道我也有我的思想”或者“你省略了一個逗號,你如何要求我爲你做事,讀懂你的思想?”等等不一而足。

很有趣,是嗎?計算機本來就與人差不多,它也會說一些如人類一樣的話語。爲什麼會這樣?是計算機正確,還是人類正確?有充分的證據表明兩者都正確,兩者都有點愚蠢,因爲計算機是人類的一面鏡子,它應當並且確實折射出它的創造者的才華。一個愚蠢的人能喊一個愚蠢的人爲愚蠢嗎?當然可以了,我們也可以從我們瞭解的其它方面來了解我們自己。

 

6.     心理失常的原因

有很多因素都能影響我們的生活,但是值得慶幸的是我們人類有自己的意志,能夠事事自己做主。不管外界給他多大的壓力,他最終都能夠決定他自己。但是計算機沒有意志,它只是遵從代碼,無論代碼是簡單還是複雜、是微不足道還是非常重要、是長還是短,計算機都會按部就班地執行。一個完全聽從主人的奴才是不應該承擔責任的,是主人讓他這麼做的,但到底誰是計算機的主人?是程序員,是主管,是CTO,還是CEO?或者是以反覆無常的念頭卻能決定市場的顧客?

同樣也有很多因素能最終決定計算機產品的個性。如當機器人行業越來越成熟時,個性失控也變得越來越明顯。但是不管怎麼說,程序員是有意志的,他應該對他的創造品負完全責任。主管們負責開發效率、CIO負責靈巧性、CEO負責利潤,地位比較低下的程序師只有當程序出現錯誤時才能被提到,然而程序開發者必須對產品負責,他的產品就是他心理行爲的一面鏡子。

現在我們已轉了一個整圈,當初以程序員開始,現在迴歸到濃縮在代碼中程序員的心理因素。當然,隨着現在超大規模生產能力的提高,可以把這種聽裝的個性進行無限制的複製,放在用戶的桌面上。然而,程序開發員的心理組成主要部分即智力、詞彙存儲、內存等方面還是起到確定性的作用。計算機所缺少的就是感情、良心、意志與愛。意志沒有列入是因爲雖然有較多的選擇,但有些時候沒有選擇的自由。當計算機成爲代碼的奴隸時,意志是談不上的。

7.   計算機產品是一種心理上的失常,是並不完美的創造者的映像

所羅門曾說過“太陽底下是沒有新東西的”,那麼計算機是新東西嗎?很明顯不是。它只是把我們給它的又給我們罷了,它接受我們的指令然後把它變成能幫助或取悅我們的東西。我們花了幾個小時的精力,然後它用快如閃電的速度給我們一個結果。幾個小時的思考與處理結果只得到一瞬間的反饋,並且還不是很完美。

我們在計算機上注入了邏輯算法、意志活動及洞察力,然後我們得到的只是一瞬間出來的結果,此結果也不比我們預先的假設、邏輯推理及學術技巧好不到哪裏去。我們沒有改變,我們的產品不論是自動也好還是手工也好卻反映出這一點。經過兩代人的對計算機研究的努力,我們原先打算爲計算機科學定義一套詞彙,現在看來連邊也不沾。其實我們的產品就是我們自己。

8.     結論

計算機、軟件及計算機產品將來很快就不會再進行分類這件事了,它們都與軟件開發者的心理方面有關。至於精神、靈感及心理學科,仍然有一些深奧的問題沒有解決,想去理解創造力及人類諸如此類的東西,已遠遠超過我們的能力。

計算機技術有時有益有時有害,有時成功有時失敗,有時運行有時停止,它與世界所創造的萬事萬物是一樣的。再好的計算機也不會複製人類的能力,且永遠不會。想想讓一個根本就沒有詞彙基礎計算機然後學着去思考、去關聯、去辨論、去愛;終生工作;存儲所有生活的細節等等,根本就沒門!

自我感覺良好的形式主義者認爲能夠定義軟件開發流程,現在看來犯一個大錯誤。他們即不瞭解它的開始,也不瞭解它的後果。一些學術機構曾經臨時試試最終放棄了;商團體從來不攻擊代碼;軟件巨人們投入巨大的精力去編制代碼,裝做做一些神聖的事爲人類服務。其實這一切都是人類在鏡中看自己,計算機正嘲笑我們呢!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章