天天看點

如何成為一個合格的Java程式?一個Java五年程式員分享心得

恍惚間,發現自己在這個行業裡已經摸爬滾打了五年了,但是今年在換工作的過程中卻遭到了重大的挫折,原以為自己就憑已有的項目經驗和工作經曆怎麼着也應該算得上是一個業内比較資曆的人士了,詳細過程我就不再叙述。在此,隻想給大家說一說被拒絕的原因,看看大家有沒有相似的經曆,和類似的感悟。

面試官對我的答複大緻是這樣的,我們不需要熟練工,我們需要在某領域擁有超過常人的積累認知,和擁有整套完整思維模式和優秀認知事物能力的人…他很誠懇地告訴我,你還年輕,真的應該好好地靜下心來,深入地研究一些東西,自己寫一些東西,而不是這也用過,那也知道,但是多半都是局限于僅僅見過,會用,卻從來沒有認真思考過其代碼背後蘊含的思想,更少有人研究過源碼,進而體會大師們在某些問題的解決上秉承的思想和思維的風格。

個人感覺,這也算是國内大部分程式員最讓人悲哀的地方了,當然這也與外界浮躁氛圍的蔓延不無關系。不了解這一行的人總覺得程式員都是代碼民工,如果自己也認為自己是敲代碼的機器的話,我誠懇地建議您盡早轉行吧,也許我這麼說會得罪傷害一些同行,畢竟轉行對任何一個人來說都是有相當的風險和挑戰的。

不過這絕對應該是善意的忠告。相反,我強烈地認為,程式員應該是最有活力和最有思想的一個群體,隻要你不肯讓自己浮于表面,更重要的是,必須勤于思考。如果你認可我這句的話,就請您繼續往下看看我的感慨,否則,那就希望您好好利用好自己的時間做您最需要做的事吧。

由于面試中被問到Spring,MyBatis的時候,讓面試官問得人仰馬翻,啞口無言,是以回來之後洗心革面,下決心要把Spring,MyBatis好好研究個明白,再也無法容忍自己隻知其一不知其二了。

清醒的認識自己

我一直擔驚受怕,過去,可能是因為我年輕,但現在,我已經不是那麼年輕了,我仍然發現有很多事情讓我害怕。

當年紀越來越大後,我開始變得不能加班。我開始用更多的時間和家人在一起,而不是坐在計算機前(盡管這樣,她們仍是抱怨)。我在本地教育委員會社群裡提供一些幫助,還組織開源興趣小組參加活動。

我在思考,為什麼以前會把如此多的時間全部用在程式設計上。大量的程式設計。那是我渴望深入研究一個類庫,一個架構或一門技術。

現在的技術的學習曲線的增加,讓我的忍耐性越來越低。各種新技術,因為新奇讓人興奮,但最終變成一場場争論。我越來越無法忍受這些充滿市場宣傳氣息的喧嚣。我對技術看重的是穩定,清晰。

據不完全統計,截至目前(2017.07)為止,中國Java程式員的數量已經超過了100萬。而且,随着IT教育訓練業的持續發展和大量的應屆畢業生進入社會,Java程式員面臨的競争壓力越來越大。

那麼,作為一名Java程式員,怎樣努力才能快速成長為一名進階的程式員或者架構師,或者說一名優秀的進階工程師或架構師應該有怎樣的技術知識體系,這不僅是一個剛剛踏入職場的初級程式員,也是工作三五年之後開始迷茫的老程式員,都必須要面對和想明白的問題。

為了幫助初學者少走彎路,我總結出一個Java程式員的工作1-3年成長路線圖。

如何成為一個合格的Java程式?一個Java五年程式員分享心得

需要上面資料的夥伴可以在評論區給我說,也可以直接加我的Java技術群:3907814 ,自己浏覽。

在過去幾年中,政府和社會一直在努力使“Geek”再次酷起來。總統和總理提倡計算機程式設計成為學校課程的一部分。今天,除了政治,成為一個合格的程式員比以往任何時候都更具挑戰性。隻是一個内向的天才不再合格。

公司群組織正在尋找有認知能力的人來增加他們的技術能力。這很難用數字表示,因為它非常依賴于公司,但可以在這裡應用70/30規則。意即人們應該擁有大約70%的技術技能和30%的軟(認知)技能。

如果他/她缺乏所需的軟技能,那麼“硬核”開發人員幾乎進不了管理階段。我曾跨越多個垂直領域管理過許多團隊,開發了一些被若幹世界上最大的公司所使用的職位描述和職業發展路徑。讓我們總結一下在公司招聘或晉升時,看上去有點像模式的幾個方面。

技術能力

嗯,這是一件明擺着的事;技術技能才能讓你得到面試機會。當招聘一個Java開發人員時,公司會考慮若幹因素。

基礎

對Java程式設計語言基礎的了解。

知道如何編寫代碼是很好的,但是知道代碼背後的推理和/或所選擇的算法将使你從人群中脫穎而出。

主流程式設計工具

今天,事實是,你不能成為一個樣樣都懂的人(雜而不精)。你必須選擇你要掌握的工具。有時這是由工作的環境決定的,但是按照下面說的去做也是一個很好的選擇:

建構工具:Maven或Gradle。SCM:Git(不是GitHub。大不相同)。建構自動化:Jenkins。IDE:Netbeans或Eclipse——不僅用于編寫代碼,而且還從IDE中重構和調試代碼。我遇到了很多沒有如何從他們最喜歡的IDE調試的開發人員。Bug跟蹤:Bugzilla或Jira。

主流程式設計架構

Spring MVC用于Web開發JSF的知識

應用程式伺服器

所有Java開發人員應該知道如何在Apache Tomcat中部署。當Glassfish開發停止時,下一個最好的事情是JBoss WildFly。

雲開發

在Amazon EC或PaaS上擷取免費帳戶。Amazon的另一個選擇是Red Hat OpenShift。

認知技能

對Java程式設計語言和各種工具有深入的了解自然是一件好事,但你的雇主/客戶也會從以下方面對你進行評估。

溝通

溝通是我們做好一切事情的關鍵。我們必須與我們周圍的環境互動,無論是在我們的私人還是職業生活中。這不僅僅是把字詞放到一起的能力,也包括如何溝通我們面臨的問題,或者提出這些問題的解決方案。一個偉大的溝通者知道如何在各種團體前面表達自己;記住,對你來說顯而易見的東西,從讓他人的角度來看可能并非如此。

問題解決

開發人員是問題解決者,也是哲學家和思想家。不要做那種隻會寫代碼,不參與讨論如何解決問題的程式猿。不要成為那種隻會說“告訴我要建立什麼,我就建立什麼,不要問我這是否為最佳方法”的程式猿。

有團隊精神

無論是結對程式設計還是大型項目,所有開發人員都是作為團隊的一部分在工作。你需要緻力于團隊的目的和目标。幫助指導初級成員,或幫助苦苦掙紮的團隊成員克服障礙。不要有那種“我在這裡隻要做好我的工作,然後就可以回家了”的态度。成為團隊的一部分。你不需要成為“團隊小醜”或總是出去參與團隊活動,但要成為團隊的一員。

自學

這是一個非常重要的技能;在你自己的時間學習新技能的能力。不要總是等待公司為你提供教育訓練。你需要自己去學習新技術,提升自己在相關領域的水準。從前端開發到架構模式,總是有一些新生事情值得學習。閱讀部落格和文章,嘗試加入本地聚會小組。你學到的東西可以為你的事業開辟新的頂點。

這個部落格不應該這麼長,但目的是為了幫助那些有抱負的開發人員——甚至是老手。謝謝各位閱讀!