— 懷念一起奮鬥的同事,僅以此文表達我的心意

    我負責公司的一個軟體產品開發、實施工作。該產品已經做了好多年,好多版了,也經歷了好多個開發人員,一路走來來很辛苦,只有我還在堅持著。。。近期,由於專案不太順利,觸發了讓我想寫一點東西,就當是記錄總結一下這個過程。

    就從開始說起吧,07年3月,當時公司開發的產品在經歷一年的開發後,在使用者單位又進行了半年多的完善開發和實施。專案核心開發人員(也是負責人了)由於對產品失去信心,辭職了。
    專案從一開始其實就他一個人全包了,需要調查、設計開發,我僅是在進現場後參與了實施工作,對業務有所瞭解,而且對使用的開發平臺也不熟悉,之前我還對這個平臺也有牴觸心理,這是一個第三方的開發平臺,不是太成熟。由於這個背景及當時公司的人員安排情況,我被調配了負責接手該專案,負責後期維護實施工作。
    7月份,公司簽下了該產品的另一單,我和另一個同事一起接任該專案,使用之前的產品實施。過程很辛苦,由於對開發平臺不熟悉,加之平臺自身的缺陷,一個不大的專案,邊開發邊實施,硬是幹了三個多月才基本完成。之後這位同事也辭職了。我一人頂著收尾。
    期間,公司考慮了目前使用第三方開發平臺的不穩定性及成本的問題,加之目前也無人熟悉此平臺,決定重新選型開發。移植到通用的開發平臺上。最後選擇了.net做為開發平臺。我也就開發學習了些相關知識,邊維護著老系統。
    決定選擇.net平臺後,公司新招了四位新同事,做為新產品開發團隊。一位有一年多工作經驗,其它三位均為應屆畢業生,其中還有一位來的時間就已確定了四個月後要讀研。他們四位都未學過.net。僅是計算機專業的而已。
    新隊伍到位事,我還在繼續著老系統的收尾工作。未參與新同事的前期學習和工作,這期間由公司負責人帶隊學習.net,並從網上下載、學習了一個物件導向的開發模式案例,並確定了以此為新產品的開發模式。當時有同事反對此模式,但由於大家都是新手,也不確定是否可行,最終還是採用了些模式。
    在這兩個月左右的時間,公司負責人帶隊開發了一個支援分散式應用的程式框架。包括服務端和客戶端及一些許可權管理、人員管理等系統性功能。以此為基礎,只要再開發業務功能掛進來即可。這段時間由於我還在現場維護舊系統,加之前兩位同事的離去,心情也比較灰色,所以沒參與新產品前期開發討論,其實也沒心思參加。
    在我完成現場實施後,新團隊也完成了基礎框架的開發,我也回到公司一起工作。由於目前只有我一人熟悉業務,很自然的我就成了新產品開發的負責人,負責設計、規劃。同時帶領新人通過使用舊系統熟悉業務。
    可以看出,我的事情很多很雜,加之新人的工作任務還在等我的設計完成後分配,所以設計很倉促。設計了表結構、編寫了不太詳細的功能要求說明書後,就分塊各自負責的獨立開發了,對開發標準、進度、質量基本都未管理。只是在有問題時討論一下。因為我也負責了其中一個重要部份的開發,也未有精力進行管理。雖然我好象是開發負責人,雖然沒明確指定。
    歷時三個多月的開發,基本完成,由我測試、提出修改要求和BUG,開發人員修改完善,這樣持續到08年5月,產品才算基本可用。同時與某使用者談好了免費提供給他們軟體使用,以驗證軟體,並完善它。
    由我帶隊和另外兩位主要模組開發人員一起到現場,當時第一次新來的四位同事中,一位已經讀研去了,另一位也因種種原因辭職。帶兩位到再場實施,出於幾點考慮,一是東西是他們做的,行不行到現場用了就知道,有問題也好改。二是到現場有助於他們熟悉業務,更深刻體會業務,後來確實也達到了這個效果,一位開發人員在實施完後,才語重心長的說,直到現在我才知道我開發的軟體是做什麼用的(當時我真的汗了一下,問題還是嚴重的)。
   試用的使用者單位並不大,在另一個縣城,座車兩個小時就到了,原計劃十天搞定。所以出差時沒做太多準備,很多生活用品都沒帶,有位邊換洗衣服都沒帶,拖鞋什麼的也沒帶…後來是吃虧了。
   現場工作啟動後,逐一推進,慢慢發現進度嚴重落後。雖然我們已經很努力,周未不休息,晚飯後也是接著幹到十二點,還是趕不上。由於在公司開發時有些需求考慮不周,及軟體本身還有些BUG,加大了現場開發。。。
   當時的情況可以說很狼狽,想著趕進度就連續連續加班,十多天都沒先過澡,換過衣服,有種背井離鄉的淒涼感覺,當時我都在想,不知道使用者有沒什麼反映,呵呵,這些傢伙是搞軟體高科技還是建築工人啊。後來覺得這樣下去不是辦法,也想放鬆一下,就出去洗了個澡,然後好好吃喝了一頓,晚上回辦公室後,也不想幹活了,各自在電腦前玩了起來。
    在經歷了整整二十一天可謂磨難艱辛後,算是完成了專案,雖然還有些問題,但已基本能支撐業務執行,使用者也認可驗收,終於可以回家了,離開那天可以用倉皇而逃來形容,都不敢打電話給使用者,怕使用者又說有問題。可不巧才走出門就遇上了使用者負責人,嚇了一跳,不過有驚無險,他是來送我們的,真是感謝他。
    在專案結束那天,身心在經歷各種壓力後,我們三人都已經到了誰也不想和誰說一句話了,漫無目的的走在街上。壓力可想而知。
