1. 技術大牛是如何煉成的
如果回答對樓主有幫助,給個採納好不,謝謝啦
破侖說:不想當將軍的士兵,不是好士兵。無論你在做開發、測試、運維,你都是一個技術人員,而我相信,每個技術人員的心中,都有一個成為技術大牛的目標,這個目標鞭策著每一位有夢想的人,去努力和改進自己。 夢想總是在現實面前有過一度的彷徨,因為你會發現,真正的工作和心中的理想狀態天壤之別,不是一碼事。當你面對的是,天天加班寫業務代碼,每天都有執行不完的測試,扛機器接網線敲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)交流分享,發現自己的不足之處。與人交流分享,既需要我們將一個知識點進行系統化的梳理,並且考慮各種細節,這會促使我們進一步思考和學習。同時,聽的人可以有不同的理解,或者有新的補充,這就令知識技能體系變得更加完善。後記無論結果怎樣,當我們談論過程的艱難與樂趣之時,是否可以不去計較自己是否付出太多?因為一個真正熱愛技術的人,只會勇往直前,不忘初衷,堅持到底!
2. 如何成為編程開發技術大牛
首先確定自己的位置:
一、菜鳥
第1 層樓屬於地板層,邁進這層樓的門檻是很低的。基本上懂計算機的基本操作,了解計算
機專業的一些基礎知識,掌握一門基本的編程語言如C/C++,或者Java,或者JavaScript,...,
均可入門邁進這層。
二、大蝦
從第1 層爬到第2 層相對容易一些,以C/C++程序員為例,只要熟練掌握C/C++編程語言,
掌握C 標准庫和常用的各種數據結構演算法,掌握STL 的基本實現和使用方法,掌握多線程編程
基礎知識,掌握一種開發環境,再對各種操作系統的API 都去使用一下,搞網路編程的當然對
socket 編程要好好掌握一下,然後再學習一些面向對象的設計知識和設計模式等,學習一些測
試、軟體工程和質量控制的基本知識,大部分人經過2~3 年的努力,都可以爬到第2 層,晉升
為"大蝦"。
三、牛人
由於"大蝦"們經常被一些疑難問題給卡住,所以有了"大蝦"們只好繼續學習,他們需要將原
來所學的知識進一步熟練掌握,比如以熟練掌握C++編程語言為例,除了學一些基礎性的枯和州C++
書籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要
的是需要了解C++編譯器的原理和實現沒蔽機制,了解操作系統中的內部機制如內存管理、進程和
線程的管理機制,了解處理器的基礎知識和代碼優化的方法,此外還需要更深入地學習更多的數
據結構與演算法,掌握更深入的測試和調試知識以棚灶及質量管理和控制方法,對各種設計方法有更好
的理解等。
學習上面說的這些知識不是一揮而就的,不看個三五十本書並掌握它是做不到的。以數據結
構演算法來說,至少要看個5~10 本這方面的著作;以軟體設計來說,光懂結構化設計、面向對
象設計和一些設計模式是不夠的,還要了解軟體架構設計、交互設計、面向方面的設計、面向使
用的設計、面向數據結構演算法的設計、情感化設計等,否則是很難進到這個樓層的。
主要還是多接觸,多看書,多編碼,多自己動腦子解決問題,多幫助別人,積累經驗
3. 如何成為一個優秀的程序員
講幾個小的方面吧。
批評還是啟發?
代碼審查是一個不錯但很少用的想法。在一個團隊里,優秀的程序員另一個任務就是要指導經驗比你少的程序員,但是主要以指導和啟發為主,不是貶低和公開批評,因為消極的態度不利於接下來團隊合作的開展。
學會分享
搞編程的沒有去逛一些論壇都不好意思說自己是干編程這個行業的。優秀的程序員往往會在這些論壇幫助別人,而實質上,輸出就是最好的學習。在一個團隊中也是一樣,幫助他人解決問題收獲更多,你也將不斷地得到成長。
勞逸結合
每天工作 24 小時不會讓你更有效率!不少程序員年紀輕輕就有腰椎盤突出、頸椎病、肩周炎、腰肌勞損、圓肩駝背等職業病。程序員們需要加強鍛煉,運動不僅僅可以加強肌肉的力量和耐力,而且也能夠活動身體的各個關節,有效緩解長時間保持一個動作導致局部肌肉過勞。
另外,編程是一項艱苦的腦力勞動活;有時你的大腦確實需要休息一下,休息是為了更好的工作。否則,你的工作質量將大打折扣。業余時間養成一項自己的個人愛好,確保自己可以放鬆並沉浸其中。如果是球類運動,效果更好,它將讓你保持旺盛的精力和活力。
不要閉門造車
留意網路各種平台,學習新語言和框架、參與討論以及看看同行在干什麼。多關注業界在干什麼,這將讓你的視野更加廣闊,不致於為了編程而編程。
4. 如何成為編程大牛
1、你需要精通幾門重要的、常用的編程語言和資料庫。
2、你不但要學會語法本身,還要熟練掌握這些語言的整個生態,包括他們所對應的IDE工具,還有各種框架、插件、模塊,以及調試、編譯、優化、打包、協作、部署工具,這些東西不但多如牛毛而且每年都在變,你需要不斷的學習。
3、你要研究他們的源代碼,搞清楚工作原理,並把這種學習獲得的經驗運用到自己的代碼中,這是迅速提高編程水平的最快路徑。
4、你需要有更多工作實踐的機會,在工作中學習新的技術和方法,要勇於承擔有技術含量的工作,有價值的工作可以加快你成長的速度,在實踐中鑽研思維技巧、設計模式、演算法優化,解決問題,不斷復盤總結。
如果同意,請採納,謝謝!
5. 轉行學編程如何才能成為大牛
每天能堅持學習2小時或以上,每周能保證20小時以上,有電腦和學習環境,目的是希望從事編程職業。
行動計劃推薦如下:
1.花1周時間,了解軟體編程行業的相關知識和技術點。
2.花1周時間,了解主流培訓班的相關課程大綱和知識點結構。可以打聽一下我們。
3.花半年時間,開始自學,根據培訓班的相關課程大綱和知識點,循序漸進,不追求完全掌握,但是要搞清楚知識點的依賴關系,大致了解這些知識點就夠了,能夠將教程中的例子自己全部寫2遍跑通即可。碰到問題去各種興趣群裡面問問別人。
3.1自學1門解釋型編程語言,例如Python或者PHP。
3.2自學3門網頁編程的語言,例如HTML和CSS和Java。
3.3自學1門編譯型編程語言,例如Java或者C#.Net。
如果對以上入門知識學習還是找不到路徑和方向的,可以看看網站上的一些教程。
4.花1年時間,去應聘一家公司並在工作中持續學習,只要能夠將學習的東西應用到實踐當中都可以,不要問太多待遇如何的問題,只在意自己的能力有沒有提高,還有沒有學習的餘地。
此時的你,已經具備一定的經驗了,選擇的餘地就大了很多了。
最後啰嗦幾句
保持初心太難了,世異時移,趨勢在變,環境在變,最易變的就是人心。所以堅持任何一件小事都是值得贊揚的。例如每天寫一段代碼。
任何事情都有代價,看得見的成功背後都是看不見的努力。
時刻提醒自己,要活在事實當中,而不要活在針對事實的情緒當中。
內心強大是建立在高度的認知能力之上的,知行合一是終極目標。