一路走來,從自學到工作這一年我學到了什么?

一、關于自學和入門

   我有兩個同事,他們大學學的是機械、化學,但是他們的編程能力是在我這個科班出身的之上的,為什么?

   自學和勤奮

   雖然我是計算機專業,但是大家都了解學校教給你的是遠遠不夠的,只能靠自學。首先給自己定一個方向,畢業后是想做服務端、客戶端、前端還是算法或者其他自己感興趣的方向。這里要強調一下,興趣真的很重要,因為你會發現有時候自學編程真的很枯燥,如果沒有興趣真的堅持不下來。我給自己選擇的是Android 應用開發,因為自己買的一千左右的Andorid手機就有像iphone一樣的體驗,這個系統太神奇了。而且Android app開發當時這個方向很火,很新。同時Android是Google大大的開發的系統,底層代碼又是開源的。

   看到開發Android需要JAVA語言基礎,于是開始從網上找了JAVA資料,我的啟蒙老師是韓順平(現在連名字都記不清了,現百度的。但是真的很感謝這個人。他的教學視頻質量很多,就算像我一樣很差的人也能輕松入門)。韓老師的課程講的比較基礎,而且是帶著你一行一行的敲。于是那一段時間,除了上課的時間我就抱著電腦到實驗室去看視頻,一邊看一邊敲。先是講JAVA語法,后面開始有實戰項目。

    入門的時候推薦大家看視頻而不是書,視頻有更好的帶入性和互動性。買本幾百頁的書估計看十分鐘就睡著了。而且目前國內像慕課網,極客學院、51CTO之類的Online教育網站視頻質量都很高??詞悠檔氖焙蛞甲霰始?,可以開一個CSDN博客,把自己的總結寫上去,時不時還會有人給你點贊。這里推薦一下CSDN這個平臺,有人推薦程序員要搭建一個個人blog,但是我覺得個人blog可能互動性不如CSDN。你在寫博客的同時也能看到大牛們的博客,CSDN上面的博文質量很高,而且每天都會有大牛講各種前沿的技術分析,酷炫的自定義控件、深入剖析某個框架,牛人很多。

  看過視頻之后可以自己做個小項目,可以比著市面上比較流行的項目去做,也可以以參加比賽的目的去做。同時自己也可以買幾本對應語言的比較經典的書籍。JAVA的話,推薦《Thinking in JAVA》、《瘋狂JAVA系列》、《JAVA核心技術》、《Effective java》??詞橛Ω媚芄桓愀嗟氖奔淙ニ伎?,書里也會有比較深入的東西,更注重的是理論。

  其實,對于入門來說也沒有什么捷徑,就是勤奮和堅持。每個人都要經歷這個過程。

 

二、關于找工作

 基礎打好了,就可以去找工作了。找實習的時候需要先對自己的找的方向面試問題大概了解一下。找實習的時候主要是看你的基礎還有自學能力。包括語言語法,簡單的性能優化,項目中遇到實際問題,通過算法題考察你的思維敏銳度。這種東西其實面多了,總結總結自然就會了,來回來去都是那些東西。也可以提前看看前輩的面試經驗貼。算法這個需要長期的積累,校招還是很看重的,當時面某團,一面問的JAVA和Android技術輕松應對,二面問的很復雜的算法當場就跪了。算法要多刷題,好像沒啥捷徑。推薦Leetcode。找實習大廠不好進,除非你的基礎特別好,或者學校特別好。

 

關于實習的選擇:最重要的是看能不能學到東西,而不是工資。當時我拿到了兩個實習offer 工資差了大概1000塊。但是我選擇了工資少的那個。因為這個團隊的人經驗都很豐富,而且公司運作了4年了,有技術積累。后來我覺得我的選擇是對的,團隊里面有2個技術大牛,各種博客之星各種github開源大牛??上攵焯熳謖庵秩松肀?,和這種人一起寫代碼自己的提高也很快。

 

關于校招:去年9月開始邊工作邊校招。北京所有的大公司基本都走了一遍但是沒有一個公司收留我。總結失敗的經歷是因為自己的基礎知識比較差,平時對計算機基礎關注較少,可以說是因為大一大二的時候沒有好好上課。而項目方面對內存、性能優化以及底層的實現了解的也比較少。當時很沮喪,就放棄了。又回到了之前實習的公司繼續工作,開始有點混日子了,瞬間沒有目標了。突然有天和某個HR聊起來,他的一句話:“在互聯網圈里混,你這學歷也不行,現在你公司也不行。以后不好混??!”是啊,進個大公司對自己發展還是有很多好處的,無論是眼界還是技術的沉淀。于是繼續邊實習邊學習,那段時間自己很勤奮,主要精力放在了基礎知識、Volley,ImageLoader開源框架的理解、性能內存優化以及JAVA語言深入理解。于是在16年年初通過學長的推薦,面試過了一線的Android os廠商。

 

三、我學到了什么?

1.    嚴謹和標準

嚴格的代碼review,每個commit 都需要經過師父的review和QA同學的驗證。

經常因為類命名被罵。因為代碼結構被罵。的確,代碼寫完后還會有團隊里其他人在看,好的代碼結構和命名是很有必要的。

     2.獨立深入思考問題的能力

最近發現無論是技術還是管理上面牛的人做事情都特別冷靜,能夠安靜的思考問題。無論是遇到多么復雜的問題,無論環境多么嘈雜。

記得有個BUG,自己2周才解決,寫了4行代碼,但是看了將近幾千行。從Android framework 到selinux ,雖然很煎熬,但是學到了很多。獨立分析問題的能力是一個優秀的程序員必須具備的。但是,作為初級RD,如果你遇到了一個問題很久沒解決,一定要向他人求教,也許有時候他人的一句話,就能解決這個問題。

解決了一個小BUG,是否就這樣完事兒了?要深入去理解。為什么我加這一行就能解決。

最近在慢慢開始看Android framework的東西。雖然很枯燥,但真正看懂的時候你會發現Android的設計很奇妙的。我喜歡深入去剖析某個東西。準備面試的時候看了Volley源碼,給自己加了很多分。

   3.做一個有追求的程序員

遇到問題不要只想著打補丁的方式去解決,比如遇到一個NullPointException,不要只做一個判斷,然后catch住。也許只有你覺得這能解決這個問題。只是你覺得?可能并沒有cover到所有的case.而且如果有其他人解決的時候會很難理解你的做法。如果一個項目到處都是這種補丁,可想是有多么糟糕。你做的就是應該去找到為什么會拋出這個exception,然后正面的去解決。遇到問題不要規避,正面應對。

追求極致。做個靠譜的工程師。自己發現的BUG,你會不會解決?自己寫的代碼是否經常review?是否經常關注用戶對自己做的功能的反饋。優秀的程序員和普通的程序員也許只差一點,責任心。

    4.勤奮

很高興在這個團隊,并沒有很多天生麗質的大牛,學校都一般。組里技術最好的幾個人永遠都是最晚走的,周末也經常在公司學習。我們leader也是以勤奮出名,當時在新版本上線時候也經常一個人為了解決一個問題待到兩三點。目前他已經不寫代碼了,但是寫了N年代碼讓他變得冷靜,邏輯性強,在管理層也做的風生水起,目前已經實現財富自由,還不到30歲。如果你也像我一樣不聰明,目前資歷一般,那就勤奮起來吧。下班別人都走了,咱們可以在公司總結一下今天學到了什么,看看github上面有什么好玩的,看看最近熱門的博客。年輕的時候就應該是自己多沉淀的時候。

5.語言表達能力

      遇到問題,該怎么優雅的向他人請教?團隊大了就經常涉及到和其他組的人溝通。能否把問題表述清楚?能否讓其讓人樂意幫你?發郵件的時候,能否考慮全面,用最少的文字將問題說清楚。現在我每次發重要的郵件還是需要師父去review。這還是很需要功夫去磨練的。平時多聽聽大牛是怎么討論問題的。也可以多讀書,多寫寫博客。畢竟我們不會寫一輩子代碼。

6.英語

     這個就不多說了,目前看到的官方教程全是英文的,源碼注釋也是英文的。這個感覺不用刻意去學,只要多看多積累就好了。之前commit message用中文,現在都換成英文。注釋啥的也都換成英文去。

7.給自己留下點什么。

     Github多刷刷,博客多上上,知乎多水水。一來是自己積累知識,二來提升自己的知名度,名氣大了在這個圈子里面就好混了。

8.多總結,多沉淀

    無論再忙也找給自己找時間去總結,去思考。工作多年的程序員也會有很大的差別,在大公司的也有很多渣渣。

9.熱愛編程,熱愛生活。

你寫的代碼不僅僅能夠給你高工資,還能給億萬用戶帶來便利。

 

來源:CSDN

上一篇: Android開發者必知的5個開源庫

下一篇: 給那些剛入行的 iOS/Android 開發新手們的一些建議

分享到: 更多
北京pk10计划软件 四川时时12选5开奖结果 pt电子爆分时间 重庆时时预测下一把 三分pk10是正规的吗 北京时时网址 pk10技巧 稳赚买法9码死公式 重庆时时彩独胆 极速赛车倍投方法 三公扑克牌游戏下载 重庆时时猜龙虎走势图 云南时时三星基本走势图 时时彩人工计划软件哪个准 组三包胆计划 二八杠生死门详细讲解 天津时时彩走势图