點燃java高級架構師的成長之路!
鏈接:https://www.nowcoder.com/discuss/72575
來源:牛客網
金三銀四跳槽旺季,每個人都想有一份高薪資,環境好,且穩定的工作,現在已經是四月份了,跳槽旺季還剩最後一個月,你們都準備好了麽?你們吃飯的技術過硬麽?你們準備好進名企了麽?最主要的是,你們是一名資深架構師麽?想成為架構師麽?還是繼續每天堅持加班的橋寫代碼??????這些問題,只有你們能明白且自己解決。
現在正是需要我們認真考慮的時候,要如何提高我們的編程能力,要怎樣努力才可以成為一名Java架構師,下面幾點是憑我多年經驗總結出來的。大家可以借鑒參考一下。
第一:提醒自己還有多少沒有學習
學習新東西的第一步是自己認識到哪些不足。這聽起來很簡單,但是有一些經驗的程序員要克服這個假設需要很長時間。有很多計算機專業的學生畢業時昂著頭傲慢地說:“這不算什麽,我全都知道”類似這般的虛張聲勢,
剛到工作崗位上,似乎在向每個同事證明自己的能力。
要知道,“我知道全都會”會阻礙我們學習新東西,這種輸出強大的確定性叫靠譜。
第二: 不要試圖證明自己是正確的
要變得強大,不僅僅是好,你必須從經驗中學習成長。但是請小心,經驗可以避免我們不重復不良習慣,也能夠制造不良習慣。我們都遇到過八年的程序員,可這八年,他一直重復在做同一件事。為了避免這種問題,看看我們做的一切,問問自己:“我怎麽才能做得更好?”
軟件開發新手和許多經驗豐富的開發者都喜歡自己的代碼,即使自己寫測試,也證明自己的代碼毫無缺陷。而真正優秀的程序員會主動尋找可能會出錯的地方,他們知道最終用戶會發現程序員遺漏的缺陷。
第三: “代碼有效性”不是停下來的地方,而是開始的地方
一旦“完成”就停下來,這個碼就像拍一張快照,它還不是一個成品。優秀的程序員知道第一次叠代只是一件粗糙的物件。現在,我們讓它變成更好的藝術品。
這個過程的一部分是定義“更好”的蘊義。加快速度有價值嗎?更容易做日誌?更可復用?更可靠?答案可能因每個應用程序而異,但該過程並不適用。
第四 :寫三遍
好的程序員可以編寫出可以運行的軟件。偉大的程序員寫的軟件工作非常好。但這些很少發生在第一次。最好的軟件是寫三遍:
1.首先,你寫軟件是向自己(或用戶)驗證解決方案是可行的。其他人可能不認識這只是一個概念驗證,但是我們先做好這一步。
2.第二次,你讓代碼可以工作。
3.第三次,你讓代碼可以正確的工作。
當你看到最優秀的開發者工作時,這些工作水平可能不那麽明顯。他們做的每件事都那麽優秀。但是你沒有看到的是,包括明星,鋼琴家,技術牛人在向他們展示軟件之前,可能已經扔掉第一和第二甚至更多的版本。擅長丟棄代碼並重新開始,可以是將“更好”包含到個人工作流程中一種強有力的方式。
如果沒有更好的方法,“寫三遍”教會我們有多種方法來解決問題,防止我們陷入窘境。
第五:要有一套完整系統化的學習體系給自己學習
一、源碼分析
二、分布式架構
三、微服務
四、性能優化
五、團隊協作
六、電商專題
以上課程體系是我總結出來並且是比較全面的Java架構師必學的課程題系圖,此圖分為六大板塊,每個專題每個知識點都對應著我們平常在工作中用到的技術要點,如果你們想提升自己的技術,想學習以上的技術要點,你們可以加群獲取,在此我向大家推薦一個交流學習群:725633148。
裏面會分享一些資深架構師錄制的視頻錄像:有Spring,MyBatis,Netty源碼分析,高並發、高性能、分布式、微服務架構的原理,JVM性能優化這些成為架構師必備的知識體系。
第六: 閱讀代碼,閱讀大量代碼
或許你喜歡領導別人來看代碼。其實這是提高編程能力的最常見也是最有價值的方法。
也許剛開始時你會覺得有些枯燥,因為它不是文學詩歌,慢慢你會看到別人如何在編程中解決問題,他們將其視為教訓與挑戰。為了能讓自己更好,我們不妨問問自己這樣的一些問題:
1、如果是我怎樣編寫這段程序?現在我已經看到別人怎樣解決的,如果是你該怎樣解決?
2、我學到了什麽?該怎樣把這個技術應用到我過去寫的代碼裏?我怎麽沒有想用遞歸調用...
3、我將怎樣改進此代碼?如果該項目參與了開源,如果你確信有更好的解決方案,那就去做!
4、按原作者的風格寫代碼。按照這個規則實踐編碼,會幫助你進入原作者的思維中,可以進一步改進代碼的同理心。
註意:不要以為一個很優秀的程序員就能輕松的閱讀大量源代碼,就如一位崇拜者在不改善自己寫散文的情況下,閱讀偉大的文學作品一樣沒有太大進步。
很多開發者會使用開源或其它下載的源代碼來“查找答案”,有可能還會復制粘貼與問題類似的代碼。
如果你經常這麽做,那麽你可能會成為一個差勁的程序員!因為你沒有經過自己的思考和檢視就盲目接受了別人的智慧!
它就像我們在夏天的露天野餐一樣容易,但是我們沒有花時間理解它,你永遠不會意識到,這可能會引入了一系列的BUG。
第七: 寫代碼,不僅僅是完成工作
一個人在編程工作中會體會到很多優點。第一,它提供了一種在當前工作中獲得的技術和工具的學習機會,這些工具技術會讓你適應下一個工具和市場。無論是否為開源項目做貢獻,還是為公司項目工作,我們都可以獲得技術技能和相信。
開發軟件的另一個好處是它會“迫使”你想方設法解決問題。我們不能把困難的事情留給別人,所以我們決不能過早的尋求幫助。
值得一提的是:不要只選擇沒有什麽挑戰的項目。我們也需要失敗!雖然你可能不想在工作中失敗或者到了最後期限失敗。
第八: 盡最大可能與其他開發者協同工作
這樣有助於傾聽其他人的心聲。可以使用結對編程,或者到黑客馬拉松或者編程用戶組,如北京 Python 用戶組。當你已經為開源項目做出貢獻時,請多註意用戶和其它開發者的反饋。比如,你在批評中看到了哪些共性問題嗎?
如果能在團隊裏找一位可以信賴的個人導師,從編程技巧到職業決策和規劃,他能給你更多指導,千萬不要不當回事,浪費很多時間。
第九:學習技術而不是工具
編程語言,工具和方法林林總總,這就是為什麽盡可能的學更多的語言和框架來獲得不同體驗的原因。專註於編程基礎,因為基本的東西永遠不會發生變化;比編程更深刻的是要註重架構。
如果你有一件正確的事情去做,需要進行實時的檢查。教條會阻礙我們學習新事物的能力,我們需要擁抱變化 。
我們需要繼續前進,但自我完善的關鍵原則是知道何時停止。
點燃java高級架構師的成長之路!