⑴ 大家都羨慕程序員工資高,那你覺得大齡程序員該怎麼辦呢
大齡程序員一定是擁有豐富的開發經驗,而且擁有良好的學習能力,能夠保持持續進步,才能不被時代所淘汰。盡快轉管理崗也許還好,但是運氣不佳仍然在一線奮斗,隨著年齡增長,家庭事業各方面的壓力越來越大。我建議還是盡早放棄一線開發去做其他工作。沒辦法,身邊年齡大的程序員,真不一定是大神,更多的只是一般水平,而畢業三四年的開發人員也一樣可以擁有很可靠的技術,而他們對新技術的興趣和關注度肯定會高於有些大齡程序員。加油吧,持續熱愛可以繼續,如果厭倦了,心生退意盡早離開。另外,不要看到別人能夠堅持下去,就去糾結,尊重自己內心的意願是最重要的。最後說一下最後一種出路,出書,寫作,做講師。
關於大齡程序猿何去何從問題,總結起來可以從「一個困惑,兩點建議,三條轉型」進行思考
一個困惑
「大齡程序猿問題」的關鍵大約有這么幾點:一是精力問題,基本33歲以後已經不願意加班,感覺疲憊;二是技術問題,新技術太多了,已經沒有時間與精力去研究了;三是家庭問題,不能說是拖累,享受天倫是人之常情,寧願意抱著小孩看電視,也不願意再看電腦了。
兩點建議
1、深耕技術。李嘉誠說過一句話「做生意,手頭上要有一個,天塌下來都是賺錢的」。一樣道理,既然選擇了程序猿,就要永遠保持技術上的學習力和競爭力。
2、拓寬知識。在學習技術的過程中,當你覺得迷茫而痛苦時,拿本小說看看吧,或是雜志,隨便什麼書,不要只鑽在技術的圈子裡。面試過一些理工技術男,特別是IT男,知識面太窄了,有一種「兩耳不聞窗外事,一身只讀聖賢書」的感覺。
三條轉型
有人指出程序員的轉型之路,無非以下幾條,一是轉做售前或售後;二是轉向IT培訓或營銷;三是走向項目經理;或許還有其它。。。
我表達的意思是程序員可以走行業專家的路線。產品裡面我技術最好,技術裡面我產品思維最好,幫助項目順利的開發和實施。
北京養老的IT公司多了,混到40感覺問題不大
多關注當下流行的技術迭代更新,緊跟時代潮流,否則,老一點的技術很容易就被淘汰
要麼轉管理,要麼創業。第三35之前努力擠進國企吧。
⑵ 作為一個程序員,你有沒有想過如果不做程序員了你還能做什麼
首先扒出網上的一張圖,表明程序員工作的路線圖。雖然只是笑資,但也依舊部分真實。
大多數在一線城市的程序員根本買不起房,特別是北京,當然對比其他薪資更低的其他崗位更是如此。所以基本分為兩大塊,一直留在大城市和後期回到二線甚至三線城市,求個輕松安穩的生活。
管理 :大多程序員在沒有怎麼敲代碼後,都是走管理路線,管理項目,統籌兼顧,這也算是沒有脫離程序員的行業,但也不能算是敲代碼的程序員了。不過管理崗位就那麼多,也只會有少數人能夠晉升。
程序行業的獵頭 :現在很多大公司都需要hrbp等崗位,需要懂得編程的人幫忙招聘真正有本事,能夠聊技術的hr,不過hr更多要有資源,能夠會說話,有大概的判斷,因此程序員行業很多人並不能勝任,但總會有人適合,不是么。
培訓老師 :懂的知識,能夠系統理解就能教書育人。同時也是對自己知識體系的梳理過程。無論你是內向還是外向,都可以做講師,因為每個人都有自己的講課風格,但這需要你做一定的適應,最大的難度就是從自己動手做項目到用語言准確表述自己的經驗與技術。
做自媒體 :現在的自媒體已進入成熟期,如果你的技術已經十分嫻熟,可以把專業技能放在自媒體平台上,把你的編程經驗、目經驗寫一寫,以文章、視頻形式展現出來。名氣大了,自然會有人找上你,請教問題或者打廣告,一切都水到渠成。
接私活 :現在也有很多地方可以接私活,自己賺錢,趁著年輕多賺錢,至少被年輕人淘汰時候,手上也有很多錢可以任由自己揮霍。
很多人在做程序員後,都會想有更輕松的人生,錢少點無所謂,但不能委屈自己。那能幹啥呢?
在老家開一個小店鋪,天天刷刷視頻,看看電視,日子也很悠閑愜意。
甚至在老家開滴滴,自由職業,想上班就上班,手頭缺錢就加油跑,
有一點自己愛好的,開個小餐館做作 美食 ,彈彈吉他教教學生。
修修電腦, 游戲 陪玩。或者自己寫一個伺服器,做個網站玩玩。
只有一份工作,並且還是給別人打工,擔心永遠都不會少,有一份副業才是正道。不要等到年紀到了,發現只能依賴一份死工資,變得唯唯諾諾,一點底氣都沒有,從而變成被公司壓榨的理由。
而對於大多數人而言,要多想想除了現在這份工作,我還能幹什麼賺錢,同時,也要加強自己的不可替代性。而程序員的不可替代性依舊是想法和技術。可以關注私聊我發送「 項目 」獲取很多項目的學習視頻哦,當然覺得沒有你想要的可以私聊說說想要什麼資源,大部分都能給你找到。
作為一名從業多年的程序員,或者說作為一名大齡程序員,肯定都會考慮,中年職業危機的事情,達到一定年齡後,自己該何去何從,中年程序員的焦慮隨著年紀增大而增大。
項目管理,軟體經理
很多公司沒有技術專家的崗位,所以很多人都會考慮轉管理,比如項目管理,軟體經理,因為技術沉澱,可以對軟體開發進行管理,這種職業轉換,相對與研發經理會比較簡單,壓力沒有那麼大。
轉換做技術支持,做FAE
假如你之前從事的工作,是做嵌入式軟體開發,寫C語言編程,那麼對於單片機一般會比較熟悉,那麼可以找一些mcu晶元原廠或者大的代理公司,做技術支持FAE,利用自己的技術經驗,幫客戶解決問題,然後有些公司的FAE的工資也會與銷售額掛鉤,有一定提成。
轉換做銷售
轉換做銷售是很多程序員的考慮,但現實是很多公司不會招沒有銷售經驗和資源,且年紀偏大的人做銷售,主要是培養時間長,穩定性差,沒有資源,當然賣房不需要經驗。
跑滴滴,跑美團送外賣
估計很多人也會想,如果真的失業了,就去跑滴滴,送外賣,肯定也是一個門路,肯定是一定收入,但收入肯定沒有做程序員高。
創業自己做點小生意
做程序員,工資相對於其他一些行業工資要高,或許有點積蓄,就考慮開一個小賣部,或者開餐館,做燒烤,做早餐等等,再或者是不是開一個快遞網點也是一個不錯的選擇。
還可以利用自己的專業知識,給別人做產品,方案開發等工作。這種我覺得是程序員重點考慮的方向。
說實話,確實沒想過,作為一個已經在程序員崗位上幹了10年的老鳥,目前還沒想過不做程序員了還能做什麼,做個小生意,不知道從何做起。合夥開公司,也找不到合適的人,而且最重要的是要有人跑市場,天天面對電腦,感覺已經喪失了和人打交道的能力了。
30多歲了,已然變成了00後口中的中年大叔,面對上有老,下有小的窘境,你想不做老本行,辭職去做其他的事情?除非有十足的把握,不然還是勸下自己,不如將現金投放到余額寶,或者買一些基金定投產品來的靠譜。畢竟那個一人吃飽,全家不愁的時代已經過去了。每天睜眼面對的就是父母妻兒,車貸房貸,以及其他的消費生活壓力,想給自己解解壓,還是拋棄不切實際的創業夢想吧。
但是,別忘了,雖然人在江湖,身不由己,對於自己還是要投資的,不論是身體方面,還是職業方面,健身房沒錢去,就到小區路邊多走走,鍛煉好身體,至少用一個強壯的身軀來撐起家庭。編碼之餘,多看下前沿的最新技術,程序員是最喜新厭舊的行業,你所比年輕人多的,不是身份證上的年齡,而是寶貴的項目資歷,不過在層出不窮的新技術面前,保持一顆善學不斷的心,總歸是沒錯的。
就算你要干別的行業,也請你把現在的程序員做好,既然要當斜杠青年,抑或是斜杠中年,也得腳踏實地,一步步的來不是?分享與大家共勉!
都說程序員吃的是年輕飯,過了30歲以後的程序基本上都是行不通的。然而好像事實也是如此,一旦上了年紀的程序員,真的沒辦法和年輕的相比。
三四十歲的年紀,論技術沒有年輕人的跟得上時代,論體力你也拼不過年輕人,我老程序員唯一擁有的話就是經驗。那誰說做程序員就得干一輩子,沒有這種說法。如果說你不做程序員以後的話,其實你可以將你自己的這一身經驗,傳授給別人。
說白點就是直接去當老師吧,當老師待遇也不錯,工資而且還挺高的。如果你有教師資格證的話,可以直接去正規的學校應聘,老師如果說你沒有教師資格證的話,現如今有很多的那種私密的培訓機構,他們都會招收很多的講師。不管是學校還是公立的培訓機構,各自有各自的好處,但整體來說待遇都是非常不錯的。
就以普通的培訓機構為例吧,他們非常需要人才,需要講師,有的培訓機構甚至直接聘請一些在校的大學生去作為他們的講師,但可想而知這些大學生的話,他們也只是學生,真要論起實戰,是遠遠不如退休下來的程序員。
但當老師也不是程序員唯一的屈辱,其實還有很多方向可以去發展,如果你覺得你這個行業做膩了,想換點新鮮的去做一下其他,那你就可以勇敢的去嘗試。不管是各行各業,只要自己喜歡都可以去做,能勝任程序員這個職位的人,我相信都是非常的聰明,去做其他職業只是時間的問題,我相信都能夠勝任。
因為程序員,吃的是一種技術活,頭腦必須靈光。太笨的人真的當不了程序員,所以說那麼聰明的一個人轉行去做其他職業,一點問題都沒有。
有時候我也在想如果有一天我不做程序員了,接下來應該去做什麼。
再回鐵路行業,從鐵路行業出來的我,再去應聘個地鐵公司或者廠家應該不是什麼問題。
去工廠企業做維護,我的專業是自動化專業,做個電務的維護也還算可以,畢竟還記得PLC,DCS編程語言,我還是一個擁有高壓電工證的程序員。
去輔導機構,去做個英語老師,大學英語六級,以後准備考個雅思,教小孩英語,應該綽綽有餘了。
或者回老家包地,再把畢業以後扔下的單片機,FPGA拾起來,做一些農業自動化的東西,再結合我現在的web編程,創造一些農業新生態。
或者開一家燒烤,開一家有情調,有技術氛圍的燒烤,程序員可以憑工作證獲得優惠的燒烤,因為這個世界上太多的程序員需要安慰。
只要你想活下去,總會活下去。
我想每一個程序員都應該想過這個問題吧
首先,程序員行業普遍加班較多,年輕力壯還好,加班身體也扛得住,年紀大了就不一定了。
其次,步入中年後,你的責任可就不止工作了,你是家裡的頂樑柱,你是家裡的一份子,你要抽時間來陪伴你的她或他,陪同孩子老人吧。
第三,程序員行業技術日新月異,新技術層出不窮,你不可能跟小年輕拼記憶里,拼學習能力,所以你需要考慮轉型。
談談出路:一是堅持一個行業,精通業務,轉行做管理;二是年輕時做好技術積累,可以出書,寫博客做技術專欄,也可以做培訓老師;三是轉行自己創業或是轉移到一個對年紀要求不那麼大的行業
最後,祝所有即將步入中年或已入中年的程序員順利找到滿意的發財之路
1、轉產品經理、cto、管理層,如果往這些方向轉的話,建議平時工作中多管一些「閑事」,除了變成之外,例如產品同事的討論也多參與,多思考從產品上怎麼發展這個產品,對於轉型有很大的幫助。
2、未來編程肯定會往中小學生教育方面發展,可以考慮轉型做編程的教師。
推薦一本對我自己影響比較大的書:《軟技能-代碼之外的生存指南》,裡面涉及生活習慣養成、思維方式等等,凸現技術中人的因素,閱讀這本書可以全面了解軟體從業人員所需要知道的所有「軟技能」
⑶ 一枚程序員的跑步之路
如果有人問我,2020年,你堅持最久的習慣是什麼?我會不假思索的說是「跑步」。這個問題同樣拋給你,你會如何回答?
轉眼間已到年末,令人難忘的 2020 即將過去。又到了做年終總結的時候,我也隨大流做一個年終總結,不過是「跑步年終總結」,同時也分享下自己跑步一年來的感受及經驗。
曾幾何時,我以為自己是那種吃不胖的體質,從小到大都屬於比較瘦的人群。整個大學期間,體重也極其穩定,一七幾的身高加上不到120斤的體重,那個時候很想再漲十斤肉。
畢業以後,個人生活習慣改變了很多,外賣逐漸吃的多了,也不怎麼運動了,經常上班久坐。長此以往,體重逐漸開始上升,有一次去超市購物,順便稱下體重,驚奇的發現自己的體重已經突破了 130 斤。每次回家,老家親戚朋友都說我吃胖了,此時我也沒有特別注意,覺得原來太瘦,長胖點也挺好。原本以為體重會慢慢穩定,沒想到仍然在增長,到了 2019 年 10 月份,巔峰時候體重到了 140 斤出頭,畢業短短兩年,體重卻增長了小 30 斤,歲月果然是把豬飼料。望著自己大了一圈的臉龐及逐漸隆起的肚腩,此時的我下定決心,是時候開始鍛煉減重塑形了!
跑步可能是最容易入門的一項運動了,每個人都可以跑,幾乎不受時間和空間的限制。我從 2019 年 10 月中下旬開始跑步,剛開始跑總是枯燥且勞累的,跑跑走走兩三公里都是比較困難的,每次跑完都喘的不行。那時的我也想過放棄,但想著剛開始就想放棄,也忒不行了,於是慢慢堅持了下來。
漸漸的,發覺只要堅持就有進步。我可以跑完 5 公里了,跑完不喘了,逐漸體會到了跑步的樂趣。跑步一個多月以後,5 公里平均配速終於達到 6 分內,這是當時朋友圈的記錄。
好像在哪看到一個說法,如果你連續三周經常做某個事情,就可以說你養成了這件事情的習慣。跑步也是一樣,當養成習慣後,這一切似乎變的簡單許多。我逐漸開始享受跑步,到了跑步時間會不自覺想起去跑步。隨著跑量的堆積,我的配速提升到了 5 分內,即使到了炎熱的夏季,我也經常出門跑步,這幾條朋友圈記錄了我當時的心境。
跑得多了,有時候也需要突破一下自己。大學時候學校運動會有男子萬米長跑項目,當時我覺得能跑完 10 公里的同學都特別厲害。某個周末下午,我覺得是時候突破一下了,於是順其自然的跑了人生中第一次十公里✌️✌️。到了 12 月中,我的總跑量也突破了 1000 公里,用時一年有餘。
跑步一年多以來,除去中間因疫情中斷了兩個多月,其餘時間不敢懈怠,每個月都有堅持跑步。人都是有惰性的,養成的好習慣一定要保持,一旦中斷可能會中斷很久。
跑步也讓我收獲了很多,除了體重下降,它還可以增強我們的心肺能力,鍛煉我們的意志力。同時跑步也會舒緩壓力,當有進步時也會獲得成就感,養成規律的跑步運動,我們的生活也會更加規律。
這里也拉波仇恨,放下我的減重曲線圖😉,一年下來,減重了將近 20 斤哦!想減重塑形的各位小夥伴,跑步吧!
對於跑步,我也是野路子出身,一些經驗教訓都是自己摸索的。作為一個業余跑者,這里斗膽分享幾點跑步相關經驗,想入門跑步的小夥伴可以參考下。
室內還是戶外
我都是進行戶外跑的,如果你家裡有跑步機,可以選擇室內跑。我的建議是天氣允許的情況下最好可以戶外跑,在戶外跑步感覺更開闊,還可以看風景。
可能你要問了,怎麼選擇戶外跑的場地?我的建議是附近若有學校操場或公園健身跑道的話,這類場地是優先選擇的。實在沒有也可以選擇一般馬路跑,不過要注意行人。不要選擇太偏僻的場所。
跑前跑後要熱身拉伸
無論你是剛入門還是有經驗的跑者,跑步前一定要做好熱身活動,可跟著一些跑步軟體上的熱身教程一起做,一般跑前熱身要持續十分鍾左右,為防止受傷,一定要充分熱身後再進行跑步。跑完後要慢走會,然後進行跑後拉伸,活動下腳踝及大腿。
入門初期不要想太多
剛開始跑步要量力而行,從慢跑兩三公里開始,覺得累了就停下走走。動起來就算成功,堅持一個月就算入門。不要想著立竿見影的看到效果,跑步一個月體重沒變化就再多堅持幾個月。
關於跑步時間
每個人的空閑時間不一,跑步時間也要因人而異。如果你習慣早起,可以選擇早上晨跑,如果你晚上有時間,那可以選擇夜跑,周末空閑也可以選擇傍晚跑。無論哪個時間,只要跑了就有收獲。
網上有觀點說哪個跑步時間比較好,但我們都是打工人,不是可以隨時抽時間跑步的,跑步時間建議自己慢慢摸索。我一般是晚上跑步,周末會選擇下午四五點跑。飯後不宜跑步,一般要選擇飯後至少一小時後。
關於跑步裝備
對於跑步裝備,我研究的並不算多。一切以舒適為准,選擇一款合適的跑鞋很重要,如果你是剛入門,各大運動品牌的基礎跑鞋都可以先試試,等以後你跑了一段時間後,可以再根據自己的情況選擇跑鞋。
跑步服裝一般選擇速乾衣,溫度高於 15° 可以穿短褲短袖跑,10° 左右可能就要穿長袖長褲了,再冷些就要穿兩件了,內層速干,外層保暖防風。特別是冬天戶外跑,要注意跑步,跑完後要及時加衣。當溫度低於 0° 就不太建議戶外跑步了。
關於跑步過程
勻速跑是比較推薦的跑法。穩定的配速可以讓你比較輕松的堅持下來,同時跑完後身體的恢復較快。不要過分追求配速。
冬天身體比較寒冷,可以選擇慢跑,等身體完全熱身後,可以再提高配速。如果你想提高自己的耐力,可以嘗試下「LSD訓練」,即長距離慢跑(Long Slow Distance),放慢速度,跑下 10 公里、15 公里甚至更長距離。
關於跑步頻率
跑步不是越多越好的。學會跑步也要學會休息,運動過量極容易受傷。你如果每次跑 5 公里的話,可以跑一休一或者跑二休一,一般一周跑個 3-5 次比較合適。當然如果你非常有經驗且身體素質很好,可以適量多跑跑。
關於跑步受傷
跑步過程中,一定要注意不要受傷,當身體出現異常時,要立即終止跑步。跑步會對膝關節造成一定的磨損,要注意防護。如果你的鞋子不太合腳,可能還會出現水泡或趾甲變黑的情況。
不是所有人都適合跑步
這里說下,跑步只是各類運動中的一種,並不是所有的人都適合跑步。膝關節有損失或體重過大的人群不適宜跑步。對於體重過大的人群,跑步對膝關節的沖擊會更大,跑步要更加註意,也可以選擇慢走等其他運動。
碎碎念了這么多,感謝你可以看到這里。寫了這么多,還是想做個記錄吧,同時分享幾點自己的跑步經驗,如果能幫到各位,我也是很開心的。
這里也提醒下,減重塑形不只要跑步,同時也要注意飲食哦。個人覺得,跑步對於減重還是很容易出效果的,而且你養成習慣後,會覺得跑步使一種樂趣,既鍛煉身體又愉悅自己,何樂而不為呢?
2020 年即將過去,要不要給 2021 年立個 flag 呢? 希望當問你「 2021年,你堅持最久的習慣是什麼?」,你也會不假思索的說是「跑步」!
各位小夥伴有沒有相關運動經驗分享的,或者想立個 flag 的,在評論區暢所欲言吧。
⑷ 為什麼國內程序員都很少進行代碼重構
說到代碼的重構對於國外的程序員提到的比較多,特別是大型的開源工程,基本上一個模塊或者函數的實現會反復的修改,一個文件能被修改成千上萬次,曾經訂閱了linux內核組的郵件,每天的收到的修改文件成千上萬,有時候一個文件都能被修改上百次,對於文件修改最瘋狂的是google的chrome源碼,重構的次數,讓你覺得每天都在重寫但是功能上感覺越來越流暢。為什麼我們周圍的程序員絕大部分時間做的不是這樣的事情。
為啥從直覺上覺得老外的寫的代買質量比我們的要高,我們國內的程序員絕大部分的時間是在趕進度,准確的來講忙著增加功能和修改bug,其實也從側面反映出為什麼國內出不了android以及Linux等影響深遠的 科技 創新,從全球開源代碼的佔比就可以看出,差距還是很巨大的。
為什麼覺得老外寫的代碼比我們的強?
1.國內軟體發展主要階段還在解決有沒有,還遠談不上強大
中國的軟體經過近幾十年長足的發展,已經取得了巨大的成就,特別在互聯網行業已經有幾個巨頭躋身世界前列了,最近炒的很熱的臉書的用戶數據泄密事件,作為當事人扎克伯格,也在論述中提到中國有幾個很厲害的互聯網公司,這說明中國在互聯網領域還是取得了相當大的成就,但是在一些核心的領域,或者門檻很高的領域差別還是非常巨大。
任何事情在發展的初級階段首要考慮的是不是有沒有,所以如同創業初期的公司會選擇短時間內搞出來個產品,哪怕是不成熟的產品,然後快速的投入市場,根據市場用戶的反應同步追蹤問題,等到產品差不多穩定,並且產品在市場上有了一席之地之後,後續的事情就要考慮優化功能,對裡面的代碼或者產品的性能進行全方面的提升,目前國內大部分的互聯網一般比較年輕,還在解決有沒有的問題,相信隨著時間的推移以及國內軟體的發展,也會有大量的高質量的開源框架代碼出來,但這一切都需要很長的時間。
所以國內的程序員大部分時間都是在趕進度和根據需求完成功能代碼。
2.軟體產業的底子還很薄弱, 歷史 積淀還不夠
舉個很典型的例子,現在很多國內的程序員到了30多歲就開始考慮後續的轉型了,因為後面的輕輕人會帶來很大的沖擊,所以大部分的30多歲的程序員都在考慮自己後路,都要考慮轉型的問題。老的有經驗的程序員反而轉型去做管理或者合夥創業了,哪有幾個還在安心搞技術,年齡大了還在搞技術的還被人鄙視,覺得自己沒有出息。
但是在國外寫代碼是一種很常見的職業,和別的工種沒有多大的差異,40,50歲了寫代碼也是比比皆是,做軟體是一種技術工種,經驗的佔比是很高的,所以老程序員寫出來的代碼更加有深度,穩定性更高,一切的根源還是產業的發展不夠成熟,需要時間和 歷史 的積淀,從這方面講國內的軟體整體產業還是比較薄弱,從業人員的整體素質和工作氛圍還有待慢慢的成熟,周圍都是有經驗的程序員在帶領著如何去重構代碼,如何提升代碼的質量,而國內大部分的程序要還是被產品經理鞭策著增加需求和修改代碼。
3.公司的文化差異
目前很多的中國技術公司更多的追求的是短期利益的最大化,在基礎軟體的投入遠遠不夠,畢竟基礎的投入很難短期見成效,在一個具體的場景,有一個產品主體的功能已經實現了,也能在用戶那邊投入使用了,一般的公司很難拿出時間來,讓你做代碼的重構,畢竟這種事情很難直接產生經濟效益。這與公司本身的文化差異有很大的關系,重視的技術或者懂得技術的公司對於這方面相對比較重視,反之就差很多。
小時候課本上就說著我們落後100年,所以高樓大廈不是一天建成的,所以在追趕的道路很漫長,所以承認存在差距,然後努力加倍的去追趕。
Time is money. 以目前國內互聯網的情況,需求應接不暇,程序員基本上都是被需求與業務趕著走,時間非常緊張,在這種情況下,程序員很多時候唯一的選擇就是趕緊實現需求的功能。所以,一個項目下來,代碼基本上都變得非常非常的「垃圾」。
也有很多程序員想過在項目結尾的時候進行代碼的重構,基本上每個程序員也都知道重構代碼的好處,但是並不代表著真正能做起來。還是那個原因,國內互聯網的速度太快,需求應接不暇,做為程序員,基本上沒有時間來做這件事情。
而另外一個原因是跟團隊負責人有關。若團隊負責人能夠意識到重構的好處,那麼他可以為此單獨劃分一段開發時間出來,讓大家分別負責一個模塊進行重構,這都是可以安排做起來的。這也需要團隊負責人如何在需求人員的需求與代碼質量的進度上做一個平衡,進行統籌安排。
最後我想說一個可能很少意識到的原因,那就是人員流動問題。國內互聯網目前人員流動非常的大,尤其是北上深這樣的互聯網發達的城市,基本上是平均兩年就會走一大波人,在這樣的情況下,也會考驗從業人員的職業道德,即我到底要把代碼寫的多好,要把代碼的可維護性做到多好,其實這都是從業人員自身需要考驗的問題,因為完成一個功能很容易,但是要考慮的全面就是另外一回事了。而人員流動帶來的另一個問題就是有一些代碼是很難看懂的,即有些代碼在人員離開後成為了「 歷史 」,無人敢動。這也會阻礙著軟體的重構工作的進行。
從我所講的這幾種情況來看,重構其實是大家都能知道的好處,但是真正實施起來卻又有現實的約束,需要負責人來做這樣的統籌安排與推動。
成本太大
大多數軟體產品的開發都是經過了很多開發人員的付出,如果進行代碼重構需要了解產品、了解框架、了解代碼邏輯,這個過程會花費大量的時間和人力成本,對於企業來說,效益是第一位的,與其花費精力進行效益不大的產品重構,不如去承接更多的項目來的實在。
領導決策
由於大部分企業的老闆都是非技術人員出身,他們更關注效益和客戶,為了符合企業的發展,在進行產品開發時會更多的採用新技術來吸引客戶,花費精力重構代碼不如開發一套新產品或者開發更酷炫的效果更具有實在意義。
代碼規范不足
由於國內互聯網較之國外起步較晚,很多企業發展時間較短,加之人員流動比較大等多方面的因素,很難形成標准、嚴謹、行之有效的代碼規范,所以很多技術人員在開發時都是根據個人風格習慣在開發,等其他人接手代碼時,缺少相關標准和文檔,很難理解代碼邏輯,花時間去了解代碼、重構代碼不如直接推翻重做來的方便。
客戶定製化需求
部分企業創業初期對企業信息化是不夠重視的,只有企業發展到一定程度才會考慮信息化建設,而由於業務的限制,大多數標准化的互聯網產品都很難滿足企業的實際需求,需要進行大量定製化的開發,對於互聯網企業來說,即使產品開發足夠完善,在實際項目中也需要進行擴展,倒不如直接在項目中進行調整。
程序員的發展限定
在國內很少有終身的程序員,大部分都會逐漸轉向銷售、售前、項目經理、產品經理等崗位,而這些崗位則需要了解業務、了解客戶,對技術的需求反而不會太高,所以與其花時間去專研技術不如將更多的精力用在業務和項目層面。
代碼能夠重構對底層框架要求深度掌握、且代碼框架本身要足夠靈活,而國內絕大部分技術人員都是停留在對框架的使用層面、少數可以完善、結合使用,極個別的在做同語言山寨或者換一種語言重寫,能夠對產品體系進行把握、與時俱進擴展實在是鳳毛麟角。隨著國家的經濟提升、IT行業逐漸成熟,在我國這么多IT公司基數下,即便是鳳毛麟角的概率,重視基礎框架、積累萃取、不斷迭代完善的一些技術公司也會慢慢嶄露頭角、涌現出來的。
【國內程序員很少進行代碼重構】,這個現象雖然沒有什麼調查統計,不過我寫了十多年代碼,也發現身邊的程序員大多數是這樣的,【寧可寫新的代碼,也不願意重構老代碼】。下面我也談談自己的看法:
系統沒有問題,就是最大的功勞
我見過的大部分的傳統行業的軟體公司或IT部門是這樣的(互聯網公司不太了解),「只要系統穩定,那麼就是最大的功勞」,而保持系統穩定最好的方法是什麼? 就是盡可能的不要動系統!
可能很多人不能理解,但很多公司確實是這樣,甚至公司對項目的考核標准中,項目有什麼突破的權重很低,是否有生產事故的權重很高。所以很多「機智」的項目組成員,千方百計的不接需求,或者把需求推給別的項目組。在這種單位裡面,別說重構了,新代碼都寫的不多。
測試覆蓋度太低,重構代碼沒辦法保證質量
代碼重構,很重要的一個問題:「重構後的代碼誰來保證?如果影響到原有的功能怎麼辦?」
這時候很有效的一個方法,是使用各種自動化的測試來保證重構代碼的質量。
但是,大部分公司,不管是單元測試還是其他的自動化測試,都是不健全的,甚至是沒有的。所以只要不是被逼不得已,程序員寧可重新寫一個方法,也不願意重構之前的代碼。
其他
進行代碼重構不是一件容易的事情,務必需要對需求熟悉;對代碼 歷史 變更熟悉;對代碼框架,模塊熟悉;對產品更新迭代做好風險把控,時間成本把控……
進行代碼重構需要能力非常高,責任心非常強的人進行,甚至需要一個優秀的團隊完成。
為什麼要代碼重構?理由一大堆,我認為主要有兩條,一是原代碼已不適合擴展新需求,二是原代碼已擁腫不堪,亂七八糟。
為什麼很少重構?除了上述分析外,還有其他因素,如人員流動快,原團隊原作者早已不知何去何從了。又如需求和業務繁多,完成工作開發都累得半死不活,日理萬機似的,哪有時間和心情重構?
謝謝大家。
1.國內程序員技術能力不足以進行代碼重構
大量的軟體從業人員連編程規范都不熟悉,怎麼可能做代碼重構?更多的人只會寫寫hello world,只會拷貝粘貼小段代碼,連if else這種語句都寫不清楚甚至漏掉邏輯,連面向對象的編程思想都沒有,談何重構?
2.國內程序員的溝通能力說服能力一般。
進行軟體重構,必須說服經理,讓經理相信重構會帶來軟體質量的提高和故障率的逐步降低,這樣經理才會安排人力進行重構。
3.國內軟體開發更注重bug的及時解決
國內軟體開發大量的人力被分配到解決短期的某個bug,沒人抽時間思考如何長久的徹底的解決軟體缺陷,其實解決bug不重要,找到軟體的缺陷或者性能低下的地方才重要,這些才是重構的點。國內加班加點疲於奔命式的開發,沒人考慮bug率是否長期內能夠收斂,總是先解決眼前的問題再說,處於一個永遠解決bug的死循環里。
這種工作模式是愚蠢的,不是smart的。
軟體開發,一定要動腦子,不要蠻干,這不是耕地,力氣大就耕的多。
重構代碼的目的說白了,就是讓軟體開發人員更自由。
謝謝樓主的問題,這是一個我特別想回答的問題?
為什麼?因為,第一,我是一個對代碼有潔癖的人,受不了一坨,一坨那樣的代碼。第二,我是一個踐行Clean Code 的人,給大家我主要負責的一個項目的一組數據(JAVA),總代碼量20萬行,UT coverage(單元測試代碼覆蓋率)82%,代碼重復率0.5%,代碼規則(sonar)違反(Code issue)0,甚至連最低的違反都沒有。
也正是因為我的項目在實踐Clean Code上的數據,我經常去給不同的團隊做分享,也對團隊對這個重構不太上心有一些理解。
大致以下幾個原因。
第一,也是最多的,交付壓力,大部分人都會抱怨,你看我們有這么多新功能,還有那麼多bug,根本忙不過來,哪有時間重構?
第二,重構意識不足,老闆,管理人員總是希望這個我們要有,那個我們也要實現?為什麼?因為別人有,別人有我們沒有可能會造成用戶流逝。即使有一些有見識的程序員和老闆反應這個重構問題,但是重構從來不是高優先順序的。畢竟,現在的軟體的生命周期可能很短。
第三,人員流動性大,這個是我聽過最奇葩的一個理由,我問一個來聽培訓的哥們,說你代碼寫成這樣,以後怎麼維護?這個哥們說,我也知道難維護,但我明年就跳槽了。
第四,設計上就不需要重構,曾經給一個保險公司做分享,我本人也是做金融相關產品後台的,我就問你們這樣寫代碼,可能三四年以後就非常難維護了,還是要盡快重構。他們的回答是,我們不重構,我們只重寫。什麼意思那?就是一個系統,三四年以後在寫一遍。
第五,程序員本身的問題,可能第一寫單元測試,修改命名,修改代碼結構,是一件很沒有成就感的事情,也是一個沒有多少附加值的事情。畢竟現在你去找工作,這個代碼質量方面的問題會問得很少。
第六,我見過的我不能反駁的一個回答,我的英文太差,不能很好的命名,而我也不想學英文。
第七,反正我已經實現了功能。
最後,用一句話來提醒程序員們,重構是多麼重要。
出來混遲早要還的,挖了坑遲早要填的。
在國內,【重構】這件事是程序員最喜歡做的事,而不是公司喜歡做的事。
但程序員喜歡並不能影響公司的決策,所以,國內的現象就是軟體系統很少有重構。
其根本的原因在於,國內的公司所推出的系統大多沒有重構的價值。
1、國內的互聯網公司存在這樣一種快節奏,那就是發現一個有價值的創意,就馬上進入開發,開發完成立即上線,並立馬推廣使用。這是一種快速試錯的模式,一旦發現系統在 社會 中沒有引起反響,那就馬上把系統再下線。這種情況下的系統哪來的重構價值呢?
2、即使一個系統上線成功了,也積累了大量的用戶,貌似為了系統的穩定性和性能,可以有重構的機會。但事實上不是,國內公司仍舊不會選擇重構,因為重構帶不來新的價值。所以,公司多數都會在系統上添加新的功能來吸引新的客戶,而不會考慮重構現有系統。
總得來說,引起重構的原因在於能夠有持續的價值。沒有價值的事,企業當然不會做,僅是程序員的一廂情願而已。
你只是見到了你所在的公司現象,不代表所有,也不能代表大部分的。
代碼重構還是存在的現象
代碼設計爛,經常出問題、擴展麻煩、維護心累、數據混亂、結果不清醒、模塊劃分混亂
就可能要考慮到重構了
呵呵,
老大說:
你趕緊去修復一下這個bug,
還有幾個功能沒有實現,加班搞一下,
pm 說:
這個功能改一下,
還有這個,界面重新調整一下,
這個業務流,現在不一樣了,
客戶需求需要多幾個功能,
老闆說:
這東西下周能出來嗎?