1. 程式人生 > >培訓班出身的程式設計師,未來何去何從?

培訓班出身的程式設計師,未來何去何從?

本文轉載自公眾號  碼農翻身

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

首先恭喜從培訓班出來找到工作的同學,確實挺不容易的,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總結

需要提醒大家的是,我這裡所說的只是一個大概的分層,在學習過程中很有可能一下子從最上層的應用跳到最底層的基礎概念,這很正常,很多知識點之間都是相互關聯,不是完全隔絕的。尤其是在原理層次。

你會發現需要學習的東西實在是多,這篇文章能列出來的也是部分而已, 沒有辦法,這就是程式設計師的世界, 更可怕的是還有很多新技術在不斷湧現。

所以對於培訓出身的同學來說, 找到工作,只是入門而已,絕不能就此停滯。

還有就是我囉嗦了這麼多,也許一時觸動了你,但關鍵還是要行動,並且堅持學習下去,這樣才能成為真正的程式設計師。

—————END—————