最近總有些斷斷續續的思考,想想從我入行以來,我到底學會了什么,做成過什么,以后要做什么,如何提升自己·······
工作3年了,常聽人說3年,5年,10年是程序員的坎,每過一個都會有新的想法,新的改變。
最近剛失業,原公司要解散開發團隊,轉做其他業務,這個消息對我來說在意料之外,但是又在情理之中,只是沒想到來的這么快,再這家公司待了2年,學到了不少技術,但是最后的半年,因為公司產品研發的一些問題,加上自身的懈怠和懶惰,基本上是在打醬油,現在想起來感覺很后悔,浪費了光陰,像這樣能有一份收入同時又可以學到東西的機會其實是很難得的,只怪自己當時沒領悟到。
然后就是投簡歷找工作,我預想的是有了工作經驗再找工作應該不像當年剛畢業找工作那么難了吧,實際上卻是當我拿著3年工作經驗的簡歷面試了一些公司之后發現,其實我的能力對于勝任3年工作經驗的工程師崗位還是有些差距的,突然感覺到比剛畢業時更無助的感覺,也后悔工作3年卻沒積累到3年的經驗,也許我是一個經驗用了3年,而不是有了3年經驗。
我是做j2ee開發的,一直都在做網站方面的開發,但是這一段時間的面試下來,我感覺現在的公司招人特別是工程師這一崗位的要求是全能型人才,必須了解并掌握軟件開發中每個環節的具體操作。而我,卻只掌握了其中部分,其他的只有聽過或見別人弄過,是只知其然,不知其所以然。所以鑒于我這樣的情況,一些公司給我的定性是初級開發工程師,一開始我覺得很不高興,哥好歹也工作3年了,就給哥這評價,可后來仔細一想,人家講的未必沒有道理。現在大部分軟件公司的技術團隊都不會很龐大,但是工作量和工作強度卻是非常之大,如果一個團隊成員不能獨當一面,不能兼顧多方面工作,沒有很全面的實力的話,整個團隊效率和能創造出的效益也是非常低下的。
那我們作為一個Java程序員到底需要掌握多少技術才能適應現在的用人單位呢?
我個人總結后覺得有以下這么幾項:
1. java 基礎
這就不用多說了吧,不用說精通,至少是常用的要熟練,不會說連jdk里面提供的類都沒認全的(我確實有小部分不常用的沒記住的T.T)
2. 各種工具的使用
eclipse,SVN ,數據庫管理工具等等
3. j2ee 框架
只要你是用java來做WEB應用,絕對少不了使用j2ee框架,目前流行的有
1)struts 2)spring 3) hibernate 4)ibatis 5)spirngMvc 等等的其他一些相似的框架,還有項目架構中經常會用到的緩存框架例如memcached ,ehcache,oscache等Java緩存框架
你需要掌握基本使用,部署,性能調優,配置
4. 數據庫基礎
數據庫一直是程序員需要重點掌握的一部分,當下主流的還是關系型數據庫,產品有oracle mysql sqlserver db2,當然nosql型數據庫也是未來方向,很多公司也已經在使用,如redis mongodb membase 等等
你需要掌握基本使用,和根據業務邏輯設計表,索引,視圖,存儲過程,函數等
5. 應用服務器
凡是web應用首先都要部署到應用服務器上,常用的產品有tomcat,jboss, apache,resin 等等,還有用來提升性能的反向代理服務器如nginx等
你需要掌握如何部署項目,基本調試,調優
6. Linux系統
我們平常的編碼通常在windows環境下,可是生產環境卻通常是在Linux下,因為微軟的東西,你懂得
所以我們需要掌握的是shell腳本,vi ,各種軟件的安裝,部署,其中shell腳本是最重要的(我個人覺得哈)
7. 前端開發基礎 html css js
如果你不是專攻服務器編程的話,你一定會接觸前端開發,這其中html你需要掌握各種標簽的使用,css首先你得看得懂是吧,js 目前來看屬于一門獨立的程序設計語言,也是前端中非常重要的一塊,需要掌握其語法和一些常用框架如jquery,extjs等的使用(我之前的公司前端只負責切html和css,js啥的都是我們自己來)
8. 設計模式
面試官最喜歡問的問題之一,這個被很多人吹的很神的東西我個人認為既不用奉為圭臬,也不用棄如敝履,這是一個思想的東西,也許寫一輩子程序那23個設計模式也不一定全用的上,但是知道并且能夠在適當的時候用他來解決問題就夠了
9. 數據結構 算法
記得國外哪位大神說過,編程=數據結構 + 算法 。雖然感覺平常的工作中用到的不多,但還是覺得這是一個內功的東西,不會這兩樣也許你也可以完成很多開發工作,但是如果你精通這兩樣,你的思想境界和思考問題的高度就不是一般人能比的了,如果想要在程序員這條路上繼續走下去,不管以后是成為技術專家還是技術性管理人才,都是必須要爛熟于心的。
--------------------------
上面幾點是我覺得應該掌握的具體的技術,再講些其他層面的吧
1. 項目管理
這里的項目管理我指的是對項目架構的理解和軟件開發標準化流程的一些東西,因為一個團隊除了技術老大之外其他成員也還是需要深刻的達成一個這方面的共識,不然沒法共事對吧
2. 項目架構設計
這個就是需要大量實踐和多看書來培養的了,如果你想成為架構師這是必須的,目前web方面的項目架構都是朝著高性能,高可用,大數據的方向,你需要掌握的不僅是上面提到的所有技能還有技術之外的產品,業務等更深更廣的東西
上面僅僅是我工作中遇到和我認為應該掌握的,也是僅針對Java的web開發方向,如果你是android開發的話,還需要掌握android sdk中的方方面面。
如果將上述方面的技術都掌握到熟練的程度,勝任一個3年經驗的開發崗位應該是沒有問題了(我就沒有全部掌握。..T.T),當然 如果你希望你的技術水平不只是熟練的話,個人認為則需要把上述其中幾項往深度方面修煉,然后有所成再往廣度發展,
先在一個領域有足夠的深度,再往廣度發展會容易很多,職業道路也會好走很多。
---------------------------------
首先感謝您看我啰嗦廢話到這里,以上都是我在工作3年這個十字路口的一些所思所想,肯定有所不足和幼稚,希望您看到這里也能發表下您對您職業生涯的感想,我們大家一起交流成長,努力提高自己的技術水平,可以為將來更好的工作機會做準備。
-
JAVA
+關注
關注
19文章
2973瀏覽量
104926 -
程序員
+關注
關注
4文章
953瀏覽量
29828
發布評論請先 登錄
相關推薦
評論