怎樣和虐死人的老專案談戀愛

2021-08-01 05:33:42 字數 2807 閱讀 8360

我最近接到兩個有點坑的 vs 舊專案,之前一直是接觸 qt ,沒有接觸過 vc++ 和 mfc 庫,感覺有些吃力。

現在好不容易解了乙個舊專案的 bug ,但是另乙個更恐怖,整個專案只有我乙個人,什麼也不懂,正在慢慢摸索。

這個老專案是好幾年前的,原來的開發人員都離職了,也沒什麼文件,只有**,**中用了好多庫, poco 、 boost 、 thrift 等等,還用了 python 混編……這些東西我以前都沒接觸過,看起**來雲裡霧裡,心裡沒什麼底。

關鍵是我看不懂的**和邏輯,也無處能問——老同事離職了,現在的同事,沒有乙個了解這些**的。我經常一臉無助+懵逼,心裡壓力很大,都開始吃不消了。

經理給的時間很緊,一直在催我,導致我神經一直在繃緊狀,總感覺活在恐懼中,所以最近失眠嚴重……

這樣的狀態,認真負責的你,可曾經歷過嗎?有沒有想過怎樣才能愉快地和老專案相處?

說實話,作為開發者,我們都討厭接手老專案,可是,開發者的宿命就是:你別無選擇,終歸要和乙個老專案相愛相殺

包括我自己,做開發十多年,可以說有八年都在和老專案鏖戰!從 2015 年到現在,都在和有十幾年歷史的老專案卿卿我我!

時常會有奔潰的趕腳啊!

然而我們真的不能不管老專案嗎?

答案是:不能!不能!不能!

原因很簡單:乙個專案,一旦發布上線,交付使用,就會成為老專案,但是它的宣告週期卻不會結束,緊接著就是修復 bug 、新增功能、效能優化等等。

所以,所有的新專案,終歸都會成為老專案!

所以,從這個角度上講,即便你從頭開始做了乙個新專案,做著做著就成了老專案。

我 2009 年時從頭開始做乙個智慧型機頂盒的專案,做著做著就到了 2014 年,新專案就變成了老專案,人員來來去去,部分**就不可維護了。有一次招募乙個小夥伴來接手網路傳輸部分的**,他待了兩個星期,就因為無法搞定那些**而離職了。

我覺得老專案就是開發者的宿命,你終歸要和乙個老專案相愛相殺,不是現在,就是將來,無可選擇。

那麼,我們能做的,就是以什麼樣的姿態來面對老專案。

當我們無可避免的要與老專案戀愛時,怎樣才能讓自己愉快一點呢?

請嘗試以下幾點:

稍稍展開一下吧。

這點是最重要的,我們要多想想:通過解決 bug 、二次開發等,我能從這個老專案中學到什麼。比如你有可能學到這些:

學習型心態,以解決問題為目的,關注如何解決問題,關注自己在解決問題中可以收穫什麼。

如果你擁有這種心態,開發工作就會有趣一些。如果你是消極心態,總罵著「靠,怎麼這麼多爛 bug !」,那你的工作就充滿了撕扯、抗拒以及各種不愉快。

對於老專案的維護和開發,要化整為零,每次就解決乙個小問題,每次都給自己乙個小目標,這樣比較現實,bug 、需求等小目標實現了,也會給自己一些正向激勵。

如果目標太大,就拆分開,一兩天完成乙個小的,讓自己不斷有成就感,這樣就容易堅持下去。

有時你接手老專案,很長時間就是閱讀**,那這個時候,就給自己定一些目標,比如今明兩天了解認證鑑權的邏輯,再接下來了解這些邏輯和**的對映關係……這樣一頭大象就可以一口一口的吃,不至於無從下嘴。

如果你自己無法分解你的目標,就找熟悉的同事,或者你的經歷,一起討論出一些目標,再一起拆分成小目標。

相信有不少朋友和我一樣,看到不順眼的**,閱讀時拒絕感很強烈,總想著重寫、重寫、重寫,以為自己出手重寫一遍,世界就會美妙起來。

