爲什麼程式設計師很少做代碼重構?我下個月跳槽了,重什麼構

代碼重構,國內的IT行業的企業,不敢說100%有這個問題,相信大部分公司都存在,很早就需要重構的代碼模塊,卻一直用著,能拖就拖,即便它直起來並不是那麼的“完美”,使用起來也不是最簡單方便的,只要它還能用,就會一直用著。當然老闆是不會管程序員這個的,並且99%以上的老闆從來沒注意到,更確切地說是並不知道項目到了重構的時候,也不清楚重構帶來的意義,小編收集了一下這方面的原因,給大家盤點一下:

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

時間被嚴重壓縮項目急,能上線就不錯了

時間被壓縮的情況,在開發界屢見不鮮,現在都已經成家常便飯了,但這個現象,在很早之前,並沒有這麼嚴重,隨著C端快速發展,尤其是手機應用的迅速崛起,這使得以前“系統分析員”的工作,被拆分到產品部門,而現在絕大多數從事產品的人沒有技術開發的底子,快速佔領市場的需求,加上沒有完全吃透需求的產品,和技術底子的薄弱,導致需求被反覆修改,和開發時間被嚴重壓縮。時間被壓縮了怎麼辦呢?誰會管你重構不重構的,能上線就謝天謝地了,這時候程序員只求上線後別出嚴重級的bug就可以了,系統上線後,接下來又要面臨新的開發任務和需求的反覆修改帶來的額外的工作量,不是他們不想重構,一沒精力二沒時間三沒心情

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

涉及的模塊太多太雜,風險太高代價太大

要重構的功能模塊,通常不是那種只用一次,只顯示一次的頁面代碼,而是多個模塊公用的功能塊,這種功能塊在最初的需求中,一般只用幾次,沒人預料到未來的的需求是個什麼樣子,從而對代碼做最優的優化和架構,這使得程序員開發的過程中,只要這段代碼不出問題,可能會一直用著,除非是接下來要添加的功能,不改這個公共模塊就沒法再做,這時候才會去重構,而重構後,可能接口參數改要,意味著之前寫的所有的功能可能要做一定的修改,並且都要再跑一遍測試,單元測試,集成測試等等,本地測試完上傳到測試服務器測試,再上線在生產環境中測試,工作量非常之巨大。你要一進公司就吵著要重構代碼的話,估計會被測試的小夥伴們所嫌棄,他們一定老恨你了。所以,要重構的話,其實代價非常大的,成本很高可能還會出各種bug

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

沒任何的功勞和業績,還要被同事嫌棄

代碼還能用,你要吵著重構,不僅會被同事,尤其是測試所嫌棄還招恨,可能還會影響到上線項目的正常使用,人寫出來的程序一定是有漏洞的,最怕的就是那些潛在的漏洞

,在測試階段沒測試出來,上線後沒出現,但一段時間表現出來,一旦出現,可能面臨的是週末休息日的無償加班,或者是晚上凌晨時的修復,這也是為什麼你經常會看到在高鐵上、馬路邊,甚至自行車上,垃圾桶上都能看到程序員在改代碼,其實是在修復bug,一般都是著急處理的線上的bug。有些bug導致的產生的數據是不可逆的,訪問量高的網站晚處理一秒,產生的數據量就非常龐大。還一個非常重要的原因是:做重構,沒有任何的功勞和業績。在外行人看來,你把一個能用的功能寫成另一個能用的功能,做功為零,還耽誤了時間,浪費了開發勞動力。他做的東西雖然在程序員眼裡價值很高,但在外行人眼裡那個從從0到1的那個人才是最有價值的。沒有功勞的活,誰願去做,還得罪了人。

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

能力不足以重構,讀別人的代碼都費事

還有一種原因是,程序員的能力還沒有到達重構的地步,不得不說,現在開發這個行業,被各種培訓機構帶的有點浮誇了,很多非計算機系畢業的學生,被培訓機構一陣忽悠,誰誰誰學了三個月,月薪上萬,而培訓機構本身的師資又是個非常嚴重的問題,這種流水線上培訓出來的員工,現在在企業裡廣受病詬一來要價高,二來底子薄。因為有培訓機構的過度宣傳,潛移默化的增加了這些人的自信心,但編程,要學的東西太多了,而培訓機構是不會教這種東西的,只教你怎麼使用語言和工具。比如你學的是java,只教你java相關的語言和怎麼使用eclipse這類的工具來做開發。而開發的基礎知識,算法、數據庫、數據結構、編譯原理、操作系統等等都不會教的。當然也有些科班出身的能力可能也跟不上,這就造成了現在這種局面,時間緊的情況下,能寫出來上線就非常不錯了,沒有bug,完美。重構,不可能的。

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

