1. 程式人生 > >美團點評後臺開發實習記(持續更新->已經完結)

美團點評後臺開發實習記(持續更新->已經完結)

申明如下:本人確實是目前在美團點評某部門下做JAVA後臺開發的實習生,本帖本著不出賣公司隱私的前提記錄自己作為實習生的一些所見,所感,所想。目的是為了能讓自己對這段珍貴的回憶能夠有文字形式的記錄,另一方面我是個願意分享的人。

----------------------------------------------------------------------------我是分割線------------------------------------------------------------------------

第一階段:初識新美大

經過兩個星期,和我所在的部門裡的同事基本上已經熟悉了起來。大多數同事還是比較熱情的,當然也有一些很geek的同學不太愛說話和搭理人。這也可以理解,我很感謝自己的同事們,剛去的時候其實很擔心自己水平太菜,當然確實也有很多不明白的地方,同事們先是對我給予了很多鼓勵,對於我的問題也是耐心的回答。除了在工作上,在生活上的事也是。很慶幸自己能去到美團實習並且遇到了這群同事。雖然不是全部都讓人滿意,但總的說來確實已經很不錯了。畢竟要學會和各有特點的同事相處也是項必學的技能。

再來說說公司,公司對待新人的態度很不錯,畢竟研發崗的都給配macbook pro 15寸,老版不帶touch bar16G記憶體用起來槓槓的!福利方面嘛,公司裡面有健身房,我身邊就有一個同事長期在公司的健身房健身,練就了不錯的身材。然後下午八點後下班會有飯補還是很科學的,上下班的話在附近幾個主要的地鐵站都有免費接送班車。

再來說說公司運轉方面,給我的感覺是美團點評有很多內部的系統,員工使用各系統將自己的工作生活緊密聯絡在一起。確實效率很高也很方便。感覺相對於別的網際網路企業同事的幸福感還是要高一些的。我之前雖說也實習過但去的地方確實不如美團點評體量這麼大。所以見識了大公司內部的一些真實情況覺得實習真的來值了,就算最後技術上沒有得到多少提高,但是認識了這些同事,瞭解了大公司的機制體制,就已經很賺了。

最後說說技術方面,不得不說美團點評的技術氛圍很不錯,經常在聊天或去吃飯的路上都可以聽到我組的同事或其他同事在討論需求、業務或者技術。用的東西也都是很新的東西,也會把一些很主流的東西做一些自己的改造。然後組內會經常開一些技術分享的會,公司本身也有圖書館提供各種技術書籍。每週有例會,有時候會大家一起review某個同事要上線的程式碼,提出各種改進的意見或是自己的疑問,所以你說這樣的氛圍能不讓人的技術長進麼。

總之,關於新美大我相信我接觸的只是冰山一角,還有很多值得我去學習和體驗的地方。接下來我會繼續放低自己的姿態,確實也翹不起來哈哈。已經開始上手寫些簡單程式碼了。下一步想要適應公司內部一些我還從來沒使用過的技術和git上的多分支多人協作,以前都是用的sourcetree而在公司大家都是用命令列的神,我要向大家靠攏哈哈!先寫這麼多,再有感受了回來更!

----------------------------------------------------------------------------我是分割線------------------------------------------------------------------------

第三週:上手幹活

其實從上週四到本週算是開始幹活了,但是因為我是實習生麼?感覺給我分配的活都比較簡單,也是在學校裡幹過的那一種。比如對於一張表的CRUD,從controller到mapper.xml。和我差不多到位的應屆正式的同學已經在用一些中介軟體元件了。說實話還是有些羨慕的,雖然在前兩週有學習過那是個什麼玩意兒,但是親自上手搞一下還是會不一樣的嗯嗯。我在想可能是我最終是要走的,所以複雜的程式碼不給我寫是後面不好維護?也有可能是本身對我的技術不放心?我也不想當那種會叫的孩子要奶吃,怕大家覺得我好高騖遠,眼高手低。有什麼活兒分配過來我就好好完成!得空了沒活幹我就學習感興趣的東西,確實在企業裡用到了很多學校裡聽不到的東西。感覺和我一起到崗的兩位應屆本科生的能力都很強,覺得挺讚的。聽說下星期又會來個top985的實習生,感覺壓力還是有的。要有自信!

----------------------------------------------------------------------------我是分割線------------------------------------------------------------------------

第二個月:開發需求並上線

在美團這裡實習一個多月了,今天算是完成了一個功能的上線,企業級特別是像美團點評這樣流程和技術都比較成熟的公司,其整個流程給了我很大的觸動。下面我將自己的心得體會和流程小記於下

1.需求

首先肯定是我所在的這個開發組收到了PM提的需求,需求評審通過後組內把這個需求佈置給了我,並且老大給做了排期。
接下來我收到了來自PM的需求說明,熟悉了需求。

新發現:排期超過一定時長的需求,需要RD出技術方案進行組內評審。

