做一枚優秀的程式猿,歡迎交流: sunpeng1996 at aliyun dot com
宜信技術研發中心暑假實習總結
2016年7月5日,我來到宜信技術研發中心-研發九部任職開發實習生,截止到8.25日離職,整整50天。在這裡我度過了一個充實的暑假,學到了太多的東西,在提升自己技術能力的同時也明確了自己的職業方向,收穫頗豐。
------題記
一、初來乍到
2016年7月4日,人生中第四次抵達北京,對這座城市不是很陌生卻沒有好感。匆忙找到落腳的地方,和同學小聚之後,便開始準備第二天的報道。
次日,便前往Soho現代城報道,和我一起入職的員工有哈工大的研一學長、武漢大學的研究生學姐、北郵的應屆生學長和清華大學的應屆生師兄,所以我感到很有壓力,但同時也是對我的一種挑戰。我很幸運,能夠在我大二的暑假有機會來宜信實習。
面試的時候面試的是Java崗,所以已經做好了Java開發的準備,而來到研發九部之後,我遇見了對我職業生涯有很大影響的Team老大(其實我開始以為他叫麒麟的(麒麟之才)),老大同我聊了很久,瞭解我喜歡的方向和技術,我便主動要求去做一些實際的專案,於是開始了和Scala的邂逅。
這裡說明一下我對宜信的初印象:入職的時候提供入職大禮包和免費午餐,宜信的辦公室命名風格獨特,諸如太平洋、大西洋、火星、天王星等等此類。每週的零食和水果發放,取之不盡的coffee、奶茶等等。後來我才瞭解到,福利還有,轉正後可以申請免費的MacBook pro和超大顯示器,加班有免費的晚餐,等等。上班時間均為彈性工時,可以靈活調整。實習生一般9.30到,晚上6.30下班,午間一個小時的休息時間。
二、初出茅廬
自然地,被分配到宜學貸APP開發團隊做後臺,後臺是scala做的。一門新的語言對我來說是一個新的開始,在這之前玩過一點spark,掌握一點spark的RDD(彈性分散式資料集)操作,所以對scala並不是特別陌生。當然了,不陌生和掌握還是有很大的差距。下面我簡單介紹一下scala這門語言。
Scala是一門多正規化的程式語言,一種類似java的程式語言,設計初衷是實現可伸縮的語言、並整合面向物件程式設計和函數語言程式設計的各種特性。對於Java開發者來說,面向物件程式設計應該不是什麼問題,可是對於函數語言程式設計來說,我們就是layman了。習慣了Java,開始學scala的語法倒是沒什麼問題,可是當實際應用的時候,你會發現面向物件程式設計和函數語言程式設計有很大的不同,主要是思維方式的轉變,你不再寫各種控制邏輯,也不要再寫滿天飛的變數。這種思維的轉變困擾我很久,習慣了Java指令式程式設計,所以改變起來不是那麼容易。Scala具有非常強大的Future和Actor等高階特性,這裡不做過多介紹了。
後臺框架用的是Play Framework,這是一個比較新的full-stack框架,包括一個簡單的無狀態MVC模型,具有Hibernate的物件持續,一個基於Groovy的模板引擎,以及建立一個現代Web應用所需的所有東西。
由於play框架比較新,所以只能通過官方文件去學習,對於英語不好的我來說的確是一大挑戰,不過還好有有道詞典(哪裡不會點哪裡)。瞭解了框架,發現它真的很輕量級,作為一個web框架,play要比諸如SSM、SSH輕量級不知道哪裡去。它自帶的模板引擎和jsp很像,所以上手也比較容易。
三、小試牛刀
6天的時間,初步掌握一門語言、一個框架、配好環境。第七天,就開始了我的迭代任務。我們做的是宜學貸APP的後臺,這裡有必要介紹一下專案背景:
宜學貸是面向教育培訓機構和個人推出的普惠金融諮詢服務,為學生及學生家庭提供信用借款諮詢服務,推薦便捷、廣泛的資金來源,幫助學生解決資金壓力,獲得教育培訓機會。
宜學貸填補了國家助學貸款以外的市場空白,無論是學歷教育、 IT培訓、語言培訓或是藝術培訓、職業技能培訓等專案,宜信普惠均可以根據教育培訓機構的特點,結合學生的具體需求,量身定製不同的“宜學貸”解決方案, 使學生可以輕鬆通過分期付款的形式來完成學業,形式更靈活,申請更便捷。
宜信普惠作為 “教育培訓信用借款”的專業借款諮詢服務機構,先後獲 得“教育培訓助學貸款領軍企業”及“百萬讀者推崇的教育培訓信貸服務機構”稱號。宜學貸目前服務網路覆蓋北京、上海、廣州等近40個城市,已為1000多家全國性、地域性合作伙伴的數萬名學員及學員家庭提供了便捷服務,實現信用的價值。
目前,為增強進件時效、簡化申請流程,宜學貸產品線已經開發並運營了一款宜學貸APP應用,為客戶提供借款申請、借款查詢、還款查詢等功能。
隨時業務的不斷髮展、變化,秉承引領市場的宜信理念,需要適時推出一款全線上的宜學貸APP應用,應用更加先進、成熟的驗證、防偽技術,在保證風險可控的前提下,實現借款申請、快速稽核、非面對面簽約、按客戶時間需求選時放款、線上還款等功能,更好的滿足學貸市場的需求,更好的服務於宜學貸的客戶。
初來乍到,對業務的瞭解真是知之甚少,所以在完成每一項迭代任務的時候,都要熟悉相應的業務。總結一下自己完成的迭代任務,六個迭代週期,大大小小我記得完成這些:
完成親屬稱謂後臺靈活控制
完成身份證兩次輸入不一致時身份證資訊入庫;
Boss身份證展示
Boss下載合同PDF
Boss使用者登出
線下合同可上傳銀行卡資訊
完善進件聯絡人親屬稱謂判定
完善手持身份證DAO
完成最新需求上傳身份證、銀行卡統一介面的編寫和實現
修復一些bug
完成boss每日定時器執行sql並且展示
完善boss使用者管理搜尋模組
完善使用者管理模組
完成位置轉換成經緯度的介面,以及計算距離
增加聯絡人親屬稱謂時錯誤資訊返回的code碼
身份證驗證時,增加兩次認證不一致時也入庫
(BOSS)放款對賬需要加關鍵資訊並增加按日期查詢
完善boss端使用者管理模組(查詢和登出問題)
放款對賬需要加關鍵資訊並增加按日期查詢
手工改為線下籤約的訂單,在收到信審通知時不要重新獲取簽約方式
(完善)boss使用者登出,刪除使用者token
(BOSS)放款點選按鈕,必須返回提示。並增加放款列表
計算兩個經緯度之間的距離
根據商家地址獲取經緯度
(BOSS)可以通過輸入手機號碼,查詢對應的機構碼
定時執行進件按城市統計和每日統計的SQL,插入資料庫中
找到點選任何按鈕,(經常)頁面意外跳轉到登陸介面的原因
重構定時查詢功能,完成定時執行sql
修復boss端頁面點選放款詳細檢視後,跳出到登入頁面的bug
完成boss使用者登出,刪除使用者token後出現加密解密異常,返回錯誤token的錯誤co de碼
完善手持身份證DAO
身份證資訊更新改為新添
Boss端配置管理功能,原型設計
配置組各項配置的合理性校驗
四、工作日常
每個研發團隊都有自己團隊的合作模式,我們team的程式碼管理工具採用基於內網的gitlab,任務進度管理由開始的Tower轉而現在的Trello。每日一次的站會,跟蹤進度,每個人輪流說自己昨天完成的任務和今天即將完成的任務。每週一次的技術分析會,分析如何高效地工作和學習、演算法或者技術工具相關等等。不定期的小組討論會,由於團隊成員互相挨的比較近,所以有什麼疑問隨時提問,隨時有人給你解答。老大和鵬哥離得我很近,所以每當我有什麼疑問,都會隨時請教他們。
學貸團隊人員由產品經理、安卓團隊、iOS團隊、後臺、測試和運維組成。我想來到宜信之後,很大的收穫是熟悉了大公司的軟體工程開發流程,從產品經理引進需求(開需求分析會)、到組內細化需求(把需求拆分為任務)、再到組內分配任務(開小組討論會)、獨自開發 、開發完畢後review code、Acceped Merge Request、合併到master,然後測試伺服器部署、測試人員測試,最後到這一迭代版本的上線。整個一套流程下來,你會收穫到不少東西。我在這裡的50天,支援了6個迭代週期,平均每個迭代週期為一週左右,由於學貸是今年3月才開始做的APP,所有目前學貸還不是特別穩定,大部分的需求都是新功能而只有少部分的維護,所以對於我來說是一個很大的挑戰也是一個很好的機遇。
除了支援APP的後臺,還對宜學貸APP應用運維管理系統進行功能開發(boss端),由於boss端是web專案,所以我上手起來還是比較容易。而對於學貸APP,前後端分離的專案,測試起來就要自己寫測試用例進行單元測試和整合測試。我覺得有必要強調一下測試用例的重要性,因為作為一名優秀的coder,可能寫測試用例的時間要多於寫code的時間,測試用例是對於你思維嚴謹性的體現,你會知道你寫的code有哪些隱患和不足,減少bug。測試人員真正的工作不是給你檢查出bug,正常到他們手中的版本應該沒有bug,當然了,這種情況過於理想。
五、實習收穫
有一點很大的感觸是老大教會我的,在開始coding之前,一定要充分明白你在做什麼,就是你一定要充分理解需求,充分理解產品經理的話,然後在透徹地理解需求的基礎上,結合實際業務場景去coding。不要盲目地去寫code,一定要明確目標。
每一次和老大探討,老大都會教會我很多東西,12年工作經驗,老大的技術能力早日超出架構師的水平,讓我深深佩服。他總是能從各個角度出發思考問題,對我們不能解決的問題提出解決方案。具有很強的大局觀,能夠用長遠的眼光審視程式碼、重構程式碼。
在這裡結實了很多朋友,full-stack的老大、嚴謹的鵬哥、幽默的傑哥、帥氣的強哥、熱心的一為等等等等,在工作中給我莫大的幫助和指導,感謝你們,希望有機會能夠再一起合作。感謝欣姐,對我姐姐般的照顧。再次感謝浩瑜學長內推,感謝瀟瀟姐對我入職前的答疑解惑。
瞭解了大公司職位晉升機制,在公司裡晉升與否不關乎你的學歷,而是你的個人能力、你的KPI、你關鍵時刻能夠頂住壓力、你的主觀能動性和自驅力。以前自己經常糾結是否讀研,現在我想我已經很明確了。當然,如果讀研玩一些高科技的東西,也未嘗不可,很多公司在部分崗位招人的時候,還會限制學歷,是吧?
暑假實習之餘讀了幾本書,分享給大家:
- 《程式碼整潔之道》:只讀了前幾章。感謝老大,讓我學會如何寫出“優雅”的code,這本書讀完或許沒什麼卵用,但你會下意識地審視自己的程式碼的可讀性、可維護性和可擴充套件性。這種意識要比你會寫出優秀程式碼重要得多。
- 《大資料架構師指南》:這本書很適合想做資料卻不瞭解大資料的人閱讀,此書介紹了大資料的一些技術,諸如Spark、Hadoop、Storm及大資料視覺化的相關技術和背景,會讓你對Big Data有一個比較巨集觀的認識,清華大學出版,還不錯。
- 《資料探勘導論》:記得以前立過flag,不搞機器學習,獨醉Java。我想可能當時太年輕了,這本書寫的通俗易懂,導論嘛,沒有太多複雜的數學公式,入個門還是不錯的。想做資料探勘的童鞋可以讀此書入門,歡迎與我交流,一起進步。
- 《機器學習實戰》:這本書只看了前幾章,自己閒暇之餘用python實現了比較簡單的演算法,例如KDD、決策樹、Logistic迴歸等等比較簡單的演算法,大三繼續看下去,把各種演算法實現一遍。
- 《快學Scala》:學習Scala入門推薦首選,想當時六天時間一門語言、一個框架大致內容記一遍也是挺不容易的,這本書說實話有的地方翻譯的不是很準確,但是入門絕對夠了,寫的比較易懂。如果想了解scala的更多細節,不妨讀一讀《Scala程式設計》這本書,是老大推薦的,需要pdf版的可以私戳我。
六、娛樂時光
暑假的娛樂時光非常瀟灑,在傳媒大學附近住10天左右之後,我便如約住到哥們寢室去了—北京化工大學,在那裡:二人世界咔嚓,空調WiFi西瓜,2K15一打,雷霆火箭互殺。我想這也是為什麼在北京近2個月未曾感到一絲孤獨,因為有兄弟陪伴。火鍋、燒烤、烤肉、驢肉火燒、海底撈、西餐、綠茶、必勝客,還有吃的最多的牛肉炒飯。我想這些都是我珍貴的回憶。
住在化工40天,節省了約3000元的住宿開支,四年兄弟情,無以表達感謝,來日方長,希望情誼長存。
七、未來展望
我想我已經決定去做Distributed computing和Data Mining了,毫不猶豫,下學期加入王老師的海量資料研究中心,希望接觸到更多實際的專案。
之前把玩過Hadoop、Spark、Strom,也就是寫寫WordCount,搭搭偽分散式或者本地分散式環境,已經忘得差不多了,接下來抽時間細作WordCount,接觸實際專案,把上述框架把玩一遍,深入瞭解下ZooKeeper、Hive、Pig、Hbase此類,之前瞭解的不夠深入,當然,爬蟲還是要學的,暑假之餘瞭解了py和Scrapy,python的確是一門出色的語言,能做很多事同時也非常簡潔,接著學學Scrapy,爬爬網站。至於Lucene、Nutch、Solr此類,有時間再學深入瞭解吧。還需要掌握下Nginx,目前做負載均衡用的還是比較多的,我們的專案也在用到。
記得和老大說過這樣一句話:我只能看得到自己一年後的樣子。正如老大所說,這樣的人生才有意義,不然,倘若你看得到十年後的樣子,豈不是人生很無聊嗎?
八、特別鳴謝
我想我最應該感謝的是研發九部老大徐Sir,我的二面面試官,是您給了我實習的機會,我一直心存感激,珍惜在宜信實習的每一天,沒有太多機會和您促膝長談,只是離職前有機會和您聊一次,感觸頗深。誠然,基礎非常重要,我會謹記您的教誨,夯實基礎,努力成為一名合格的軟體工程師。
再次感謝Team老大,您這段時間教會我太多東西,不僅僅是技術,還有其他更重要的東西。您是一名出色的Leader,善於與人溝通交流,積極組織團建,帶動氣氛,當Team裡有人遇到困難的時候,您都同他長談,解決疑惑。您是我的榜樣,我希望以後可以跟您一樣出色。
再次感謝鵬哥、傑哥、一為,認真耐心地回答我每一個問題,教會我很多技術細節,希望有機會能再次合作,像你們學習。
附上我的離職申請:
最後送給自己一句話,與君共勉: