最近看到了這個問題。
首先這個問題不太正確?
正確的問題是“如何實習最好?”
你的目標是什么
回答這個問題,首先要想清楚自己未來的目標。
我們假設你的目標是做一名軟件開發工程師,實習期是3~6個月。
我們的問題就變成如何在3~6個月里,讓你向你的目標前進。
更明確是問題是在你找工作的時候,你的簡歷上寫什么?給你的面試官說什么?
以后工作面試中,看中你的什么
從我個人做面試官的經驗來說,大學生\研究生 簡歷上實習經驗最重要。
另外一個重要的是你的研究方向(不過現在這里面的水分太多,技術含量要么不大,要么不對口。)
至於你考試的分數、特長、獲過什么獎之類的,只有參考價值。
最好的實習機會是什么
你有個面試實習生的機會,你的目標是成為一名軟件開發。
最好的實習機會是:
- 讓你每天開發8~10小時,一周工作5~6天。
似乎有點自虐,不過這樣確實可以快速提高你的能力。 - 寫大量的code很重要。
開發工作一般有兩種:開發新功能和修Bug。
修Bug對新手的幫助不大。可是卻經常讓新手干。 - 方向很重要。
如果你想搞算法,就最好找相近方向的工作。
因此,在你面試結束的時候,你要問清楚對方讓你干什么。
你可以給對方說,你可以接受加班,但是必須是開發工作,開發新功能的,讓你有機會寫大量代碼的。
如果,對方說先讓做一些測試。我認為你應該放棄這次機會。
這是因為:你做了3~6個月的測試,以后找工作的時候,很可能讓你做測試工作。
事與願違
現在從公司的角度看這個問題。公司為什么招實習生?兩個原因:一個是宣傳公司,一個是有可能把好的實習生招成正式員工。
公司的那個開發團隊為什么招實習生? (這個和公司是不一樣的)兩個原因:一個是公司的任務,一個有可能把好的實習生招成正式員工。
其實從開發團隊的角度來說,讓實習生參與到開發里是個極大的風險(需要培訓,能力問題,是不是會隨時離開,項目進度等等)。
大公司有可能不會讓實習生接觸code (安全規范的限制)
我見過的實習機會有:
- 做測試
- 修一些Bugs
- Run Build, 每天寫build報告
- 開發小工具
- 做些無聊的事兒 (比如把軟件管理系統里,幾百個tasks的狀態改改。)
- 閑着(我面試過一個研究生抱怨說,在他實習的期間,開發團隊幫他安排在不同樓層的一個工位上,再沒理過他。)
好吧,說到這里,讓你開發新功能的機會很小。上面修Bugs、開發小工具,算是比較好的實習機會。其實閑着的機會最好,我不是開玩笑。
其實,小公司(越不規范的公司)給你的機會可能越多。
也許不實習更好
其實許多實習機會對你不重要。從找工作的角度上說,你需要的是簡歷上內容。更重要的是你需要提高自身的能力。
你面試的時候說,實習給了你了解大公司的文化,管理等等,基本上是瞎扯。
你可以不實習。
如果你可以很好的利用3~6的月時間干更多的事兒。比如自己做一個項目,你一個人也好,和其他人合作也好。
你完完全全可以把這個項目寫到你的簡歷中去,可以說這是你實習期間干的事兒。
這里有些規則:
- 你能夠全身心的投入到這個項目里。
如果你個人控制力強,最好,如果不行,讓你的同學或者老師監督你。
這就是我說為什么一個閑着的實習機會最好,公司的環境可以讓你更專注。 - 有個比較好的方向。有新知識進來。
- 要有大量的產出物:Code和文章。
學習一個知識,看一本書比不上自己實現和利用它,在自己實現的過程中,你可以學會很多東西,理解也更深刻。
這里寫一些我覺得比較好的例子:
- 可以學習一些人工智能的算法,寫個程序實現這些算法,還可以測試、應用這些算法。再寫一些文章。
- 可以學習一個框架,寫個系統使用這個框架。這個系統要有完整性,你可以設想許多功能,然后實現這些功能。
- 可以仿照現有的軟件。比如ant, junit等等,可以使用相同的接口\設計,自己寫一個一模一樣的,小規模的。
一些壞的例子:
- 只讀書。
- 寫類似於Hello World的程序。