【生魚片文化 + 麻婆豆腐文化】中國外包開發(fā)成功與失敗的“實(shí)態(tài)”ZT 中國外包開發(fā)成功與失敗的“實(shí)態(tài)” 2010-06-09 00:44:25 康熙的博客 中國外包開發(fā)成功與失敗的“實(shí)態(tài)” 引子 上一篇中提到一個(gè)觀點(diǎn),要讓中國外包獲得成功,必須要明確“外包要做什么”這一目的。這次要給大家介紹一些中國外包的失敗事例,以及通過研究這些事例獲得的教訓(xùn)。 n 為什么日本在中國總是失敗? 為什么很多日本企業(yè)在中國的外包開發(fā)一直失敗呢? 至今為止,日本企業(yè)在眾多的外包開發(fā)候選名單中選擇了中國。如今的IT行業(yè),無論 你個(gè)人喜歡與否,與中國和印度為代表的海外IT企業(yè)間的相互依存已經(jīng)是不可缺少的了。如今已經(jīng)是這樣一個(gè)時(shí)代,即便日本企業(yè)的負(fù)責(zé)人不直接飛去中國,中方的企業(yè)代表也能來到日本,用日語做一次精彩的 Presentation。 讓我們從這些事例開始研究失敗的原因吧。 充滿不信任感的代碼評審(Source code review) 某個(gè)中國外包開發(fā)項(xiàng)目的驗(yàn)收結(jié)果出來了。很遺憾,因?yàn)榘l(fā)現(xiàn)了幾個(gè)BUG,所以驗(yàn)收沒有一次通過。仔細(xì)分析一下原因,發(fā)現(xiàn)了有若干處的代碼,并沒有按照 “編程規(guī)則”來編寫。中國企業(yè)那邊早就應(yīng)該國做過好幾次代碼評審了…… 日方企業(yè)的開發(fā)負(fù)責(zé)人(統(tǒng)籌人)必須要追究BUG的成因,然后尋找避免重復(fù)發(fā)生問題的方法。于是,日方的負(fù)責(zé)人與中國企業(yè)的負(fù)責(zé)人之間,有了如下一段對話。 (譯者注:對話日語內(nèi)容有不少實(shí)用的地方,所以采用中日文對照的方式寫下去) 日本 : 「中國側(cè)のソースコードレビューはどうなっているのですか?先日報(bào)告されたソースコードレビューの報(bào)告書を読みましたが、何をどのようにレビューしたのか、よく理解できませんでした」 (中國方面的代碼評審到底怎么做的?之前我看了你們提交的代碼評審報(bào)告書,我看不懂你們是“針對什么問題”從而“如何做的評審”。) 中國 : 「ソースコードレビューで重點(diǎn)を置くのは、コーディング規(guī)約の確認(rèn)です。ソースコードレビューは、別部署のリーダーである李さんに応援してもらい、既に3回も実施しました。李さんは、當(dāng)社でも特に技術(shù)力に優(yōu)れている人物です」 (代碼評審的重點(diǎn)是確認(rèn)是否遵照“編程規(guī)則”來寫代碼。評審的過程中,得到了另一個(gè)項(xiàng)目的PL小李的協(xié)助,總共實(shí)施了3次評審。小李是我們公司技術(shù)非常優(yōu)秀的人物。) 可是,對于中國方面的回答,日方負(fù)責(zé)人的腦海里出現(xiàn)了幾個(gè)疑問。 1、 明明使用了專用工具對代碼進(jìn)行測試,為什么還會發(fā)生違反編程規(guī)則的情況? 2、 在代碼評審會議上發(fā)言的,為什么只有小李一個(gè)人? 日方的負(fù)責(zé)人開始懷疑中方的代碼評審工作是否只是形式上的了。他感到,在盡心盡力逐行做代碼評審方面,中方的能力明顯不足。由于代碼不能一次通過驗(yàn)收,所以日方負(fù)責(zé)人要求中方再度實(shí)施代碼評審。可這時(shí),卻得到了中方出人意料的回答。 日本:「コーディング規(guī)約を準(zhǔn)拠しているかを再度見直すとともに、機(jī)上でのデバッグをもう1度実施してください」 (請你們再仔細(xì)檢查一下是否按照編碼規(guī)則來書寫代碼,請?jiān)谧雷由现匦伦鲆淮螜z查。) *譯者注:在桌子上做檢查的意思為“將代碼打印出來逐行” 中國 :「ご要望は分か りました。しかし、機(jī)上でのデバッグですが、その作業(yè)工數(shù)は非常に多いと思います。通常、當(dāng)社では実施しません。紙の上でソースコードを追いながら要求仕 様を確認(rèn)する方法などは、コーディングやり直しと実質(zhì)的に変わりません。要求仕様の確認(rèn)は、PC畫面上からのテストで検証するものです。本當(dāng)に必要でしょ うか?」 (您的希望我們十分理解。但是,打印出的東西作Debug本身就十分耗費(fèi)工數(shù),通常我們公司不會這樣做。如果一邊在紙面上逐行確認(rèn)代碼,一邊確認(rèn)代碼是否符合式樣要求,這樣的做法與重寫代碼沒有實(shí)質(zhì)上的區(qū)別。關(guān)于式樣要求的確認(rèn),應(yīng)該通過畫面上的測試來證實(shí)的。所以,您提案的方法真的有這個(gè)必要嗎?) 隨后,中方的解釋還在繼續(xù)。 中國:「検収で見つかっ たバグはもうすぐ修正されるので、プログラムは安定稼動します。したがって、わざわざ追加費(fèi)用をかけてもう1度ソースコードレビューを?qū)g施しても、その効 果には疑問があります。もし、機(jī)上のレビューだけですべてのバグは防止できるとなると、バグ摘出目標(biāo)を上げる品質(zhì)指標(biāo)値の意味がないですね」 (因?yàn)轵?yàn)收過程中發(fā)現(xiàn)的問題我們會馬上修正,所以能保證程序的穩(wěn)定運(yùn)轉(zhuǎn)。因此,加入繼續(xù)投入經(jīng)費(fèi)重做一次代碼評審的話,我們十分懷疑是否能得到預(yù)期的效果。如果把代碼打印出來看一遍就能防止BUG的話,那些寫著BUG統(tǒng)計(jì)值之類的“品質(zhì)指標(biāo)值”不就沒有意義了嗎?) 雖然他們的解釋也情有可原,但日方的負(fù)責(zé)人始終無法接受這樣的觀點(diǎn)。日方正準(zhǔn)備反駁之時(shí),中方開發(fā)商的負(fù)責(zé)人又繼續(xù)“闡述”他的觀點(diǎn)。 中國:「當(dāng)社の方針では、最も重要なのは納期を守ること、そして品質(zhì)を確保することです。品質(zhì)保証はプログラムの動作確認(rèn)テストが効果的です。畫面上から動作確認(rèn)するテストが最も優(yōu)れていると思います。 テスト項(xiàng)目を増やし、何度も繰り返してテストするとバグ摘出率は高くなります。ソースコードの仕様チェックの概念はいいと思いますが、効率は良くないのではないでしょうか。例えば、あるプログラムを1時(shí)間かけてテストすると、効率よくバグが発見できるでしょう。 ところが、機(jī)上でのデバッグとなると、レビュー者と擔(dān)當(dāng)プログラマが2人で一緒にソースコードレビューしなければなりません。2人で半日かけてレビューしても、バグの発見は難しいのではないでしょうか。 また今回のプログラムには、複雑な計(jì)算アルゴリズムなどはありませんから、その観點(diǎn)での機(jī)上でのデバッグは必要ないと思います。 従って、當(dāng)社としては動作確認(rèn)テストを優(yōu)先し、もし時(shí)間に余裕があれば、後からソースコードの仕様チェックを行う。これでよろしいでしょうか?」 (我們公司的方針是,通過多次重復(fù)的測試來提高BUG統(tǒng)計(jì)值。通過審核代碼來檢查是否滿足式樣的觀點(diǎn)是好的,但效率不就差了嗎?比如,某個(gè)程序用1小時(shí)來做測試,能夠高效率地發(fā)現(xiàn)問題。 可是,如果打印出來做一次檢查的話,至少需要1名負(fù)責(zé)人與2名PG一起參與。而且,幾個(gè)人做了半天也恐怕很難找到什么BUG。 尤其是這次的程序,沒有什么特別復(fù)雜的算法,從這個(gè)觀點(diǎn)上我們認(rèn)為完全沒有打印出來作評審的必要。 因此,我們公司將優(yōu)先采用“動作確認(rèn)測試”,有余力的情況下做代碼的評審。這樣是否可以?) 以上就是中國外包的一個(gè)實(shí)例。 n 中國外包開發(fā)的教訓(xùn) 教訓(xùn):囫圇吞棗般地看報(bào)告的項(xiàng)目負(fù)責(zé)人 有一種說法,說在與中國打交道的日本人不能成功的原因之一就是“過度信賴對方”。在中國的外包開發(fā)中,囫圇吞棗般地接受對方的報(bào)告,聽到對方說「すべて確認(rèn)しました。もう大丈夫です!(都確認(rèn)過了,已經(jīng)沒問題了)的時(shí)候,就屬于這種情況。 外包開發(fā)成功的企業(yè)中,項(xiàng)目統(tǒng)籌人必須存在能敏銳地洞察到對方國家的文化與交流方式的傾向。具有敏銳的洞察力的項(xiàng)目統(tǒng)籌人,需要從失敗的事例中找到教訓(xùn),是能將日本式的項(xiàng)目管理手法與外包開發(fā)委托方的企業(yè)文化巧妙相融的人物。 n 教訓(xùn):經(jīng)驗(yàn)不足加上文化背景相異,沒有勝算 中國的軟件公司里,項(xiàng)目負(fù)責(zé)人往往是20歲后半或30歲左右的青年SE。他們中的大部分 技術(shù)優(yōu)秀,但在在溝通能力方面還略顯不足。有時(shí)在系統(tǒng)交付后出現(xiàn)重大BUG等緊急情況時(shí),即便日方嚴(yán)重抗議,他們也不會主動將問題的嚴(yán)重性匯報(bào)給他們的上級。 中方軟件企業(yè)內(nèi)的信息不通暢,主要是由信息管理制度的不健全造成的,另一個(gè)重要的理由就是“技術(shù)者的責(zé)任感”(譯者注:原文中為“技術(shù)者的氣質(zhì)”)這一問題。但這絕不是說,“中方品質(zhì)意識地下”或者“中方不夠聰明”,這完全是兩個(gè)層次的問題。單純地來看,日本式的開發(fā)手法中有極為綿密的“報(bào)告”“聯(lián)絡(luò)” “商量”的過程,而中國開發(fā)商這方面卻十分欠缺。 讓我們回過頭去看一下先前提到的那個(gè)“代碼評審”的事例,中方對于“評審” (Review)的認(rèn)識與日本軟工教科書中的認(rèn)識之間,究竟存在怎樣的差異。 日本 中國 代碼評審的目的 與式樣要求的整合性等方方面面的問題,嚴(yán)密地檢查代碼的細(xì)節(jié)部分 指導(dǎo)與確認(rèn)“編程規(guī)則”與編程技巧等 評審手法 由下至上(Bottom-Up方式)的改善過程 從下至下(Top-Down)的指示 評審實(shí)施者 相關(guān)所有人員 理解程度較高的某一人 評審結(jié)果的信息交換方法 所有成員都聚在一起討論問題,所以當(dāng)場就能共享信息 技術(shù)較高者將他自己的審核結(jié)果轉(zhuǎn)達(dá)給相關(guān)的擔(dān)當(dāng)者。相關(guān)信息沒有實(shí)現(xiàn)項(xiàng)目組內(nèi)的共享。 鑒于以上這些教訓(xùn),我整理了一下這些失敗事例的相關(guān)對策。 1、 針對日本式的開發(fā)過程進(jìn)行強(qiáng)化指導(dǎo)說明 2、 不忽視結(jié)果報(bào)告的細(xì)節(jié),對開發(fā)中的各個(gè)過程實(shí)施狀況做徹底檢查 n 其他的一些事例 中國外包開發(fā)失敗例 1、考慮到中國開發(fā)商希望從上流設(shè)計(jì)開始承接項(xiàng)目的愿望,所以日方企業(yè)從基本設(shè)計(jì)開始向中國發(fā)包。但實(shí)際上從開始到最后始終需要日本人SE常駐中國,所以幾乎沒有實(shí)現(xiàn)成本削減的目標(biāo) (譯者注:由于日本公司制度的原因,日方員工赴中國出差的情況下,從食宿到津貼各方面的成本非常高) 2、締結(jié)合約的時(shí)候,日方企業(yè)向中方提供了開發(fā)標(biāo)準(zhǔn)手冊。但是,后來才發(fā)現(xiàn)這份手冊是10多年前制定的,當(dāng)時(shí)的老系統(tǒng)環(huán)境的開發(fā)標(biāo)準(zhǔn)在開放源代碼的開發(fā)中完全沒有參考價(jià)值。 3、試驗(yàn)性的小規(guī)模發(fā)包獲得了成功,所以緊接著就將一個(gè)大規(guī)模項(xiàng)目發(fā)包去中國。可是,之前的一個(gè)中方項(xiàng)目負(fù)責(zé)人突然辭職,一切又要從頭開始了…… 4、在與中方開發(fā)商簽約時(shí),要求中方出示過去開發(fā)項(xiàng)目的文檔。結(jié)果他們將記載著客戶名稱的設(shè)計(jì)文檔直接復(fù)印給我們……似乎他們完全沒有保密意識。 (譯者注: 對日項(xiàng)目中常常會被要求簽訂“機(jī)密信息保持協(xié)議”,日本項(xiàng)目大多為企業(yè)訂制項(xiàng)目,加上日本企業(yè)對自身信譽(yù)的重視,所以這是一個(gè)他們是否看重保守機(jī)密這個(gè)問題) 5、大連的某個(gè)公司,傳說有大量精通日語的職員。但后來發(fā)現(xiàn),事實(shí)上都是同一個(gè)人以不同人的名義給各個(gè)客戶公司回復(fù)MAIL。 6、從中方的企業(yè)招聘了幾個(gè)研修生來日本,工作的時(shí)候遇到項(xiàng)目里的幾個(gè)中國人留學(xué)生,在得知留學(xué)生們的工資后,他們到處訴說自己對收入差距的不滿。最后失去積極性的他們攪亂了整個(gè)項(xiàng)目的協(xié)調(diào),在項(xiàng)目未完的時(shí)候便強(qiáng)制總他們回國。事后,還聽說他們回國后就跳槽了。 7、因?yàn)榘l(fā)生了式樣變更,所以使用專用的“聯(lián)絡(luò)票”進(jìn)行詳細(xì)說明,對方回答“了解しました”(明白了)之后便放心了。可是,過了很久之后發(fā)現(xiàn)程序當(dāng)時(shí)并沒有被修改。日方對發(fā)生這樣的BUG表示抗議(譯者注:作為日本企業(yè)的習(xí)慣,如果沒有及時(shí)對應(yīng)式樣變更的內(nèi)容就會被認(rèn)為是BUG),可中方企業(yè)也針鋒相對地回答道“當(dāng)時(shí)は連絡(luò)票で説明を受けたが、正式に仕様書が修正されていない。だから仕様変更の依頼は受け付けていない”(當(dāng)時(shí)我們收到了聯(lián)絡(luò)票,但正式的式樣書并沒有被修正。所以我們沒有接受這個(gè)式樣變更的要求。) 8、日方企業(yè)里出于培養(yǎng)年輕社員的目的,名義上說給年輕社員磨練“國際化感覺”的機(jī)會,但實(shí)際別說是外語能力,甚至連基本的項(xiàng)目管理知識都不具備的年輕人擔(dān)任外包項(xiàng)目的聯(lián)絡(luò)工作。結(jié)果,中方企業(yè)不把這個(gè)年輕社員當(dāng)回事,項(xiàng)目最終破裂失敗。 n 中國外包的成功事例 當(dāng)然,還有相當(dāng)多的中國外包成功經(jīng)驗(yàn)。比如說: 1、 從業(yè)務(wù)應(yīng)用程序到嵌入式開發(fā),在多個(gè)開發(fā)領(lǐng)域削減了成本,日方項(xiàng)目組改善了效益 2、 有意識地認(rèn)識到對方是中國企業(yè),從而提高了自身的設(shè)計(jì)書質(zhì)量和設(shè)計(jì)水平 3、 通過外包項(xiàng)目對中方企業(yè)的指導(dǎo),提高了自己企業(yè)對外包項(xiàng)目的領(lǐng)導(dǎo)能力 4、 以外包為契機(jī)磨煉出了“國際感覺”,從而進(jìn)一步實(shí)現(xiàn)了海外市場的開拓與投資 n 生魚片文化和麻婆豆腐文化 (譯者注:與本BLOG最初的譯文以題目相同,但文章出處有所不同。在本文中原作者在對這個(gè)論點(diǎn)有了一些補(bǔ)充和內(nèi)容也略有調(diào)整) 前幾天,我在東京都內(nèi)的的某個(gè)中國人社長那里聽來一段話,是針對中日兩國文化的差異打了個(gè)比方,我來介紹給大家看一看。 日本式文化:生魚片文化 日本是生魚片文化。 所謂生魚片,不用多做說明大家就知道,就是將鮮魚切成生魚片。這種料理方法恐怕幾千年前就在日本存在了吧。到了21世紀(jì)的今天,從北海道到?jīng)_繩,無論你在日本的什么地方,生魚片基本的口味和形狀幾乎沒有任何區(qū)別。當(dāng)然,即便在日本以外的地區(qū),即便魚的種類不同,生魚片的口感依然讓你覺得“生魚片就是這個(gè)味道”。還有,一部分精致的生魚片,甚至上升到了藝術(shù)的高度。 中國文化:麻婆豆腐文化 另一方面,中國文化就是麻婆豆腐文化了。 同一道麻婆豆腐,如果你在四川,正宗的川菜之“辣”絕對會超乎你的想象;如果你在北京,味道卻會變得醇厚起來;如果你在東京,甚至還會聽到在日的中國人說它“不夠味”。也就是說,不同地域的麻婆豆腐,會因?yàn)楫?dāng)?shù)厝说目谖抖{(diào)整“辣”的程度。 更有趣的是,有一種著名的說法認(rèn)為“麻婆豆腐是種偶然的產(chǎn)物”(關(guān)于麻婆豆腐的起源有很多種說法)。我去四川的時(shí)候還曾經(jīng)聽人說過,“豆腐的制作方法也是一個(gè)偶然帶來的”。看來,麻婆豆腐真是一道比較“隨意”的菜肴(譯者注:原文中為“いいかげん”表示“適度”)。 這個(gè)比喻告訴我們了一個(gè)中國 外包開發(fā)的關(guān)鍵問題。日本人重視“規(guī)律”“過程”“美感”;中國人重視最后的結(jié)果,擅長隨機(jī)應(yīng)變。在麻婆豆腐文化下的中國,雖然外包項(xiàng)目中呈現(xiàn)出種種品質(zhì) 管理的問題,但他們卻擁有日本不具備的發(fā)達(dá)的火箭發(fā)射技術(shù)。如果理解了“目標(biāo)”,并將切實(shí)的目標(biāo)“可視化”之后,在軟件工程的領(lǐng)域里也能正確完成高精度的 工作。 或許我的部分讀者中有過本文 前半部分提到的失敗經(jīng)驗(yàn)。但即使你們強(qiáng)調(diào)你們有過切身的失敗經(jīng)歷,我也能認(rèn)同你們的部分觀點(diǎn),比如“中國開發(fā)上品質(zhì)觀念落后”“中國是個(gè)軟件工業(yè)的落后國 家”等等。因?yàn)椋銈兊挠^點(diǎn)無非也就是我們共同的“生魚片文化”中強(qiáng)調(diào)的“一切均一”的表現(xiàn)。 我認(rèn)為,最重要的還是要討論 日本和中國不同的“文化土壤”這個(gè)問題。要準(zhǔn)備好誰都看得明白的,并具有“客觀性”的數(shù)據(jù),在雙方都能接受之前要充分要換意見。軟件領(lǐng)域中,論項(xiàng)目管理的 經(jīng)驗(yàn)的話,日本還是略微領(lǐng)先的,所以就毫無顧慮地提出你們的要求吧。左右外包開發(fā)成功與否的關(guān)鍵,并不僅僅是看最終結(jié)果,最重要的是在開發(fā)過程中的時(shí)時(shí)考 察各個(gè)開發(fā)環(huán)節(jié)是否按照要求正確實(shí)施。 如果不松懈相互間的過程確認(rèn),我相信過去很多的失敗事例能防范于未然。 |