Java 开发者每天都在做什么?
作為一名 在大、中、小微企業都待過 的 Java 開發者,今天和大家分享下自己在不同公司的工作日常和收獲。包括一些個人積累的工作提升經驗,以及一些 Java 學習的方法和資源。
先從我的第一份 Java 開發實習工作說起吧~
實習生工作日常
我是在大二暑期開始了我人生的第一次實習,崗位正是 Java 開發,還混了個 title 叫 “助理 Java 工程師”!
這家公司屬于一家中型企業,作為第一份實習,我已經很滿足了。
剛進入公司的第一天,在導師和運維同學的幫助下,搞好辦公設備,安裝開發環境,本以為第二天就能開始寫代碼。但是整整兩周,我都沒有寫下一行 Java 代碼!而是先花了一周的時間熟悉企業的業務、我要參與的項目源碼(Spring 全家桶 + Dubbo)、以及公司的各種辦公套件和研發流程。這些幾乎是每位剛剛進入新公司的同學都要做的事情。
然后我就開始接需求了,面對前人留下的 xx 一樣的代碼和復雜的業務,我根本無從下手。那么這一周我做了些什么呢?在導師的指導下,我針對這個需求涉及的業務流程畫了一個很完整的流程圖,并且在流程圖上進行了詳細的標注。畫完流程圖之后,我突然感覺思路清晰了很多,接下來就是寫偽代碼,終于在一周后,我才正式開始寫 Java 代碼了。
在此之前,我基本都是跟著視頻教程寫寫簡單的 Demo 程序,或者自己為了學習做做簡單的小項目。從來沒有像這次一樣在寫代碼前進行如此精心的設計,第一次有了自己走出校園的感覺,這種體驗和成長是在學校無法感受到的。這也是為什么我建議計算機專業的同學在學了一些開發技術后,趁早去找一份實習,不用擔心自己的經驗不足,通過面試和企業工作的磨練才能讓你積累更多的經驗、提升技術,也能幫助你明確自己的目標。現在也有很多幫助大學生找實習的平臺,像 牛客網、實習僧 都是很不錯的。
實習的這家公司雖然不大,但是團隊的氛圍非常好。也正因為公司不大,和技術主管、CTO 等大佬的交流機會也非常多,我們每天開工前都會開站會(敏捷開發)來討論工作,并且定期地舉辦技術分享。
整個實習過程真的非常愉快,學到了很多技術和業務知識,也開拓了眼界,明確了我今后的職業發展方向。最爽的事是工作不忙的時候也摸魚兒刷了一些算法,真的非常感謝公司和這段實習經歷!
然后分享我目前在 騰訊 做 Java 開發的日常。
鵝廠工作日常
沒錯,鵝廠并不是只有 C++ 這一門后端開發語言,其實鵝廠的 Java 程序員數量也是很多的!
我從大三暑假開始就在騰訊實習,并通過答辯轉正,雖然只畢業半年,但至今累積在鵝廠寫 Java 已經一年半多了,那除了偶爾摸魚外,我平時的工作都做些什么呢?
起初我以為大廠程序員的工作日常也就是寫代碼、造輪子,在大公司,就得寫更多的代碼!
結果在剛入職時,由于經驗不足,再加上年輕氣盛,有著莫名的自信。剛拿到需求后,我覺得特別簡單,不就是 CRUD(增刪改查)么?于是,我就懶得設計方案了,沒怎么思考就直接上手寫代碼了,結果不斷翻車,出現了很多細節問題,比如數據沒有訪問權限獲取不到、和其他部門的同學接口字段沒對齊等等,甚至還出現需求理解錯誤的情況!最后導致的結果就是做了很多無用功,把本來幾天就能做完的需求一拖再拖,一度以為自己要被勸退了! o(╥﹏╥)o
經歷了一次次的翻車后,我開始思考自己的問題到底出在哪里,為什么我總感覺自己什么都知道、可以寫出代碼,但寫出的代碼卻經常錯誤連篇呢?
我向導師和其他的同事請教后發現,其實大家更多的時間并不是在寫代碼,而是在 開會討論、核對需求、溝通對齊、設計技術方案、測試等。寫代碼的時間其實很少很少!
導師對我說:“其實寫代碼并不難,關鍵是要明確為什么要寫代碼、怎么寫代碼、寫什么代碼。”
原來,相比寫代碼,更重要的是寫代碼前的技術方案設計和寫代碼后的測試!
技術方案設計
當程序員確認完需求后,要先根據需求來給出一個清晰明確的技術方案,一方面是證明需求的可行性,另一方面是對自己之后的代碼實現有一個大致思路。很多的問題其實是可以在設計階段去發現和規避的,而不是等你寫代碼的時候,才發現之前的設計有問題、甚至是需求本身就不合理!到時候耽誤了項目上線,背鍋的就是程序員自己!
之前有朋友問,在大公司,萬一寫著寫著代碼,沒思路了、寫不出來了怎么辦?這種問題其實就是可以通過前期的技術方案設計來規避的。畢竟老板才不關心你代碼寫的怎么樣,他只關心你的技術方案,換句話說,是關心你能不能按時完成項目!
此前,我即使畫了一些流程圖,目的也僅僅是在于幫助自己寫代碼。覺得代碼能寫出來后,我就不再去考慮方案設計了。
而在意識到技術方案的重要性后,我會在理解需求后,先寫一份詳盡的技術方案,包括需求的合理性分析、選用什么技術來實現指定的功能、怎么設計庫表結構、怎么設計類之間的關系(用哪種設計模式)、怎么設計接口、計劃工期是多久、有沒有什么風險點等等。
開發
設計好方案后,就要投入開發。
基本就是先利用一些數據庫管理軟件或者登陸服務器去配置一些庫表,然后選用一些 Java 類庫和工具來編寫業務代碼。說是編寫代碼,其實 80% 以上都是復制粘貼!復制別人的,復制自己的,積累的代碼多了之后,簡直爽的飛起!不能復制粘貼的,也可以用一些代碼生成工具、甚至是低代碼工具來偷偷懶。誰說 CRUD 工程師就沒有技術?哼,咱偷懶也要有水平。
寫代碼的過程中,你要遵循一定的規范,不斷地將重復的代碼進行抽象、封裝和復用,可以利用一些設計模式,并且要多多編寫注釋,提高代碼的可讀性和可維護性。
關于代碼規范,建議參考 Google 開源的 Java 代碼規范或者阿里巴巴的 Java 代碼規范,非常專業!
寫好代碼后,你要再次檢查自己的代碼,可以利用一些代碼格式化和代碼檢查工具來提前發現一些規范問題以及 bug,還要在本地編寫單元測試來最細粒度地保證代碼的可運行性和正確性。
Java 的單元測試類庫一般用 JUnit 就行了,本地自己測試請求接口的話可以直接用 IDEA 自帶的測試插件,也可以選用 Swagger 或者 YAPI、Postman 等接口管理工具,甚至還可以直接使用命令行 curl 等。
測試
在寫完代碼之后,要經過非常非常非常充分的測試才能提交代碼!這個階段也是非常花時間的,需要配合測試同學,提供一些測試的細節和補充說明,并且對測試中發現的問題進行修復。很多程序員應該都有這種感受:寫 bug 一分鐘,改 bug 一小時!
這些就是我目前在鵝廠的日常工作,其實和其他公司不會什么區別,無非就是你負責的業務量級越大,你在設計、測試等環節上投入的時間和精力就要更多;業務團隊越大,你在需求溝通和合作上也要花更多的時間。這些工作看似和寫代碼關系不大,但對于程序員的經驗積累以及職業素養、工程能力的提升是至關重要的!
優秀的程序員,不只是有能力寫得一手好代碼,更多的是需要具備一些工程師素養,比如:
在工作之余,我也在朝著成為一名優秀工程師的路上而努力。因此,我會利用公司提供的知識平臺、問答平臺和技術資源進行學習,并且多和身邊的技術大牛們交流。大公司技術好,大佬多,提供的資源也真的非常多,這是我認為很多同學應該去大廠的一個原因,而身在大廠的同學更應該利用好這些資源。
我還會積極參與一些公司內外的開源項目,和優秀的程序員朋友一起合作,互相學習進步,提升代碼的水平。這里也建議大家多看 GitHub 上的開源項目,先在本地運行并熟練使用它,然后嘗試分析源碼和貢獻代碼。
不會找開源項目?我之前分享過一篇文章,能幫到大家:【硬核干貨】如何高效找到優質編程項目?
此外,提升個人影響力也是很重要的,我認識很多 Java 開發工作者都喜歡寫技術文章,并且一些朋友開通了自己的自媒體平臺來分享文章,甚至有一些大牛靠自媒體收入還實現了財富自由!在寫文章的過程中,我進一步鍛煉了自己的文筆,向很多朋友學到了知識,也督促我來不斷輸入知識、提升自己。
以上就是我的 Java 開發日常,你可能會好奇,魚皮在哪家小微公司待過呢?這是個秘密!
Java 開發者的工作看似平淡,但只要你愛好編程,愛好這個行業,每一天都能過的充實而有意義!
總結
以上是生活随笔為你收集整理的Java 开发者每天都在做什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS2005为什么会自动关闭?使用Vis
- 下一篇: 为Windows 服务器网络搬家