日常開(kāi)發(fā)中,提升技術(shù)的13個(gè)建議
前言
大家好,我是田螺。
最近有位星球好友問(wèn)我:田螺哥,日常開(kāi)發(fā)中,都是在做業(yè)務(wù)需求,如何提升自己的技術(shù)呢?因此,本文田螺哥整理了提升技術(shù)的13個(gè)建議,小伙伴們,一起加油。
1. 打好基礎(chǔ),深入學(xué)習(xí)語(yǔ)言特性
比如,對(duì)于Java程序員來(lái)說(shuō),要了解Java語(yǔ)言的基本概念和核心特性,包括面向?qū)ο缶幊獭⒓峡蚣堋惓L幚怼⒍嗑€程等等。可以通過(guò)閱讀Java的官方文檔、教程、參考書(shū)籍或在線資源來(lái)學(xué)習(xí)。
如果最基本的基礎(chǔ)都不扎實(shí),就不要談什么提升技術(shù)啦。 比如說(shuō):
- 你知道HashMap和ConcurrentHashMap的區(qū)別嘛?
- 在什么時(shí)候使用ConcurrentHashMap?
- 操作文件的時(shí)候,你知道在finally塊中釋放資源嘛?
- 你知道在哪些場(chǎng)景適合用泛型嘛?
因此,要提升自身技術(shù),首先就是要把基礎(chǔ)打扎實(shí)。有些小伙伴說(shuō),上班沒(méi)時(shí)間學(xué)基礎(chǔ)呀,其實(shí)不是這樣的,基礎(chǔ)這玩意,每天地鐵上下班看看,下班后回到家再看看,周末在家看看,多點(diǎn)寫(xiě)寫(xiě)代碼,一般一兩個(gè)月,你的基礎(chǔ)就很好啦。
又有些小伙伴說(shuō),如何提升Java基礎(chǔ)呢?有哪些教程推薦呢?可以:
- 閱讀Java相關(guān)書(shū)籍或教程,如Java編程思想、Java核心技術(shù)、Java虛擬機(jī)、菜鳥(niǎo)教程等
- 閱讀Java博客和社區(qū)參與討論:關(guān)注Java領(lǐng)域的博客、論壇和社區(qū),了解最新的技術(shù)動(dòng)態(tài)和解決方案,與其他開(kāi)發(fā)者交流。
- 多實(shí)踐,多敲代碼:在B站找個(gè)Java基礎(chǔ)視頻看,平時(shí)多實(shí)踐、多敲代碼
2. 熟悉掌握常用的開(kāi)發(fā)工具
工欲善其事,必先利其器. 所以一位好的程序員,往往編碼效率就更高。而提升編碼效率,一般要求熟悉并靈活應(yīng)用工具.比如Eclipse、IntelliJ IDEA、Maven、Navicat等。熟悉運(yùn)用這些工具,可以提高開(kāi)發(fā)效率。
我舉個(gè)例子,比如你熟悉掌握IntelliJ IDEA的快捷鍵,三兩下就把實(shí)體類的setter和getter方法生成了,而有些的程序員,還在一行一行慢慢敲。。
3. 日常工作中,總結(jié)你踩過(guò)的坑
優(yōu)秀的程序員,之所以優(yōu)秀,是因?yàn)樗麜?huì)總結(jié)踩過(guò)的坑,避免重蹈覆轍。所以,田螺哥建議你,日常開(kāi)發(fā)中,如果你踩了哪些坑,就需要總結(jié)下來(lái).茶余飯后,再溫習(xí)溫習(xí).
比如,你知道:
- Redis分布式鎖使用,可能會(huì)有哪些坑嘛?
- 線程池使用有哪些坑?
- Java日期處理有哪些坑嘛?
- Arrays.asList使用可能有哪些坑?
如果一時(shí)間忘記的話,可以看下我以前的這些文章:
- 細(xì)數(shù)線程池的10個(gè)坑
- Redis分布式鎖的10個(gè)坑
- Java日常開(kāi)發(fā)的21個(gè)坑,你踩過(guò)幾個(gè)?
- 程序員必備:Java日期處理的十個(gè)坑
這些都是我工作總結(jié)出來(lái)的,也希望你們?nèi)粘i_(kāi)發(fā)中,遇到哪些坑,都總結(jié)下來(lái)哈。
4.工作中,閱讀你們系統(tǒng)優(yōu)秀的代碼和設(shè)計(jì)文檔
孔子說(shuō),三人行,必有我?guī)煛4蠹移綍r(shí)在看代碼的時(shí)候,不要總吐槽著項(xiàng)目的爛代碼。其實(shí),可以多點(diǎn)關(guān)注寫(xiě)得優(yōu)秀的代碼,然后看懂別人為什么這些寫(xiě),仿造著來(lái)寫(xiě)。
當(dāng)然,一些好的設(shè)計(jì)文檔也是:人家為什么這么設(shè)計(jì),好處在哪里,不足又在哪里,如果是你來(lái)設(shè)計(jì),你如何思考等等。把好的設(shè)計(jì),讀懂后,記錄下來(lái),變成自己的知識(shí).
5.日常工作中,總結(jié)一些通用的技術(shù)方案
在日常工作中呢,注意整理一些通用的技術(shù)方案。
比如冪等設(shè)計(jì)、分布式鎖如何設(shè)計(jì)、分布式事務(wù)設(shè)計(jì)、接口優(yōu)化、限流設(shè)計(jì)、分庫(kù)分表設(shè)計(jì)、深分頁(yè)問(wèn)題解決等等. 大家可以看下我之前的一些通用方案設(shè)計(jì)的文章哈:
- 后端思想篇:設(shè)計(jì)好接口的36個(gè)錦囊!
- 我們?yōu)槭裁匆謳?kù)分表?
- 面試必備:聊聊分布式鎖的多種實(shí)現(xiàn)!
- 聊聊冪等設(shè)計(jì)
- 實(shí)戰(zhàn)!聊聊如何解決MySQL深分頁(yè)問(wèn)題
當(dāng)然,田螺哥也建議你,日常開(kāi)發(fā)中,把自己遇到的一些通用設(shè)計(jì)方案總結(jié)下來(lái),熟悉掌握這些通用技術(shù)方案。
6.參與技術(shù)討論,積極技術(shù)分享
參與技術(shù)討論和交流,可以有助于你與其他Java開(kāi)發(fā)者分享經(jīng)驗(yàn)、解決問(wèn)題和學(xué)習(xí)新知識(shí)。進(jìn)行技術(shù)分享,可以加深自己的理解、建立專業(yè)聲譽(yù)、促進(jìn)個(gè)人成長(zhǎng)、為技術(shù)社區(qū)做貢獻(xiàn)等等。
比如你做需求遇到的一些難題,都可以跟有經(jīng)驗(yàn)的同事、或者技術(shù)leader討論討論。一些常見(jiàn)的難題,討論完可以記錄下來(lái),然后做技術(shù)分享。
7. 主人翁意識(shí),積極攻克項(xiàng)目的難題
作為一名開(kāi)發(fā)工程師,具備主人翁意識(shí)并積極攻克項(xiàng)目的難題,是非常重要的。遇到項(xiàng)目中的比較棘手問(wèn)題時(shí),先不管是誰(shuí)的問(wèn)題,我們都要持有主人翁意識(shí),積極主動(dòng)地找到解決方案并采取行動(dòng)。
而在找技術(shù)解決方案的過(guò)程,我們也就成長(zhǎng)了。當(dāng)攻克問(wèn)題后,你也獲得領(lǐng)導(dǎo)的認(rèn)可,好績(jī)效不遠(yuǎn)了,一舉多得!
8. 思考項(xiàng)目中,哪些可以提升效率
日常開(kāi)發(fā)中,幾乎大多數(shù)程序員都是在進(jìn)行增刪改查。如何如何避免自己成為平凡的增刪改查程序員呢。
我覺(jué)得可以這樣做:平時(shí)工作中,思考項(xiàng)目中,有哪些可以提升的效率。包括熟悉開(kāi)發(fā)工具、掌握適當(dāng)?shù)恼{(diào)試技巧、熟悉常用框架、持續(xù)學(xué)習(xí)和關(guān)注技術(shù)發(fā)展等等。
比如:
- 好的的debug調(diào)試技巧,可以讓你快速找到問(wèn)題
- 再比如一個(gè)插件easyyapi可以一鍵讓你快速生成yapi接口文檔,而不用一個(gè)一個(gè)字段手工敲接口文檔。
當(dāng)然,日常開(kāi)發(fā)中,還有很多可以提升效率的技巧/工具,等待我們?nèi)グl(fā)現(xiàn)。
9. 熟悉你的業(yè)務(wù),讓自己不容易被替代
我們普通程序員,多數(shù)都是做業(yè)務(wù)的。一般工作個(gè)五年以上,水平差不了太多。如何避免自己被淘汰呢?我個(gè)人建議是,盡量做到熟悉你們做的業(yè)務(wù),讓自己變得不容易被替代。
10. 多看看你的系統(tǒng),可能存在哪些問(wèn)題,如接口耗時(shí)、慢SQL等等
一般的系統(tǒng),多多少少都有些問(wèn)題。比如接口耗時(shí)過(guò)長(zhǎng)、慢SQL、fullGC頻繁等等。
首先需要掌握這些技能,比如如何優(yōu)化接口,如何優(yōu)化慢SQL、fullGC如何排查等等。
11. 學(xué)以致用,將理論知識(shí)應(yīng)用到實(shí)際項(xiàng)目中
很多小伙伴說(shuō),看過(guò)很多計(jì)算機(jī)相關(guān)的書(shū),閱讀過(guò)很多博客,背了很多八股文,依然做不好一個(gè)系統(tǒng)。
我覺(jué)得,大家可以多點(diǎn)思考,把平時(shí)積累的東西,應(yīng)用到實(shí)際項(xiàng)目中。背八股文不是沒(méi)用,你可以把它應(yīng)用到實(shí)際開(kāi)發(fā)中的。比如說(shuō),你看了田螺哥的文章,IO模型詳解
這個(gè)表面看起來(lái)就是一個(gè)常見(jiàn)的八股文知識(shí)點(diǎn),工作中似乎沒(méi)用到。但是我在工作中,就用到這種類似的異步思想:
比如發(fā)起一筆批量轉(zhuǎn)賬,但是批量轉(zhuǎn)賬處理比較耗時(shí),這時(shí)候后端可以先告知前端轉(zhuǎn)賬提交成功,等到結(jié)果處理完,再通知前端結(jié)果即可。
再比如,你看完田螺哥的:MySQL索引15連問(wèn),抗住!,你是不是可以回頭看看,你的系統(tǒng)中,那些sql的索引加的是否合理呢?是不是可以思考一下如何優(yōu)化,對(duì)吧。因此,就是要學(xué)以致用。
12. 閱讀一些優(yōu)秀框架的源碼,如spring、rockectMq等等
如果你有空余的時(shí)間,就建議你看看一些優(yōu)化框架的源碼,比如spring、rockectMq等等。
對(duì)于spring源碼的話,可以按模塊來(lái)呀,比如aop,控制反轉(zhuǎn),spring事務(wù)等,你先寫(xiě)個(gè)demo,然后debug跟蹤流程,通過(guò)調(diào)試器逐步跟蹤源碼執(zhí)行過(guò)程,觀察各個(gè)方法的調(diào)用關(guān)系和數(shù)據(jù)變化。最好是結(jié)合電子書(shū)一起,如(Spring源碼深度解析這本書(shū)一起)
優(yōu)秀框架的源碼,我們可以學(xué)習(xí)到很多編碼思想的,加油。
13. 多編碼,少偷懶,養(yǎng)成編程的好習(xí)慣
作為程序員,一定要多打代碼,不要偷懶,代碼敲多了,你就會(huì)了。還有就是,少點(diǎn)偷懶,堅(jiān)持!努力!養(yǎng)成熱愛(ài)編程的好習(xí)慣。
總之,提升技術(shù)需要不斷學(xué)習(xí)、實(shí)踐、總結(jié)和積累經(jīng)驗(yàn)。