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