今天又是周末,天氣晴朗,挺風和日麗的,剛睡醒起來,也不知道干嘛,決定寫一寫這幾年的單片機工作生涯,跟各位分享。
上大學期間,由于是在內地,所以信息比較閉塞,對于一些科技性的東西,也僅僅只是停留在書本上,包括現在看來很簡單的單片機技術。我記得是上大三的時候,第一次接觸單片機教材,那時候只知道跟著老師在課堂上看著那一頁頁的課本,聽老師認真的念著教材里面關于單片機內部構造,關于匯編語言,然后下課了,課堂作業就是類似與如何寫一段程序,把A地址的數據拷貝到B地址去。學校也沒有關于單片機的實驗室,自己也從來沒有見過單片機長得什么樣,更談不上開發板之類的東西了,但在這個過程中,我發現我莫名其妙的愛上了單片機,喜歡動寫程序(盡管只是紙上談兵),每寫完一段程序(那時只會匯編),就幻想著這段程序能實現很奇妙的功能,并且每次考試我的單片機都是很高分,就更加喜愛它了......時間就這樣流逝,我就在這樣的意淫中體驗單片機的快樂。
轉眼到了畢業,跟大部分人一樣,對于找工作我也很迷茫,但是內心的聲音告訴我,我要搞單片機程序,我要體驗那一行行代碼給我帶來的樂趣。所以我就朝著方面去找,看到這里,你大概覺得我肯定找不到工作,因為我從來就沒有動手做過實際東西,但是奇怪的是我找工作很順利,因為我在第一關筆試成績好。
就這樣靠紙上談兵,我進了一家企業做單片機,開始了第一份工作,剛進公司的一個禮拜,沒人理我,經理只是給我安排了一個座位,然后把公司的產品原理圖給我看,我的個天啦,原理圖打印出來那么大,我也沒看出什么,反正也沒人理我(后來,我發現我錯了,離職時經理告訴我那是在考驗我,希望我能對原理圖提出改進意見),就這樣“平安無事”的渡過了一個星期,第二個星期,經理說要我開發一個小產品,我記得是利用單片機產生不同頻率,不同占空比的方波,用按鍵來控制,同時在1602上將頻率顯示出來。接到這個項目后,我也比較緊張,因為畢竟是第一次真正做東西,但我心里還是有點底,知道該怎么做。就這樣我先畫了原理圖(protel99),然后邊看書邊畫PCB(人生第一次使用軟件畫PCB,也是最后一次),給經理看,經理說,不需要PCB,你就用萬能板就行了。郁悶,兩天工作白費了。
好吧,就開始在公司研發部那些廢料堆里尋找萬能板,尋找廢棄的電阻啊,電容啊,然后動手焊接,小心翼翼的按照自己畫的原理圖終于焊接完了。然后程序也不是很會寫,但憑記憶我知道單片機教材里面定時器那一章有關于這部分的例程,趕緊在晚上讀教材,花了兩個小時,搞明白了自己項目的程序該怎么寫。 很興奮啊,第二天把程序往單片機里面一燒,怎么也運行不起來,自己堅持電路板有沒有虛焊,仔細查看程序,都找不出毛病,就問了經理,經理大概看了我的原理圖,說你在電源那里加個濾波電容,我照做,還是沒效果。不得已請教了其他同事,那家伙一看說你沒有復位電路,天啦崩潰,復位電路一加,果然跑起來了,然后就是調試1602,前后花了十來天,終于是做出了效果。 結果大家可想而知,經理不滿意,說太慢了。(后來,我才知道,我在做項目期間原來是有耳目監視的,我所問的問題,我的做事風格都被人監視,然后上報給經理)。就這樣,半年后,我走了,公司也沒留。
失意的離開了第一家公司,我又順利的進入了第二家公司做單片機,那家公司很小,剛成立,還比較看重我,我一上來就做了一個項目,開發上位機軟件(VB語言)與下位機單片機通訊,比較成功,但我覺得這里不是我喜歡的地方,因為我想向高手學習,而這里又沒人,所以 半年后,我又離開了第二家公司。
很順利的,我又通過筆試進入了現在這家公司,跟第一家公司一樣,進來經理給我公司產品的程序給我看,任何交代都沒有(做可視對講的),程序總共有數千行。吸取了第一家公司的經驗,我大概理解程序后,就花了兩天時間,整理出了這個程序的流程圖,足足整理了6頁A4紙,交給經理后,他很滿意。事后,他將這件事上報給了我們研發總監,并且有一次下班后,總監跑到我的座位上,說“聽說你很聰明,很能干啊,不錯”,這句話給了我鼓勵,我從此干勁十足,并且從那以后,我一躍成為了研發總監的紅人,每次研發中心討論新產品時,都有我的參與。但是,當時我的興趣還是在寫代碼上,陸陸續續的為公司設計產品程序,接觸了很多單片機程序,也正是在這里,我真正的學到了單片機知識,紅外,485,AD等等。 那時候我沉溺于單片機程序,仔細分析每一個功能模塊的代碼,一句一句的理解,但這也正是我的缺陷,使我沒有從程序中拔出來向前看,就辜負了總監對我的期望(他期望我能帶領團隊研發產品),一次總監跟我的談話中,說了句話點醒了我“你是想做程序員,還是想做工程師?”,回去后,我仔細分析了這句話,再結合這幾年的工作感悟,跟各位單片機初學者或剛入行者分享我對這句話的感悟:
1、在學校的時候,最好把基礎知識打扎實,因為學校是個比較純凈的環境,你可以專心學習,可以一句一句代碼的研究,去細細品味,并且你品位的越細,也許越能獲得老師或同學的好感。
2、上班以后,環境就不一樣了,在企業,經濟效益是排在第一位的,老板不管你用什么辦法,只要能設計出符合要求的產品就行了,這個時候,如果還按照學校的思維,估計效率就很低了。
3、關于是做程序員還是工程師,我想大家都說想做工程師,那么工程師和程序員的最大不同就是工程師一定要在產品框架上做文章,比如同樣是一個ADC模塊,程序員關心的就是這個模塊的實現方法,而工程師關心的就是這個模塊的接口,并且怎樣將這個模塊嵌入到整個系統中。
4、做技術的人一定要有系統思維和領導能力,這樣才能有好的發展。會溝通很重要,當你在工作中碰到難題了,如果這時候還想學習那樣自己埋頭鉆研是很愚蠢的,應該與同事或外界溝通,尋求資源來幫助你。
現在我還在這家公司,目前正在帶領團隊在研發嵌入式產品,基于android平臺,也已經出了成果,并得到了領導的認可。
|