僞乾貨:應屆生找工做與入職心得

題外話:掘金的編輯器意外好用(感受比GitHub的好用)。前端

第一章是隨筆,你們能夠跳過,後面纔是乾貨


過去的結束,如今的開始

2017年5月,初夏,一個陰冷若雨風瑟瑟的早上,我與其餘1000多名學生一塊兒,參加了2017屆的畢業典禮。學生們排着隊進入佈置好椅子的草坪,一一就坐。等幾個領導和嘉賓演講結束,教務主任和校長開始給同窗們頒發學位。一位工做人員按字母順序練出名字,聽到的人就走上臺與校長握手,接過學位。學生走上臺時,臺下會有必定的歡呼。由此能夠判斷你在學校的結交普遍程度。固然有很拉風的學生,也有不知名的學生。中國留學生畢竟少,也只有咱們本身給本身歡呼。面試

我走了上去,全場寂靜,我大學四年並不認識幾我的,因此也是意料之中。不過,即便這樣,我仍然沒法忽視氣氛的尷尬。強顏微笑,和校長握手,接過學位,再與教學主任擊掌。我就在這寂靜的「你沒有朋友」的酷刑中完成了畢業的儀式。走下臺,我回到了座位上。算法

個人大學結束了,沒有歡呼,沒有青春無悔的瘋狂,也沒有轟轟烈烈的愛情。這是沒有青春沒有歌,沒有旅行沒有酒,沒有佳人沒有夢的大學生涯。個人大學除了迷茫一無全部,除了知識一無所得,除了年歲一無所長。我高興,由於終於能夠脫離這桎梏個人囚籠。我暗自神傷,由於我沒有留下回憶,也看不到肯定的將來。無人問津的安靜對我來講是最好的結束,也是最焦急的從新開始。數據庫

若是這些心理上的東西,或者情懷,並不重要。那麼,務實的讀者,我會告訴你,畢業之際,我沒有工做。無論夢在哪裏,現實老是要面對。沒有面包的空腹容不下萬卷詩書,沒有鐵鞋的赤足登不上高山雄峯。編程

因此,畢業以後我就開始了爲期兩個月的苦逼找工做生活。由於本身的租房到期了,仍是寄宿在朋友的出租屋。(我實在編不下去文縐縐的小學做文了)後端


找工做

我其實從2016年的一、2月份就開始找工做了,5月分投了谷歌,11月份還去Onsite面試了。雖然沒過。如今想起來,我以爲是那人問了一個很簡單的問題,可是我想多了,把本身坑了。可是,2016年一全年就只有谷歌一家面試,因此仍是有些壓力。2017年知道5月畢業以前,我幾乎沒有任何面試,有幾個HR和我聯繫過,可是都沒面試。服務器

多是我找工做比較挑,我認爲價值不大的工做就沒幾乎沒投。架構

什麼樣的工做有價值?(針對碼農)

  1. 頂尖公司:不管如何均可以學到不少
  2. 成長型公司:正是用人之際,新人也能夠發揮做用
  3. 職位順應業界趨勢:這樣你學到的技能在將來5年纔有翻倍價值
  4. 公司的業務引領業界動向,或者解決重要問題

至少要有一個沾邊,纔是我眼中極具價值的工做。框架

刷算法題有用嗎?

我我的是拒絕的。我大學四年每週編程40小時左右,按照1萬小時大師的原則,4年都有8000個小時了。運維

拿LeetCode爲例,簡單的算法題看一眼就知道答案,徹底是浪費個人時間。難的算法題是腦筋急轉彎似的謎題,只能做爲娛樂項目。雖然我90%的時候都作不出難題,可是我明白,我有更重要的東西能夠學。

可是,對於大學沒有怎麼認真學習的CS同胞,我仍是建議他們去刷題。由於幾個月也來不及他們去鞏固知識。

找工做途中的插曲

因此,在其餘人刷題的時候,我自學了機器學習,還作了一個TensorFlow小教程放到GitHub上。如奇遇通常,竟然在數個月以內獲得了1000多個星。這是我第一次裸體式地感覺到分享的力量。因此我心裏很是感謝那些瀏覽我教程項目的開發者朋友們。若是沒有他們隨手點的星,也許我真的沒法堅持過投簡歷被拒的這18個月。這是對我最好的鼓勵。

時來運轉,正由於我GitHub上千星,我陸續接到了一些HR、獵頭之類聯繫,面試機會也多了些。甚至有被誤認爲是資深開發者的狀況。小小地填補了一下我虛榮的心吧哈哈。

不只僅是機器學習,我也利用拒絕刷題的時間,將個人Python能力提升了一個境界,同時從實現的角度學習了HTTP/2,還寫了個基於HTTP/2的Web框架出來。我用不到2個月的時間,從對後端編程只知其一;不知其二,到了有系統性的知識體系的程度。這就是從新造輪子的力量。

