工作了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等方案來實現。
『貳』 我感覺我真的不適合做程序開發,工作一年還是初學者的水平,有點想放棄了。
其實現在的程序員有好多都不是科班出身,好多都是各個培訓機構裡面出來的,那又如何呢?其實工作是興趣所向,你說你對網站,PHP感興趣,然後學習並且得到了一份相關工作,這不是很好嘛?才一年你就要放棄了?在互聯網工作,尤其是IT,技術的更新迭代很快的,就要不斷的去學習,養成一個學習的好習慣。
我也是程序媛,剛開始工作也是網路,谷歌,不斷的用別人造好的輪子,其實沒事,只要你自己用完之後能記住,而且下次有同樣需求的時候,能夠很快的用運到,那就是你的技術積累了啊。
至於你說的邏輯問題,對於程序來說就更簡單了,只有一個基調,非0即1。在這個基礎上去疊加。慢慢來,積累……
加油吧
『叄』 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嗎
『肆』 作為剛入職的java程序員,一年時間內如何提升自己的實力,更有競爭力
剛入職,就意味著你有基礎,但是還沒有到精通,那以下這幾點你要好好看看
1.用好互聯網
在你入行的第一年,肯定會遇到各種各樣的問題,但不用擔心,這些問題其他人肯定也遇到過。
這是一個開源的時代!人們習慣將解決辦法記錄在網上。
越早的學會使用goole尋求幫助,問題就會越早得到解決。(但是在看別的代碼或解決bug的時候,不能直接Ctrl+C,Ctrl+V,要弄明白其中的原理)
2.養成良好的編譯習慣
你是公司的一員,是團隊協作來完成整個項目的,也就是說你的代碼不僅要你自己看得懂,更要讓團隊中的小夥伴和你的領導看得懂。
所以起名稱規范一些,保持代碼結構清晰,多寫一點注釋!
3.基礎理論很重要
如果你只想成為一個普通的碼農,基礎理論知識的確沒那麼重要;
但當你想往上走,想成為一名專業的架構師,數據結構、操作系統原理、資料庫原理等基礎知識是必不可少的,這些基礎知識決定了你能在技術這條路上走多久,走多遠!
4.不斷學習
這不是什麼雞湯,而是程序員界一個殘酷的現實。就拿游戲開發者來說 一個引擎unity3D,幾個月就要更新換代一次,是想,你如果不學新技術根本就無法繼續操作,如果技術一年不跟進,你和unity3D就會形同陌路。任何課程、資料都該看要看。
5.你是一個開發者,而不是一個碼農
很多新人在入行前幾年一直以一個流水線員工的心態做業務,這樣是不行的。
於自身發展來說,長期重復的工作使你接觸不到核心業務,限制你能力的拓深和發展;於企業而言,企業需要的不是只會搬磚的碼農,而是一個開發者。
6.多讀優秀的代碼
山外有山,人外有人。
世界上比你優秀的程序員太多了,想要跟著大神學習進階,還得感謝這個開源的時代。不錯的平台有很多,裡面有很多優秀的程序員們的代碼,只要你需要就可以閱讀。
希望這些建議對你有用,有所收獲。
『伍』 做了快一年的程序員了 技術仍是一般般,是不是很不合格
習慣促使我,我們不斷進步,寫出更好的代碼。如果你現在覺得自己遇到了瓶頸期或者不知道該如何提升自己,那麼這篇文章非常適合你。
6
第一個迭代版本僅僅只是起步:它能夠確切起效,那麼恭喜各位!但這並不是終點,接下來我們要讓它變得更好。
『陸』 我是一個IT程序員,工作一年了,感覺上班的時候效率不高。沒有學的什麼東西。郁悶,我該怎麼辦
效率不高是什麼原因呢。是工作量太少了,那就把剩下的時間學一些東西。若是給的任務做不來,就得向同事請教,自己主動上網查,把不懂的知識補全。程序員一定要多練,只看是不行的
『柒』 程序員如何成長
程序員首先需要提高系統設計能力。
但是,很多在企業工作的程序員的知識架構很難跟上。中科天博謝新華老師直率的指出:"現在很多程序員不是按照應該如何設計最好做得,而是按照我會什麼來做的,最終造成設計思想落後。現在做項目需要的是新的、巧的設計思想。我們可以將從無數次失敗中得到的理念告訴他們,包括如何學習,如何思考,技術變化的原因在哪裡,其核心在哪裡。這樣程序員的理解力就會完全不同。現在,對程序員的要求降低了,但對系統設計的要求提高了。所以程序員必須要提高系統設計的能力,否則永遠出不了頭。
工作一兩年的人,最關鍵的是要有一個方向感,不要太盲目,這就需要程序員有一定的判斷力。李巨鋒認為,電信行業新增的市場容量每年有1萬億,而且由於是新增市場,人員也比較容易進入。此外,中國的手機市場非常大,由前族於無線應用的迅速發展,可以預料,
已經工作兩年以上的程序員可以有幾種基本的職業規劃:技術專家、軟體架構師、實施顧問或銷售。其中程序員最主要的發展方向是資深技術專家,無論是Java還是.NET,還是資料庫領域,都要首先成為專家,然後才可能繼續發展為架構師。"盡管架構師的職位可以工作一輩子,待遇也非常好,對於科班出身的程序員最為適合,但這種工作職位非常有限。"一位畢業的學員到IBM軟體開發中心後,過了一年左右,開始請教其未來的發展,結合對方的情況,建議他先深入的技術,因為在中國架構師需要的:條件比較復雜,而且需求量也比較少。
實施顧問和銷售就比較偏向市場了,除了一定的技術能力外,需要掌握很多IT以外的知識。這些發展方向對於從其他專業轉入IT的人員更為適合。比如用友就培養了很多實施顧問,這些人加上行業背景,收入也很高。要做行業專家,就要比自己的行業客戶還了解這個產業的發展現狀。李巨鋒說:"比如煙草行業戚戚,一定要了解大的趨勢,中國最多的煙民在哪裡,其實是在山西和遼寧,煙草行業的產業政策是什麼,直接導致我的需求是什麼,這些信息對於職業發展很重要。IBM的一些顧問都是行業內的資深專家,他們的發展就非常具有代表性
對大多數人來說,首先是要專,在技術上做的比較深入,然後進行工作調整,把自己轉變為某個領域的專家,第三步,根據自己的情況,決定自己做軟體架構師還是高級的顧問銷售,另外一部分人可能就會走向行政管理,這和個人性格有關。要獲得職業成長,培訓也很有幫助。
對於更高級的技術人員,他們所關注的就不是解決基本的生活問題了。他們所關注的就是發展和成就感。從現在看,他們更為缺乏的是交流,尤其是和水平差不多或者更高的人進行交流。李巨鋒說:"我建議他們做一些國產的產品,做一些自主產權的技術。比如,我們還有產品開發的部門就在做國產資料庫設計職業規劃帶動更好的成長從中國的軟體開發人員的層次看,工作幾年以內處於初級水平的程序員占據最大的比例,至少在50%之上,高級的人員最多也就10%左右。但無論處在哪個層面,一定要有規劃,按照自己的個性和優勢做一些規劃。
一個程序員的成長,學習過程中首先要讀到好書,然後是交到好的學友,找到好的老師,在這三個外圍的條件下,找到適合的工作環境,結合自己的特點,然後在一些重要的環節上遇到適合的人和合適的項目,這樣才能成功。有些職位可能在開始的時候不適合,但工作一段時間後,可能就可以走上更高的職位。最近,IBM軟體學院就開始做一個"軟體人才庫"的項目,為的就是跟蹤技術人員的成長,給他們在合適的時機提供合適的職位。業內人士說:"IT行業良性的人員流動也是很好的。
有了一定的職業規劃,就需要補充自己缺乏的經驗,只有經歷過足夠的項目,才有可能不斷積累。對行業的判斷有一定的理解之後,對一般的企業適應起來是沒有問題的,但高級的人才需要長時間的積累。
總而言之,每個人至少三年要點評一下自己:是環境的原因,還是自己個人的原因,如果是環境的原因,可以考慮是否需要換地方,如果知道自己,可以調整自己或者設高悔陵的目標現實一些。從一個普通的程序員做起,3年時間至少能夠做到做獨立需求分析和設計的。之後,就設法需要通過一個目標為自己輸送動力。這便是職業規劃。
『捌』 程序員怎麼提升自己
第一,技術不能落伍。
技術的更新迭代非常快,所以要學習的東西很多,所以說,做程序員挺不容易的。但作為這個時代的弄潮兒,我們必須提高對自己的要求,否則很容易落伍,被拍死在沙灘上。
一線城市的程序員可能還好,因為公司的產品迭代升級很快,所以技術棧的更新換舊也快。但二三線城市的程序員可能就沒那麼幸運了,往往一個產品都做到沒客戶了,技術還是最初用的那些。
以至於有些程序員回到二三線城市後再去一線會比較難,並不是生活節奏不適應,而是技術跟不上了。
怎麼才能保證技術不落伍呢?並不是說外面流行什麼技術,就一味的跟風,而是有選擇性的,你比如說,Spring Boot 是肯定要跟的,但 Hadoop、Spark 就不一定要跟,要量力而行,看公司的業務規模是否需要。如果不需要,把更多的時間花費到 JDK 源碼、性能優化陵戚上,是更消祥佳的選擇。
第二,熱愛這個行業。
就目前來說,程序員的確是比較高薪的職業,所以很多人都在往這個行業里擠,再加上「狼性文化」、「996」盛行,搞得很內卷。
在這種情況下,在這種壓力下,你有沒有問過自己,內心是否還熱愛著這個行業?
我曾有一個讀者,她問我,「請問你能不能做 C++ 課外輔導啊,孩子上大學,軟體工程專業,之前不懂計算機,現在學習壓力很大,想放棄,認為自己不適合學這個,不開竅,我是看了你的文章開始關注你的,現在因為孩子的事沒辦法了,就想問問,能給付費輔導嗎?」
從這位母親的話中,我感受到了她對孩子滿滿的愛,也感受了學弟學妹們身上背負的壓力。程序員的確要學習很多很多知識,除了編程語言,計算機基礎知識,還尺橋陵有各種框架和工具,時間根本就不夠用。
但有一句俗話叫做「干一行愛一行」,既然入了行,就只有風雨兼程。否則,心裡不愛了,學習的熱忱和動力又從哪裡來?
當你累了的時候,適當地給自己放個假,打一場籃球、打一個小時游戲、唱一首歌,甚至談個戀愛,讓緊綳的神經放鬆下來,心裡的那股熱愛也許就悄無聲息地回來了。
第三,樂於分享自己。
分享的方式多種多樣,並不局限於寫博客,你可以在公司的團隊內部做一次培訓,甚至小到站立會的時候發表一些對技術的想法,或者大到在技術大會上做一次演講。
分享會收獲別人的認可、稱贊,崇拜的小眼神,這些點點滴滴的榮譽感會讓你鼓足勇氣,在前行的道路上充滿干勁,進而精益求精,要求自己做得更好。
『玖』 程序員工作繁忙完全沒時間提升自己該怎麼辦
高效利用每天的時間。
即使工作再忙,總有碎片化的時間。將碎片化時間利用好,那麼長此以往就會得到很多的積累。一個知識點通過無無數個碎片時間的學習,那麼也會得到很好的鞏固。工作的性質不一樣,那麼繁忙程度也就不一樣。程序員需要經常性加班,回到家以後基本上都是深更半夜了。當公司忙的時候,更不要說按時吃飯了。有些程序員長期加班加點,身體都已經吃不消了,更不要說去提升自己了,他們就連睡覺都是沒有充足的時間的。
1、工作忙只是借口而已。
不管多忙,睡前的時間,吃飯的時間都可以拿來利用的。這些時間經常會被大家忽視,也就是我們俗稱的碎片時間,只有將這些時間好好利用了,我相信你會比別人提升的更加快。
平時生活當中,你有遇見過程序員嗎?他們平常的工作是不是真的很忙呢?你見過最晚的加班是到幾點? 在你學習的時候有什麼技巧和方法嗎?你又是通過什麼樣的方式提升自己的呢?當你感覺到時間不夠用的時候,你會怎麼辦?