-
1 # java高階
-
2 # 碼聞強識
主動承擔更多的責任,寫更多的程式碼,踩更多的坑。反正程式碼就是這樣,做的多bug多,做的少bug少,如果為了bug少而少寫程式碼,成長之路必定漫長。
-
3 # mikechen的網際網路架構
我是一個10年+的程式設計師,從程式設計師進階到架構師用了7年多時間,關於1-3年工作經驗的初級程式設計師如何進階,分享如下的經驗與建議,每個人都有自己成長的方式,僅大家參考。
1、 研究原始碼
有時間就多研究Tomcat/Resin/Jetty的原始碼;
2、 學習相關知識
譬如,高效能/高併發,並在專案中應用實踐,提升技術廣度:
Socket程式設計
多執行緒的知識
I/O庫和非同步I/O庫
TCP/IP 協議
3、 程式設計師進階必看書籍
我早前羅列的java程式設計師進階書單明細:https://www.toutiao.com/i6461884735961432589/涵蓋了不同階段程式設計師進階必看書單:
工作1-3年java程式設計師
工作3-5年java程式設計師
工作5年以上計劃往架構師方向發展的java程式設計師
4、 多向身邊的大牛學習
透過學習別人多年沉澱的知識與經驗,能夠讓自己少走彎路,更快達成目標。
5、多爭取專案實踐機會
知識需要經過專案演練,最終才能沉澱。
最後,希望程式設計師們都能找到一條適合自己的學習路徑,持之以恆、早日進階!
-
4 # JalenZh
我可以說算是一個Java入門新人,因為之前沒有寫過Java,校招籤的工作是Java後端。最近入職開始學習Java開發。雖然我沒寫過Java,但是我對Java的學習路程規劃是非常清晰的,其實學任何一門語言或者其他知識都是想通的。我就簡單聊一下自己對這個問題的一些簡單看法吧
1、需要學習Java這門語言本身的基礎知識,比如常見的資料結構map,set,list等;基本資料型別int等。還有一些Java本身的語言特性啊,如反射機制啊等。第一步簡單的說,就是學會用。第二部的話就是需要深入學習語言本身,這個時候就需要結合原始碼本身去學習,對內部結構非常瞭解,這樣你才可以用的非常合適。然後就是學習一些併發程式設計技術,這個非常重要,作為後端開發必須懂
2、學習Java的一些生態體系,利例如框架spring啊,開始肯定也是需要會用然後慢慢深入學習spring,結合原始碼本身學習。
3、學習一些mq,如kafka;rpc框架,例如thrift等。我最近也在學習這些東西。還有一些中介軟體啊,如zebra,這個是美團內部的中介軟體。
4、前面的內容如果你都掌握的,然後就可以學習一些架構的知識,當然這個要看你自己對職業規劃了。如果想繼續做技術可以學習啊。
-
5 # 會點程式碼的大叔
回答過幾個類似的問題,總是在說需要學什麼新框架、新技能,今天我想講講每一個級別的程式設計師應該有的能力,然後我們再有的放矢,去尋找成長為高階程式設計師的方式。
初級程式設計師在我眼裡,可以按時的完成專案經理指派的開發任務,就是一個合格的初級程式設計師。
這裡的開發任務,是指有明確的需求和業務流程,大部分時候功能可能比較簡單。
能夠完成和測試人員的溝通,支援測試過程中遇到的各項問題。
把專案中每項技術用到的地方,都可以熟練的使用。
中級程式設計師這個階段需要負責的開發任務,會更復雜一些,有可能要涉及到多個模組的修改,這就需要對整個專案有著整體的瞭解。
在開發過程中,充分理解需求,並且可以站在整個業務流程的角度上看待問題。比如這次需求的一些修改,會不會對其他功能造成影響,都是需要了解的。
技術方面,應該對專案技術框架有一定的瞭解,比如專案用到了Spring的某項功能,那麼中級程式設計師應該對Spring的其他功能都有一定的瞭解。
高階程式設計師到了高階程式設計師,不僅僅需要負責一些複雜、核心功能的開發,也需要帶領和協助中級初級的夥伴完成開發工作。
不僅僅是要了解本系統,應該對系統的上下游系統都有一定的瞭解。
會做一些設計方面的工作,面對一個需求,應該可以很快的拆分出功能點,每個功能點在哪個模組開發,都應該心裡有數。
高階程式設計師會和更多的專案成員溝通,包括測試、需求、專案經理、組員。有可能需要協助專案經理管理幾個中級初級的程式設計師。
技術方面,不侷限於專案所使用的技術和框架,要對同類的和比較前沿的框架有一定的瞭解。比如專案中ORM框架用到了Mybatis,那最好是可以瞭解一下其他的ORM框架,瞭解不同框架的優缺點。
如果專案需要引入新的技術,那麼應該很快的搞定。
現在再回來看這個問題:初級Java程式設計師如何成長為高階程式設計師?其實可以從幾個方面出發:
技術能力:技術的深度和廣度都要提高。
溝通能力:從需求到開發到測試,全流程溝通。
管理能力:協助專案經理管理中級初級開發人員。
-
6 # EmacserVimer
我覺得從幾個角度來說吧,而且這個原則也基本上適合於所有領域程式設計師的成長路徑,當然這裡我不會設計任何技術書籍、或者技術棧,畢竟這些東西已經被說爛了。
文章開頭先給大家推薦一本手冊這本手冊是阿里巴巴團隊出的《Java程式碼規範》,這是阿里巴巴這麼多年的億級使用者經驗積累出來的經驗,該踩的坑都幫大家踩了,留下的基本上都是精華。可以說阿里用這麼多年的苦和累給大家帶來了這麼好的手冊,你只要按著這個走,一定會養成好的程式碼習慣的,即使你不能去阿里,也是受益匪淺的。這本書就是目前最好的Java程式碼規範,至少是我見過的最好的Java程式碼規範,就好像《Google C++ Style》值得你去閱讀。
為什麼要推薦程式碼規範?
很多人可能不理解為什麼要推薦程式碼規範,不是演算法、不是設計模式,如果你以後進入企業,尤其是大公司、做大專案,你就知道我推薦的價值了。
多研究原始碼這部分我把這個稱之為基礎,對於任何一個程式設計師來說,技術基礎永遠是最重要的,畢竟你每天真正需要最多的知識積累。
多研究原始碼我認為主要有兩方面;
另一方面就是多看大牛的原始碼,比如多研究研究為什麼你寫了幾重迴圈、上百行程式碼,人家幾行程式碼、一個演算法就解決了,學習你身邊大牛、包括網上大牛們的原始碼,看看人家怎麼寫的,怎麼處理的。
演算法、設計模式等技術進階任何時候,想要在技術做精,演算法、設計模式等等一定要多瞭解,怎麼做記憶體最佳化、怎麼提高效能,這些都是你要了解的,技術越往深走當然就越值錢。
多瞭解業務你幾乎不可能一輩子都在技術一線做開發!即使你是如此的喜歡寫程式碼!!!
請記住這句話,這是非常現實的,尤其是在國內,競爭環境日甚一日,每年有無數的計算機人才湧向這個行業,包括科班的、非科班的,可以說中國的程式設計師是全世介面對競爭壓力最大的程式設計師族群。
多熟悉業務有兩個標準,一個是開發業務,一個就是具體的我們通常說的業務,我覺得任何一個技術從業者要鑽研技術,也要多瞭解業務上的事情,只有這樣你才能走得更遠,千萬不要停滯不前,或者把自己禁錮在一個框框內。
這就是我對程式設計師成長的建議,希望對大家有一定的價值。
-
7 # 千鋒頭號粉絲
牛逼的人總是讓人羨慕,但如何才能讓自己成為牛逼的人對我們來說更重要,本文分享的是如何才能成為java高階程式設計師,你和java高階程式設計師只差這一篇雞湯!乾了這碗雞湯,未來不可限量!
1、離開舒適區,提高個人程式碼能力
不安於現狀,高階程式設計師一般都具有豐富的專案經驗,經驗是能力最好的試金石,即使在碰到未知的問題,豐富的專案經驗也不會讓你覺得就束手無策。程式設計師是一個技術跨度很大的工種,對某種既定環境語言的依賴性太強,知識和技能都無法很好的遷移。
2、將複雜的問題簡單化處理
喬布斯曾經說過,簡單便能移動一座大山。一個高階程式設計師之所以讓人覺得牛逼,不僅僅能用寫出優雅簡潔的程式碼,更重要的是他們還能將這種化複雜為簡單、化繁為簡的功力內化至各項工作,不管是面對多複雜的專案、多棘手的 bug 都能面不改色、心不跳,步步拆解問題,逐一各個擊破。
3、自我總結,提升學習和解決問題能力
程式碼能力、工作狀態只是一個高階程式設計師區別於普通程式設計師的外在表現,王者和青銅的核心區別在於思考方式和解決問題能力的區別。高階程式設計師可能每天會花半個小時總結當天的專案經歷,反思自己的不足,思考問題解決或最佳化的方案。區別於初級程式設計師,高階程式設計師總結問題的往往能從本質出發,不會只停留在表面,弄清問題內在聯絡,抓住問題關鍵。這也就解釋了為什麼拿到一個專案需求,很多高階程式設計師不會首先去想程式碼實現,而是去想需求與架構的行為。
4、責任心和需求理解能力
高階程式設計師對自己的要求不僅限制於完成專案、解決問題本身,往往還會去思考並權衡需求涉及的一切,比如如何去支援設計模式、庫、框架、重構和流程等,從核心到外層介面,既重視功能需求,還會注意到拓展效能、穩定性等需求,甚至還需要評估設計模組對整個專案中的影響及潛在的威脅。
總結:如何才能成為高階程式設計師,關鍵還是思想,學習的思想、總結的思想、創新的思想!
-
8 # 千鋒頭號粉絲
牛逼的人總是讓人羨慕,但如何才能讓自己成為牛逼的人對我們來說更重要,本文分享的是如何才能成為java高階程式設計師,你和java高階程式設計師只差這一篇雞湯!乾了這碗雞湯,未來不可限量!
1、離開舒適區,提高個人程式碼能力
不安於現狀,高階程式設計師一般都具有豐富的專案經驗,經驗是能力最好的試金石,即使在碰到未知的問題,豐富的專案經驗也不會讓你覺得就束手無策。程式設計師是一個技術跨度很大的工種,對某種既定環境語言的依賴性太強,知識和技能都無法很好的遷移。
2、將複雜的問題簡單化處理
喬布斯曾經說過,簡單便能移動一座大山。一個高階程式設計師之所以讓人覺得牛逼,不僅僅能用寫出優雅簡潔的程式碼,更重要的是他們還能將這種化複雜為簡單、化繁為簡的功力內化至各項工作,不管是面對多複雜的專案、多棘手的 bug 都能面不改色、心不跳,步步拆解問題,逐一各個擊破。
3、自我總結,提升學習和解決問題能力
程式碼能力、工作狀態只是一個高階程式設計師區別於普通程式設計師的外在表現,王者和青銅的核心區別在於思考方式和解決問題能力的區別。高階程式設計師可能每天會花半個小時總結當天的專案經歷,反思自己的不足,思考問題解決或最佳化的方案。區別於初級程式設計師,高階程式設計師總結問題的往往能從本質出發,不會只停留在表面,弄清問題內在聯絡,抓住問題關鍵。這也就解釋了為什麼拿到一個專案需求,很多高階程式設計師不會首先去想程式碼實現,而是去想需求與架構的行為。
4、責任心和需求理解能力
高階程式設計師對自己的要求不僅限制於完成專案、解決問題本身,往往還會去思考並權衡需求涉及的一切,比如如何去支援設計模式、庫、框架、重構和流程等,從核心到外層介面,既重視功能需求,還會注意到拓展效能、穩定性等需求,甚至還需要評估設計模組對整個專案中的影響及潛在的威脅。
總結:如何才能成為高階程式設計師,關鍵還是思想,學習的思想、總結的思想、創新的思想!
-
9 # 井151276607
瀏覽了一下前面的答案,換個角度說一下“高階程式設計師”。如果掌握了前面答案中描述的知識點和技能,現在由你向程式設計師(高低水平的都有)講述問題的答案,你覺得會有什麼效果?會給大家留下你是個高階程式設計師的印象嗎?如果你感覺良好,大家對你的水平很認同,我可能要給你潑點涼水,你的工作環境可能不具備使你成長為高階程式設計師的條件。僅僅憑藉一門程式語言(即使是java這樣的平臺)的研習、實踐,不足以成為名副其實的高階程式設計師。
-
10 # 黑馬程式設計師
在程式設計師圈,一直流傳著這樣一個傳說,用髮量來判斷程式設計師的級別,這明顯是種調侃。那麼,中級程式設計師,相對於初級程式設計師,有哪些不一樣的特質呢?
總得來說,比較於初級而言,中級程式設計師在執行層面屬於攻堅力量,他們不僅能獨立完成高檔難度的開發使命,並且在使用者體驗(質量提高)和功能最佳化(最佳化效率)都能作更全面的考量。
(一)善於溝通
程式設計師內向的居多,喜歡交流的很少,但中級程式設計師往往能夠克服自己的內新的恐懼心理,多和同事交流。
甚至有管理者認為,程式設計師應該80%的時間,花在同事的交流上。不僅是部門內的同事,也還包括跨部門溝通,敲程式碼的需要經常與產品經理、運營的同事溝通需求。
日本不少跨國公司,甚至有讓程式設計師去體驗幾個月銷售員的傳統。公司要求,程式設計師在敲程式碼的同時,也要能夠理解一線使用者的需求。
(二)對程式設計有激情
有些程式設計師幹這一行只是為了掙錢,如果有更好的職業,他們會毫不猶豫的辭掉程式設計師的工作。
能夠順利晉升為中級程式設計師的人,往往熱愛程式設計,喜歡鑽研程式碼中的問題,他們感到能指揮電腦來幫助人們和自己解決現實生活中的問題是一種神奇的能力。當遇到問題無法解決時,他們會茶不思、飯不想,無法入睡。
每個人都有心理上的舒適區,但是中級程式設計師,會不斷地突破自己心理上的舒適區。
他們很樂於經常去研究沒有接觸過的程式碼,也正因為這樣,成長速度快的中級程式設計師會越來越熟悉不同的程式碼結構和設計模式。
(三)精通程式碼除錯
幾乎所有的程式設計師寫程式碼都不是一遍就能寫好的。精通程式碼除錯 ( debug )很多人在寫程式碼的過程中,經常會有的一個問題就是:為什麼我寫出來的程式碼不能執行?為什麼執行的結果不是我想要的?
中級程式設計師非常快的就明白自己程式碼的問題可能是什麼。程式碼除錯是一個很重要的能力,但是偏偏學校裡不教,面試的時候考官也不經常提及。那麼怎麼去除錯程式碼呢?
程式碼除錯是有一套方法論的。最簡單的就是在程式碼裡輸出日誌來判斷,複雜一點則需要去接觸一些高階的工具,或者直接帶有 Debug 功能的編輯器。
(四)主人翁精神
部分初級程式設計師剛入行,可能還沒有進入狀態,往往認為自己是打工者,以打工者的身份和心態工作。
中級程式設計師卻會把自己當成企業的主人,他們知道企業的利益和自己休慼相關。
成熟的程式設計師明白一點,作為一名優秀的企業員工,自己是生產者而非消費者。他們心中一直想得是自己能夠為公司,為顧客創造什麼價值,而不僅僅只想著待遇。
(五)工具型思維
中級程式設計師知道如何能更高效的完成任務,如何更能有效的解決問題。其原因是工具型思維,如同荀子所言,“君子生非異也,善假於物也。”
Facebook 前技術總監 Bobby Johnson 說,高效率的程式設計師都把時間花在製作工具上。很多人也認為工具是很重要的,但是他們並沒有花時間去製作、整合自己的工具。但是,Jonson 團隊最出色的員工耗費了他們 1/3 的時間在工具製作上,這些工具可以用來發布程式碼,監控系統,以及能讓他們花更少的時間去做更多事情。
中級程式設計師遇到問題時,不鑽牛角尖,善於利用外部工具解決自己的問題,特別是能熟練應用搜索引擎。
(六)刻意練習迭代速度
魔鬼在細節上,如果一個程式設計師想要提高自己的工作效率,就需要他能夠不斷地在細節方面,進行微創新,提高效率。
舉一個例子,假設一個初級程式設計師,每次要花 12 秒鐘去搜索某個函式是在哪裡定義的。如果,他每天做這個動作 60 次,就要花 12 分鐘去搜索函式定義。
中級程式設計師會選擇用一個好一點的編輯器,每次找到函式定義只要 2 秒鐘,那麼他每天將節約 10 分鐘,每年節約 40 個小時。如果能夠找到 3 個這樣的場景去最佳化一下,那麼對於中級程式設計師來說,每年可以節約一個月的時間。
(七)系統學習
學習是要有方法的,尤其是在職場中,程式設計師的自我學習要符合兩點要求:一是有結果;二是高效。因此,系統性學習,非常重要。
高階程式設計師系統學習指南如下:
第一步,原始碼分析。看看大牛是如何寫程式碼的,提升技術審美,提升核心競爭力。
第二步,工程化。工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具,提升開發效率和團隊協作效率,讓自己有更多的時間來思考。
第三步,分散式。從深度到廣度的完善自己的知識體系,準備迎接高併發大資料的挑戰
第四步,微服務。繞微服務的通用模式,學習spring Cloud的常見用法及原理,讓微服務的開發更加方便 快捷,讓微服務應用更加穩定 可用。
第五步,效能最佳化。從JVM底層原理到記憶體最佳化 再到各個中介軟體的效能調優,做最科學和最嚴謹的效能調優。
第六步,併發程式設計。深入瞭解底層原理,不只是做一個開發者。
第七步,積極參加大牛的分享。
(八)總結
可以理解,對於初入職場的程式設計師來說,他們在內心也知道學習的重要性,但因為沒有時間,被老闆的需求給填滿,沒有精力去提升自我。
然而,根據人類的學習曲線來說,任何一門新的技藝,都是一條對數曲線。其分為兩個階段:緩慢期和高速發展期,即初期很慢,後期進展迅速。
如果,能夠讓程式設計師在剛進入職場的時候,便擺脫初級程式設計師的桎梏,直接擁有中級程式設計師的實力,是不是就能跨越學習曲線的緩慢期呢。
在7月11日,知名IT教育機構傳智播客將舉辦行業變革大會,屆時傳智播客知名行業大牛與大家一起探討,如何讓程式設計師剛入職場,便擁有中級程式設計師的實力。
沒有時間或者不在北京的程式設計師,可以在線上觀看釋出會直播。
回覆列表
高階程式設計師需要:
1.Core Java部分
a.面向物件程式設計思想(封裝繼承多型介面)
b.字串處理
c.java.lang包,java.util包等常用包
d.java異常處理
2.Java高階部分
a.Java I/O流
b.Java多執行緒技術
c.Java網路程式設計
d.Java Swing
後兩項可以瞭解即可,如果專案需要可以深入研究
3.前端基本技能
* HTML + CSS網頁開發
* JavaScript
* Jquery
* 瀏覽器相容性 CSS hack(瞭解)
4.熟練使用JSP + Servlet進行開發
5.MVC設計模式,原理,以及相關框架,如Struts
6.SSH框架
7.快取技術 session & cookie
8.熟練使用一種以上Java開發工具
Eclipse/MyEclipse/Jbuilder/Jcreator
9.熟練使用XML
JDOM w3c.dom SAX
10.Java設計模式
工廠模式,單例模式 ==
11.Java反射機制
反射的各種用法
12.瞭解或熟悉 C, C++, .NET
13.熟悉JDK的配置,環境變數
14.資料庫oracle必學,其他最好了解一種以上(mysql,sql server,access==)
oracle:檢視,索引,儲存過程,觸發器,遊標,包,常用函式 ==
15.資料庫原理
事務的原理,鎖機制,表連線,複雜查詢語句(工作經驗),效能調優,鎖表以及解決方案==
16.JDBC,連線池
17.Ajax,反向Ajax
18.HTTP協議,request 和 response的原理,HTTP status(瞭解常用的),Https原理
19.熟悉Linux基本命令,使用過Linux/Unix系統,可以編寫shell指令碼,可以在Linux上部署專案
20.瞭解windows系統批處理指令碼bat
21.瞭解HTML5,最好學習過
22.熟悉一種JS框架,如Prototype
23.J2EE原理 熟悉一種以上web容器如Tomcat,JBoss,websphere,weblogic==
24.熟悉ant或maven
25.熟悉一門指令碼語言,如python ,ruby
26.瞭解php/ asp
27.瞭解ftp協議及原理
28.熟練使用Junit測試,熟悉Mockito等測試工具
29,熟悉javac,javadoc,native,native2ascii等常用命令
30.熟悉常用的排序演算法,如氣泡排序,快速排序等,最好自己研究過一些的演算法,下面的這個就是我曾經研究過的一個:
http wenku baidu com /view/391db3f0941ea76e58fa04e9點html
31.瞭解Flex(不學也沒關係)
32.瞭解敏捷開發模式
33.工作流workflow至少用過一種,如OSworkflow,瞭解原理
34.使用過VPN瞭解其原理
35.熟悉jstl表示式和el表示式
36.熟悉webservice,WSDL,SOAP
37.圖片處理,如圖片上傳,預覽,限制大小等,下面共享一(垃圾勿噴):
http wenku baidu com/view/05337bfc770bf78a6529541b點html
38.版本控制工具,CVS VSS SVN
39,JSON技術,JSON+AJAX
40.分頁技術,最好自己實現過不僅僅是用過要知道原理
41.Java Mail
42.Java讀寫txt,excel
JXL技術
43.JVM原理,JVM記憶體管理,GC,Java堆疊池
44.熟練使用下面的工具:
office辦公軟體,word,excel,ppt等
plsql,sqldevelop 資料庫開發工具
outlook大公司都用
ue編輯器
瀏覽器控制檯,除錯
SHH/PUTTY 遠端
45.UML建模工具 Rational Rose等
46.使用log4j
47.使用過開放API如百度地圖,騰訊街景,新浪微博等
48.頁面靜態化技術(偽靜態頁面)
49.報表技術,使用過報表製作工具,如水晶易表
50.定時任務,如Spring batch,學會自定義batch任務(不適用第三方工具)
51.瞭解uuid
52.B/s 和 C/s架構
53.正則表示式
54.瞭解JNDI JMS
55. ERP
56.unicode編碼,亂碼的解決
57.開源網路編輯器,如ckEditor
58.二進位制原理
59,使用過,瞭解開源論壇框架,如discuzz
60, GWT ,Closure框架
61.瞭解 大資料,雲計算
62.搜尋引擎搜尋技術
63.軟體工程,專案管理
Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術