① 怎麼樣成為編程技術大牛
編程技術是指利用計算機實現某種目的或解決技術問題,使用一些編程語言編寫程序代碼,最終得到結果。那麼怎麼樣才能成為變成技術大牛呢?
學習你所說的並不是你需要知道的,不是讀一本書和掌握它。使用數據在構造演算法方面,至少有5 ~ 10本書在這方面;在軟體設計方面,光理解結構設計和方向。設計和設計模式是不夠的,還需要理解軟體架構設計、交互設計、面向方面的設計和方向。設計的設計、數據結構演算法的設計、情感設計等,否則很難進入大牛這一樓層的。
主要還是多接觸,多看書,多編碼,多自己動腦子解決問題,多幫助別人,積累經驗。
② 技術大牛是如何煉成的
如果回答對樓主有幫助,給個採納好不,謝謝啦
破侖說:不想當將軍的士兵,不是好士兵。無論你在做開發、測試、運維,你都是一個技術人員,而我相信,每個技術人員的心中,都有一個成為技術大牛的目標,這個目標鞭策著每一位有夢想的人,去努力和改進自己。 夢想總是在現實面前有過一度的彷徨,因為你會發現,真正的工作和心中的理想狀態天壤之別,不是一碼事。當你面對的是,天天加班寫業務代碼,每天都有執行不完的測試,扛機器接網線敲shell命令,你也許會懷疑,這是我想要的人生嗎?接下來,就讓我們帶著疑惑,去尋找答案!三大誤區誤區一:拜團隊技術大牛為師,給你開小灶首先,不可否認,大牛的確有能力將你鍛煉培養成另一位大牛,但是,無論是單獨給你開小灶,還是培訓整個團隊,時間成本消耗過大,因此,一般沒有大牛願意這樣做。其次,很多人都認為不懂就問是個好習慣,但是你忽略了很多問題大牛是不屑回答的,比如像「jvm的-Xmn參數如何配置」這種上網能找到答案的問題,只會浪費他人以及自己的時間。最後,大牛是個極具小眾的群體,因此,直接請教和輔導的機會非常少,即使有幸參加過幾次真正大牛的培訓,也不太可能讓你嫣然一變,成為技術大牛的。總而言之一句話,以自己為主,系統且有針對性的進行學習;然後再以請教學習為輔提升自己。誤區二:不斷重復,停滯不前首先,要認清一個事實,寫不好業務代碼和只把業務代碼寫好的程序員,在技術大牛的世界裡,沒有什麼本質的不同。如果光是沉浸在一個基礎技術里積累學習,那麼毫無疑問,這是你的慣性和惰性在束縛著你前進,打破它,不斷向更大的挑戰邁進,最終成為他人眼中的大牛。誤區三:大環境的不公與碎片化時間首先,大多數人都在抱怨中國的環境對於自己可能性的扼殺,並認為很多本來能成為大牛的人才被現實埋沒,不可否認,這個理由具有一定的客觀性,因為環境的確可以改變一類人的發展和命運。但是,如果我們轉過身來自問,是否自己真的已經傾盡全力?我相信,總是存在一些人,借著社會不公的理由,給予自己偷懶的借口;畢竟,大牛還是會有的,萬一就是你呢?其次,如果你抱怨現如今社會的碎片化時間,不能有整段時間提供自己深入學習,那麼,是否先改變自己的一個觀念,那就是碎片化時間也可以深入學習。而未來,利用碎片化時間學習將可能成為一種趨勢。正確的做法1、盡量多的嘗試當你每次都做得更多,隨著時間的發展,將會是這樣,產品討論需求找你、測試有問題也找你、老大對外支撐也找你,於是,你就成了這個系統的「專家」了。要想有機會,那就得與眾不同,努力做到更多。怎麼做得更多呢?可以從以下幾個方面著手:1)熟悉不止你負責的更多業務,熟悉不止你寫的更多代碼。好處:需求分析的時候更加准確,能夠在需求階段就識別風險、影響、難點問題處理的時候更加快速,因為相關的業務和代碼都熟悉,能夠快速地判斷問題可能的原因並進行排查處理方案設計的時候考慮更加周全,由於有對全局業務的理解,能夠設計出更好的方案2)熟悉端到端比如說你負責web後台開發,但實際上用戶發起一個http請求,要經過很多中間步驟才到你的伺服器(例如瀏覽器緩存、DNS、nginx等),伺服器一般又會經過很多處理才到你寫的那部分代碼(路由、許可權等)這整個流程中的很多系統或者步驟,絕大部分人是不可能去參與寫代碼的,但掌握了這些知識對你的綜合水平有很大作用,例如方案設計、線上故障處理這些更加有含金量的技術工作都需要綜合技術水平。3)自學一般在比較成熟的團隊,由於框架或者組件已經進行了大量的封裝,寫業務代碼所用到的技術確實也比較少,但我們要明白「唯一不變的只有變化」,框架有 可能要改進,組件可能要替換,或者你換了一家公司,新公司既沒有組件也沒有框架,要你從頭開始來做。這些都是機會,也是挑戰,而機會和挑戰只會分配給有準備的人。以java為例,大部分業務代碼就是if-else加個資料庫操作,但我們完全可以自己學些更多java的知識,例如垃圾回收,調優,網路編程等,這些可能暫時沒用,但真要用的時候,不是google一下就可以了,這個時候誰已經掌握了相關知識和技能,機會就是誰的。2、盡量做到更好世界上沒有完美的東西,你負責的系統和業務,總有不合理和可以改進的地方,識別這些「不合理」和「可改進」的地方,並且給出解決方案,然後向主管提出,一次不行兩次,多提幾次,機會,就是自己去爭取和把握。例如:重復代碼太多,是否可以引入設計模式?系統性能一般,可否進行優化?目前是單機,如果做成雙機是否更好?版本開發質量不高,是否引入高效的單元測試和集成測試方案?目前的系統太龐大,是否可以通過重構和解耦改為3個系統?阿里中間件有一些系統感覺我們也可以用,是否可以引入 ?3、盡量動手實踐光看不用效果差例如:學習了jvm的垃圾回收,但是線上比較少出現FGC導致的卡頓問題,就算出現了,恢復業務也是第一位的,不太可能線上出現問題然後讓每個同學都去練一下手,那怎麼去實踐這些jvm的知識和技能呢?Netty我也看了,也了解了Reactor的原理,但是我不可能參與Netty開發,怎麼去讓自己真正掌握Reactor非同步模式呢?看了《高性能MySQL》,但是線上的資料庫都是DBA管理的,測試環境的資料庫感覺又是隨便配置的,我怎麼去驗證這些技術呢?框架封裝了DAL層,資料庫的訪問我們都不需要操心,我們怎麼去了解分庫分表實現?怎麼辦?1)系統化的學習這個是第一階段,看書、google、看視頻、看別人的博客都可以,但要注意一點是「系統化」,特別是一些基礎性的東西,例如JVM原理、Java 編程、網路編程,HTTP協議等等,這些基礎技術不能只通過google或者博客學習,一般做法是先完整地看完一本書,有了全面的了解,然後再通過google、視頻、博客去有針對性地查找一些有疑問的地方,或者一些技巧。2)自己動手豐衣足食這個步驟就是解答上文提到的疑惑,也就是自己去嘗試搭建一些模擬環境,自己寫一些測試程序。例如:Jvm垃圾回收:可以自己寫一個簡單的測試程序,分配內存不釋放,然後調整各種jvm啟動參數,再運行的過程中使用jstack、jstat等命令查看jvm的堆內存分布和垃圾回收情況。這樣的程序寫起來很簡單,簡單一點的就幾行,復雜一點的也就幾十行。Reactor原理:自己真正去嘗試寫一個Reactor模式的Demo,不要以為這個很難,最簡單的Reactor模式代碼量(包括注釋)不超過200行(可以參考Doug Lee的PPT)。自己寫完後,再去看看netty怎麼做,一對比理解就更加深刻了。MySQL:既然有線上的配置可以參考,那可以直接讓DBA將線上配置發給我們(注意去掉敏感信息),直接學習;然後自己搭建一個MySQL環境,用線上的配置啟動;要知道很多同學用了很多年MySQL,但是連個簡單的MySQL環境都搭不起來。框架封裝了DAL層:可以自己用JDBC嘗試去寫一個分庫分表的簡單實現,然後與框架的實現進行對比,看看差異在哪裡。用瀏覽器的工具查看HTTP緩存實現,看看不同種類的網站,不同類型的資源,具體是如何控制緩存的;也可以自己用Python寫一個簡單的HTTP伺服器,模擬返回各種HTTP Headers來觀察瀏覽器的反應。3)交流分享,發現自己的不足之處。與人交流分享,既需要我們將一個知識點進行系統化的梳理,並且考慮各種細節,這會促使我們進一步思考和學習。同時,聽的人可以有不同的理解,或者有新的補充,這就令知識技能體系變得更加完善。後記無論結果怎樣,當我們談論過程的艱難與樂趣之時,是否可以不去計較自己是否付出太多?因為一個真正熱愛技術的人,只會勇往直前,不忘初衷,堅持到底!
③ 如何成為編程大牛
1、你需要精通幾門重要的、常用的編程語言和資料庫。
2、你不但要學會語法本身,還要熟練掌握這些語言的整個生態,包括他們所對應的IDE工具,還有各種框架、插件、模塊,以及調試、編譯、優化、打包、協作、部署工具,這些東西不但多如牛毛而且每年都在變,你需要不斷的學習。
3、你要研究他們的源代碼,搞清楚工作原理,並把這種學習獲得的經驗運用到自己的代碼中,這是迅速提高編程水平的最快路徑。
4、你需要有更多工作實踐的機會,在工作中學習新的技術和方法,要勇於承擔有技術含量的工作,有價值的工作可以加快你成長的速度,在實踐中鑽研思維技巧、設計模式、演算法優化,解決問題,不斷復盤總結。
如果同意,請採納,謝謝!