軟體工程師的年終總結 (轉)

gugu99發表於2008-01-09
軟體工程師的年終總結 (轉)[@more@]


  總想著每天、每個月、乃至每年都有點進步。2002年,對我來說,是起伏不定的一年,也是收穫頗豐的一年。當然,最大的收穫是有了一個可愛的女兒。:-)
  在這一年,我跳了兩次槽,一次是自願的,還有一次是被迫的。我目睹了一些公司從盛到衰的過程,也看到了一些腳踏實地的公司。

  離開X1公司,是因為我覺得X1公司不是在做,所謂的印度,我想,絕對不是這麼做的。理想不合,不想浪費時間,也只能揹負跳槽的惡名,掛冠而去。去X2公司,是因為看到他是美國獨資公司,做外包軟體,能夠接觸美國的客戶和技術,希望能夠有所收穫,何況,職位也不錯。的確很想好好做,也跳累了,只想穩定發展,畢竟,是做父親的人了。沒有想到的是,竟然讓我目睹了一場資產爭奪的好戲。公司易主,流言滿天,誹謗四起,官司大戰,這種平常只有在電視和電影裡看到的情節,我實實在在的親身經歷了,也算是人生的重要一課吧,至少,讓我看到了人性最陰暗和惡毒的一面。自然,是做不下去了,只能又走。

  也看到了一些踏踏實實做事情的公司。園區的瑞博軟體就是一個。很少看到如此踏實做事的公司。若干年後,只要他能夠存活,必定是一個成功的公司。雖然老闆對我也很有誠意,只是,對於教育軟體,我實在沒有太大的興趣,何況,如果想做教育,我何不選擇安博呢?畢竟,安博給於我很多。回頭想想,在其他公司,我都是在奉獻,只有在安博,是學習了很多。
  說起跳槽,其實,看看那些公司,有多少是在踏踏實實做事情的?老闆本不懂軟體,都是看著軟體行業能賺錢,想來撈一票,結果把中國的軟體行業做壞了,也害苦了中國的員。自己不好好做事,怎麼怪別人跳槽?同工作經歷的坎坷相比,,在個人能力方面,今年的進步是非常大的。今年上半年,我的進步集中在技術領域。我更加深入研究了設計模式、體系和平臺,還有UML建模,終於有所突破,設計了一套自己的基於.Net平臺的架構和開發工具,並且得到了應用的證實。在網上也陸續發表了一些文章,受到比較好的歡迎,還上了賽迪網的開發之星。

 下半年,在軟體工程方面收穫是很多的。
  看到網上對於印度模式從吹捧到批駁的吵鬧,也看到X1公司學習印度的失敗,加上自己從開始就對那些記者的懷疑,決定好好學習軟體工程。我一向認為,任何東西,不能道聽途說,只有自己好好深入研究,才能得其精髓。同時,軟體工程絕對不能只看印度的,畢竟,美國才是軟體業最發達的國度。
  列舉一些學習的參考資料:《RUP軟體工程過程》、《M解決方案》、《XP極限》、《CMM實踐應用——Infosys公司的軟體專案過程》、《人月神話》、《軟體需求》、《軟體工程語言實現》。每本書,我都仔細研讀了,頗有體會。
  我開始就想,印度軟體工程絕對不會象那些記者所說的那麼簡單,所謂的高中生程式設計說。所以,我必須實際看看印度的軟體工程。《CMM實踐應用——Infosys公司的軟體專案執行過程》,是印度最大的軟體公司Infosys公司的分管質量的副總裁寫的,介紹他們的CMM4的軟體工程,果然不同凡響。這是我瞭解印度軟體工程的主要視窗。

 首先,同原來的想法不同的,也可能同大多數人(尤其是受那些軟體記者影響很深的“專業”和非專業人士)想法不同的是,軟體工程實際上不僅僅只是管理,而是一門涉及很廣的交叉學科。在軟體工程中,大約一半的內容是專業性很強的,涉及到軟體分析、設計甚至編碼的技術。所謂的結構化、面向,都在軟體工程的範疇內,同樣是和組織的重要內容,也是軟體質量保證的重要內容。至於軟體開發的管理部分,只能算是軟體工程中軟體工程過程的部分,或者說部分。脫離管理來開發軟體是絕對不可行的,同樣,拋棄技術基礎,空談管理出效益,便如無源之水、無本之木。誠如《軟體工程Java語言實現》中所說:“軟體工程範圍極為廣泛。軟體工程的某些方面屬於數學或科學,其他方面可歸入經濟學、管理學或心理學中。”在這裡,我強調了軟體工程中的技術部分,並非輕視管理,只想在軟體工程的概念上做一些撥亂反正,也希望多一些人來關心軟體的核心技術,而不要空喊口號和概念。畢竟,中國的軟體太缺乏核心技術了。

 其次,對管理要求的嚴格不說(這個誰都知道),實際上,不管是美國的軟體工程,還是印度的軟體工程,都是比較靈活的。即便是印度這樣的所謂“軟體工廠”模式,對於軟體工程過程管理極為嚴格,也有一個部分是專門講述過程剪裁的。整個軟體工程過程是非常龐大和繁複的,然而,由於專案具體情況不同,如專案的規模,參與人員的數量、素質等的不同,對於軟體過程的每個部分,不是都必須的,可以根據具體情況來進行剪裁。這個部分對於我的啟發是很大的。以前做什麼ISO9000等,開始做了一個以為很好的規範,但是,到具體專案,總是對不起來,到處有問題,現在想想,便是少了這個變通的部分。不過,話說回來,這CMM也是老美想出來的,而不是印度。

  第三,對於開發人員的選用,我發現,美國人是非常注重選用優秀的開發人員的。Martin Fowler曾經開玩笑的說,如果給他一批水平不高的開發專案,他會考慮全部解僱,重新招聘。《人月神話》中也說,如果200人開發一個專案,其中25個人最能幹,那麼會考慮解僱其餘的175個人,讓專案經理來程式設計(當然,後面還有一些抉擇分析,這裡斷章取義了)。其結論的基礎是基於以下研究結果:優秀的開發人員和差的開發人員,其之差可以達到數量級。另外,從管理的角度來說,只有人多了,才會有管理問題,當團隊規模控制在一定的範圍內時,便不會有太大的管理問題。
對於軟體來說,很難實現同傳統產業一樣的工廠化生產,這是由軟體開發的本質決定的。軟體的複雜性是軟體的本質屬性,在這個屬性沒有改變之前,軟體便不會實現同傳統產業一樣的工廠化生產。至於印度的所謂“軟體工廠”,實際上,只是完成了軟體程式碼的編寫工作,並不是實現了整個軟體研發工作,而程式碼編寫工作,恰恰是軟體開發中最簡單的一環。至於印度是否真的有很多高中生程式設計師,印度人的書上沒有說,記者到說了不少,我也無從考證。所以,軟體的開發,還是需要選用優秀的人的。除非,公司只想幫別人編寫程式碼,而不希望有自己的產品和技術。

  第四,軟體開發中,最重要的還是團隊合作和交流。這個是我目前最深切的感受。具體的,大家都知道,也用不著多說。

  最後,對於軟體開發來說,公司老闆的想法是最重要的。如果老闆說“No”,那便是水平再高,管理再好,也終歸無用。
  年齡漸長,也做父親了,卻總是在漂泊,沒有一個可以穩定發展的地方。希望目前的公司能夠有這個機會。不想總是跳槽。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-996952/,如需轉載,請註明出處,否則將追究法律責任。