0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個名合格的Java開發(fā)工程師應(yīng)該怎樣提升自己

工程師人生 ? 來源:工程師吳畏 ? 2019-05-08 17:08 ? 次閱讀

對于一個Java開發(fā)來說,編程技能毋庸置疑是很重要的。

但是,除了基本的編程開發(fā)能力,其他方面的能力也是體現(xiàn)一個程序員的能力的很重要因素。

比如,問題排查能力、線上運(yùn)維能力、項目管理能力、協(xié)調(diào)溝通能力等。

本文,主要來簡單介紹一下,作為一個合格的Java開發(fā),除了自身技術(shù)成長之外,還有哪些方面可以提升。

類開發(fā)技能

第一類,并不是純coding技能,但是也和開發(fā)相關(guān),我稱之為類開發(fā)技能。

Linux系統(tǒng)

很多人的開發(fā)機(jī)器是windows,所以平時也基本都是圖形化開發(fā)界面。但是,這并不意味著你就不需要基本的Linux技巧。

因為,你開發(fā)出來的應(yīng)用可能部署在一臺Linux機(jī)器上,很多時候你要和這臺線上的Linux服務(wù)器打交道,所以,Linux系統(tǒng)的安裝、開發(fā)環(huán)境的搭建、Linux常用命令以及Linux環(huán)境下項目的部署啟動和調(diào)試等都是必備技能。

否則,一旦線上出點(diǎn)什么問題,你就會束手無策了。

單元測試

我在《單元測試的重要性》中說過,單元測試是很重要的,而且,好的單元測試可以幫助我們節(jié)省很多開發(fā)時間。單元測試是保證軟件可以更好的持續(xù)集成和持續(xù)交付的一個基本前提。

單元測試也涉及到很多技巧等,比如使用Mock進(jìn)行單測、使用內(nèi)存數(shù)據(jù)庫進(jìn)行單測等。

一個開發(fā)人員,要有寫單測的習(xí)慣,也要掌握基本的單測寫法技巧。這樣可以盡早的發(fā)現(xiàn)問題。

版本管理

我相信基本上所有的公司的代碼都會通過版本管理工具進(jìn)行托管的,不管是Git還是SVN。

而且,現(xiàn)在很多技術(shù)都通過GitHub進(jìn)行開源和共建的,版本管理工具的使用也是一個Java開發(fā)必備的基本技能。

版本管理也有很多學(xué)問在的,比如到底什么時候應(yīng)該提交、提交的時候 Commit message 應(yīng)該如何書寫,如何解決代碼沖突等都需要熟練掌握的。

構(gòu)建工具

和版本管理一樣,企業(yè)級開發(fā)的依賴管理也不再是那種原始的進(jìn)行Jar包的導(dǎo)入導(dǎo)出。而是借助于像maven或者gradle等工具。

構(gòu)建工具的使用同樣重要,而且一個合格的開發(fā)人員,要掌握如何進(jìn)行依賴沖突的檢查、如何進(jìn)行依賴仲裁等。

代碼調(diào)試

有人調(diào)侃程序員,一半的時間在寫bug,另外一半的時間在debug。這句話聽起來挺扎心的,但是也恰恰說明了debug的重要性。

雖然說程序員花費(fèi)一半的時間在寫bug是有點(diǎn)過分的,但是,任何程序員的代碼也不可能一氣呵成,越大型的項目bug可能就會越多,在線下開發(fā)的時候,debug是最有效的問題發(fā)現(xiàn)和解決的手段。

代碼調(diào)試其實比較簡單,只要設(shè)置好端點(diǎn),跟著程序一步一步的執(zhí)行看效果就好了。只要學(xué)會運(yùn)用IDE提供的工具就可以了??梢詤⒖肌禘clipse的Debug技巧》

問題排查與解決

關(guān)于問題排查,這個能力真的是非常非常重要的。

發(fā)生問題的時候,就是檢驗程序員能力的時候。這是最能區(qū)分程序員的水平的技能了。一個問題往往可能會涉及到很多個方面的知識。

阿里有一個神級人物,花名多隆。在淘寶初期,不管遇到什么問題,他基本都能解決。他之所以被稱之為神,就是因為他的問題排查和解決能力。如果你能在兩天內(nèi)解決一個組兩周都沒解決的問題,那么你也會被稱之為神。

很多時候,解決問題并不難,難的是定位問題。這會涉及到很多知識,知識儲備很重要,但是,在知識儲備還不夠的情況下,至少可以從以下幾個方面來提升自己的能力。

