對於一個從未到過南方的內蒙漢子來講,北京的大學一直是中學時憧憬的殿堂,而離家上千千米浙江大學,則是歷來沒有考慮過的地方。機緣巧合之下,被一位年近七旬的浙大老師說服,我自此開始了南下「修煉」之旅。沒想到轉眼間竟已九年,杭州也成爲個人第二家鄉。
值此1024程序員節來臨之際,撫今追昔,回顧一下本身的「修煉」歷程。
大學時光,嘗試不一樣的計算
和計算機的緣分也是從大學開始,初入新手村的我擁有了本身的電腦。
升入本科的第一年咱們沒有細分專業,只有學科大類。大二選專業的活動,就像是第二次高考志願填報。09年的信電系異常火爆,但比起硬件底層,我對操做系統、軟件、app更感興趣,最後選擇了計算機。
然而,計算機系挑戰更大,不少進來的同窗都早已打下基礎,相比之下,從頭開始學習如何編寫代碼的我是徹頭徹尾的「萌新」。所以在完成課業之餘,我成天泡在圖書館:一個一個實現《算法導論》中的算法,研究解決一樣問題;使用不一樣算法把複雜度從N(n^2)降低到N(nlogn);和同窗在ZOJ(Zhejiang University Online Judge)比拼刷題…
逐漸熟悉掌握前人的知識的我,就像得到了打怪的武器。大二開始在不一樣的領域,逐步嘗試用算法和計算來實現本身的想法:
• 做爲國內第一批使用Kinect的玩家,基於Kinect的SDK,作了一套手勢+肢體動做操做PC的鍵鼠的小工具,並完成了一局全身充分運動的掃雷。
• 嘗試Obj-c, 開發了射擊類的iPhone小遊戲。依靠這份經驗,和小夥伴開發了一套課堂交互系統(支持教室經過app佈置做業和回答問題),拿到了網易的app創新比賽獎項。
• 自學《集體智慧編程》和Andrew NG 《機器學習》公開課,逐漸點開了「推薦算法」和「機器學習」的技能樹。
正是經過這些積累的經驗和知識,大四拿到了阿里巴巴集團的實習offer,正式重新手村畢業進階。
初到阿里,成爲算法達人
從實習到最初兩年在阿里集團的工做,我都在和各類算法打交道。而2013年的阿里,「算法工程師」還算是很新的一個崗位,咱們要在海量的信息上,經過機器學習和挖掘算法讓其可讀、可用、有價值。
我最初就任於淘寶,怎樣幫助買家在淘寶成百上千品類和數以億計的商品中,挑選出本身想要購買的商品,或者母嬰產品分類該怎麼作?我用了一整個月時間,研究了淘寶的母嬰類目,從關鍵詞到寶貝類型、細節描述、品牌歸屬、品牌定位……本來的單身宅男幾乎變成了一個母嬰專家,甚至在以後半年裏,個人女同事們都會找我諮詢如何購買母嬰產品……
在淘寶的這段時間,也是我成長和學習最快的時候。數據庫、機器學習算法、JAVA項目構建、GIT版本管理,每個技能點都獲得了很大的提高。由學生時代的幾M數據的算法Demo進階到TB級的數據處理,傳統的單機算法已經遠遠不能知足需求。
常常優化算法到深夜的我,深入體會到了算法從N(n^2)降低到N(nlogn)的意義:也許對於算法Demo只是跑的慢一點,但對於業務,可能就決定了這個業務能不能作,能不能控制住成本,能不能真正落地應用,我也以爲身上的責任更重了。
工做不只僅是完成任務,更是不斷地去研究和解決問題。這些披荊斬棘攻堅克難的經歷,也讓我練就了強大的內功。
擁抱變化,讓城市更加智慧
青年們,到祖國最須要的地方去!後來在阿里雲的日子,很有些這樣的滋味。
三年前由於團隊調整,咱們來到了阿里雲,也促使我完成了從把本身的算法作好,到幫助用戶去實現用戶數字化轉型的變化。看待問題的視角也從由局部到總體,乃至整個行業。
能夠作的事情更多了,挑戰也更大了。來阿里雲作的第一個產品是針對新媒體行業的推薦引擎,在這個項目中,我第一次完整的參與了一個商業化產品誕生的全過程:立項、研發、測試、發佈。我的能力的邊界進一步擴展到了項目管理,產品運維,算法來講也有了更加全面的擴展。
2017年,又一次的擁抱變化,是轉投向交通行業。在追趕城市大腦的浪潮中,接觸到杭州的交通行業,才發現本身對已經待了8年的這座城市,瞭解還遠遠不夠。杭州「首堵」的稱號揚名在外,而天天須要開車一小時通勤上下班的我,逐漸更關心這個城市的每個交通的脈絡,每個新的規劃和改變。道路就像是杭州的「血管」,咱們經過算法的應用,爲這座城市疏通它的每一寸「經絡和血管」,注入能量。
這樣的工做實際解決的每個環節都與咱們的生活息息相關。往往想到本身的每一分努力都可以幫助整個城市,都會得到知足感。若是優化算法,能使信號燈的通行效率提高一個點,就能夠節約全部人加起來上百個小時的時間。若是切實的減小擁堵和提出建議,更能減小人力資源的浪費。
將來怎麼樣讓這個城市變得更加智慧?也成爲了我新的目標。
在淘寶的兩年,我關注如何用算法作好一件需求。而在阿里雲,我更關心怎樣的產品和雲平臺,能幫用戶更好地實現算法的聯動,實現沒法計算的價值。
寄語
掐指一算,今年正好是來到阿里的第5年,在杭州的第9年。
而這份「修煉」,仍在進行中……
對於有志於作算法工程師的同窗,也有一些「修煉」的建議:一是持續學習,多去嘗試不一樣的細分領域,找到本身最喜歡也擅長的方向,固然我的認爲喜歡相對來講重要一些。 二是但願你們把關注點放在解決問題上面,不管是用什麼框架,什麼算法,高效的解決問題纔是王道。 三是必定要了解計算邏輯,同時算法開發的能力也很重要,開發的過程當中能夠幫助梳理思路,評估算法成本。