落在何方-軟件架構師之路

 

文 / 董軼

作者以某教育網系統建設項目爲背景,分享自己真實的實戰經驗與心得,對項目經理的成長有很好的指導意義。

唐僧師徒赴西天取經,不畏艱險,鍥而不捨,歷經八十一難最終修成正果。這是一段偉大的旅程,敢問路在何方——路在腳下!世上沒有不能到達的目標,最遠的路途就在腳下,這是西遊記讓我們深深感動的地方。西遊記絢麗多彩的魔幻世界其實是現實社會的投影,平凡的人們爲了生存和發展都會歷經磨難。作爲一名IT業的項目經理,我深刻地體會到:這是一個充滿挑戰和艱辛的職業,但也是一個自我發展和提升的途徑。一帆風順的經歷不會增長才幹,幫助個人成長的其實是困難和障礙以及克服它們的過程,只有經歷風雨,才能迎來彩虹。

本文以我負責的某大型教育培訓網站(簡稱教育網系統)建設項目爲背景,結合項目實戰經驗談一些體會。這個項目是我初任項目經理時經歷的,現在回顧起來,當時所遇到的問題以及解決過程還歷歷在目。

甲方不提供硬件測試環境,爭取提前試運行發現問題

該項目要建設一個在線學習和教育管理網站,提供在線學習和考覈的平臺,實現培訓工作的信息發佈和組織管理。平臺所使用的課件由其他系統製作,本系統需提供課件上傳管理功能。系統採用Oracle數據庫、WebLogic應用服務器,通過F5實現負載均衡,使用基於J2EE技術的B/S架構,要求能夠運行在Unix平臺上。

接手這個項目後,我首先對系統的運行環境做了初步瞭解。客戶方的機房有多臺IBM AIX小型機和PC機。WebLogic應用服務器將部署在AIX小型機上,在一臺AIX小型機上會同時部署多家公司的應用系統,每個應用系統在WebLogic中都通過建立獨立的域(Domain)來進行管理。

任何應用系統在上線前都應進行嚴格的測試,而且測試環境要與實際運行環境一致,因爲應用系統的功能、性能在不同操作系統環境下的表現是不一樣的,因此爲了保證系統的穩定運行,需要準備AIX小型機作爲測試環境。但是我們以前承接的項目使用的基本都是HP和SUN的服務器,沒有AIX服務器。

我意識到這是一個重要風險,必須妥善應對。客戶的機房有一些測試設備可供使用,我與銷售經理溝通,看有無可能得到客戶許可使用機房的測試設備。這個項目當時還處於售前階段,正在簽署合同。銷售經理反饋回來的結果是,客戶不負責提供測試環境,並且在合同中對此增加了明確的條款:甲方不負責提供任何測試設備和環境。我在客戶這邊碰了壁,只好另外想辦法,首先想到的是從公司獲得支持。

項目啓動後,我在項目計劃中上報了這個風險,希望公司幫助調配一臺測試用機,或者採購一臺AIX小型機,在各個項目之間共享,解決多個項目可能會遇到的同樣問題。項目管理部很快打來電話,詢問了詳細情況,表示公司調配有一定困難,其他項目並沒有閒置的小型機,目前也沒有采購機器的預算,希望項目組盡力設法解決,並強調一定要妥善處理,不能因此發生問題。

回想我當時的心情真不好受,感覺孤立無援,但是我從這個過程中也學到了重要的一課:項目經理的作用不只是發現問題、提出問題,更重要的是解決問題。系統測試的硬件環境不具備,客戶和公司都不能提供支持,這是一個必須解決的難題。

這個問題放在現在是很好解決的,可以花少量費用短期租賃,但當時IT租賃業還沒有發展起來,可以提供設備的大公司價格很高,而價格較低的小公司設備又不全。我詢問了兩個關係不錯的合作伙伴公司能否借用,對方當下沒有正好閒置的機器。看來這個風險不能避免,那就要從如何減小風險的影響程度上尋找對策。我一方面繼續尋找機器,一方面積極與客戶溝通,最終得到客戶的支持,允許我們提前到正式環境下部署,在系統大範圍試運行前先小範圍試運行一段時間,這樣就爲解決可能面臨的問題贏得了時間。

排查問題定位原因,但遭諮詢方質疑

在我的推進下,系統得以提前部署到正式環境中,但不久就發現了一個嚴重的問題:課件的視頻文件通常在幾百兆左右,在上傳到AIX平臺時,速度非常慢,只有40KB/s,以至於瀏覽器頁面失去響應,只有十幾兆的小課件可以上傳成功,稍微大一點的課件就傳不上去了。

我組織項目團隊深入分析了這個問題,通過比較測試環境與正式環境的不同之處,定位問題的原因可能來自“網絡環境”或者“操作系統”,此外應用程序上傳組件在正式環境下能否正常運行也有待驗證,根據初步分析,我們制定並實施了以下問題排查措施:

在客戶方環境下使用FTP工具上傳大視頻文件,並使用網絡監測工具觀察上傳過程是否正常,結果上傳速度很快,網絡監測也完全正常,基本排除了網絡因素;

在客戶方Windows環境下搭建WebLogic應用服務器進行測試,在上傳代碼中增加日誌輸出功能,打印分段傳輸文件過程中每段的用時和傳輸速度,結果上傳速度很快,可以確定上傳組件正常運行;

對操作系統的問題,爲進一步縮小問題範圍,我們在公司搭建了HP Unix測試環境,上傳速度仍然很快,這樣基本確定問題是由AIX操作系統帶來的。

我組織項目團隊成員繼續奮戰,查閱了AIX操作系統的大量資料,在團隊技術骨幹的分析和論證下,最後定位問題原因在於一個AIX操作系統的網絡傳輸參數。於是我們寫了一份分析報告提交給用戶,說明了排查的過程和結論,請求客戶方允許我們調整AIX操作系統的一個參數,問題就可以迎刃而解。

但是事情並不像預期的那樣順利,客戶方請的諮詢公司認爲我們的報告證據不足,認爲問題是應用系統的錯誤造成的,應修改應用系統,不應調整參數,而且由於AIX系統上運行着多家公司的多個應用系統,調整參數可能對其他系統產生影響,因此諮詢公司堅持在沒有得到權威結論前不同意調整參數。

我們一時找不到AIX系統驗證我們的結論,但是客戶方要求我們儘快解決問題,迫於時間壓力,我們只好採用了權宜之計,修改了技術方案,從系統設計上做了調整,增加了一種課件上傳管理的方式,避開了直接通過應用系統上傳,這樣做會增加一些操作步驟,但能夠滿足課件後臺維護的要求,客戶也認可這種修改方案,這個問題基本得到了解決。

用事實迴應質疑,贏得甲方肯定

問題雖然得到解決,但我的心裏卻很不踏實:我們的排查結論是否正確還沒能在AIX系統上進行驗證,這次繞開陷阱的做法只是權宜之計,對系統今後的推廣和產品化等工作會帶來隱患,也許我們在未來還會再次遇到這個陷阱。此外,由於諮詢公司多年服務於客戶方,有重要的地位,他們的意見會左右客戶方對我們的評價。這是我必須徹底解決的又一個重要問題:如何用事實證明我們的實力和價值。

我一直沒有放棄多方尋找問題的解決方法,也一直保持和合作伙伴的聯繫。當時我還負責另一個項目,需要第三方測試,爲此請了專業的第三方測試機構。他們擁有各種品牌、型號和配置的服務器,這讓我看到了轉機。在第三方測試工作開展的過程中,我與測試機構的負責人建立了良好的關係,在我提出需要免費借用設備時,對方很爽快地答應了。

我們很快在AIX操作系統上搭建了應用系統,進行了期待已久的測試。選定幾個不同大小的視頻文件樣本,在網絡傳輸參數tcp_nodelayack爲缺省值0的情況下進行測試,結果與在客戶方現場的表現一樣,文件上傳速度爲40KB/s左右,50MB以上的文件就不能成功上傳。當把該參數改爲1,再用樣本文件測試,結果上傳速度顯著提高,達到4MB/s。我們詳細記錄了驗證過程,寫了一份報告發送給客戶方和諮詢公司,用事實證明了應用系統沒有問題,排查結論是正確的,贏得了客戶方對我們工作的肯定。

軟件供應商中斷業務,拒絕提供支持

教育網系統正式上線運行取得了很好的效果,客戶方決定在其20個分支機構推廣,經過方案論證,確定以建成的教育網系統爲中心,在20個機構採用分佈式結構部署系統。客戶方很快召開了全體會議,要求分支機構儘快完成硬件準備工作。我們瞭解到,分支機構的設備很多是以前客戶方總部統一採購的,AIX小型機佔主導,有些分支機構的業務量較大,資源比較緊張,就爲此又購置了AIX小型機。

硬件準備好後,客戶與我方簽署了“軟件開發服務”合同,要求分別根據分支機構的個性需求對教育網系統進行改造和完善。在系統推廣的工作中,又出現了一個棘手的問題:系統需要使用R公司的視頻服務器R Server用於播放課件,R公司在中國已經中斷了基於AIX的R4及以上版本的產品銷售、服務和技術支持,即使是R4也僅在AIX 4及以下版本的操作系統上進行過嚴格測試,而分支機構購置的AIX小型機都是AIX 5以上版本,所以根本無法得到可靠的視頻服務器。總部通過一段時間積累了很多課件資源,這些資源都是基於R公司獨有的視頻文件格式,並需要與分支機構共享,所以不可能轉移到其他視頻服務器。