1、日志的查看

2、分析Java的堆棧信息

3、集群監(jiān)控指標(biāo)的查看

非開發(fā)技能

還有一類技能,可能就和開發(fā)完全沒有關(guān)系的,我稱之為非開發(fā)技能。這些技能往往決定著一個開發(fā)人員到底能夠走多高。

目標(biāo)導(dǎo)向

我把目標(biāo)導(dǎo)向稱之為一種能力,是一種一個人應(yīng)該具備的基本能力。而且,也是可以鍛煉和培養(yǎng)出來的。

目標(biāo)導(dǎo)向型的人,就是做事之前先明確目標(biāo),再尋找實現(xiàn)目標(biāo)的方法,最后動用一切可以利用的資源通過各種方法來實現(xiàn)目標(biāo)。

目標(biāo)導(dǎo)向型的人,目標(biāo)是明確的。

目標(biāo)明確的人,做事的時候,不會輕易動搖或者放棄,為了目標(biāo)能克服困難堅持到最后。

目標(biāo)明確的人,做事的時候,會去思考、嘗試實現(xiàn)目標(biāo)的各種方法。

目標(biāo)明確的人,做事的時候,會去發(fā)現(xiàn)、創(chuàng)造、借用一切能夠?qū)崿F(xiàn)目標(biāo)的資源。

不斷給自己設(shè)定目標(biāo),做一個目標(biāo)導(dǎo)向的程序員吧。如果,你非要把目標(biāo)導(dǎo)向理解為KPI導(dǎo)向我也不攔著。主要是有目標(biāo),為之而努力,我覺得就是OK的。

時間管理

對于任何人來說,時間管理都是很重要的,對于程序員來說,尤其重要,因為我們可支配的時間并不多。

如何正確的管理自己的時間,是一門很深的學(xué)問。有些人加班加點(diǎn),甚至996的工作方式。但是最終還是得不到一個好的結(jié)果,這很大程度上是由于時間管理的不夠好,大部分時間都在“瞎忙”。

很多時候,苦勞在功勞面前會略顯滄桑。

一個程序員的一天會有很多事情要忙,在工作上,一天可能排了幾個需求評審、設(shè)計評審、交互評審、TC評審等,還要排查問題,還要寫代碼,有的時候還要充當(dāng)產(chǎn)品、運(yùn)營、甚至客服的角色。在生活中,還要陪伴家人、充實自己,鍛煉身體等。如何安排好自己的時間是十分重要的。

關(guān)于時間管理,我有個建議,那就是把自己的手上的事情排列好,一段時間只做一件事。

快速學(xué)習(xí)

在這個技術(shù)高速發(fā)展的時代,每天都有新技術(shù)在推出。一個好的開發(fā)人員要保證自己永遠(yuǎn)不會被淘汰,就需要不斷的去學(xué)習(xí)。

而學(xué)習(xí)無疑是要花費(fèi)很多的時間的。那么,快速的學(xué)習(xí)能力對于一個時間本就不多的程序員來說也是至關(guān)重要的。

英語能力

首先,我們的日常開發(fā)的代碼都是基于英文的,目前很多技術(shù)也都是外國人發(fā)明的。也就是說很多技術(shù)剛出來的文檔都是英文的。

拿最近最火的區(qū)塊鏈舉例,不管中本聰是不是日本人,他發(fā)布的區(qū)塊鏈白皮書也是英文的,英語能力好的人可以馬上學(xué)習(xí)到新的知識,英語能力不好的,可能看到的都是二手翻譯資料了。

英語好的技術(shù)人員,靠翻譯書籍也能賺很多錢。而英語不好的程序員,給變量命名都費(fèi)勁。

科學(xué)上網(wǎng)

這一點(diǎn)我覺得對于開發(fā)人員來說是至關(guān)重要的。就像前面那條英語能力一樣。很多資料都是發(fā)布在國外的網(wǎng)站上的。

無論是Google、維基百科這些都需要科學(xué)上網(wǎng)。而且很多國外的網(wǎng)站,如StackOverflow、GitHub等科學(xué)上網(wǎng)也能更快的訪問到。

項目管理

每一個程序員,都有做PM的那一天,不管負(fù)責(zé)的是大項目還是小項目。都需要很好的項目管理能力才行。

要知道如何預(yù)估風(fēng)險、如何預(yù)估成本、如何保證項目按時上線、如何管理項目團(tuán)隊,這都是有很多學(xué)問在的。

任何一點(diǎn)掌握不好,都有可能導(dǎo)致項目風(fēng)險甚至項目失敗。

