軟體工程的「政治」與「經濟」

2021-06-01 21:54:11 字數 1972 閱讀 1816

吳旻泰巖網路工作室

有程式設計師來面試。

但他的回答還是把我嚇住了。他說,他們會在一台伺服器上,啟動40個程序來處理併發問題,其中乙個是主程序。

我怕我聽錯了,連忙再問:是不是像啟動40個exe程式那樣?

這回我終於聽懂了。他說,對,40個守護程序。

我把他的話理解性的敘述一下,以便於描述。

這個專案的原始框架是乙個程式設計師從另乙個公司帶過來的,然後就延用至今。大家也逐漸感覺到效能上的問題,所以開發人員也增加到了10多個。專案的管理者是專案經理,而他則是後台模組的負責人,手下大約還有3~4個人。

我問他,如果給定可以有足夠的資源,重新設計一下這個交易系統,可以怎麼做。很不幸,他差不多是根本沒有想過,或者根本沒想出一點點頭緒來。

緣於我們的文化傳統,我相信,大多數的中國人對「政治」的敏感度遠超過對「經濟」的敏感度。雖然我們可能多數人都學過一些《政治經濟學》,但我還更願意相信那裡面多數的內容是「政治學」,而不是「經濟學」。

多年開發經驗告訴我,如何既「政治」又「經濟」,是乙個軟體專案能否順利的關鍵。過分「突出政治」,幾乎就意味著陷入了「經濟危機」;當然,我也不太相信沒有「政治」的「經濟」,因為有「經濟」就一定會衍生出「政治」。

提供相同服務的a、b、c三地機房,a用了22臺伺服器,b用了15臺伺服器,c用了7臺伺服器。除了保障級別稍有差別以後,我看不出為什麼abc之間要有這麼大的差別。所以我猜測,最初這些伺服器的部署僅僅是為了解決「政治」問題,比如能不能向使用者提供穩定的服務等。

隨後這些部署可能就退化成了「形象工程」,「政治」遠大於「經濟」。沒有明確的理由說明那一種部署是比較來說最「經濟」的,也沒有明確的資料證明為什麼不能是別的方案。

我們的乙個合作夥伴喜歡說,最好和從前的功能保持一致,或者,最好不要動。

我理解他的立場為,保持一致或者不動,意味著不會犯新的錯誤,如果原來有不足,那都是原來的問題,和現在沒關係。所以結論必然是,我們是非常正確的。

我不太認同他這種以損失「經濟」為代價,來換取「政治」上正確的做法。軟體行業不是個養老的行業,以不變應萬變,不是這個行業的指導方針。但我們也不是冒失鬼,我們一定會論證好了再實施。

業務水平一般,政治水平一定過硬。這是前輩們多少年的經驗總結,放之四海去觀察,皆很靠譜。

2023年的時候,表哥的兩個同事到北京來玩,住在我的房間。我驚奇地發現,其中乙個,只要是他用過的東西,一定會比原來變得更整潔;而另乙個則恰恰相反,什麼東西只要他用過了,一定會變得更糟更亂。隨便聊聊天,前者更傾向於和我說怎麼去做一件事情,如何做好事情,而後者想的則傾向於怎麼樣更省事,怎麼樣少做事情,但話裡話外,都是他有很多理由,儘管在我看來明顯是藉口。

軟體開發講究「持續改進」,不過相當時候,我們在做的還是「持續不改進」或者「持續破壞」。我懷疑這還是與企業文化或者企業政治有關係,比如,有些企業明顯就是獎勵不出錯,而且不管什麼原因,只要出錯,就一定受罰。照這個規則,當然是什麼都不做最好了,而且還能因為零錯誤而受到表揚。

這對軟體開發是個嚴重的考驗。多年的軟體開發經驗告訴我,面對「政治藉口」,必須有足夠好的「政治理由」,才能達到持續改進這一目的。在企業當中,最好的「政治理由」一般是兩個:一是提高效益;二是減少成本。當然最好的「政治藉口」一般也是兩個:一是這樣最安全;二是這樣最快捷、最省事,對眼下最有利。

軟體專案管理一直在不斷探索。為了「經濟」,我們必須「政治」,所以有人總結出來了xp,敏捷,scrum。但我覺得,這些方式都試圖盡可能直接達到「哲學」的高度,而沒有充分討論「政治」的深層次原因。當然,「政治」裡面有相當的敏感性,導致我們不能充分並且公開地討論,所以一切常用的手段都是盡可能的繞開,或者暗示。

用「經濟分析」的方式支援「政治理由」,輔之以「哲學高度」的理想,去圍剿「政治藉口」,雖然速度有限,但假以時日,卻一定會有功而返。

軟體工程 軟體工程的概述

軟體工程是研究和應用如何以系統性的 規範化的 可定量的過程化方法去開發和維護軟體,以及如何把經過時間考 驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科,它涉及到程式語言 資料庫 軟體 開發工具 系統平台 標準 設計模式等方面。先從軟體工程的第一章開始說起 軟體工程的概述,這一章是...

軟體工程 軟體工程的理解

四 軟體危機 五 軟體工程要素及其作用 針對本學期第一次軟體工程課後的思考題,參考課本以及網路上的資料,作出如下自己的思考理解。在此之前,我所做過的工程僅僅侷限於一些課程的大作業上,並沒有更進一步到軟體上面,僅僅是針對某乙個或者某一類問題進行解決。我的看法 1 書上的定義 書上給出了許許多多的定義,...

軟體工程 軟體工程概述

一.軟體 定義 計算機系統中的程式及其文件 程式 計算任務的處理物件和處理規則的描述 文件 為了便於了解程式所需的闡明性資料 特點 軟體的種類 按功能劃分 系統軟體 支援軟體 應用軟體 二.軟體工程的起源和概念 早期電腦程式 現在人們認為 在資訊產業中,微電子是基礎,計算機和網路是載體,軟體是核心 ...