一個半路出家十年Java老程序員的真實經歷

我是一個老java程序員,現在基本告別編碼時代了,當然我現在還在寫代碼,不是為了老板寫了,是自己在創業。回想起這么多年的人生路,作為一名老程序員感慨頗多,尤其是作為一名半路出家的程序員,其中的滋味更是感慨萬分。下面我就自己說說我的經歷,也許會給未來碼農一點啟發。

當時真是太高興了,終于拿到了自己夢寐以求的本科學歷。其中付出的辛苦,只有自己知道。每天要騎一個多小時的路去聽課,而且由于南大那個講信號與系統的老師實在太差了,根本聽不懂不說還是個結巴。我和同學一起跑到天津師范大學去蹭課。要說天津師范大學的老師講的真不錯,人也不錯,其實他是看出來我們是蹭課的,但看到我們這么臭不要臉的,下大雪都不遲到,也就睜一只眼閉一只眼了。

上班第一天沒什么事情,就是裝機器,搭建開發環境。我也很輕,因為哪天是星期五,星期六日就休息了。折騰了一上午,終于吧項目從cvs上下載下來并在本地運行起來了。當時版本控制就是用的cvs,哎,培訓的時候cvs也沒講,我倒不是說這些東西不能自學,但是培訓費花了9800,就學了這么點東西,根本不夠用的,太不值了,感覺真的很坑。2003年的9800啊,不是一筆小數字??!一看那些hibernate,spring的配置文件,馬上就暈了。當時買了本孫偉琴的hiberate學的挺慢的,spring接觸的也不多。終于快下班了,經理對我說,明天一起來加班吧,項目挺緊張的。我當時就暈了,我擦了,第一天上班就加班,我說,好,沒問題!

第二天早上4點多,我突然驚醒,其實我一晚上都沒怎么睡覺,想想明天要寫代碼就特緊張,怕完不成任務又讓人開了。穿衣服爬起來,在床上打開電腦,弄了本書開始研究分頁,說實在的分頁對于一個沒有開發經驗的java程序員來說,確實是有點難度的。我想做項目肯定會有分頁的,到了6點多,終于研究的差不多了。洗漱吃早點,去上班了。果然,第一個任務就是一個模塊的增刪查改,我模仿其他模塊做了一天,hibernate的分頁還是比較簡單的。就是js有點麻煩,有個地方搞不定,還讓項目經理幫了下忙,下班的時候,經理對我說,怎么樣,我說還行,寫完了。于是,他檢查了下我的模塊,看了下代碼,有對代碼中變量的命名,代碼注釋等格式問題,做了指導。下班后,我長出了一口氣,終于找到工作了。兩個月就過了試用期,工資4000.

在這里還是要推薦下我自己建的Java學習裙:574加上二五三再加上075,群里都是學Java開發的,如果你正在學習Java ,小編歡迎你加入,大家都是軟件開發黨,不定期分享干貨(只有Java軟件開發相關的),包括我自己整理的一份2018最新的Java進階資料和高級開發教程,歡迎進階中和進想深入java的小伙伴

這是我的第一份工作,萬事開頭難,工作中遇到了很多的困難,隨時面臨新的挑戰,我覺得只要有毅力,這些困難都不是問題。兩年后我跳槽了。去了一家國企做電力系統的項目。這個公司做了兩年,感覺國企的氛圍實在真的是受不了,項目很緊張,還要讓你去開會,聽什么領導講話。講我們集團以后要怎么怎么樣,他大爺的,我手里的活明天要交差,干不完要加班,加班干不完要通宵,哪有功夫聽你瞎BB。大大小小的會議特別多,領導說起話來特擺譜,我進公司兩個多月,一直以為公司的副總是老總,公司的老總是副總。因為每次開會的時候,副總說起話來特像老總,老總到是笑嘻嘻的,還老征求副總的意見,但是副總說話都是命令式的,從來不問大家有什么意見。后來跟同事聊天才知道,我搞反了。也許是副總譜擺的太大了,最后讓老總給撤了。

2007-2008年正好趕上互聯網的泡沫,整個世界經濟危機,中國也受到影響。帝都的寫字樓里,也經常聽到有的公司在裁員,有的在降薪。我當時想著回天津,在家里找份工作,要趕緊搞對象,結婚了,家里也是催的緊。賺錢已經不是首要目標了,程序員都是單身狗,難道這就是宿命。我辭去了北京的工作回天津找工作。2008年的天津軟件公司特別少,在網上就很少,工資也特別低,回家找了兩個月打擊很大,工資太低了,而且都在華苑軟件園,特別遠。很無奈,我又回到帝都,拿著鍋碗瓢盆,再次北漂。