項目管理這種事情,項目如期發(fā)布可能并沒有功勞,但是一旦項目delay,那就有罪過了。

不會項目管理的程序員,最多也就是一個高級程序員,無法晉升為專家及以上級別。

協(xié)調(diào)溝通

在一個項目中,除了項目經(jīng)理角色外,開發(fā)人員之間也并不是獨(dú)立的。很多時候都需要跨團(tuán)隊、跨部門甚至跨公司之間合作。

在項目中,你和其他參與的同學(xué)是同一個角色的,大家之間的關(guān)系在層級上可以算是平級,那么如何很好的橫向管理會很重要了。

為什么很多人解決一件事情很快,有些人卻要繞很多彎子。因為有些人懂得協(xié)調(diào)溝通的技巧,說白了就是出去辦事有時候光靠“刷臉”就可以解決問題了。那么,之所以可以“刷臉”,就是因為平時的協(xié)調(diào)溝通能力強(qiáng)。

理解能力

理解能力不好,就不能很好的理解需求。不能很好的理解需求,就可能浪費(fèi)很多時間。很多時候,PD給的需求文檔并不都是合理的,這種情況下,如果開發(fā)的理解能力再差一些,無法在需求評審階段正確的理解需求,那么這個項目的結(jié)果可想而知。

理解能力不好,就沒辦法快速的學(xué)習(xí)新的知識,同樣也要比別人多花費(fèi)一些時間。同樣是學(xué)習(xí)Java 9的Jigsaw,有些人就能很快的理解模塊化的原理,有些人就怎么都想不通。這就是因為理解能力的不同。

表達(dá)能力

前面說的幾項能力,都或多或少的要依賴表達(dá)能力。如果表達(dá)能力不好,協(xié)調(diào)溝通肯定出問題,更別提項目管理了。

除了日常工作需要表達(dá)能力和別人溝通外,很多公司要寫日報、周報或者月報等。表達(dá)能力好的就可以很清楚的寫明白自己做了什么,有什么貢獻(xiàn),這樣領(lǐng)導(dǎo)看的也舒服。工作成果自然不會很差。

還有,就是很多公司的晉升制度是靠答辯的。那么如何很好的把自己過去一段時間的工作成果和收獲表達(dá)的清楚很大程度上決定著晉升的結(jié)果。

還有些時候,開發(fā)人員也要參與演講,無論是團(tuán)隊內(nèi)部、公司內(nèi)部還是參與業(yè)內(nèi)會議。表達(dá)能力都至關(guān)重要。很多時候,別人了解一個人,首先就是通過他的表達(dá)能力。

新木桶理論

前面說了這么多,細(xì)數(shù)下來,好像一個程序員就是全能了一樣。不過,我想說,程序員就應(yīng)該是全能的,因為我們是要改變世界的啊。

話說回來了,如果你有能力,最好可以把上面的所以能力都鍛煉出來。但是,如果你就是某方面不是很擅長,那么,你也應(yīng)該清楚的認(rèn)識到自己哪里不足。

不知道自己不知道才是最可怕的。這篇文章,有一個小目的,就是先讓你知道你自己不知道。

我們知道的木桶定律——桶裝水的多少,取決于最短的一塊板子。

傳統(tǒng)的木桶定律是把木桶放在平面上來衡量的。但是,如果把木桶放置在一個斜面上的時候,木桶裝水的多少就取決于最長的一塊板子的長度。

當(dāng)然這要求長與長要正相對,并且長木塊的周圍要有相應(yīng)長度的木塊作為她的輔助。

也就是說當(dāng)我們比別人在某一塊短一大節(jié)時,不但要選擇合適的斜度。更重要的是把其他木塊合理排列起來,使它們發(fā)揮應(yīng)有的作用。這樣才可以最大限度的利用現(xiàn)有的木塊。

上面我列的這些技能,就是一個程序員木桶的各個木板,有短板沒關(guān)系,只要你找到自己的長板,并且在自己的長板周圍排列起來其他的相應(yīng)長度的木板即可。

雞湯時間

上面提到的技能,他們之所以被稱之為技能,就是因為他們是可以鍛煉出來的。包括理解能力、表達(dá)能力還有學(xué)習(xí)能力。都是可以鍛煉的。

所以,開發(fā)者們,不要只顧著悶頭擼代碼。沒事兒也要抬頭看一看。補(bǔ)一補(bǔ)自己這塊木桶中各個木板的長度吧。這樣才能使你走的更遠(yuǎn)。

