對軟體業的一些想法
在軟體業呆了三年(廣州),感覺時間挺快的,所以突然有些感觸了。我想對於軟體公司和從業人員分別談論一下,閱歷有限,觀點難免有些片面性。
我一直從事於企業應用這方面的開發,下面的討論也以這方面的公司和人員為主體。
軟體公司:
1、 國內的軟體公司普遍偏小,廣州更典型。碰到公司大多是10人-50人這樣的公司。通常就是幾個有些資歷的技術人員自已出錢或者拉點投資創立公司,靠接幾個單來維持。有時乙個大點的單可以活一年。
2、 軟體工程實施的比較差。有些公司基本上是處於作坊狀態,由其是那些工廠的軟體開發。所謂專業的軟體公司大多也是實施了軟體工程中很小的一部分。不管是相對於rup還是xp,都差遠了。
沒有需求管理。通常只是對需求作一下粗略的調查,需求調查後並不進行評審,然後就開始後面的工作。由於缺少了需求審查,可能導致對使用者的需求的理解不正確,而直接影響了後面的設計,可能在實施時才發現問題,這樣的代價就是巨大的。開發人員可能抱怨使用者需求一直在變,最後由於需求的不可控,改動太多,系統開發過程延期或者崩潰。
簡單的專案管理。專案管理通常變成了專案經理乙個人的事情,他乙個人安排進度,乙個人掌握進度,拖進度便加班甚至加人。呵呵,讓我想起《人月神話》這本書,據說是每個從業人員必讀的書之一,我到現在只是看過幾十頁,啥時該補讀了。十個專案有九個專案不能按時完成,完成了也不能保證質量,由於質量不能保證就加大維護期的成本。很多系統使用者用了一段時間後又放棄了,因為不好用或者不夠合適。
對設計的輕視。大多數公司都是把大部分時間花在編碼上,而那些軟體工程實施得很好的公司編碼只三分之一,設計佔到了三分之一左右了。有些公司幾乎是做完資料庫設計後就開始編碼。大部分專業的軟體公司會有簡單的中間層,以此可以粗略的定下軟體的架構,但這只是屬於系統設計的一部分而已。而對於概要設計,詳細的設計大家似乎都覺得挺煩,不如一邊編碼一邊設計來得痛快,然而這樣的開發過程通常需要更多返工時間。也許對於小系統影響不大,但對於大系統根本不可能。這也就意味著這個團隊只能做那些小系統,永遠處於乙個較低的開發水平中,哪天也許天上掉下乙個大單,也會啃不下的。
不重視文件。開發人員不喜歡寫文件幾乎是乙個共識。然而就此而放棄文件的編寫就有些短視了。文件的重要性是每個開發人員都清楚的,但大家似乎都存在一種僥倖的心理。當乙個系統的開發周期達一年之長,沒有文件的恐怖是可想而知的。就好像乙個城市有一百萬人口,卻沒有乙份花名冊,雖然每個人都知道自已的名字。文件貫穿於整個軟體的生命週期,從專案可行性分析到後面的專案實施報告,每個過程都有文件的。文件是企業的一筆財富。
**或元件的重用率低。由於沒有合適的**管理方法,通常對於同樣乙個功能,最後每個人寫了乙個版本,而且當發現了這個問題後,也是誰也不願意刪除誰的,就讓他一直存在。看似乙個團隊,最後好像還是孤立的個體。成熟一些的公司會有中間層,有函式庫,但通常都是比較初級的。這個問題其實與公司開發團隊的水平有關的。如果要做到盡可能好的重用,需要有人有盡可能強的抽象能力。
沒有或者少量測試以至質量低下。質量是任何產品的生命,軟體產品也是一樣。但軟體開發人員從不敢保證自已的系統在客戶那裡演示時不跳出乙個異常。這裡面當然軟體本身存在的複雜度。但測試方面的工作嚴重不足肯定是首要原因。有些軟體在開發過程通常都是程式設計師作簡單的,低強度的測試。可能在開發進度上並沒有出現延期,但在實施時卻發現了一大堆問題,這時不但客戶感到非常失望和惱火,程式設計師也非常沮喪,因為誰都討厭維護那些糟糕的**了。這樣最終仍然是拖了進度,也許代價更高。所以開始卡好質量關,作好測試,也許是對於專案進度控制的最好解決方案。
忽略終端使用者對開發過程的參與。現在的軟體開發通常就是幾個程式設計師憑著簡單的需求說明或者自已的經驗來作為開發過程中需求的依據。最終開發出來的東西就是程式設計師覺得挺不錯的,而客戶卻對軟體非常抵制,也許是沒有實現他們想要的需求,也許是軟體的操作方式與他們現在的操作方式大相庭徑等等。這時要麼開發商進行更改,要麼面臨軟體在使用一段時間後被擱置或者執行得很醜陋。
3、 大部分公司都缺乏核心競爭力。
我認為軟體公司的核心競爭力應該包括技術和業務兩部分。
技術部分
大部分軟體公司都是靠幾個單來養活的。拉到單了,招人;沒單了,裁員。這樣的公司通常用得是當前最流行的開發工具(當然是盜版的)。公司沒有什麼技術沉澱,有問題,上google、論壇查。都屬於一種拿來主義,剪刀。網上對於每個問題可能有多種解決方案,最終公司裡面對於同樣乙個問題存在幾種解決方案,沒有人統一。這樣其實也沒什麼不好的,很高效的。有點讀書時的開卷考試,很多題目都是書上現成的,拿來就行了,但有些題目書上有提到,但沒有現成的解答,還有些在書根本找不到。所有拿來主義只適合小公司小打小鬧,根本成不了氣候。成熟的公司要想在業界擁有一定的知名度和競爭力,光是靠別人的東西是不行的。必須公司要有一定技術含量的拿得出手的東西才行。就比如大學的評比裡面就包括**發表的數量和質量一樣。沒有任何有技術含量的公司不可能獲得真正成功的,這樣的公司只能作小系統,碰到大系統開發起來就一團糟。國外某些很小的公司都擁有好幾項專利技術,所以人家活得很好,大公司最後爭著收購。國內的軟體公司大都缺少創新的能力,所以中國的軟體一直做的只是軟體鏈的下游,利潤低。
業務部分
其實對於企業應用而言,給客戶提供最好的解決方案才是最重要的。客戶要上系統,那肯定是不滿足他們當時的現狀,所以才求變。他們希望開發商能給他們解決問題。然而國內大多公司都沒有業務專家,這當然也與國內軟體公司的規模有關的,通常只是靠幾個有經驗的開發人員來依靠他們的經驗來為客戶提供解決方案。然而開發人員又精通技術又精通業務幾乎是很難的。這樣的人員配置開發出來的系統很難真正為客戶解決問題的。很多系統的功能只是將客戶當前的手工操作來讓電腦來取代一些。其實對於企業應用我們應該要讓數字來說話,比如應用這個系統後生產效率高了多少,成本降低了多少,員工應用這個系統後對工作的滿意度增加了多少等等。像sap這樣的公司不知道有多少人整天在研究企業應用,有些根本是純理論的。有時發表的文章甚至是很超前的,當前根本不可能實現的。然而正是這樣的公司,才能引領企業應用的潮流,才能合理對客戶進行流程再造,才能真正滿足客戶的應用。
4、 公司管理制度不夠人性化。
大多數公司是小公司,小公司當前所做的事情都是屬於資本的原始積累。看問題通常都只從公司的角度出發。員工沒有歸屬感。除了工作,公司基本上不過問員工的其他情況,不會考慮員工的發展方向,也不給內部員工提供足夠的發展機會和培訓機會。
而員工通常都滿腹怨言,工作不積極,變成了純粹為工作而工作,這樣的團隊很明顯都是沒有凝聚力的團隊。公司不過問員工,沒有正視員工不滿情緒的滋長,遲早有一天會出問題。大多數小公司不會為員工制定職業規劃,也許是公司根本沒有能力幫助員工制訂令人信服的職業規劃,也許是老闆根本沒有想過長時間留住員工或者公司沒有足夠的能力能留住員工,這樣帶來的問題就是人員的流失率高,輕則影響專案的進度,重則嚴重阻礙公司的發展。有些公司開發人員突然間大規模辭職,讓公司一下子就處於危機中。小公司人少,組織結構也很簡單,所以發展的空間小,晉公升機會也少。然而大多數公司在這種情況下仍然是不給員工提供足夠的發展機會和培訓機會。任何人只有看到前途和奔頭才會有高漲的工作熱情,爬山雖然累,但通常都比下山時開心,就是因為還可以繼續前進。培訓是發展的前提,培訓對於公司是有投入的,然而產出通常更大。培訓是除了加薪,公升職以外第三個能讓員工能對工作公司產生認同感的因素了。培訓讓員工和企業都有收穫。企業為員工作團隊合作方面的培訓、企業文化方面的培訓,會讓員工更清楚自已的角色和作用,增加團隊的凝聚力;作技術方面的培訓,對員工對企業而言作用更是顯而易見的;對時間管理的培訓,也許影響員工一生;還有其他各方面的培訓,都是有用的,因為做it的人通常不排斥學習。據調查,乙個優秀的程式設計師和乙個很普通的程式設計師的工作效率比在5:1以上。這個數字可能有片面性,但的確從一定程度上反映了優秀員工對於企業的作用,然而乙個優秀員工的成本肯定沒有五個普通員工的成本那麼多。而大多數員工都是普通員工,但通過適當的培訓和教育後都可能成為優秀的員工。外企在培訓教育方面做得不錯,所以外企吸引了更多的優秀的人才。
軟體業的從業人員
在這個行業最多就是程式設計師,講得難聽就叫**工,講得好聽就叫軟體工程師。呵呵。同樣是程式設計師,差別很大。優秀的,普通的;做底層的,做應用的;做後台的,做介面的;
剛剛入行時就聽到這麼一句話:真正的程式設計師用彙編,優秀的程式設計師用c/c++,普通的程式設計師用快速開發工具,做asp的根本不叫程式設計師。
程式設計師據說找女朋友都挺難。可能覺得電腦比女朋友好哄多了,也可能相比寫程式的難度追女孩子更難些,還有可能是工作太忙了沒時間找,反正經常看到論壇裡有人感嘆。這個群體的人通常比較熱心,比較單純。整天板著臉的人讓人敬而遠之,人家也就不喜歡同你討論各種技術問題了。
程式設計師的交流一直被指責,不知是有些問題的確不好敘述還是真的是解說能力的問題,當你到一家新公司的時候你發覺是和別人最難溝通的時候。程式設計師的確需要提高交流和溝通能力,不然有些成果和人說不清只能獨自偷著樂。
大家都說程式設計師高薪,呵呵,可能是幾年前的事實,現在的傳說吧。做這一行的有些公司挺忙,有些公司挺閒。但大家一樣要不停的捧著書學習新知識。
程式設計師比較浮躁,的確。因為整個社會比較浮躁,這是個物欲橫流的社會,大家都需要為生計而奔波,每個人不斷會感受到來自四面八方的壓力。小公司沒有錢,沒有發展前途,沒有歸屬感,所以小公司的程式設計師跳槽特別厲害。
程式設計師對未來都比較迷茫,因為整個行業都是三十歲一道檻。所以很多人做了幾年就打算跳槽,在最為寶貴的**年齡階段卻去改行學其他東西了。也許軟體公司應該挖掘出老程式設計師更多的價值,像國外一樣。
畸形的軟體業
畸形 意指事物的發育 發展不正常。所謂 畸形軟體業 是指發育 或發展 偏離常態的軟體業。我國軟體業就是畸形的軟體業。為什麼?畸形 的程度存在不同等級 畸形 的狀態存在不同側面。缺少整個軟體體系的 作業系統 只能算是一種 殘缺產業 不算 畸形產業 因為,除了美國等少數國家,世界上其他許多國家都沒有自己...
對做夢的一些想法
都說日有所思夜有所夢,可我感覺也不盡然.好多夢的內容毫無邏輯,但有時我們知道我們是在做夢,感覺是好夢時,你會感覺這就是你想要的,所以不想醒來,這時你的夢基本上就會在你的意志下進行,裡面的一切都會按照你的意志發展,這個時候沒有外力叫醒你,你可能就會迷失在夢裡,就是植物人一樣 植物人為什麼要靠熟悉的人不...
軟體安裝測試的一些想法
安裝測試,特別是針對各個不同作業系統的安裝測試,屬於軟體系統測試的一部分。對於乙個具有複雜的軟體來說 這裡的複雜指的是軟體包括多個元件,比如資料儲存系統 web伺服器等等 在完全自動安裝的方式下,安裝測試會出現很多問題,比如 作業系統的差異,windows上可用,非windows平台出錯,開發人員一...