1. 程式人生 > >從硬件到純軟件,回顧一個老工程師的經歷之路!

從硬件到純軟件,回顧一個老工程師的經歷之路!

嵌入式系統 單片機 java 硬件 軟件

前段時間,我寫了很多關於嵌入式學習的文章,通過不少學習者的反饋使我有成就感。分享的樂趣使我決定繼續寫下去。在接下來的時間,我計劃也開始寫關於Java的內容。希望對你或多或少提供方向,當然,老規矩,遇到問題或者想發展確沒方向的新手都可以私我。話不多說,給大家帶來一個軟件工程師的成長史:
其實我很早以前就想寫了,Java是我畢業後學的第一門語言,準確來說,如果單純為了做一個普通的開發人員的話,只要你熟練掌握MVC的分層,熟練掌握List和Map的用法,然後會寫寫SQL,基本上就沒有什麽大問題了。真不難,我一開始也和大多數剛剛接觸編程的人一樣,感覺Java學起來好難的。
技術分享圖片

的確,如果你要去深究,我的意思是,深究Java的運行機制,底層代碼等,那真的有一定難度。可是,如果你只是為了找一份養家糊口的工作,在一個小公司做做開發,真的不需要你有多麽精通。

原因很簡單,在這個時間就是金錢的時代,程序框架都是現成的,公司主要追求的還是項目的開發進度。尤其是中小型公司,根本不需要你對Java底層研究得有多深。你會照貓畫虎,快速地把功能開發出來,你就很OK。如果有個新需求,需要你去網上借鑒一些代碼,弄一些免費的組件,直接拷貝實現功能,那更加OK,升職加薪是肯定的了。
記得第一次寫一篇文章,居然收到了非常多評論,老實說這是我沒預料到的。我只是把我自己的經歷發出來,沒別的意思,當然,那篇文章的描述中,也的確有不妥的地方。
本篇文章,我會詳細地講述我如何從一個硬件工程師轉到Java Web軟件開發的,希望給需要的人做一個參考。或者,你就當故事看看也可以。
記憶猶新的一段話
我最早是希望從事本專業,搞單片機或者嵌入式開發的,現在依稀記得曾經面試我的一個老板對我說的話,大意如下:
“我真搞不懂你們這些剛畢業的學生,總是談一些理論。很簡單,我就問你,一個功能馬上就要用,你三天之內能不能給我開發出來?網上都有現成的東西,拿過來用不就行了。如果我接到一個單子,你說要花個半年時間研究一下,我的公司還能開下去麽,我不早就餓死啦。也許百度,華為那種大公司需要專門招幾個人來研發,可是我們不需要,我們只看效率和速度。我朋友一個什麽什麽公司前幾年也招了幾個大學生,結果兩年下來了,核心的代碼還不是自己寫,CAD還不是自己畫?讓他們搞也搞不出什麽東西。不是說他們水平不行,而是這東西需要很長時間的積累,不是說你一畢業就能直接達到多高的水平。”
雖然最後錄取了我,可是我自己也明白,學校裏學的那些CAD,單片機方面的知識已經跟不上公司的節奏。芯片我只知道STC-89C51,而且不是很熟悉,我連STM32都沒用過,而51單片機和這裏的工作沒有關系。我CAD繪圖也還停留在理論,實際操作起來估計就露餡了。
我深刻地明白,即使進入了這家公司,也不會有人教我如何去勝任這份工作,到時候我會變得很尷尬和被動。所以最後我沒有去。
不過他的一番話也提醒了我,必須要有一份拿的出手的技術。社會不比在學校,上課隨便聽聽,通過考試就行了,實在不行還有補考。在公司裏,不是這樣的。
正好趕上近幾年制造業不景氣,嵌入式方面的工作更加難找,我投了很多簡歷,除了一些小作坊,小公司,其他都是石沈大海,進入大公司的機會為0。
很多公司不是不缺人,而是缺少來了就能立馬上手的工程師,而不是說要招一些應屆畢業生,來了之後再手把手教他們。哈哈,沒那個時間。
理論真的不重要嗎
理論真的不重要嗎?
不,從某種程度上說,理論的確很重要。它會讓你對一項技術理解得更加深入。這一點我不否認,也不可能否認,因為它就是事實。
但,我不得不承認,如果我學歷不夠硬,真的沒法接到大公司的面試通知。
名牌大學的畢業生都一大把,研究生大軍也在盯著這些職位。哪裏輪得到我一個普通二本的畢業生?
也許,大公司會看重你理論知識是不是很紮實,所以在校招上,你會經歷一次他們給你安排的筆試。
上一篇文章中,有的評論提到,如果理論不紮實,你連筆試都過不了。的確如此,但是,這也要建立在你能夠接到大公司的筆試邀請的前提之下。
事實情況是,我們學校的校招,最多就是一些中型公司,都算不錯了。大公司是見不到的。還有一些老司機(你沒看錯,真的是老司機),還有倉庫管理員的職位。大公司的話,嗯,肯德基,大娘水餃算不算?
我的一次校招經歷
那次校招,我看到一個稍微好一點的公司,就拿著我的各種證書,什麽CET-6,高等數學競賽,英語競賽,數學建模啥的去應聘。我記得他看了一會,就把證書的復印件拋在一旁了。然後,他問我,Java會不會?會寫測試用例嗎?(當時我不懂,根本就不知道什麽意思,現在明白他招的是軟件測試。汗~)
我說,“我不會,但我可以學。”。
他繼續說,“哦,沒關系,我們這個職位對編程要求不高。對了,你有沒有參加過什麽項目。”
我說,“沒有,不過我對編程很感興趣,學過C,C++,還考過證。”
然後就沒有然後了,我也不記得後來對我說了什麽,反正有一句是:“你什麽都沒做過就來應聘啊?”
你什麽都沒做過就來應聘啊?這句話深深地打擊了我。
好吧,我的確沒做過,我只是在老師的要求下完成了課程。我說了實話。
這就是我還未畢業時候的一次面試經歷。

技術分享圖片
背水一戰,從偏硬件轉到純軟件
說來慚愧,在大四的時候,我還真做過一段時間的硬件工程師(純自黑)。那段時間,接觸了一點protel 99SE,沒事也會畫畫CAD。可是,我那點三腳貓功夫完全靠自己網上搜了點視頻學來了。一段時間下來,我連最基礎的事情都做不來,很多時候,我也不知道要學點什麽,該怎麽去學。
我找回模擬電子技術,數字電子技術的教材,重溫三極管,二極管,電力電子技術等等。可是,真的很無奈,我不清楚這些東西怎麽用到工作中。
那段時間真的是比較低迷的,做不了事情,也沒有人教,準確的說,他們也忙得一塌糊塗,我不好意思去請教。更何況,我都不知道要請教什麽。
兩個月後,我實在受不了這個尷尬的氣氛了,於是辭去了工作。
我總結了一下,我不認為自己的理論知識有多糟糕,只是沒有一個實戰平臺讓我來鍛煉。大公司,我連筆試的資格都沒有,小公司,就算面試吹**混進去了,也根本勝任不了。
這個時候,我才明白,嵌入式這種東西,我沒有個三五年,真的不太可能達到一個很高的水平。而且,它需要大量的實踐操作,而實踐操作需要硬件設備。像我這麽一個大學裏只會理論,連實驗室都沒怎麽去過,連在洞洞板上搭一個實驗電路都費勁的人,真的是不太適合。雖然當時非常想學習嵌入式,只是苦於沒有領路人。至今想起仍然後悔不已...
不知道怎麽下手,怎麽學習,沒有實踐的機會。這就是我那段時期的狀態。
我不知道正在看這篇文章的你,是否能夠理解我當時內心的無助?
可是日子還得過,辭去工作後,家裏人也為我著急。我認真思考今後的發展道路。
我發現,我其實對硬件不是很感興趣,卻對電腦感興趣。如果繼續發展硬件,我就必須要有足夠的實驗器材,加上各種單片機芯片,然後畫CAD,還要做出來。雖然用仿真軟件也可以,不過我對仿真軟件也不是很熟悉。
問題就在於,我大學裏面動手實踐的機會太少。
PLC方向?呵呵,我對PLC的實踐經驗還沒單片機多。
硬件工程師,電氣工程師,在當時的我看來,似乎通往了一條未知的道路,有著太多的不確定因素。
那麽,幹脆搞純軟件吧!
我頭腦中冒出來這樣一個想法,對啊,我說,我幹嘛非得從事本專業?
如果我搞純軟件的話,我只要一臺電腦就行了,也不用去關心什麽芯片的型號,也不需要畫什麽CAD,而且我也不需要去焊東西了。
是啊,只要一臺電腦就可以了,我在自己家也能學!不需要管其他硬件設備了!
我越想越興奮,就這樣踏出了第一步,直到今天我在寫這篇文章的時候,我都慶幸自己當初的決定。
不論怎麽樣,成為一個軟件工程師,雖然累了點,不過很充實,也很快樂。而且,工作環境好。我記得當初做硬件的時候,每天都在跟焊錫絲打交道(因為做不了設計的工作,我主要的任務就是焊電路板,換換元器件啥的。一不小心電容炸了,打在身上還是很疼的。一不小心被電烙鐵燙到,立馬一個包。)
總之,這就是我學習軟件開發的原因和經過。
總結
故事講完了,說起來生活還真是變化莫測,有的時候,一個小小的決定就會極大地改變今後的人生軌跡。
硬件也好,軟件也罷,都是自己的選擇,任何一門技術,當你真的熱愛它,就一定能走得很遠。
我後來捫心自問,自己的興趣真的不在硬件上面,所以做軟件開發是我的最終選擇。如果你對硬件,嵌入式方面感興趣,那也是很好的。
我大學一個同學,就走了嵌入式的方向,當然,也是在一家中小型公司,大公司也是連筆試的機會都沒有。
他大學裏面基本上選修課必逃,必修課選逃,還未畢業就拿了高薪。
我和他算是兩個極端,我一天到晚弄理論,各種考證,競賽,結果連大公司的筆試機會都拿不到。他一天到晚搞實踐,不管怎樣,找到了比較滿意的工作。
曾經有人問我做什麽工作的,我說軟件開發。對方一聽就覺得好像挺那個啥的,然後各種抱怨自己的工作怎麽怎麽不好。然而他不知道的是,我背後付出的汗水有多少。
每個軟件開發人員都知道,雖然在一般人眼裏看起來,IT這個行業多麽多麽好,可是,我們在背後其實都付出了很多。當別人晚上去看電影了,我們在加班。當別人周末出去旅遊了,我們還在電腦前敲代碼學習最新的技術,等等。各種滋味,其實也就我們內心知道了吧。社會如此,我們當漸行漸遠!還是老規矩,如果你是想學習確沒有方向,或者剛剛踏入it行業的菜鳥這邊都可以私我。樓主這些年也存了不少幹貨,送給有緣人,相信一定可以幫助你更上一層樓!

從硬件到純軟件,回顧一個老工程師的經歷之路!