技術(shù)水平?jīng)Q定的是你的發(fā)展下限。軟技能決定的是你發(fā)展的上限。

加油,共勉。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2948

    瀏覽量

    104376
  • 開發(fā)工程師
    +關(guān)注

    關(guān)注

    1

    文章

    91

    瀏覽量

    14917
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區(qū)別?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題() Q:FPGA中的FPGA算法工程師、FPGA邏輯工程師、FPGA原型驗證工程師三者有什么區(qū)別? A:FPGA 算法
    發(fā)表于 09-23 18:26

    嵌入式軟件工程師如何提升自己

    嵌入式軟件工程師如何提升自己? 作為一名嵌入式軟件工程師,在這個充滿機(jī)遇和挑戰(zhàn)的領(lǐng)域里,如何提升
    發(fā)表于 06-12 11:20

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    嵌入式軟件工程師和硬件工程師的區(qū)別? 嵌入式軟件工程師 嵌入式軟件工程師是軟件開發(fā)領(lǐng)域中的種專
    發(fā)表于 05-16 11:00

    電源工程師的成長路徑

    即將走馬上任電源工程師這個崗位,請問各位大佬,這個崗位的職業(yè)路徑般是怎樣的?
    發(fā)表于 04-08 14:19

    請問pin no 和Arduino應(yīng)該參考哪個作為自己的管腳?

    請問pin no 和Arduino應(yīng)該參考哪個作為自己的管腳?就是板子上標(biāo)了D7的原來還有兩同名管腳嗎,我在數(shù)據(jù)手冊上直接看到pin no D7,怎么找arduino的 因為在數(shù)據(jù)
    發(fā)表于 03-18 06:14

    如何入門硬件工程師

    想跨行業(yè)做硬件設(shè)計工程師,應(yīng)該如何學(xué)習(xí)規(guī)劃呢
    發(fā)表于 03-17 21:49

    單片機(jī)如何通過代碼控制硬件:一名工程師的分享

    今天跟大家聊聊單片機(jī)是怎樣通過代碼來操控硬件的。作為一名單片機(jī)工程師,我們平時的工作就像是給單片機(jī)編寫“指令集”,讓它按照我們的意圖去驅(qū)動各種硬件設(shè)備。
    的頭像 發(fā)表于 03-06 14:46 ?1289次閱讀
    單片機(jī)如何通過代碼控制硬件:<b class='flag-5'>一名</b><b class='flag-5'>工程師</b>的分享

    如何搞崩硬件工程師心態(tài)?試試對ta說這幾句

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2024年02月20日 18:05:49

    優(yōu)秀電源工程師需要哪些必備技能?

    隨著電源市場的不斷擴(kuò)張,開關(guān)電源行業(yè)飛速發(fā)展,企業(yè)對電源工程師的需求日益增加,對電源工程師的技能要求也日漸提高,相信沒有位電源工程師會錯過讓自己
    發(fā)表于 01-29 11:29

    優(yōu)秀電源工程師的必備技能大揭秘!

    隨著電源市場的不斷擴(kuò)張,開關(guān)電源行業(yè)飛速發(fā)展,企業(yè)對電源工程師的需求日益增加,對電源工程師的技能要求也日漸提高,相信沒有位電源工程師會錯過讓自己
    的頭像 發(fā)表于 12-19 08:23 ?1597次閱讀
    優(yōu)秀電源<b class='flag-5'>工程師</b>的必備技能大揭秘!

    #人工智能 #FPGA 怎么成為合格的FPGA工程師?

    fpga工程師
    明德?lián)P助教小易老師
    發(fā)布于 :2023年12月18日 21:19:01

    FPGA工程師需要具備哪些技能?

    、設(shè)計思路 FPGA芯片是開發(fā)高速數(shù)字電路設(shè)計的理想解決方案之。FPGA芯片基于HDL的設(shè)計方法允許工程師使用高級語言進(jìn)行設(shè)計。因此,F(xiàn)PGA工程師需要具備設(shè)計思路能力,包括分析需
    發(fā)表于 11-09 11:03

    如何成為一名優(yōu)秀的嵌入式工程師?

    了解到最新的技術(shù)和趨勢,同時也可以提高自己的編程水平。 要成為一名優(yōu)秀的嵌入式工程師,需要不斷學(xué)習(xí)和實踐,掌握C語言的基礎(chǔ)知識,同時也要關(guān)注嵌入式的發(fā)展和變化,不斷提高自己的編程水平。
    發(fā)表于 11-07 15:36