1. 程式人生 > >做為一個Java程式設計師,你需要哪些傍身的技能?

做為一個Java程式設計師,你需要哪些傍身的技能?

最近總有些斷斷續續的思考,想想從我入行以來,我到底學會了什麼,做成過什麼,以後要做什麼,如何提升自己·······

工作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 開發工程師朋友可以加入我們Java架構交流群:760940986
群內提供 高可用,高併發,spring原始碼,mybatis原始碼,JVM,大資料,Netty等多個技術知識的架構視訊資料
還有大把大牛在群內交流以及解答面試指導,問題答疑~~

設計模式

設計模式是可複用面向物件軟體的基礎,學習設計模試是每個程式設計師從菜鳥走向大神的必經之路,巧妙地運用設計模式可以使我們的程式碼看似複雜實際簡潔、複用性更高、更容易被別人理解等好處,同時也是學習軟體工程的基礎和必然。

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

併發程式設計

主要培養程式設計者深入瞭解最底層的運作原理,加強程式設計者邏輯思維,這樣才能寫出高效、安全、可靠的多執行緒併發程式。

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

開發工具工程化

通過一小段描述資訊來管理專案的構建,報告和文件的軟體專案管理工具。程式設計師的戰鬥,往往不是一個人的戰鬥,我們如何在一個平臺下高效的去重,進行程式碼review,對功能進行調整,debug,做到在統一的規劃下步步為營,混亂的堆程式碼的過程中找到自己的記錄。這一切都依賴於有效的工具。

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

效能調優

我們不僅僅對專案要運籌帷幄,還要能解決一切效能問題。只有深入學習JVM底層原理,Mysql底層優化以及Tomcat調優,才能達到知其然,知其所以然的效果。除了效能優化之外,也能提供通用的常見思路以及方案選型的考慮點,幫助大家培養在方案選型時的意識、思維以及做各種權衡的能力。

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

原始碼分析

程式設計師每天都和程式碼打交道。經過數年的基礎教育和職業培訓,大部分程式設計師都會「寫」程式碼,或者至少會抄程式碼和改程式碼。但是,會讀程式碼的並不在多數,會讀程式碼又真正讀懂一些大專案的原始碼的,少之又少。這也造成了很多錯誤看原始碼的方式。

那要如何正確的分析原始碼呢?

我們的目標應該放在最常用的框架上面,下面就介紹兩個:一個是Spring,另一個是大家用來覺得一直不怎麼出問題的Mybatis。

△spring原始碼

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

△mybatis原始碼

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

分散式架構

隨著我們的業務量越來越大和越重要,單體的架構模式已經無法對應大規模的應用場景,而且系統中決不能存在單點故障導致整體不可用,所以只有垂直或是水平拆分業務系統,使其形成一個分散式的架構,利用分散式架構來冗餘系統消除單點的故障,從而提高整個系統的可用性。同時分散式系統的模組重用度更高,速度更快,擴充套件性更高是大型的專案必不可少的環節。

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

分散式架構(一)

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

分散式架構(二)

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

微服務

關於微服務架構的取捨

在合適的專案,合適的團隊,採用微服務架構收益會大於成本。

微服務架構有很多吸引人的地方,但在擁抱微服務之前,也需要認清它所帶來的挑戰。

需要避免為了“微服務”而“微服務”。

微服務架構引入策略 – 對傳統企業而言,開始時可以考慮引入部分合適的微服務架構原則對已有系統進行改造或新建微服務應用,逐步探索及積累微服務架構經驗,而非全盤實施微服務架構。

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

B2C專案實戰

要想立足於網際網路公司,且能在網際網路浪潮中不被淹沒,對於專案的開發實戰演練是不必可少的技能,也是對自身能力的一個衡量,有多少的量對等於獲得多少的回報。看似簡單的一個專案需求圖譜,其中的底層原理,實現原理又能知道多少?你搭建一個完整的B2C專案平臺到底需要多少知識?這一切都是需要我們考量的。

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

JVM和效能優化

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

架構關鍵基礎設施

Java程式設計師為了完成月入三萬的目標,我都做了哪些準備?

工作一到五年的java 開發工程師朋友可以加入我們Java架構交流群:760940986
群內提供 高可用,高併發,spring原始碼,mybatis原始碼,JVM,大資料,Netty等多個技術知識的架構視訊資料
還有大把大牛在群內交流以及解答面試指導,問題答疑~~