想了解java程序員中心嗎?想了解Java 程序員每天都在做什么?,Java程序員必看的技術(shù)社區(qū)?? 嗎?......本文帶你一探究竟。
1.Java 程序員每天都在做什么?
魚皮是一名 在大、中、小微企業(yè)都待過 的 Java 開發(fā)者,今天和大家分享下自己在不同公司的工作日常和收獲。包括一些個人積累的工作提升經(jīng)驗,以及一些 Java 學(xué)習的方法和資源。先從我的*份 Java 開發(fā)實習工作說起吧~實習生工作日常我是在大二暑期開始了我人生的*次實習,崗位正是 Java 開發(fā),還混了個 title 叫 “助理 Java 工程師”!這家公司屬于一家中型企業(yè),作為*份實習,我已經(jīng)很滿足了。剛進入公司的*天,在導(dǎo)師和運維同學(xué)的幫助下,搞好辦公設(shè)備,安裝開發(fā)環(huán)境,本以為第二天就能開始寫代碼。但是整整兩周,我都沒有寫下一行 Java 代碼!而是先花了一周的時間熟悉企業(yè)的業(yè)務(wù)、我要參與的項目源碼(Spring 全家桶 + Dubbo)、以及公司的各種辦公套件和研發(fā)流程。這些幾乎是每位剛剛進入新公司的同學(xué)都要做的事情。然后我就開始接需求了,面對前人留下的 xx 一樣的代碼和復(fù)雜的業(yè)務(wù),我根本無從下手。那么這一周我做了些什么呢?在導(dǎo)師的指導(dǎo)下,我針對這個需求涉及的業(yè)務(wù)流程畫了一個很完整的流程圖,并且在流程圖上進行了詳細的標注。畫完流程圖之后,我突然感覺思路清晰了很多,接下來就是寫偽代碼,終于在一周后,我才正式開始寫 Java 代碼了。在此之前,我基本都是跟著視頻教程寫寫簡單的 Demo 程序,或者自己為了學(xué)習做做簡單的小項目。從來沒有像這次一樣在寫代碼前進行如此精心的設(shè)計,*次有了自己走出校園的感覺,這種體驗和成長是在學(xué)校無法感受到的。這也是為什么我建議計算機專業(yè)的同學(xué)在學(xué)了一些開發(fā)技術(shù)后,趁早去找一份實習,不用擔心自己的經(jīng)驗不足,通過面試和企業(yè)工作的磨練才能讓你積累更多的經(jīng)驗、提升技術(shù),也能幫助你明確自己的目標?,F(xiàn)在也有很多幫助*生找實習的平臺,像 牛客網(wǎng)、實習僧 都是很不錯的。實習的這家公司雖然不大,但是團隊的氛圍非常好。也正因為公司不大,和技術(shù)主管、CTO 等大佬的交流機會也非常多,我們每天開工前都會開站會(敏捷開發(fā))來討論工作,并且定期地舉辦技術(shù)分享。整個實習過程真的非常愉快,學(xué)到了很多技術(shù)和業(yè)務(wù)知識,也開拓了眼界,明確了我今后的職業(yè)發(fā)展方向。最爽的事是工作不忙的時候也摸魚兒刷了一些算法,真的非常感謝公司和這段實習經(jīng)歷!然后分享我目前在 騰訊 做 Java 開發(fā)的日常。鵝廠工作日常沒錯,鵝廠并不是只有 C++ 這一門后端開發(fā)語言,其實鵝廠的 Java 程序員數(shù)量也是很多的!我從大三暑假開始就在騰訊實習,并通過答辯轉(zhuǎn)正,雖然只畢業(yè)半年,但至今累積在鵝廠寫 Java 已經(jīng)一年半多了,那除了偶爾摸魚外,我平時的工作都做些什么呢?起初我以為大廠程序員的工作日常也就是寫代碼、造輪子,在大公司,就得寫更多的代碼!結(jié)果在剛?cè)肼殨r,由于經(jīng)驗不足,再加上年輕氣盛,有著莫名的自信。剛拿到需求后,我覺得特別簡單,不就是 CRUD(增刪改查)么?于是,我就懶得設(shè)計方案了,沒怎么思考就直接上手寫代碼了,結(jié)果不斷翻車,出現(xiàn)了很多細節(jié)問題,比如數(shù)據(jù)沒有訪問權(quán)限獲取不到、和其他*的同學(xué)接口字段沒對齊等等,甚至還出現(xiàn)需求理解錯誤的情況!*導(dǎo)致的結(jié)果就是做了很多無用功,把本來幾天就能做完的需求一拖再拖,一度以為自己要被勸退了! o(╥﹏╥)o經(jīng)歷了一次次的翻車后,我開始思考自己的問題到底出在哪里,為什么我總感覺自己什么都知道、可以寫出代碼,但寫出的代碼卻經(jīng)常錯誤連篇呢?我向?qū)熀推渌耐抡埥毯蟀l(fā)現(xiàn),其實大家更多的時間并不是在寫代碼,而是在 開會討論、核對需求、溝通對齊、設(shè)計技術(shù)方案、測試等。寫代碼的時間其實很少很少!導(dǎo)師對我說:“其實寫代碼并不難,關(guān)鍵是要明確為什么要寫代碼、怎么寫代碼、寫什么代碼?!痹瓉?,相比寫代碼,更重要的是寫代碼前的技術(shù)方案設(shè)計和寫代碼后的測試!技術(shù)方案設(shè)計當程序員確認完需求后,要先根據(jù)需求來給出一個清晰明確的技術(shù)方案,一方面是證明需求的可行性,另一方面是對自己之后的代碼實現(xiàn)有一個大致思路。很多的問題其實是可以在設(shè)計階段去發(fā)現(xiàn)和規(guī)避的,而不是等你寫代碼的時候,才發(fā)現(xiàn)之前的設(shè)計有問題、甚至是需求本身就不合理!到時候耽誤了項目上線,背鍋的就是程序員自己!之前有朋友問,在大公司,萬一寫著寫著代碼,沒思路了、寫不出來了怎么辦?這種問題其實就是可以通過前期的技術(shù)方案設(shè)計來規(guī)避的。畢竟老板才不關(guān)心你代碼寫的怎么樣,他只關(guān)心你的技術(shù)方案,換句話說,是關(guān)心你能不能按時完成項目!此前,我即使畫了一些流程圖,目的也僅僅是在于幫助自己寫代碼。覺得代碼能寫出來后,我就不再去考慮方案設(shè)計了。而在意識到技術(shù)方案的重要性后,我會在理解需求后,先寫一份詳盡的技術(shù)方案,包括需求的合理性分析、選用什么技術(shù)來實現(xiàn)指定的功能、怎么設(shè)計庫表結(jié)構(gòu)、怎么設(shè)計類之間的關(guān)系(用哪種設(shè)計模式)、怎么設(shè)計接口、計劃工期是多久、有沒有什么風險點等等。開發(fā)設(shè)計好方案后,就要投入開發(fā)?;揪褪窍壤靡恍?shù)據(jù)庫管理軟件或者登陸服務(wù)器去配置一些庫表,然后選用一些 Java 類庫和工具來編寫業(yè)務(wù)代碼。說是編寫代碼,其實 80% 以上都是復(fù)制粘貼!復(fù)制別人的,復(fù)制自己的,積累的代碼多了之后,簡直爽的飛起!不能復(fù)制粘貼的,也可以用一些代碼生成工具、甚至是低代碼工具來偷偷懶。誰說 CRUD 工程師就沒有技術(shù)?哼,咱偷懶也要有水平。寫代碼的過程中,你要遵循一定的規(guī)范,不斷地將重復(fù)的代碼進行抽象、封裝和復(fù)用,可以利用一些設(shè)計模式,并且要多多編寫注釋,提高代碼的可讀性和可維護性。關(guān)于代碼規(guī)范,建議參考 Google 開源的 Java 代碼規(guī)范或者阿里巴巴的 Java 代碼規(guī)范,非常專業(yè)!寫好代碼后,你要再次檢查自己的代碼,可以利用一些代碼格式化和代碼檢查工具來提前發(fā)現(xiàn)一些規(guī)范問題以及 bug,還要在本地編寫單元測試來最細粒度地保證代碼的可運行性和正確性。Java 的單元測試類庫一般用 JUnit 就行了,本地自己測試請求接口的話可以直接用 IDEA 自帶的測試插件,也可以選用 Swagger 或者 YAPI、Postman 等接口管理工具,甚至還可以直接使用命令行 curl 等。測試在寫完代碼之后,要經(jīng)過非常非常非常充分的測試才能提交代碼!這個階段也是非常花時間的,需要配合測試同學(xué),提供一些測試的細節(jié)和補充說明,并且對測試中發(fā)現(xiàn)的問題進行修復(fù)。很多程序員應(yīng)該都有這種感受:寫 bug 一分鐘,改 bug 一小時!這些就是我目前在鵝廠的日常工作,其實和其他公司不會什么區(qū)別,無非就是你負責的業(yè)務(wù)量級越大,你在設(shè)計、測試等環(huán)節(jié)上投入的時間和精力就要更多;業(yè)務(wù)團隊越大,你在需求溝通和合作上也要花更多的時間。這些工作看似和寫代碼關(guān)系不大,但對于程序員的經(jīng)驗積累以及職業(yè)素養(yǎng)、工程能力的提升是至關(guān)重要的!優(yōu)秀的程序員,不只是有能力寫得一手好代碼,更多的是需要具備一些工程師素養(yǎng),比如:對技術(shù)有獨特的興趣和追求,持續(xù)學(xué)習有全局觀,總能站在一個更高、更全局的視角去考慮問題處理事情小心謹慎,而不是憑直覺和過去的經(jīng)驗主觀臆斷溝通能力強,能夠用方便他人理解的方式來描述問題強大的設(shè)計架構(gòu)能力刨根問題,深究問題本質(zhì)代碼潔癖,精益求精不止技術(shù),還注重業(yè)務(wù)底層邏輯,關(guān)心用戶執(zhí)行力強,有責任心懂得利用自動化工具提升效率善用繪圖、圖表來描述技術(shù)架構(gòu)和問題樂于分享,積極為他人指路在工作之余,我也在朝著成為一名優(yōu)秀工程師的路上而努力。因此,我會利用公司提供的知識平臺、問答平臺和技術(shù)資源進行學(xué)習,并且多和身邊的技術(shù)大牛們交流。大公司技術(shù)好,大佬多,提供的資源也真的非常多,這是我認為很多同學(xué)應(yīng)該去大廠的一個原因,而身在大廠的同學(xué)更應(yīng)該利用好這些資源。我還會積極參與一些公司內(nèi)外的開源項目,和優(yōu)秀的程序員朋友一起合作,互相學(xué)習進步,提升代碼的水平。這里也建議大家多看 GitHub 上的開源項目,先在本地運行并熟練使用它,然后嘗試分析源碼和貢獻代碼。不會找開源項目?我之前分享過一篇文章,能幫到大家:【硬核干貨】如何高效找到優(yōu)質(zhì)編程項目?此外,提升個人影響力也是很重要的,我認識很多 Java 開發(fā)工作者都喜歡寫技術(shù)文章,并且一些朋友開通了自己的自媒體平臺來分享文章,甚至有一些大??孔悦襟w收入還實現(xiàn)了財富自由!在寫文章的過程中,我進一步鍛煉了自己的文筆,向很多朋友學(xué)到了知識,也督促我來不斷輸入知識、提升自己。以上就是我的 Java 開發(fā)日常,你可能會好奇,魚皮在哪家小微公司待過呢?這是個秘密!Java 開發(fā)者的工作看似平淡,但只要你愛好編程,愛好這個行業(yè),每一天都能過的充實而有意義!
2.Java程序員必看的技術(shù)社區(qū)
作為一名技術(shù)人員,視野必須要足夠開闊。只有見得多,才能升華自己的知識以及想法。今天給大家介紹幾個Java程序必看的技術(shù)社區(qū),我保證你一定會在里面收獲大量的知識。注意:每個網(wǎng)站的網(wǎng)址我都沒有具體貼出來(原因大家都懂的,請見諒),需要大家自行在搜索引擎搜索,一般都是*條。GitHub想必所有程序員都對GitHub有所耳聞,它是全世界*的代碼倉庫(由于男性程序員居多,被調(diào)侃為”世界上*的同性交友社區(qū)“),大多數(shù)主流的框架都在此孵化成長。代碼倉庫的種類已經(jīng)超越了Java的范疇,任何編程語言的任何項目,只要你想的到的,幾乎都能在里面找到。Java官網(wǎng)也許這是最不起眼的一個,但它確實是最重要的一個。諸如Java語言規(guī)范、Java虛擬機規(guī)范、Java EE規(guī)范等,這些往往被大家所忽略。IBM 隸屬于IBM的一個Java技術(shù)社區(qū),里面有著諸多質(zhì)量很高的文章,貼近當前*最主流的技術(shù)。另外值得一提的是,該網(wǎng)站提供中文版,可以說是很方便貼心了。Simple Java該網(wǎng)站分為很多專題,每篇文章都短小精悍。不妨試著挑一些你感興趣的專題看一看,相信你一定能收獲頗豐。Java World主要是一些Java以及Java生態(tài)的技術(shù)文章,包括安卓等。內(nèi)容比較精美,簡明扼要,讓你比較輕松快速地了解一項技術(shù)。Stack Overflow全球*的技術(shù)問答社區(qū),回答都非常有質(zhì)量。值得注意的一點是,許多開源框架如Spring等,都會在上面建立對應(yīng)的話題,幫助開發(fā)者解決各種問題。介紹完前面幾個重磅推薦的社區(qū),下面再補充幾個國內(nèi)技術(shù)社區(qū)。其中的內(nèi)容良莠不齊,好的文章確實寫得很好,看過之后會有不小的收獲,但是也存在復(fù)制泛濫以及內(nèi)容錯誤的情況,需要大家自行鑒別。CSDN一個技術(shù)氛圍滿滿的社區(qū),不過*的缺點就是界面讓人感覺比較老舊。目前中文領(lǐng)域*的編程問答交流社區(qū)平臺,原型是上面提到的Stack Overflow。碼云國內(nèi)大型的代碼托管平臺,原型是GitHub。由于訪問速度比GitHub快,同時也是中文語言無縫貼合*開發(fā)者,現(xiàn)如今越來越多的人會選擇將項目托管在碼云上??赐晟厦娴慕榻B你可能會有些疑問,為什么主要推薦的都是國外的社區(qū)網(wǎng)站?其實原因很簡單,IT相關(guān)的東西,都是從國外開始發(fā)展的,后期才傳入國內(nèi)。學(xué)習一個先進的東西肯定是從模仿開始的,模仿的過程中必然會有各種問題暴露,需要不斷地完善和發(fā)展。但是國內(nèi)的技術(shù)社區(qū)也不容小覷,首先就具備了中文的天然優(yōu)勢,相信在不斷探索之后也會形成自己的一番天地,大家一起加油吧!
上述文章了解到關(guān)于Java 程序員每天都在做什么?,Java程序員必看的技術(shù)社區(qū)?? ,讓我們對java程序員中心 有一個直觀的認知。我們發(fā)現(xiàn),作為一個優(yōu)秀的Java程序員是多么的自豪。