大三下有幸到了美團點評實習(xí)。在這半年的時間里,經(jīng)過導(dǎo)師和主管的悉心教導(dǎo),無論是專業(yè)技能還是開發(fā)技巧方面都有很大的提升。恰好午休時間,隨便寫寫,總結(jié)一下這半年的收獲吧。不留下篇文章總感覺有點遺憾。
一、 初到美團
剛?cè)肼毜臅r候,其實自己非常虛,因為懂的東西不多。投簡歷的時候,自己只是做過一些Android的Demo,然后就掌握了一點課堂上的知識吧。(計算機網(wǎng)絡(luò),數(shù)據(jù)結(jié)構(gòu)等等)面試的時候,也是面試了這些,很幸運主管讓我通過了面試。后來被告知入職之后要學(xué)習(xí)Spring來開發(fā),雖然自己以前寫過一些Servlet的小程序,但是框架、控制反轉(zhuǎn)、依賴注入和切面這些東西真的是一點都不理解。怎么看網(wǎng)上的博客也不懂,就是和JavaSE中間隔了一堵墻的感覺。
入職之后,美團給開發(fā)配發(fā)的是15寸的mac pro,雖然當(dāng)時剛使用mac不適應(yīng),但是現(xiàn)在看來,mac的確很適合開發(fā)工作。剛開始的一周主要是熟悉環(huán)境,熟悉mac的操作,熟悉美團點評的內(nèi)部系統(tǒng)等等。值得一提的是,美團的內(nèi)部應(yīng)用很多,并且在工作中很實用。內(nèi)部交流有專門的應(yīng)用,類似微信,功能強大。最近還出了一個話題社區(qū),和知乎差不多??梢哉f現(xiàn)在主流的互聯(lián)網(wǎng)產(chǎn)品,美團點評都有相應(yīng)的內(nèi)部應(yīng)用。有一點比較麻煩但是很重要的就是每天要發(fā)工作日報,每一周要發(fā)周報。對于記錄和思考自己的工作,還是有很大幫助的。
熟悉了內(nèi)部環(huán)境,就要開始學(xué)習(xí)一下開發(fā)相關(guān)的知識了。有兩點讓我感觸很深,一個是開發(fā)使用IDEA,第二個是Git。說一下之前我是這么寫程序的吧,用Eclipse,寫好類,在Main函數(shù)里面寫寫幾句話就完了,然后也沒有什么保存的工作。下次繼續(xù)開發(fā)就找到項目存儲的地方打開項目即可。所以在那個時候,我并不理解Git的作用,不就是遠程保存一下代碼嘛。但實際上,開發(fā)工作并不是一個人完成的,不可能大家進度都一樣,也不可能保存在一個硬盤。難道別人開發(fā)的時候,你就把項目拷給別人添加完代碼自己再弄嗎?在導(dǎo)師的指導(dǎo)下,我學(xué)習(xí)了IDEA和Git。
IDEA是主流的Java開發(fā)IDE,用過AndroidStudio的就明白了,同一個公司的。主要是好用,能集成的東西很多,個人感覺比Eclipse好用。
至于Git,基本上每天都會接觸到。最簡單的用處就是能夠保存代碼,創(chuàng)建了Git項目后,pull到本地,然后編寫完代碼后push上去。這樣就算你電腦進水了壞了開不了了,換了一臺電腦,你的項目還在的。第二個用處,當(dāng)一個項目,已經(jīng)在線上運行了,但是你要開發(fā)一個新功能,怎么辦呢?你不可能在現(xiàn)有的項目上改啊,因為改了代碼重新編譯,服務(wù)肯定會斷掉的,會影響到使用的用戶們。還有就是改錯了怎么辦呢?Git提供了一個辦法就是,新開一個dev分支,該分支上的代碼和master分支上一樣的,你可以在dev分支上隨意改。Dev就算改錯了,還能回滾到以前的版本。當(dāng)確認無誤了,可以將dev的代碼合并到master分支上。當(dāng)然了,大項目的合并是有權(quán)限的,master分支不能讓你隨便合并。你可以提一個合并的請求,然后在Git上能看到你修改的地方。當(dāng)管理員查看的你的代碼之后,確認沒有問題,他就會讓合并通過。如果沒有沖突,這樣新的功能就添加上去了。第三個用處就是在服務(wù)器部署很方便。不需要從本地拷貝代碼到服務(wù)器,只需要從git上pull代碼下來,直接跑就可以了。當(dāng)然,重新編譯啟動項目要選在使用者較少的時候。這就能理解為什么一些游戲都選在晚上更新維護了吧。主要用到的地方,暫時想到的就這么多吧。說實話,當(dāng)時我看Git教程也非常迷糊根本不懂,在工作中慢慢接觸就理解明白了。
二、 接觸項目
說起來非常幸運,實習(xí)的任務(wù)就是和導(dǎo)師一起負責(zé)美團點評·眾測平臺的后端開發(fā)。這個項目主要是讓用戶通過這個平臺提交試用美團點評旗下APP發(fā)現(xiàn)的BUG與建議,然后相關(guān)業(yè)務(wù)線的QA能在后臺處理相關(guān)的問題。在我實習(xí)結(jié)束之前,已經(jīng)進行過四次的線下眾測活動和三次版本迭代。目前的運營方式就是讓報名參與眾測活動用戶(非對應(yīng)QA)在限定的時間內(nèi)去測試某一業(yè)務(wù)組提供的一個新應(yīng)用包,提交自己發(fā)現(xiàn)的BUG,然后給予相應(yīng)的積分獎勵。讓我感到非常驚訝的是,每次活動結(jié)束完,都能發(fā)現(xiàn)一百多個有效BUG。不敢相信一個待上線的應(yīng)用能有這么多的Bug,第二個就是感嘆參與的用戶發(fā)現(xiàn)Bug能力太強了。
為什么說幸運呢,我感覺有兩點。第一點是這個項目覆蓋面很廣,基本上美團點評線上應(yīng)用很多都通過了眾測平臺來收集發(fā)現(xiàn)BUG。是個影響面廣并且很實用的項目。自己負責(zé)開發(fā)的項目這么多人用到,很有成就感。第二點就是,它不是一個很難的項目。麻雀雖小五臟俱全,現(xiàn)在想起來,對于我這種剛起步的Spring學(xué)習(xí)者來說真的最適合不過了。
說一下項目用到的框架:Spring+SpringMVC+Mybatis,構(gòu)建項目使用了Gradle,數(shù)據(jù)庫使用MySQL,服務(wù)器是jetty,部署于美團點評的線上機器。接下來就簡單說下每個框架的用處吧。
Gradle:最簡單的說法,就是管理依賴。總不能每用到一個jar包,就去網(wǎng)上下載,或者在美團點評的庫上下載,拉進項目里面吧。使用gradle