故事一:
程式員楊書鋒終於辭職了,為這事,他足足考慮了差不多半年的時間。此前,小楊在一家日本軟體公司做開發,主要外包日本本土的公司專屬應用程式軟體,行業產品上的嵌入式開發等(如汽車控制軟體)。
促使小楊辭職的原因並不單純是因為待遇問題,而是作為一個職業程式員,在規劃自己的職業生涯時,他深切地感受到了這種成長的煩惱。
“我做了一年半的c語言開發,此前還做過一些針對日本企業的資訊化軟體,老實說,我真的不知道自己每天在做什麼。我每天面對日文文檔開發,實現那些已經定義得非常詳細的函數,還有那些已經在文檔上畫的非常清楚的介面,它們甚至連控制項上的字型都規定好了,我還能做什麼呢?”
這可能還只是一個方面的原因。更多的心裡衝擊還來自於小楊的一幫做開發的朋友。
“和我一起開始做軟體的一些朋友,他們呆在一些小得多的公司做項目軟體,我們一起聚會時,他們都侃侃而談他們的軟體設計和架構,談平台,談一些他們正在使用的流行的技術名詞。我覺得我比他們落後了,儘管在收入上我比他們要高得多。”
“我不得不考慮今後的發展,希望瞭解得更多,我希望今後能夠向專案管理方面發展。”
故事二:
王先生在日本從事近3年的軟體開發,最近回國發展。在一次技術研討會上,我問他,在日本從事哪些方面的開發。
王先生答曰:“做遊戲。”
“現在市面上哪個遊戲是您做的呢?”
王先生回答說:“不知道。老實說,我在日本做軟體開發2年了,根本不知道自己在做什嗎?每天將課長發到我案頭上的功能實現了就算完成呢任務!”
上面的故事中實際上蘊涵了很多比較有意義的話題。一個是程式員的成長,另外一個就是日本軟體企業的編碼開發實現模式。
(中國程式員病態的成長道路!
1. 為什麼會有這樣的成長道路?
國外40歲以上的程式員比比皆是。
2. 日本軟體公司裡面,為什麼會出現程式員不知道自己正在做的是什麼東西的問題?
A 因為企業成本的原因,日本軟體企業分工很明確。有專門做設計的公司,公司裡面幾乎沒有一個寫代碼的程式員。
B 很多小的軟體公司依附大的公司生存。
C 日本軟體公司已經形成了一個很好的生物鏈,只要你在這個生物鏈上找到了自己的位置,就不用擔心生存問題。)
一 . 成長的煩惱
“不想當元帥計程車兵不是好士兵”,那麼可不可以這樣說,“不想當項目經曆(或管理員)的程式員不是好的程式員”呢?多少年來,我們的IT媒體一直在替程式員們宣傳和規劃他們的職業人生,實際上,這已經成為一條中國程式員的病態的成長道路。在歐美,年過40歲的程式員比比皆是,正如戴習為老師一樣,做了大半輩子的底層開發,從微軟退休時,已經年過45。而在中國,如果超過了30歲還在寫程式,就彷彿被認為是一種恥辱。
薛峰:日本軟體企業裡的員工的職業規劃和中國程式員的確大不一樣。這可能有幾方面的原因,日本軟體企業,不光是軟體企業,其它工業企業都一樣,他們的員工普遍的“忠誠度”和“職業榮譽感”要強。當然,這些企業有一些相應的制度來做保障(年工制度),比如,你在這個企業幹一輩子,退休的時候,會有一大筆豐厚的退休金。
馬越:另外,我覺得這個和日本的一些企業文化甚至民族文化也很有關係。
薛峰:對,這個問題往深裡面說就是這樣。比如,你在日本問一個小孩,你長大了想幹什嗎?他(她)可能會回答,我長大了想成為NEC或松下的一名員工。而中國小孩的答案可能就是“科學家或文學家”。
記者:對“成功的人生”的評判標準整個都不一樣。如果現在有兩個人,都是40歲,一個人是專案經理,而另外一個是進階程式員,在中國人眼裡,肯定認為前者就是成功的,是這樣嗎?
薛峰:在中國可以說是這樣的。
記者:我曾經看到過這樣一個故事,說是有兩個人同時從美國矽谷回國創業,一個是印度人,另外一個是中國人。十年以後,他們在上海相遇。這個印度人已經成為一個非常成功的軟體公司的老總,而這個中國人的公司卻默默無聞,岌岌可危。印度人奇怪了,他覺得這個中國人能力比他要強,在中國比他的機會要多。中國人回答,沒有別的原因,就是因為在中國,每個人都相當老闆,無論你給他多高的工資,他最終還是要離開。我覺得我們的確應該反思一下了。
薛峰:日本的企業應該說等級比較森嚴。技術人員和管理員也是渴望晉陞的,但我感覺他們特別沉得住氣。比如,我的一個上司,他在NEC呆了10年,現在才什任主任,也非常高興。
記者:另外,中國的一些企業是否也應該反思一下?比如,前不久剛剛發生的聯想裁員事件,網上甚至有被裁掉的員工發出“聯想不是我的家”的文章。我認為,從網友的回應當中,我們已經能夠很充分的看出中國某些企業急功近利,醜陋,虛偽的嘴臉。
二 魔方裡的世界
記者:就前面兩個背景故事中的材料,這種開發模式,您覺得正常嗎?
王永順:我覺得沒什麼不正常的。日本作為一個電子產品大國,很大一部分軟體都是針對這種產品軟體在開發,如下一代智能家電產品這些消費類電子產品等。這類的軟體比較注重前期的設計,比較注意文檔的清晰和詳細程度。當設計完成後,將設計文檔分發給許多程式員實現時,作為個體的程式員當然很難知道他們做的是什麼。
記者:您說的可能是這種產品軟體的開發,那麼對於項目軟體的開發,這樣也是正常的嗎?
王永順:也應該一樣。我們應分析一下造成這種開發模式的原因。日本是一個專業化分工很強的國家,不管是工業企業還是軟體企業都是如此。軟體過程中的很多環節,如需求定義和分析,軟體機能設計,軟體編碼實現,軟體測試等,一般來說都是在不同的企業至少是不同的部門完成的。當你這個公司或部門的工作完成後,就必須留下很清晰的文檔,這樣才能進入下一個公司或部門的工作。
記者:那麼我們可否這樣說,日本的軟體企業已經形成了一個很好的從上遊到下遊的生物鏈?
王永順:是這樣的。日本的許多小的軟體公司是依附於大公司生存的。他們做的工作十分單一,可能就是做編碼實現,它不會養即便一個系統分析員。還有的公司可能就是專門做軟體設計的,它裡面也可能不會有一個寫代碼的程式員。一個公司,只有在這樣的生物鏈中找到了自己的位置,就可以生存。
記者:您能夠分析一下,這種生物鏈是怎樣形成的嗎?
王永順:我個人認為是企業成本的原因;另外一個因素,因為每個公司都最終會發展成為只擅長做一件事情。比如,我公司裡面既養一大批程式員,又養一大批系統分析人員和架構師,企業成本無疑會增大,另外,也無法專心做好一件事情。這在激烈的企業競爭中是不利的。
記者:我第一次看到日本軟體過程中的“式樣表”(就是國內的軟體規格說明書)時,感到震驚。因為此前在做項目的過程當中,作為項目負責人的我也曾經做過系統分析和設計,撰寫過“需求規格說明書”。我覺得太詳細了,在UI設計部分,連表單上改擺放什麼“控制項”,以及控制項的長度,控制項上的文字,甚至文字的顏色都寫的很清楚。另外,對函數的說明也非常清楚,對函數名,傳入參數,輸出結果都說得非常詳細。
王亞清:可能項目軟體和產品軟體還很不一樣。。。。
記者:您覺得在這種情況下,作為個體的程式員還能發揮多大的創造性?是不是高度工業化,工程化的社會都會或多或少地忽視最底層操作人員個人的創造性,而僅僅把他們當機器(編碼機器)使用?
記者:我們注意到,國內的企業對歐美的一些軟體工程方法學是非常熱衷和喜歡追逐的,日本軟體企業對歐美的軟體工程標準和軟體方法學的態度?
。。。。。。