更注重短期的效益,疲於解決眼前的bug

國內的軟件開發行業,非常注重短期的功能上線,和競爭對手爭搶市場,一個app,一套系統,能活下來還是個問題,每個月光開發人員的成本就是一筆不小的開支,不考慮未來?融資之後再說,掙到錢之後再說,老闆按日計算企業還能活多久,長遠的東西,等到了時候再說吧。互聯網每年出一個新概念,

雲概念,saas,H5大數據,今年開始流行區塊鏈,為了吸引資本關注,能用的全用上,現在在大數據和區塊鏈上,並沒有一個非常完善的運作方式和指標,都是摸著石頭過河,把數據按一個報表的形式表現出來,也自稱為大數據。而底層的架構,在需求階段是最費時間的,沒有一個長遠的考慮,沒法做到架構上的完美,這種追逐短期效益使得程序員只能疲於解決眼前的bug,而缺少長遠上的考慮,更確切地說是沒有精力照顧到長遠上的架構擴展。需求都寫不完,何談時間與精力來重構?

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

地位低,沒有話語權

通常國內的程序員,地位很低,沒有任何的話語權,產品三天改了五次需求,程序員一旦表現出過激的語言和行為,產品便會以程序員很難“管”的藉口向老闆告狀,這時的程序員,前進一步不是,後退一步也不是,兩頭為難,而原本可以做得很好的系統的激情,被這三番五次的改需求折磨掉了,程序員的工作做得好不好,只能是自己同行人知道,底層架構很好,代碼寫得很規範,但外人看不到,產品不明白,老闆只看功能實現,在程序員地位低的公司裡,你面臨的可能是出力了也得到任何的表揚和功績,在只注重表象的公司裡,不如只做表象的東西。這就造就了程序員會選擇不重構代碼的原因。因為,實在是沒有用。

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

互聯網產品更新迭代快,沒必要重構

互聯網時代,尤其是蘋果iphone的流行,帶來了移動端app的發展,帶來了互聯網開發行業的春天,程序開發行業的產品、前端以及ios、安卓端需求人數急劇上升,每過一段時間,你發現有一堆app成為流行應用,互聯網產品變化之快,用早期的前輩留下來的開發模型已經完全不能滿足需求了,能敏捷儘量敏捷,能有多快就多快,這也造成了程序員無休止的加班,而有的公司,業務方向上的轉變也是跟風經常變動,一開始小額貸款,中間p2p,後來做消費分期,這是聽一個網友講的,底層數據經常變動,這玩意你想做重構,不可能的,架構更別想著完美,以最快速的完成開發上線,才是首要的,代碼爛,關用戶什麼事,關老闆什麼事,能用就行,用戶又看不到代碼。

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構

互聯網行業人員流動大

有一個問題其實一直是互聯網行業無法避免的,就是從業人員的流動極大,平均兩年,尤其是一線城市,北上廣深,程序員工作一年再跳槽,平均薪資上漲20%都算少的,而在一線新興領域,比如前幾年的大數據領域,今年的區塊鏈,做的人很少,半年的從業經驗都會被企業搶著要。人員的流動,帶來的是程序維護成本的增加,因為,每個程序員都知道,不管對方的代碼寫得好還是不好,看別人的代碼都是一種痛苦,看自己半年前的代碼也是一種痛苦,但當你看到署名是自己的時候至少還能接受。而在企業做開發的程序員,尤其是剛畢業的,絕對不會一直待下去的,這就考驗從業人員的職業道德了,我到底應該把代碼寫的多好?可維護性應該做到什麼地步?至少在我還在公司的時候,不會出現特別麻煩的bug。這些程序員的出走,重構就成了問題,他們遺留的代碼會變成一種“歷史”,能不動就變動,牽一髮而動全身。

為什麼程序員很少做代碼重構?我下個月跳槽了,重什麼構


歡迎小夥伴們關注木易小光的平臺號,有什麼問題可以在評論區留言討論。


分享到:


相關文章: