畢業了就失業,靠自學吃上編程這碗飯
今天給大家說說小崔的事兒,說說小崔做軟件開發這一行的事兒。
小崔現在的本職工作是在軟件公司做管理,核心開發語言是Java。
2000年入行,先用ASP語言開發網站、Delphi開發PC軟件、后用C#做Web開發,07年開始接觸Java,到現在10年了。今天把這些舊事翻出來,其實也沒有什么經驗可言,只是由來已久的想把這些經歷記下來,卻一直沒有認真整理,今天算是一個靈光一現,既然動筆了,便寫成了一篇文章。
車床
大學期間,我的專業是機械,畫過圖紙、打過鐵、鑄造過模型飛機、造過小榔頭。就是沒有正經八百的學過編程,我這人其實很喜歡研究一些神奇的知識,對于死板的東西就沒有什么興趣。因此我對機械這些東西完全沒有興趣,卻一門心思喜歡軟件開發。
大學期間就總泡在圖書館看計算機方面的書,那時候身邊沒有做軟件開發的朋友,老師們都是專業做機械的,對計算機編程也是不懂的。因此學習起來是完全沒有頭緒,根本不知道應該如何入門,每次去圖書館都是隨便找一本書就看,看了半天也不知道到底說了點兒什么,也不知道那里面的知識怎么用于實踐。
其實現在想想,我們大學圖書館的藏書量還是很大的,書的質量也是非常高的,但作為一個IT菜鳥,沒有一點兒的基礎,這么看書完全摸不到門徑的。可以想象這樣的學習效率也是非常的低的,基本就是保持了讀書的興趣,但對知識的攝入其實是少的可憐。
在這個過程中,靠著小車不倒只管推的精神,我軟件硬件的書都看了些。讓我最感興趣的還是編程語言類的圖書,當時自己還是挺明確自己以后想做軟件開發的。但是具體用何種語言就不知道了,也不知道外面公司都用什么開發語言。當時已經知道的語言有Basic、C/C++、Dephi,還有Java,由于Basic是最簡單的,其實那會兒自己練習的時候更多的是學習Basic。當時記得自己寫過簡單的計算器,還練習做過簡單的畫布類的程序。
語言無所謂
現在想想,學習這種事兒都是在猶豫中讓時間錯過了,當時每本書拿到手里都只看前兩章,后面就難了,或者需要上機練習了,就懶得繼續學習。給自己的借口是到底哪種語言好呢?當時看不起Basic語言,覺得這個太low了。就總想學C,但C又太難了,根本學不進去。其實真正培養自己編程的感覺語言,還就是Basic那幾個特別簡單的小練習,讓自己知道了邏輯數學的核心就是判斷,編程只有順序、分叉和循環三種流程。
所以,如果有新人看到這篇文的話,奉勸一句,別猶豫應該學習哪個語言,無論是入門還是精通,語言都無所謂,所謂觸類旁通,學會一種再學別的是很容易的。
入行
大學畢業后,我沒有做機械這行,直接去找的軟件開發的工作。
但是這時候才發現,自己真是對軟件開發一竅不通,面試都通過不了。
這時候才痛下決心得認真學門語言了。這時候也不挑了,就找簡單容易上手的語言。
當時選的是Delphi,覺得這個語法簡單,Delphi的IDE也好用,做windows應用開發很方便。
這時候還學習了SQL語言,其實自己根本不知道主動學習數據庫,在面試的時候被問到會SQL嗎?答曰不會。被拒。然后才開始學習SQL的。
當時學習條件很艱苦,我舍不得買書,就每天騎自行車跑圖書大廈,白看書,一看就是一天,中午樓下買個燒餅吃。晚上回家后在電腦上試驗,寫點兒小練習。做練習也很困難,2000年初的網絡環境很差,撥號上網,網速也就是3K/秒,相當于2G時代的手機上網速度,并且網上資源很少。
就這么學了1個多月吧,面試到一家公司,是本地一家電腦城的網站部,做網站。
總結這段時間自學,基本來說大學時期看了好多的書還是有用的,對計算機編程多少有點兒感覺,所以一個月的自學就入門了。
只是入門后也很尷尬,學的是Delphi,盡管靠這個找到了工作,但工作了十幾年了,幾乎沒怎么用Delphi寫過軟件。
ASP做網站
在***家公司做網站,發現與自己想想的差別很大,以為有個網站部,10來個開發人員,咱可以跟前輩們學習學習。
實際這家公司網站部就空有其名,以前的技術人員辭職走了,我去了就是唯一的程序員。
然后一看人家的網站,發現是我從來沒見過的語言-- ASP。這是微軟早期為了簡單的小網站開發的一種Basic語法的腳本語言,可以非常快速的建站。可以理解為PHP的簡化版,也不準確,應該是PHP的超級簡化版,簡化到最簡單。
這真是一個非常簡陋的網站,用一種非常簡陋的語言。我當時卻不懂,因為從來學軟件開發都是打算做windows應用程序,這是***次接觸web應用程序。
之前我僅僅接觸過web相關的HTML,那時候看了一本介紹HTML的書,也就讀了1個小時,感覺這種標簽式的語言很簡單。
這時候算是從頭學習ASP,當時感覺壓力山大啊。
當時辦公室有一本介紹ASP的書,我就看那邊書,然后讀網站的源代碼。硬著頭皮搞了3天左右,居然感覺通透了,可以修改網站的bug了,網站有新功能要增加,我也可以自己開發了。
就這樣,開始了我ASP開發的兩年生涯。
憑借ASP開發的技能,兩年內又換了兩家公司,做了好幾個網站。
在第三家公司的時候,對于編程語言已經很嫻熟了,盡管還是主要用ASP,但偶爾也用Delphi和Asp.net做開發。那個時候,開始接觸.net開發框架了。
.NET階段
第三年,我跳到了所在城市***的科技公司,這家公司是移動公司的全資子公司。
說真的,現在看看這家公司真是臥虎藏龍,我能進去純粹憑著我這人嘴皮子還算不錯,面試做的還不錯。
當時在這家公司我還是負責做網站,不過那個網站的體量就不同了,是全省范圍使用的營業廳網站。而開發語言也采用C#了,那是微軟的.NET開發框架里的一種開發語言。
現在想想,我也不知道怎么就學會這門語言了,在我的印象中,我后來再學各種語言似乎都挺簡單的,公司需要或者個人興趣要用到新的語言,拿過來手冊看看,然后把開發工具裝好寫幾個練習,這門語言就入門了。基本也就兩三天的功夫。
其實真不用覺得快,我后來跟同行們聊天,基本對于新語言的理解都是這樣,學習一門語言很容易。
這個階段我成長比較快,負責過省里的項目、參與過集團的的項目,跟IBM、惠普,還有國內的各大廠家都有過合作,逐漸開始負責項目,擔任項目經理了。
Java生涯
07年的時候,公司要求技術轉型,全體員工一條線,全部改用JAVA。當時正好有一個新項目要開始,與IBM合作開發,IBM的牛人幫我們搭建了Struts+Spring+Hibernate的框架。大家學了1星期,就開始了JAVA開發之路了。
當時都是使用Struts2+Spring3+Hibernate3這樣的架構。用了1年后,逐漸發現Struts這個架構實在有問題,性能、安全性都不好,開發還不友好。
當時不太懂得軟件行的思想 -- 不重復造輪子,結果自己摸索著基于Servlet做了一個封裝,自己寫了一個簡單的MVC框架。現在想想有點兒無知者無畏,不過也確實把Java的東西摸熟悉了。
后來發現SpringMVC框架是如此優秀,再看自己寫的框架,太Low了,就改行用SpringMVC+Spring+HIbernate。
后來帶項目的時候,發現手下的新人用Hibernate的時候,經常會寫出性能很低下的代碼,感覺這是Hibernate天生決定的,適合有經驗的人使用,新人使用開發效率是高了,但執行效率太低了。
因此開發框架又改為SpringMVC+Spring+MyBatis,最早用的時候還是iBatis,后來才是MyBatis。
現在看看,Hibernate的那些問題完全可以通過加緩存來解決的。
***推薦的架構
這兩年,在Java的開發框架上,采用的SpringBoot提供底層微服務,向上暴露出RestFul接口。表現層采用Nodejs。結構巨優雅。
結束語
今年41歲了,在30歲的時候就經常聽到有人說快干不動了,以后不寫程序了,要做管理、要做市場。
我覺得也沒錯,現在主要是做管理,市場方面也離不開我,不過編程這么好玩兒的事兒,為什么要丟棄呢?這是我這樣一個老程序員的最喜歡的游戲,愛好是一輩子的事兒,怎能放棄。
寫下來,也不是說介紹經驗,我始終覺得自己不是個成功人士,但是在技術方面還是挺自豪的。只是希望有興趣做軟件這行的新人,看了我的經歷,得到一些鼓勵,只要堅持就一定能學好軟件開發的,入了門其實這行很簡單。