對于培訓出身的同學,接下來該怎么學習技術?
首先恭喜從培訓班出來找到工作的同學,確實挺不容易的,4個月的培訓,每天從早上9點到晚上9點,也是996,主要的活動地方就是宿舍和教室, 讓我現在也去培訓,我估計還熬不下來。
尤其是對于從小白開始的同學,4個月期間不斷地接觸新技術、新概念,一個還沒徹底理解,另外一個就呼嘯而來,狼吞虎咽,想真正消化是很難的。
所以我經常說對于那些通過培訓來努力改變命運的同學,我非常尊重。
現在好了,找到了工作,可以稍微喘一口氣了,但是能夠就此休息了嗎, 那是絕對不能。
培訓只是讓我們入了門,有了一個初步可以工作的技能,可以參與項目,在別人的指導下,在現成的框架下寫業務代碼,想成為一個真正的程序員,路還非常地長。
我想給各位嘮叨兩句,說一些注意事項。
1.適應期:把工作做好
首先一定要把分配給我們的工作做好,這是底線。
要拿出300%的勁頭去做,就是加班加點也要高質量按時完成,誰讓我們是新人呢! 初步建立起自己的認真負責的形象,注意啊,個人的形象是非常重要滴。
遇到障礙一定要及早提出,向同事請教,“不恥上問”,不要不好意思,不要怕別人鄙視。
最怕的是有個問題把你給絆住了,你坐在那里不吭聲,兩天過后,領導才發現你嚴重落后于進度。
如果有余力,盡快地去熟悉項目的各個方面,尤其是業務上的東西。
收集業務知識相關的文檔,反復閱讀,努力理解,不懂就請教。 注意:這些事情很有可能是在你的工作之余完成的,下班后的游戲就不要再打了,現在工作第一!不過你放心,你努力學習的態度一定會給你帶來回報。
和組長,項目經理等領導搞好關系,抓住一切可能的機會主動、自信地領導交流(例如共進午餐的時候)。 不用總是“默默無聞”,要主動參與,了解項目的進展,人員情況,有什么困難。 總之要快速地融入團隊,打入他們的圈子。
不要不好意思,老是躲著領導走,讓領導覺得:這孩子這么怕我,是不是有什么問題?!
2.深入學習技術和原理
度過了適應期,會感覺舒服很多,代碼和業務逐漸熟悉, 任務不用加班也能完成。和同事也開始熟悉, 于是就進入了舒適區。
這個時候可以更加深入地鉆研一下技術了,什么Nginx、Redis、RabbitMQ、Shiro、Elastic search、Spring ......等知識,培訓班也許學過,但是我相信只是學了一些皮毛,對原理可能還不太了解, 這時候正好可以結合工作中用到的技術,深入地學習一下。
例如Nginx,要去理解epoll這個技術,以及和select之間的差別。 理解什么是非阻塞IO,順道可以學一下Java的NIO, 感興趣的話還可以瞄一眼Node.js, 本質的原理是相通的。
對于Redis,至少要理解分布式一致性Hash,雖然Redis沒有用這個算法,但是要和Redis那種基于槽的方式來對比。
理解緩存失效了怎么處理,增加、刪除機器會怎么影響緩存。如果你的項目在使用Redis做緩存,主動向相關負責人請教,畢竟理論和實踐還是有差距。
對于Spring, 現在要考慮學習DI和AOP的實現原理和技術了,可以嘗試自己寫個小容器,絕對很鍛煉人。
DI還好說,AOP這一塊兒需要有底層技術支持,就是Java動態代理和CGLib。再往下深挖,就是ASM, Class 文件的格式,ClassLoader,這就進入了另外一個大世界: JVM, 需要掌握JVM的邏輯結構,執行引擎,尤其是后者,理解一個類裝入方法區以后到底是怎么執行的,其中的棧幀等概念對以后學習C語言在機器層面的執行很有幫助。
可以閱讀一些面向對象設計, 設計模式相關的書籍,不能只是看,要思考,它到底要解決什么問題? 把一些設計思想和自己的項目做對比,看看為什么現在的設計是這樣,是不是有問題, 向資深同事請教。
......
總之,最好從工作中使用的技術開始學習,理論聯系實際,還是那句話,“不恥上問”,作為程序員,老是悶頭自己干,希望一鳴驚人,給別人一個大驚喜,那是不太現實的。
3.計算機基礎
在往下走就進入了計算機基礎的領域了,之前說過很多次,估計老讀者都煩了吧, 這里再啰嗦一下。
操作系統的幾個重要概念一定得掌握,進程、線程、虛擬內存,一定要理解程序在機器級層面的表示,寄存器,函數棧幀等,如果你能理解緩沖區溢出的攻擊和防御就差不多了, 這些知識需要涉及C語言和匯編。
理解線程的幾種實現方式,對于將來學習Go語言的并發,Actor, ErLang 等技術和語言有極大幫助,你會發現有似曾相識的感覺。
數據結構和算法的學習要貫穿始終,雖然在工作中最常用的可能就是數組,List和Map。
對于常用的數據結構要自己能寫,要閱讀JDK對應的實現。 要大量地做題,鍛煉自己的邏輯思維能力。
如果你的工作和數據庫結合緊密,那數據庫中相關的技術如索引,事務,查詢優化不能錯過。
對于計算機網絡,要理解協議的本質、分層的本質。 具體的協議中HTTP是必備,還要了解可靠性傳輸的原理,TCP/IP等協議,socket等基本概念。
4總結
需要提醒大家的是,我這里所說的只是一個大概的分層,在學習過程中很有可能一下子從最上層的應用跳到最底層的基礎概念,這很正常,很多知識點之間都是相互關聯,不是完全隔絕的。尤其是在原理層次。
你會發現需要學習的東西實在是多,這篇文章能列出來的也是部分而已, 沒有辦法,這就是程序員的世界, 更可怕的是還有很多新技術在不斷涌現。
所以對于培訓出身的同學來說, 找到工作,只是入門而已,絕不能就此停滯。
還有就是我啰嗦了這么多,也許一時觸動了你,但關鍵還是要行動,并且堅持學習下去,這樣才能成為真正的程序員。
責任編輯:任我行