1. 工作一到五年的Java程序員遇到瓶頸應該如何提升
工作了5年的Java程序員,該如何提升,做了3~5年Java開發,你已經積累了不少項目經驗,擴寬了技術廣度,也許已發力成為團隊管理者。到了這個階段,大家卻常有這種感受:感覺自己卡在瓶頸進步緩慢,技術水平很難像早期一樣實現大幅突破?
其實大家往往忽略了這一點——提升自己的架構認知(工作5年左右程序員必須重視架構認知的提升,這會很大程度上推動你今後的成長)。架構的本質在於面對業務場景給出優雅的解決方案,使得業務能夠快速迭代和持續交付,從而達到降本增效的目標。提升架構認知高度,就像達克效應所描述的一樣,要敢於從愚昧之巔跳到絕望之谷,通過爬升開悟之坡,從而達到架構認知的巔峰時刻。到達巔峰時刻也就掌握了架構背後設計的哲學,面對具體業務場景在架構層面你便能夠輕松應對,以無招勝有招。
提升架構認知,要緊抓3個關鍵點:業務洞察力、技術視野、原創力(執行力)。
1.業務洞察力是技術戰略層面的問題,在當下能夠做出合理的判斷,清楚公司做什麼事情收益最大;
2. 技術視野即技術選型能力,是技術戰術層面的問題,在清楚做什麼事情後,需要進一步解決怎麼做的問題,也就是能夠給出合理的技術選型方案:是完全基於開源的方案,還是基於開源二次開發的方案,還是完全自研的方案;
3. 原創力(執行力)是技術落地執行層面的問題,一旦技術設計方案確定後,需要能夠快速Rush完成。
這3點層層遞進,最重要的是先把技術戰略問題思考清楚,然後再進一步解決技術戰術問題,最後是快速落地執行的問題。
工作5年左右的程序員,在原創力(執行力)層面比較有競爭力,往往欠缺技術視野以及業務洞察力。後面2點更加重要,這2點解決的是架構設計哲學問題,是架構師能夠持續擁有競爭力和影響力的立身之道。
舉個場景的例子來詳細說明:一提到分布式鎖問題,大多數人想到的方案是基於Redis的Master-Slave模式來實現。這個實現方案行不行?分布式鎖本質是一個CP需求,基於Redis的實現是一個AP需求,乍一看基於Redis的實現是無法滿足的。脫離業務場景來談架構都是耍流氓。
從技術戰略的需求層面來看,如果分布式鎖在極端情況下獲取鎖的不一致,社交業務場景能夠接受,那麼基於Redis的實現是完全可行的。如果業務是交易場景,分布式鎖在極端情況下獲取鎖的不一致性無法接受,那麼基於Redis的實現方案是不可行的。在鎖強一致性的場景下,需要採取基於CP模型的etcd等方案來實現。
2. 我是一個IT程序員,工作一年了,感覺上班的時候效率不高。沒有學的什麼東西。郁悶,我該怎麼辦
那是因為你太安逸了,技術沒怎麼提高,工作也沒有什麼挑戰。這時候你需要在能力上有所提升,因此還是建議業余時間多學習點東西吧。
你可以看下這里,有很多技術資料,希望對你的能力提升有幫助,謝謝!
3. 為什麼程序員到一定年紀開始關注管理相關的內容,不再在技術上深入下去
導致目前不少程序員在35歲以後不再從事研發工作的原因主要有以下幾個方面:
第一:軟體開發崗位的工作壓力較大。程序員的工作壓力普遍偏大,尤其是互聯網公司更是如此,項目的開發周期短,加班更是家常便飯。
第二:程序員的知識結構更新速度快。程序員不僅要承受較大的工作壓力,同時還面臨知識結構更新的問題,這就導致程序員在忙碌的工作中還要抽出一定的時間來進行自主學習,這是對程序員工作能力和學習能力的雙重考驗。
第三:職位提升。由於我國在互聯網領域發展速度非常快,導致人才培養速度明顯跟不上行業的發展速度,所以不少程序員在35歲以後普遍走到了管理崗位上,以便於培養更多的專業開發人才,這也是一個比較常見的情況。
文章圖片4
說白了,35歲了,如果你還是普通的碼農級別,而沒有達到「碼管」級別,思維枯竭了,中年的身體體質出來了,家裡有娃要開始拖累了,有哪個大型的民企會養著經常因家庭和身體健康原因而請假的高齡碼農?這確實是很一個很現實很殘酷的問題,因為35歲的你無法適應996的強度了。
4. java程序員幹了一年了,覺得沒什麼進步,怎麼辦
其實這真是你的一個優勢 你現在搞運維 應該時間很充足 為什麼不利用這個時間好好學習那些原理那些思想 我深刻理解只用基礎才是硬道理 當然基礎不是你會封裝繼承多態 而是你寫的每個關鍵字都有預見它 我舉兩個很基礎的例子 System.out.print() 我以前的理解就是死記硬背 現在感覺System類裡面應該有個out成員變數 out作為System的一個成員變數 肯定是全局的 不可能還要new個System()對象才能得到它 那多浪費內存 所以必須添加static 另外out既然給大家用 就要有個規范性 肯定不希望別人對它進行修改 所以必須添加final 然後根據out得到printStream的方法print就可能實現列印了 還有一個hashmap的hashcode和equals 原本我一直納悶已經有equals方法為什麼還得有hashcode方法 用equals效率太低了 每個都得查找 浪費內存 用hashcode演算法得到hashcode值 在map.set中就已經為鍵加上了hashcode值 然後根據hashcode立馬找到了你要實現的值 但是hashcode演算法不能確定每個都是唯一的 所以雖然hashcode相等了 還是要實現object類的equals方法 如果相等就不用操作了 如果不相等就散列到旁邊其它的空間
當然我很多也不懂 我在某軟體公司也搞了一年了 基本上也是菜鳥 我認為基礎最重要 思想最重要 技術再新底層你搞明白了 還擔心你比不上所謂的coder嗎
5. 程序員的工作有多難,為何職場當中程序員最容易被淘汰
主要是因為程序員這個職業面對的新鮮事物發展的太快,如果不認真的學習和接觸新鮮事物,很快的就會跟不上潮流,跟不上這個時代。所以程序員的工作壓力非常的大,幾乎可以說是每天加班到很晚,這樣才能保住自己的職業。所以說,程序員他的工作壓力是非常的大的,而且很多的突發性疾病在這一行業也是非常常見的。
當然也是因為自己平時非常忙於工作,並沒有太多的時間來注意身邊發生的新鮮事物以及新鮮科技。因為我們都知道,需要靜下心來學習才是最好的方式。但是他們平時會注意養家糊口,所以他們會變得非常的機械性,然而程序員這項工作不能有機械性的,工作需要非常富有創造性。所以淘汰是很正常的事。
6. 我是一個IT程序員,工作一年了,感覺上班的時候效率不高。沒有學的什麼東西。郁悶,我該怎麼辦
效率不高是什麼原因呢。是工作量太少了,那就把剩下的時間學一些東西。若是給的任務做不來,就得向同事請教,自己主動上網查,把不懂的知識補全。程序員一定要多練,只看是不行的
7. 程序員35歲後就淘汰,為啥不是越老越香
程序員這份工作並不是越老越吃香的一個職業。因為自己了解和從事過這個行業,在這方面有著非常深刻地體會。
程序員在很多人眼中是一份高收入的工作,但是高收入的背後往往有著非常慘痛的代價,尤其是年齡上的問題,讓很多程序員不得不面臨轉業或者是選擇第二職業的考慮。
其實從整個中國互聯網的行業以及包括未來的發展方向,中國也肯定會出現大齡程序員,這也是未來的一個發展方向。因為專業人才和技術上的沉澱才是老程序未來的發展優勢,也是整個互聯網行業所要解決的人才問題。
8. 為什麼老程序員的效率如此高
程序員老師傅的解決問題能力要比初級甚至是普通的程序員都要高出很多倍,所以每個軟體公司都會在保留1,2個經驗豐富的資深級軟體工程師,這樣在遇到項目或者產品難點的時候能夠力挽狂瀾,這種水準的程序員也是很多公司追求的對象,而且和年齡沒有太直接的關系,編程最終的就是給出解決問題的方案,從解決問題的角度出發解決方案還是非常多,但是在不同的人會給出不同的解決方案,但是有經驗的程序員在解決問題的時候就會思考的比較多,不容易導致引入新的問題。
編程能力最直接的表現不是寫代碼的能力,因為隨著時間的推移時間積累夠了代碼能力自然就上去了,很多程序員在工作多年之後雖然代碼能力得到極大的提升,但是還是不具備獨立的框架或者功能復雜的模塊設計能力,所以很多人在工作多年之後工資一直不能得到上漲,這是主要原因編程的關鍵還是思路問題,關鍵點還是在於有正確的解決問題的思路,思路的切實性是需要經過項目實戰的積累。
所以優秀的程序員一定是身經百戰的經歷過項目的洗禮,只有經歷過項目才能真正意義上懂得編程是怎麼回事,而且每次經歷的項目都能夠獲取足夠多的營養出來,越是優秀的程序員經歷過項目之後知識體系構建越是完善,越是老程序員越是覺得程序深奧之初,所以老程序員輕易不動手都會思前想後把事情搞明白之後才去真正動手,所以講老程序員真正動手寫代碼的時間還是非常短,大部分的時間都是在構思其可行性,真正動手的時間會非常短所以大家看到老程序員大部分的時間都是在看代碼或者看一些資料,甚至有些人很少看到老程序員在大塊的時間寫代碼。
越是老程序員對於編程語法看的越是淡薄,編程語言到了一定層面就是工具般的存在,就是為了編程思想服務,如果還在為了編程功能實現代碼而煩惱證明了還在初級的學習階段,度過了這個階段之後就要考慮如何駕馭架構以及如何錘煉自己的編程思想了,編程的學習過程是需要循序漸進的不要覺得距離自己老程序員有非常遙遠的距離,從開始入行就要慢慢去積累不斷打磨自己的思想,希望能幫到你。
25年老程序員,20年CTO,來解答一下:
1、經驗、教訓使然,所謂虧吃多了,也就不吃虧了。
2、長久工作,養成了一定良好的習慣。
3、代碼量到一定程度,自然而然會更熟練。
4、一些非技術的經驗知識,還是需要時間來積累。
5、老程序員的思維經過多年的訓練,更有利於直達本質。
6、他們的方案可行性更高,這樣減少返工。
7、代碼質量高,測試通過率高,考慮的因素更周全。
8、代碼改起來更容易,找問題也相對容易。
9、對任務的理解更全面,能夠從更多的角度去設計程序,權衡效率、速度、性能、擴展性等各方面的因素。
10、也不是所有的老程序員都能這樣,這個還是跟這人的學習能力有關系,所以大家是能3年變成老程序員,還是10年,就看自己的個人努力了。
在IT編程開發的過程中,老程序員開發的效率會非常高。比如:一個網站模板,新程序員可能要花上一個星期的時間才可以完成,而老程序員卻可能只需要1-2天就可以做好。這是為什麼?莫非他們天生就有神相助。非也,這所以會這樣,據我分析,主要有以下幾點。
因為長期的編寫代碼,所以,會碰到非常多的問題,然後就會去解決這些問題,這就讓老程序員有了豐富的實戰經驗。反觀新程序員,碰到一個問題,因為以前沒碰到過,所以要花大量時間去解決。而老程序員碰到問題,因為以前解決過,所以,很快就會弄好。
在IT編程中,很多的代碼都是可以用來搬運的。因為長期的工作,老程序員會把一些功能代碼記錄或儲存下來,以備後期使用。也就是說,他們就像記筆記一樣,把一些功能代碼記下來,以備不時之需。所以,在新的編程中需要用到時,他們就可以直接拿來就用,自然效率就高,開發就快。
老程序員在編寫代碼時,一般都會對代碼的規范和格式比較重視,使用代碼清晰有條理,閱讀代碼時就不費力氣,而且還會做好每個功能代碼的注釋。這樣,不管是對現有開發,還是對後期維護,都是非常有利的。如有代碼出現bug,可以很容易地找到,這同樣節省了大量的時間。
老程序員在編寫代碼時,會先從大處著手,把大的框架給弄好,然後,再對整個編程的細節有針對性地編寫。這就好比開發一個高樓大廈,開發商會先把主體框架搭建好,然後,再一層一層地去弄每一層樓的細節。這樣,往往目標會更加清晰,只要按步就班地執行計劃,就可以很快完工。
熟能生巧
為什麼老程序員的效率如此高?
首先, 敲代碼的效率 != 工作效率
並不是老程序員效率就高,而是程序員要提高效率需要一些方法,這些 方法的學習和掌握需要一定的時間 ,結果就是老程序員的效率會相對要高一些。
所使用的編程語言的熟練程度我經常會看到一些新手程序員在寫代碼的時候需要頻繁的去查看文檔或者是網路搜索各種介面的用法,有時寫一個功能要查個幾十次,很多時間都浪費在了搜索上,真的寫代碼的時間很少。
而一個在這門語言浸淫了幾年甚至是十幾年的程序員,對這些介面瞭若指掌,使用的時候信手拈來,還知道介面裡面的實現機制,可能會碰到哪些坑也一清二楚,減少了很多bug的出現。
你是不是有把那些介面拿出來反復琢磨,去研究它的源碼,認真地了解它呢?
對編程工具的掌握程度工欲善其事,必先利其器。
一個好的編程工具有很多可以幫助程序員減少工作量的功能,比如代碼重構、自動格式化、語法檢查、代碼提示和補完等等,掌握這些也能大大提高開發效率。
隨著IDE的發展和進步,現在很多工具都不需要太復雜的學習就可以操作,所以這個是一個投入小而回報很高的事。
業務需求的熟悉程度代碼是為業務服務的,我們首先得理清楚業務邏輯,才能知道要怎麼寫代碼,而新手對業務不熟悉的時候,光是弄明白業務需求是什麼可能都需要不少時間,有時候還可能會錯誤理解需求,導致寫出的代碼文不對題,只能重寫。
所以多思考,多問,多討論,不會花太多時間卻會減少很多時間的浪費。
調試的效率寫出來的代碼還需要經過測試,如果有bug就需要調試了。
很多新手只重視寫代碼的工作,對於怎麼調試卻忽略了,有的人甚至只會使用列印功能一步步通過排查找bug,並且對寫出來的代碼沒有概念,連bug大概可能在什麼地方也不清楚。
老練的程序員不只是靠列印,有時候只看報錯信息就能知道bug大概在什麼位置,配合上列印還有斷點功能很快就可以找到bug的位置,更不要說他們很清楚怎麼寫出容易調試的代碼。他們會在寫代碼的時候就對可能出問題的邊界條件進行檢查,並且會利用自動化測試來減少工作量。
寫代碼之前的構思新手很容易犯的一個錯誤就是拿到功能需求馬上就開始寫代碼,可能寫到一半會發現前面的代碼有問題需要推翻重來,或者是寫錯了方向。
老程序員寫代碼之前會先進行構思,把功能需求拆解,分成不同的小模塊,甚至會在紙上把這些想法畫下來,基本上在這一步就把問題已經解決了,寫代碼只是把解決方案用代碼表達出來而已。
所以,如果你也想做一個十倍程序員,記得不要只是埋頭寫代碼,還要刻意去練習這些提高效率的好方法!
在寫代碼前,代碼差不多已經刻在腦子里了,寫代碼的時候,總覺得雙手敲鍵盤的速度趕不上腦子的速度,寫出的代碼幾乎不需要調試,你說效率高不高?
因為老程序員經歷多了,一些常規性的BUG基本不會出現,對用戶需求也能做到最大的完善,還有對需求增加和修改有個大概了解,會提前預留介面和模塊,還有對用戶的硬體有了解,在程序上會有相對優化。所以老程序員寫的程序不一定美觀,也不一定最簡化,但是可能是最合適的,可惜中國的程序員剛成熟就要面臨失業。年輕的程序員啥都不懂,片面追求性能,美觀簡潔的程序,在兼容性和實用性上大打折扣,不顧用戶的使用情況和硬體情況,項目一上線問題多。
老程序員分為兩種,一種是年紀老,常常被換做「老X」,一種是能力老,常被人換做「x老師」。
老程序員之所以效率高,離不開幾點:
程序員是一份高強度的腦力工作,能成為老程序員者,智力,體力無一不是同齡人中佼佼者。能夠更加效率的工作自然是理所應當,方符合家有一老,如有一寶的普世價值。
祝廣大碼農早日修煉成為這樣的老程序員。
老程序員,碼代碼速度並不見得比年輕人快。但老程序再面對需求時,能很快抓住技術關鍵點,難點,重點,如何突破都瞭然於胸。當出現問題,老程序員有經過實踐的診斷定位排錯的邏輯思路與手段 。其實這些熟能生巧是一方面,學習與實踐 領悟是另外的方面。年輕人觀察能力強 悟性高,也會青出於藍
老成員就是圖書館,硬碟存滿了各種經過調試且運行過的程序,只需要復制粘貼,效率肯定高
9. 程序員工作2年後會越來越輕松嗎
絕大部分人都是一直那麼忙的
因為你剛開始做的事情跟自己熟練後做的事情不一樣的。有些人認為工作2年後會越輕松,其實是認為程序員的工作開始的時候因為自己的技能不夠熟悉,然後才那麼忙碌的。等自己的技術水平提高了,工作就不會那麼忙了。
其實這種想法是不對的。
隨著你工作技能的提高,你所負責的事情也往往有變化。
給你派活的技術領導,會根據你的能力來分配任務的,大部分技術領導,派活的時候,都是會盡量讓所有人的工作都飽和,能力強的人做些難點復雜的任務,能力差的,就做些簡單快速的任務。
而如果你升上技術管理的崗位,你會發現更加忙了。怎麼樣合理分配任務,更好的提高團隊效率本身就是個特別難處理的問題。需要花費很大的時間和精力才能處理好這個問題。
大部分程序員工作2年後,也是一樣的忙,並不存在隨著技能的提升,工作越來越容易的情況。
10. 程序員工作繁忙完全沒時間提升自己該怎麼辦
高效利用每天的時間。
即使工作再忙,總有碎片化的時間。將碎片化時間利用好,那麼長此以往就會得到很多的積累。一個知識點通過無無數個碎片時間的學習,那麼也會得到很好的鞏固。工作的性質不一樣,那麼繁忙程度也就不一樣。程序員需要經常性加班,回到家以後基本上都是深更半夜了。當公司忙的時候,更不要說按時吃飯了。有些程序員長期加班加點,身體都已經吃不消了,更不要說去提升自己了,他們就連睡覺都是沒有充足的時間的。
1、工作忙只是借口而已。
不管多忙,睡前的時間,吃飯的時間都可以拿來利用的。這些時間經常會被大家忽視,也就是我們俗稱的碎片時間,只有將這些時間好好利用了,我相信你會比別人提升的更加快。
平時生活當中,你有遇見過程序員嗎?他們平常的工作是不是真的很忙呢?你見過最晚的加班是到幾點? 在你學習的時候有什麼技巧和方法嗎?你又是通過什麼樣的方式提升自己的呢?當你感覺到時間不夠用的時候,你會怎麼辦?