一些絮叨html
有幸能有華科機械的碩士同行過來諮詢IT行業相關狀況,這裏大體總結一下我的經驗。python
本人目前在阿里巴巴淘寶事業部從過後臺開發,本科爲機械設計製造及其自動化專業,碩士課題爲機械結構及力學強度分析相關,使用的工具基本包括UG(作過汽車建模的應該都知道)、MATLAB、ANSYS跟LS-DYNA,碩士畢業後在生產燃氣輪機的某公司呆過一段時間,從事轉子透平的結構設計跟綜合受力分析。接觸職場後有感於生活壓力巨大,下決心進入IT行業,中間展轉換過其餘公司,目前也算圓了校招的遺憾,順利入職BAT。linux
轉自網上的一張調侃圖git
工科專業基礎程序員
本科時工科基礎課程像高等數學、機率論、電工學、數電模電跟計算機專業所學同樣,專業課程像製造工藝學、材料力學、工程材料、理論力學、機械原理與機械設計,其實難度並不比編譯原理小,並且一樣能培養人解決問題科學的思惟方式。說這麼多,就是想總結一句話,工科行業的學生轉行寫代碼是有技術基礎的。面試
車間工做環境算法
第一份工做作的ANSYS疲勞壽命分析shell
前奏數據庫
校招投過一汽大衆跟上汽大衆,由於一些緣由都沒過,後面也拿到了廣汽跟中電29所的offer,給的待遇還行,可是對比我當時去的公司,雖然待遇好點可是廣州生活成本過高,糾結了一番仍是拒了。剛入職時,由於碩士項目使用過MATLAB作一些數據處理,分了個寫上位機採集振動傳感器的活,使用LabVIEW軟件的DAQ模塊完成。以後陸陸續續跟了幾個項目有點積累,加上大一學過C語言課程(譚浩強的教材),所以準備學學基礎算法知識爲後面晉升工程師作鋪墊。學習數據結構與算法我使用的是清華大學出版社出版的《數據結構與算法》,主要是由於這本書例題是用C語言編寫,符合閱讀習慣。如今回過頭來看,說不上多好,可是足夠讓你掌握基礎知識,基本能玩轉Visual Studio。這裏給你們一個官網連接,對於沒任何編程基礎的,強烈推薦把這本書上主要的例題本身看一遍作一遍一共兩遍:編程
http://www.tup.tsinghua.edu.cn/booksCenter/book_06158001.html
入門
後面去了一家制做家用傳感的公司,有了以前的編程基礎,參與了一個煙感設備使用電信雲上雲項目,須要端側基於stm32f109作低功耗業務系統。因爲以前沒有相關積累,在網上搜了正點原子跟野火的不少資料,本身買了幾塊開發板(由於不會移植)跑起來了。項目使用的是freertos,網上資料也比較多,當時還買了本北航出版的《嵌入式實時操做系統μCOS-II原理及應用》跟《嵌入式操做系統內核調度》,對嵌入式操做系統有了初步的瞭解。北航的《嵌入式操做系統內核調度》這本書強烈推薦,裏面用C語言本身一步一步實現了Wanlix嵌入式系統,有點相似於linux0.11初級版的樣子,對終端處理、任務調度、隊列、互斥鎖、文件系統都從零實現,對沒有Linux基礎的小白很友好。看完這本書,本身動手實現一遍,對系統的多任務處理有個全局觀的瞭解,再入門去看Linux相關知識就極容易遷移理解了。
剛接觸Linux編程的時候,對於Linux系統幾乎一無所知,幸虧當時公司已經有了Ubuntu系統電腦。這裏極力推薦《Linux私房菜基礎學習篇》,先把Linux下常見的命令像ls、grep、mkdir等等使用熟練,遇到小問題多問老員工,使用兩個月後嘗試本身弄臺機子安裝一個windows+Linux雙系統,能跑起來講明Linux環境編程基本入門了。
固然期間還自學了《深刻理解計算機系統》《UNIX環境高級編程》跟《UNIX網絡編程卷I》這三本書,後面兩本書第一次看沒怎麼理解,後面去了一家電錶芯片公司從事嵌入式os研發時結合項目仔仔細細研讀了一遍,確實是兩本經典。怎麼說呢,常讀常新。
公司傳感器聯網使用的是uip協議,內部聯動採用的是私有協議封裝的協議頭跟數據,這一塊沒有很經典的書籍,基本上是在CSDN博客網站上搜索排名較高的帖子學習TCP/IP協議棧跟閱讀uip源碼。這裏推薦老衲五木的帖子《LwIP協議棧源碼詳解——TCP/IP協議的實現》,這本帖子從網卡收包一直到socket編程都講的很透徹,看完以後再學習《TCP/IP詳解》有很大的幫助,對於後面從事底層網絡優化工做是最好的協議棧入門。在這家公司作的項目雖然不大,可是提升了本身的編程基礎,同時對端雲鏈接項目開展跟業務落地有了本身的想法和理解。項目後期買了本《ARM Cortex-M3與Cortex-M4權威指南》,看完後對stm32系列的芯片移植及調試定位有了系統性的瞭解,從事物聯網行業絕對有很大提高。
由於程序運行在單板上,而程序編譯是在Linux系統完成,這裏就涉及到一個交叉編譯的問題。編譯問題坑至關多,這一塊光看書沒用,必定要本身敲代碼本身搭建整個工程多跑幾遍踩了幾個坑才能對程序的指令及數據流有個大概的瞭解。大部分資料都是參考csdn跟Linux社區的高分貼,這裏推薦《程序員的自我修養---連接、裝載與庫》,能夠系統性的瞭解。再說一次,弄懂編譯連接是機械出身的學生入門IT行業的必經之路,這一塊弄通以後,後面瞭解各類芯片的什麼動態加載、內存加速機制等等基本很通暢。學不會怎麼辦?這裏講講個人一個小經驗。。ARM中國在深圳南山,算是車水馬龍的高檔地區,基本週末有空無意學習我都會去龍華民治的農民房走一遍,告誡本身不拼搏一把之後就是這種生活。。效果很好,動力十足,不光是興趣推進,都是生活所迫啊。
後面的項目開始接觸python,當時沒買書,直接在菜鳥編程上學習了一個晚上,寫寫基本的自動化腳本基本沒問題。固然要想專門從事python工做的話,仍是須要買幾本相關的書。
https://www.runoob.com/python/python-tutorial.html
固然項目開發迭代使用到了svn跟git,還有makefile的編寫,這裏推薦《git權威指南》跟《跟我一塊兒寫makefile》這本pdf,網上下載很方便,須要的後續我把百度雲連接放上。而後使用shell腳本是必備技能,這裏一樣推薦菜鳥教程網站入門,後面使用到了高級技巧,就上csdn搜索高分貼吧。
https://www.runoob.com/linux/linux-shell.html
這兩個項目對我提高基礎做用至關大,對項目架構分工有了宏觀概念,有了模塊化編程的思想,對代碼質量管控流程也比較熟悉。固然回過頭來看若是讀研選的是電氣工程,研究生階段基本本身一我的就能夠玩轉一個物聯網項目,說不定校招就能直接進BAT了。。。
數據庫這塊,花個週末把MySQL的增改刪查基本的操做熟悉,後面項目上再補基本沒問題。
坐在門檻上
來了淘寶以後發現光寫寫後臺程序還不夠,還須要跟APP聯調,所以下了個Android Studio開始調試淘寶的各類bundle。是的,對於社招的員工,公司根本沒耐心沒時間讓你慢慢學習,直接開搞。這裏推薦《第一行代碼 Android》,固然這一塊我也剛入門正坐在門檻上,就很少分享,正在跟隨Java大神學習。
爲了防止35歲升不了p8被開除,如今基本天天下班都要寫寫項目所用到的技術基礎以及之前自學的東西防止遺忘,可是很久沒寫過文檔,不成章法,後續改進。後面會把重點放在後臺開發、無線開發、動態加載加速、cmake及編譯連接、ADB自動化調試等等有價值的經驗寫寫記錄。
推薦的書籍彙總
《數據結構與算法》清華大學出版社,有好幾版,隨便挑一本都行
《啊哈!算法》最基礎的算法入門
《算法圖解》
《嵌入式實時操做系統μCOS-II原理及應用》
《嵌入式操做系統內核調度》初步概念理解操做系統模型
《深刻理解計算機系統》
《編程之美—微軟技術面試心得》
《劍指offer》
《C Primer Plus》
《操做系統導論》
《Linux私房菜基礎學習篇》
深造書籍
《程序員的自我修養---連接、裝載與庫》
《UNIX環境高級編程》
《UNIX網絡編程卷I》
《TCP/IP詳解卷1》
《C++ Primer Plus》
《第一行代碼 Android》Java入門
最後放一張公司民間協會,藉以共勉。
本文分享自微信公衆號 - 機械猿(on_ourway)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。