2.開發

我開發的功能依賴外部第三方的介面,開發開始的時候遇到了一些問題,第三方配合的很不及時,導致了專案進度的拖後,就發了delay周知說明了原因。給我的感受是不論是什麼原因導致你覺得做不完了都要提前和上級溝通,不然排期的時間到了但是開發進度沒了保障是不合適的。我們的delay原因是第三方配合的不及時所以還是可以被接受的。也從老前輩那裡得到了一個經驗,估時的時候一定要為自己留buffer,這樣早開發完了大家都高興,中間有什麼突發情況耽誤了努努力也趕得上進度。

開始開發第二週算是正式做功能的開發,第一週被耽誤的時候做別的小功能用到了快取,用得是公司的squirrel。開發這個優先順序較高的功能時需要做監控報警,接的是公司的CAT。能夠在實際開發功能的過程中學習元件的使用確實比光看文件要幸福太多了。功能的主要邏輯2pd開發完畢,然後提了pr。期間反應出了不少我程式碼質量不夠高的問題,這裡要感謝幫助我的盼盼姐。if else邏輯巢狀有些複雜我沒有做什麼優化,再比如對於工具類的使用沒有養成習慣,try catch的邏輯不夠健壯,日誌的資訊不夠完善等等都有體現。確實是在學校裡呆久了,寫程式碼基本上就是以實現功能為第一要義了,忽略了其它方面一些其實是很重要的點。比如說,if else的邏輯太複雜會影響程式碼可讀性從而提高了後期的維護成本。工具類的使用沒養成習慣則會導致出現一些不夠安全的程式碼。try catch的邏輯不夠健壯導致異常的處理不到位,日誌資訊不完善更是讓我吃了大虧,上線後出現了問題排查起來因為資訊的內容太少讓查日誌的成本很高,而上述的這些問題都是可以在開發的時候加點小心然後避免的。

3.測試1---自測

a.首先是RD開發完了之後在本地環境上進行冒煙測試

b.PM向QA方面申請了資源,冒煙通過後向QA提測,並和PM、QA三方開會設計測試和發現風險

4.釋出

本地的環境已經不能夠滿足整合測試的條件,把專案部署在測試環境,拉著我的介面呼叫方一起測試。釋出用的是plus系統,非常的智慧。美團這邊非常成熟了,有dev、test、stag、prod四種環境,一項功能上線需要層層遞進,確實是顯著降低了風險保證了質量。

5.聯調&修改程式碼

和介面呼叫方進行聯調,對除錯中出現的問題進行程式碼的修改。這一次我想說的程式碼git倉庫的多分支協作確實好處多多啊,試想我一個功能在聯調過程中都要多次修改程式碼,如果像在學校裡就一個master分支或者兩個分支一個develop一個master這麼多人開發肯定就亂了套了。然後這邊對maven的使用確實是體現了用它來管理依賴的好處,而不像我在學校裡僅僅是把它作為一個管理依賴的工具。

6.測試2—驗收&壓測

經過聯調並解決了相應的問題之後,分別由PM和QA進行了驗收測試,在這個過程中提出並暴露了一些,修復之後迴歸測試。另外,為了保證上線後我所提供的服務能夠抗壓,我學習了使用公司內部元件ptest來對我的thrift介面進行壓力測試,壓力測試表現的還不錯,否則肯定要根據壓測反饋來調整程式碼了。一切就緒,準備上線!

7.上線

上線前首先將專案釋出到線上環境的“鏡子”,stag環境。stag環境上又測試了一下沒有問題,這就能很大程度確保真的上線了也不會有問題。接下來發布到線上環境並通知我的呼叫方。釋出上線以後QA和PM又進行了一輪迴歸測試,值此,就上線了,有報警排查一下,沒有報警反饋沒有問題就萬事大吉。最近又學到了一招,美團這邊通常是一個服務部署在多臺機器上,所以為了在釋出時進一步降低風險,可以採取灰度釋出的方式,就是說只部署在一兩臺機器上,切點流量過來看功能是否正常。使用一段時間發現並沒有什麼問題就將服務進一步部署在所有機器上。而一旦服務真的出現問題也只是少部分使用者受到了影響,回滾也只用回滾灰度釋出的機器。代價很小。可以說是非常厲害了。

總結

可以看到從釋出需求到最後測試的流程並不簡單,可能其中最簡單的事情是開發了,但是後面一輪又一輪的測試確實能很大程度保證質量。讓我深刻感受到了什麼才叫做企業級開發,以前在學校那種什麼都不用考慮的開發真的是玩呢。在整個過程中,不論是監控,快取,釋出或者是壓測,公司都提供了非常靠譜的元件,元件既能避免RD重複造車,延長進度,而元件有人維護,又能提供高可用的服務,很好。協作方面的規範公司也很到位,總之還是很感謝這一些列流程,經歷了說句不好意思的話感覺自己都昇華了哈哈~


(the end~)