————————
    回公司後,對實施及試用進行了總結,確認了幾個軟體設計上的缺陷,這些缺陷基本都是由於使用了太多新技術和開發人員對技術不熟悉造成。之後進行了為期一個多月的調整、完善開發。之後再次去給使用者做了升級。
    之後由於公司未籤其它新單。但產品還需要繼續驗證試用,正好之前使用舊系統的使用者提出舊系統執行速度已非常慢。所以決定由我帶隊使用新開發的版本進行升級,這次重新帶了一位新招的同事一起去實施,上次實施的兩位同事在公司繼續開發。
    本以為升級會很順利,但還是要於設計不到位,在業務量較大的時間,速度非常慢,甚至比舊系統還慢。而且由於新系統在介面風格、操作習慣都有較大改變,使用者不適應,對升級非常不滿意。開發人員進行論證後,認為前期採用的物件導向的開發模式,至使用了現在效率低的問題,而且無法優化,只能換技術線路重新開發。這真是一個沉重的打擊。但為了發展,只有再痛下決心,重新開發核心模組了。
    歷經很長時間的重構,後又接著在使用者處試用完善,來回修改,有時都影響了使用者的業務執行,實施過程很艱辛,經常加班到七八點,和我一起的同事也很認真,很主動的做事。後來的工作也證明了他是位極積、主動、負責任的員工。
    接下來,公司成功簽下了一個大單,規模比以前的都大了許多。而且該專案的意義對公司在市場站穩腳跟有著關鍵意義。使用者是傢俱有較大影響力的單位,示範效應會很大。公司上下基本都圍繞該專案進行了準備。
    確定了由我帶隊負責現場實施。一名核心業務開發人員在公司開發,支援核心業務模組的完善和開發,另有三名開發人員分另負責不同模組的開發完善工作。
    專案很快就啟動了,在完成了伺服器配置、安裝除錯後。先由使用者維護了基礎資料。便正式分另從不同的部門進行了推進實施。在不同部門實施過程中都遇到了各種新需求,或者是便利性的改進,我們本著為使用者提供最優服務和充分滿足使用者需求,讓軟體更適合業務需要的原則,基本上使用者提的需求都接受並修改了。這增加了很大的工作量。
    核心業務的開發人員壓力是最大的,一方面是應對新需求,另一方面的要維護程式的穩定執行,時常需要完善。由於系統是實時業務系統,出了問題就影響業務執行,所以對時間要求也非常緊張。
   因為系統剛上線,一方面是不穩定,另一方面是使用者不熟悉,實施工作也很辛苦。使用者人數較多,且輪換上崗,很多東西都要重複教很多次。最誇張的是他們還有夜班,經常夜裡十二點、兩三點都還打電話來(其實說起來也是系統不穩定造成了,使用者也不希望打這個電話)。有時周未出問題,也是親自跑到現場處理。而這些加班工作,公司未做任何表示,我們也未主動要求。都是本站對使用者負責的責任心驅使用著去做的。
    專案在推進到一個較大的部門時,出問題了。因為設計期初未考慮某種特殊的併發應用,而這種應用正好發在了。所以引發了效率低、常發生使用者資料弄錯的情況,使用者意見很大。
    幾經折騰後核心業務的開發人員終於承受不了壓力,多次申請辭職後,離開了團隊。他的離開對專案造成了巨大影響。一方面是接手的人對他的程式碼不熟悉,另一方面是之前的程式碼本來就存在很大的缺陷。當時根據人員的熟練程度,調配了一句本單獨負責著一塊模組的人接手了核心業務開發。而他負責的模組交給了另一名開發人員。後來證明,這次的調配負出了慘重的代價,因為這造成了兩個人都要接手新東西,都要熟悉的過程。而且責任劃分也就不明確了。
    接手核心業務的開發人員在經過一段時間的維護後,也覺得無法再維護下去了。做開發這個行當,看另人寫的程式碼本來就是件頭痛的事,加之他的觀點認為現在的修修補補,隨時還要應付一些新需求,很煩瑣。提出了部份重新開發,以解決併發的問題,最後公司也同意了,他便專心做了近一個月的開發。這個時段現場版本的維護由我硬著頭皮接了下來,也做了些新特性開發。
    完成重構後,他到現場我們進行了詳細的測試,花費了不少時間,來回進行了幾輪測試->修改->再測->再改。確認基本可靠後,便更換了使用者使用的版本。
    軟體這東西就是這樣。總有想不到的問題存在,更換新版本後,依然發現了不少錯誤,而且有些錯誤難以重現。而當時我們現場實施的兩個人,又要測試,又要實施,還要來研究重現錯誤,事情很雜。所以我希望開發人員能變換角色,跑跑現場,瞭解使用者使用情況,測試重現錯誤,並解決它。對一些新需求,也是自己主要分析設計。對此,他很牴觸,認為自己只是做開發的,你實施人員說有錯,那你重現給我看了,我就改。否則我認為沒問題,我就玩我的。
    對他的態度,我認為人應該全面發展,什麼事都做一下,增加些經驗,而且加強主動性,這樣對個人發展也很有益。但他還是固執認為我就是不願意處理那些瑣事,我只想做有挑戰的難事。所以我們之間產生了矛盾,我覺得是價值觀和理念不同。他也覺得難受,並在此過程兩次向公司提示工作不順心,要辭職。公司出於專案進度的考慮,規勸他留了下來。我們也進行了交流,表達了我希望他能考慮專案的特殊背景,做些改改變和妥協。
    但他的態度還是沒改變,我給他的定論是驕傲、做事不主動、紀律不嚴謹,溝通協作困難。在一次我和他說新任務時,他又很暴躁的說,我不幹,你重新找人幹好了,要這樣麼我辭職算了。當是我也是忍他好長時間了,之前一真考慮專案緊,他走了影響大,一直想各種辦法挽留他,讓他穩心工作,但徒勞無功,今天他再這樣一說,我火一下就上來了。我回答了一句“我同意”。
    我是想好了,寧為玉碎,不為瓦全。沒有你還轉不下去了麼?大不了我們接手的人辛苦一陣子。就這樣,他也離開了。  產品核心業務開發人員再次換人。
     他的離開,我想了很多,曾經我們也一起努力過,懷念那些日子。現在的狀況我覺得他和公司都是有較大損失。對他而言,在這個行業做了兩年多,有了些積累,現在都丟了。而且要重新找工作,也是夠心煩的。對公司而言,要培養新人接收,專案進度又受影響。損失也不小。
    工作中,總有不順心的事,我覺得應該平和處理,多一些包容、理解和妥協。衝動是魔鬼。很多東西擁有時不覺得,失支了才知道痛。
    他的離去,只能用道不同,不想為謀來形容了。理念不同導致無法很好的配合團隊工作。我的理念是,我希望團隊的成員都能有一個相同的理想,並願意為把這個件事做好而努力。具備主動、負責任的極積心態。
    生活還在繼續,專案也在繼續…祝願他能有個好的前途,通過這事也有所反思。也祝願我們的力隊能齊心協力,把專案做好,把自己的人生做好….