針對以上問題,我組織項目團隊進行了分析,根據我們對R公司視頻服務器的技術積累和掌握程度,可以確定:在AIX 5版本上運行未經嚴格測試的R4並沒有問題,我們可以考慮採購R4替代高版本產品用於AIX 5。下面的問題就是如何說服R公司破例出售給我們R4。

我爲此與R公司進行了多次溝通,詳細說明了我們遇到的問題,希望得到支持,R公司的負責人在與美國總部溝通多次後明確表示這是總部確定的銷售政策,不能破例,而且R4缺少某些新特性,對項目開發、實施不利,強烈建議我們改用其他操作系統,採購最新版本。但這就意味着客戶方花費幾十萬購買的小型機不能投入使用,這是客戶絕對不能接受的,事情一時陷入僵局。

這個問題並不孤立,還連帶一些潛在問題。根據用戶數量的發展情況,系統總部及其分支機構以後很有可能需要做視頻服務器的集羣,因此並不是只解決目前的問題就可以了,一定要未雨綢繆,否則未來仍然會面臨這個問題。

在這個項目中,我方按照“軟件開發服務”合同的要求,只負責軟件部分,並不負責軟硬件系統集成,但這個問題不解決,就無法順利推動項目進展。突破責任的界限與職責範圍,站在項目整體利益的高度,我必須設法使軟件供應商改變拒絕的態度,全力支持,破例出售足夠數量的R4軟件使用許可,並與我們共同面對、解決出現的問題,這是關係到系統是否能順利推廣的一個關鍵問題。

藉助甲方力量,協調軟件供應商共擔風險

我仔細分析了現狀,列出要解決的兩個具體問題:第一是說服R公司出售R4低版本產品,第二是要保證不能因爲採購了R4而造成未來有些業務需求不能實現。我仔細分析了高版本新增的功能特性:在分佈式環境中實現課件共享和支持移動設備。前者可以通過應用系統實現,我們已經在這方面有了紮實的技術積累,而後者雖然目前客戶沒有需求,但是未來怎樣沒有把握。

這些未定因素需要儘早擺到桌面上,把風險提出來,引起相關各方的重視,最好能夠促成客戶方與R公司直接對話,這樣在客戶面前我們可以共擔風險,而且也可以藉助客戶方的力量推動R公司按特例處理這個問題,避免我方獨立面對客戶,處於不利的地位,承擔過重的責任和壓力。

爲此,我組織了由客戶方相關分支機構(包括業務部門和信息中心)、項目監理方、R公司和我方參加的項目專題會議,在會議上我詳細彙報了目前的問題、建議的解決方案以及我們和R公司已做的工作的進展情況,並聽取客戶方的指導意見。

客戶方的業務部門明確表示:未來五年內不會考慮升級到更高版本,不會有移動設備視頻服務的需求。這樣,我顧慮的第二個問題就打消了。R公司在會議上也表示雖然很難,但通過努力能夠向美國總部申請一定數量的許可滿足客戶需求,如果在實施過程中出現任何問題,也將協調國內、國外的技術人員給予解決,將大力支持系統的建設。

我安排專人對此次會議做了詳細的會議紀要,與會各方都在紀要上簽字並各自留存紀要副本,通過協調會,各相關方都充分意識到這個問題,並進行了深入的分析和探討,最後明確了問題的解決方案並作出承諾,爲項目的順利進展掃清了障礙。

通過解決這個問題,我體會到:在項目實施過程中,項目經理一定要主動與客戶方密切合作,加強溝通,客戶方的充分參與能有效地協調供應商,增強項目經理對項目的控制能力。此外,對於己方不完全掌握的技術,不能單方面過度承諾。我們要有高度負責的敬業精神,但同時也要善於通過溝通、協調與合作伙伴分擔責任。

總結

項目經理在項目實施過程中經常要承受來自各方面的壓力,面對各種問題,例如缺少軟硬件資源或者人力資源等,在孤立無援的情況下面對各方的不支持、質疑和拒絕,項目經理要施展自身的溝通協調能力,用事實證明實力和價值,改變各方的態度,爲項目贏得更多的支持、認可和幫助。

困難和障礙是最好的老師,它能夠引導我們在通往成功的階梯上一步步向上攀登。寶劍鋒從磨礪出,梅花香自苦寒來,項目經理朋友們:祝願你們在取得“真經”的路上走得更遠,祝願你們的旅程更豐富、更精彩!敢問路在何方?路在腳下!

作者簡介:

董軼,IPMP B級國際高級項目經理,IBM 360°精英講師團成員,自1996年起從事軟件開發,曾任軟件架構師、售前諮詢顧問、項目經理、項目總負責人,具有多年大型複雜項目的管理經驗。

(本文來自《程序員》雜誌10年10期)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章