終於獲得 Offer

通過了18個月的找工做碰壁的考驗,我終於在硅谷一家教育公司找到了一份後端工程師的工做。獲得Offer時,我幾乎高興不起來,只是鬆了一口氣。


乾貨:新生入職兩個半月的心得

我很幸運,剛上班就被委以重任,由我來維護和開發一個重要代碼庫。通過大概一個月的熟悉,我幾乎能夠獨當一面,成爲該代碼庫的主要負責人之一。由於不能說的祕密(暴露年齡),這個代碼庫有諸多明顯的坑,因此我也被委以優化、重構、重寫之重任。

組裏的老工程師沒有由於我是應屆生就對我要求下降或者分配可有可無的活。這讓我感覺到信任和責任。

工做狀態

50%時間寫新功能,30%時間Debug,20%時間優化重構。

軟性環節心得

功能第一:我一開始過於糾結與設計的完整性和正確性,因此使得新功能的開發變慢。後來我意識到,沒有將功能開發成功,一些設計或者優化都是空談。因此,我在調整個人心態。

抱怨要伴隨解決方案:我老是抱怨代碼這裏有問題,那裏有問題,以前的工程師XXX之類的。可是,若是我沒有同時提出更好的方案,就只會顯得很煩而已。

說服本身和別人的最好方法是展現結果:僅僅是提出一個方案是遠遠不夠的。有時別人不一樣意,有時本身也拿不許。與其等待老工程解決完手頭的工做來支援你,不如立刻本身動手實現解決方案,再與隊友討論。沒有實際代碼的工程師討論容易陷入空談。

要主動:老司機說追妹子也適用。主動分兩點,第一是主動尋求幫助。你們都很忙,不會一直來關心你的進展。因此,一旦遇到問題,主動求助,積極溝通。過多的求助會顯得麻煩和無能,因此三思然後行。Read The Fucking Doc!第二是主動寫出更好的代碼。不以僅僅是恰好完成任務的心態來作事,思考任務背後的緣由。在完成任務的同時,主動順便把代碼優化了。

技術心得

從架構的角度看問題: 軟件系統的性能不只僅在於某個局部的函數或者類怎麼寫。多從總體架構的角度思考問題。僅僅會用某個框架寫route的回調是遠遠不夠的。雲端服務是分佈式的,微服務式的。因此,架構能力是後端開發者必要能力之一。

測試代碼也是代碼:測試也要按照基本法!不要認爲測試代碼就能夠隨便寫。由於測試代碼的特殊性,你多半不會寫測試的測試。因此,必定要當心維護你的測試代碼。

不會Docker是傻X:做爲後端開發者,容器技術能夠節省你不少時間。後端開發者會比前端更多地接觸開發運維DevOps。我做爲傻X進入公司,目前終於會Docker基本的使用了。

將數據庫和語言綁定是傻X:雖然大多數語言的Web框架都有對應ORM,可是不該該將全部的數據庫相關代碼都用ORM來實現。做爲微服務架構來說,數據庫應該是獨立的,不該該被某個應用的技術體系綁架。直接寫SQL沒有任何錯。個人原則是,動態代碼使用ORM。靜態的,用來管理和遷移數據庫的代碼可使用SQL。原則也適用於NoSQL。

好好用Git:都是淚。

直白寫應用,語言魔法寫類庫:在寫應用級代碼時,最好不要使用太多語言的特殊技巧。由於你的代碼會被其餘語言的開發者看。直白的代碼下降學習成本。並且,大多數問題都不須要奇技淫巧。若是你確實有特殊的問題須要處理,寫成一個庫。在寫庫的時候,由於API優先於實現,因此盡情使用語言的魔法吧。,

文檔也是CI的一部分:我使用了一個工具將代碼註釋編譯成了HTML文檔。生成的HTML是靜態網站,能夠直接部署到服務器。這樣一來,文檔和Git Branch掛鉤,成爲了CI的一部分。每一個語言都有相似工具,因此,若是你的文檔不是自動部署,You Are Doing It Wrong!

從新造輪子不見得是壞事:在使用開源的工具以前,先想清楚你的問題有多大。有時你是用的工具雖然會解決你如今的問題,可是卻限制了軟件的潛力。在使用一個庫以前,最好看看那個庫的源代碼。由於其頗有可能有不少垃圾代碼。別人開源出來的東西不必定就好。要對本身有信心。有時本身造的輪子比別人的輪子更圓(反之亦然)。


結語

這差很少就是我所有能夠分享的了。技術心得的每個點均可以單獨寫一篇文章。之後有時間再說吧。

相關文章
相關標籤/搜索