后來在一個小公司干了兩年,給農業銀行做考試培訓系統。突然一天接到老大的電話,就是我第一份工作的項目經理。他說他在做電商是技術負責人,讓我過去幫他,特別高興。去上班的頭一天又見到了以前的同事,大家又在一起了。真不知道我走后發生了什么,是不是被馬云擠垮了。在做電商項目的時候,確實應用了很多新技術,主要是解決高并發業務,比如秒殺之類的。當然那個時候主要是使用mysql的集群和主從同步,也就是在那個時候,我接觸到了運維,并且參與到了網站的運維工作。當時使用的是Memcached作為緩存,ActiveMQ作為消息隊列服務,單點登陸、首頁靜態化、lucene等技術都接觸到了,并且在應用到了實際工作中。在這個公司我學的了很多java互聯網開發的技術。

2011年底,我離開了這家公司,我想向上努力,我需要得到得到質的提高。這回找工作我不再面試程序員了,而是系統架構師。終于,我找到了一份系統架構師的工作。具體什么單位不能說,因為是涉密的,我們上班都不能上網,也不能使用U盤。我親自架構了整個系統,我在整個項目組中算年齡比較大的,有一個領導大家都叫他猴哥,可能跟我差不多,還有一個經驗豐富的程序員,不過他是c語言的。我們需要將飛機傳送到地面站的報文進行解析,這個是c語言來完成的,然后存放到數據庫中,由java程序進行處理。運用了google地圖+js制作了飛機航線系統,解決了晨昏線和飛機轉向算法,當然,這個算法是請教了專家,我就是通過程序實現他的算法。我負責技術選型,當時選擇的是ssm,ssm和ssh我糾結了好久,最終選擇了ssm。事實證明我的選在是正確的,現在的系統基本是ssm的摒棄了ssh,struts2這種多進程的mvc框架注定了它不適合處理大并發項目。后臺使用springscurity做的權限系統,我負責核心模塊和基礎工具類的開發,數據庫的設計,服務器運維優化。權限系統是每個項目的核心模塊,整個權限系統,單點登陸功能是我獨立開發的。當時由于還沒有出現dubbo,spring cloud這種分布服務是架構,所以采用的是Webservice作為解決方案,確實存在一定的性能瓶頸。xml傳輸還是有點慢。但是基本滿足了項目的整體需求,最后通過了專家組的驗收。這個項目做了五年。

現在來總結從事Java一到十年必須要了解的技術知識點,這對你的職業生涯會有很大的幫助

感謝大家能看完我這么長的分享,希望以下的學習路線能對你有幫助

關注我:私信回復“架構資料”獲取往期Java高級架構資料、源碼、筆記、視頻

Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發等架構技術

設計模式

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

并發編程

主要培養編程者深入了解最底層的運作原理,加強編程者邏輯思維,這樣才能寫出高效、安全、可靠的多線程并發程序。

開發工具工程化

通過一小段描述信息來管理項目的構建,報告和文檔的軟件項目管理工具。程序員的戰斗,往往不是一個人的戰斗,我們如何在一個平臺下高效的去重,進行代碼review,對功能進行調整,debug,做到在統一的規劃下步步為營,混亂的堆代碼的過程中找到自己的記錄。這一切都依賴于有效的工具。

性能調優

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

源碼分析

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

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

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

△spring源碼

△mybatis源碼

分布式架構

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

分布式架構(一)

分布式架構(二)

微服務

關于微服務架構的取舍

在合適的項目,合適的團隊,采用微服務架構收益會大于成本。

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

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

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

B2C項目實戰

要想立足于互聯網公司,且能在互聯網浪潮中不被淹沒,對于項目的開發實戰演練是不必可少的技能,也是對自身能力的一個衡量,有多少的量對等于獲得多少的回報??此坪唵蔚囊粋€項目需求圖譜,其中的底層原理,實現原理又能知道多少?你搭建一個完整的B2C項目平臺到底需要多少知識?這一切都是需要我們考量的。

關注薇信工宗號:程序員大牛,回復“Java”獲取往期Java高級架構資料、源碼、筆記、視頻

Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并發等架構技術

往期架構視頻截圖


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 2017年即將過去了,努力過一年中的幾天?問自己
    可以嗎閱讀 251評論 0 0
  • 去銀行辦業務。是一個朋友推薦的,那個姐姐很溫柔和藹的樣子,緩緩說話的腔調,給人一種歲月沉淀里羊脂玉的味道。 我只是...
    玲玲筱雪閱讀 311評論 0 1
  • 當今社會的飛速發展,在滿足人們需求的同時,又仿佛夾雜了一些充滿未知性的東西。 我曾經問過一個朋友,問她對現如今生活...
    打酒小妖閱讀 223評論 0 0
  • 1. main函數的概念 C語言中main函數稱之為主函數,一個C語言程序是從main函數開始執行。main函數定...
    編程半島閱讀 559評論 0 0
  • 2018.09.24 星期一 ...
    時光極色閱讀 104評論 0 2