我在自學3個月Python之后進入了一家公司成為了Java實習生,總結一下最近一段時間的感想。
1. 學習編程需要以目標為導向
當你以找工作為目標時, 你需要去學校的招聘會或者或者是招聘網站查看相關崗位的數量以及薪資情況, 而非盲目的上知乎等網站提問。任何不考慮當地就業環境的編程方向推薦都是耍流氓。
當你以自動化辦公之類的目的學習編程時,相信我,大部分你想做的事情都會有成熟的解決方案,很多情況下你只是需要找到一個合適的工具而已。當你真正需要手動編程的時候,其實你的工作平臺已經幫你限制了范圍:Office中的VBA、Windows下的Power shell、Linux下的Bash這些編程語言都對他所在的平臺有極好的支持,很多時候你所需要的就是一些基本命令所組成的腳本而已。而對于Python等語言,更多時候你需要考慮的是平臺兼容性,當你需要把你的腳本推廣給同事的時候,我相信他們不會想知道Python解釋器、包管理器等。
2. 不要盲目追隨新技術
如果你是就業為導向的,那么不要把新技術當作你就業的籌碼。真正幫助你就業的是對市場中已經存在并且廣泛應用的老技術的熟練掌握。沒有一個公司會讓剛入職的實習生或者本科生在項目中使用新技術,你所要做的時對公司已有項目的了解,很多情況下這些項目會讓你覺得與所謂的主流技術脫節。那么歡迎你, 你來到了現實生活中。現實生活不是微軟發布會、不是谷歌發布會更不是知乎現在熱議的某個技術,而是一個一個老項目組成的,他們使用著老的框架,老的技術,但他們任然承擔著為公司盈利、為客戶服務的責任,而了解、熟悉和掌握它們才是你應該做的,而非大談某某技術。
3. 尊重公司的技術棧、工具箱
這個承接第二條。公司的技術棧是由你的同事、你的領導他們用時間摸索出來的,是一套完整的生態體系。這些技術棧、工具箱或許不同于你在知乎中看到的、或許落后于你狹隘的認知,但是這些卻承擔起了你現在所任職的這家公司,我相信沒有什么能比這更有說服力了。所以面對任何你認為不合理或者落后的地方,你只需要一個態度:Fear & Respect。在Java實習過程中,公司的同事使用的都是Eclipse,而我卻強行使用IDEA,結果公司的項目都跑不起來。最后才知道公司的架構師已經試用過IDEA并且早就得出了結論。而我卻因為這個問題找同事調試,浪費了他們很多寶貴的時間。
4. 不要盲目迷信命令行
學習編程的時候我就認為命令行是程序猿必須熟練掌握的一項技能,事實證明我錯了。很多情況下在GUI中推拽文件或者右鍵操作都會比直接寫命令方便。在Notepad++中查找替換比學習awk、sed要實惠。當命令行變為腳本時,或許才是展現它強大能力的時候。不管是命令行還是GUI,都是工具,重要的是工具背后的理念。拿Git來說吧,學習Git重要的是學習Git的工作流程以及對commit、branch、head等概念的理解,而非強行記憶Git命令。而GUI在幫助我們理解一些概念的時候是非常強大的,我相信在GUI中熟練使用Git的是初學者學習命令行不需要太多的精力、而每天糾結Git命令中的選項、參數的人或許把時間和精力放錯了地方。
5. 有一臺開發專用的電腦
開發專用意味著這臺電腦中只有工作使用的技術棧、開發工具以及各種特殊的項目配置。確保這臺電腦能夠穩定的運行,沒事別再開發電腦中嘗試新技術、新版本以及新的操作系統。任何不穩定的因素都要排除,不然當你開發環境中某個依賴被升級或者改動或者是你的操作系統奔潰,那么你就需要花費好幾個小時來重新搭建開發環境。最后,確保這臺電腦是你能力范圍內的頂配電腦,這會讓你每天的心情好很多。
6. 學會學習
- 知識是學不完了,但項目是固定的。不要使用學生思維:學完整本書再去考試。你不需要學完某個框架的手冊,你只需要學習項目中涉及到的部分,并在需要的時候發揮你的學習能力以及解決問題的能力,留出更多的時間去了解框架背后的思想。框架不斷更新,背后的思想卻是多年不變。
- 限制學習的深度。那數據結構舉例,在工作中你需要了解的是使用合適的數據結構,而非實現,所以學習的重點是每個數據結構的原理以及優缺點,不需要深入了解每個數據結構實現的具體細節。使用合理的抽象會讓你的學習變的很輕松。