我幹過不少這樣的事情,但是,後來我發現,當我把所有要支援的功能都疊加進去,所有意外情況都處理了,之後,我重構出來的**,居然和原來我討厭的老**差不多了……

所以,現在我知道,在我想推倒重來之前,要先了解狀況:

雖然開發者很重要的一部分工作是做設計寫**,但實際上,閱讀**是比寫**更重要的能力。當你搞不明白乙份老**的意圖時,貿然推倒重寫,往往會陷入泥沼。

所以,最現實的策略就是,每次都結合你要修改的功能或者 bug ,設定較小的重構目標,比如改幾個函式,改兩個類的介面等等,這樣既容易實現,又能夠讓老專案慢慢變好。日積月累,這樣微小的重構就可能發生巨大的作用。

我們很討厭別人的**沒有文件、注釋,可是我們自己的**往往也是如此。讓你去看自己兩年前的**,你可能就會討厭它們,不忍卒讀。

所以,當你接手老專案,有一項非常重要的工作可以做,就是記錄你的經歷和思考,顯性化你取得的進展。

在你理解老專案業務邏輯、**邏輯,修復 bug ,新增功能的時候,把必要的注釋加上,把核心的邏輯流程繪製出來,把不全或缺失的設計文件補上……

這樣做有巨大好處:

這也是我們自我成長的方式,只有記錄和思考,你才能不斷覆盤專案覆盤自己,才能每做一件事情都有收穫。

前面的要求可能有些高,很多人覺得難以達到。沒關係,我們並不是要把自己逼死,相反,我們這些要求,是為了做好專案,更重要的,是為了自己的成長,讓自己有良好的自我感覺。

而,假如,你面對的情況非常特殊,你的努力幾乎改變不了根本問題,很難取得突破,那這個時候,心態也要放平,要有「盡人事聽天命」的豁達。

活人不能被老專案逼死,對吧,盡力去做,真做不好,可以嘗試換個角度、換個專案再做做看。

不要過分苛責自己,也不要因此認為自己能力不行。這個老專案你搞不定,只能說明你在這個專案上失敗了,你理解老專案遇到了困難,它真的不能說明你這個人就徹底不行。你可能很善於做技術探索,很善於架構設計,精於某類演算法……我們得客觀評價自己,知道自己的長處在**,努力把自己放到能發揮自己長處的專案中去。

我們要有專業精神,努力解決問題創造價值,但另一方面,也一定要對自己負責,不要把自己逼死。

如果你覺得老專案真真是讓人難以忍受,多看一天人生就多灰暗一天,那就嘗試離開這個專案。

有兩種方式離開乙個老專案:

在公司內尋找其它的機會

公司內沒有機會,就離開公司

該離開的時候,就果斷一些,更好的位置,出門左轉,就在拐角處。

虐狗日記 和小冰同居的日子

男主人翁 女主人翁 初識小冰 乙個人在北京的日子應該是快樂的,雖然沒車沒房,每天在擁擠的地鐵裡浮浮沉沉,但是能吃得飽 穿的暖,我已非常滿足和幸福了。單身漢的生活總是平平無奇,無非是上班 下班,娛樂也多是以手機為主,電腦為輔,本以為這樣的生活會一直持續下去,直到我遇見了乙個人。小冰 這是她的名字,至少...

怎樣維護成功的開源專案

開源可不僅僅是將 扔到網上就萬事大吉了,將開源專案變成能讓自己引以為豪的東西才算成功。那麼,你需要注意哪些方面呢?寫好指導性文字 每乙個開源專案有三樣東西是少不了的 專案目標和方法的簡要說明 如何參與和授權許可。最好把它們預先放在乙個readme檔案裡。我還喜歡加入乙個名為 組織和理念 的部分,概括...

老專案JSP中如何整合和使用VUE的一些特性

vue主要開發單頁面應用,並且為了做到前後端分離的乙個產物。使用vue開發單頁面應用主要使用vue cli的腳手架來進行快速開發。教程比較多在此就不囉嗦了。但是往往有些專案不是前後端分離的,一句話系統是拿jsp寫的,使用老一套的j2ee,這樣的專案中都是直接操作的dom,使用的jquery等。既然v...