淺談嵌入式與互聯網(詳細)

綱要

一、什麼叫嵌入式,以及與人工智能的關係?

二、嵌入式崗位

三、淺談嵌入式開發優缺點

四、與互聯網(CS相關的,如平臺服務器,前端/APP/軟件)對比

五、能力要求和薪資(參考知乎)

以下均採集於網上資料和個人總結

一、什麼叫嵌入式,以及與人工智能的關係?

嵌入式原本是嵌入式系統,但是由於現在電子設備衆多,導致嵌入式涵蓋太廣,很多初學者打着嵌入式的牌子,其實只是玩玩最基礎的單片機,連操作系統也不上。這和其他細分的領域做對比是沒有意義的。

嵌入式原則上是ARM+Linux,在其上進行開發,需要的知識涉及C語言,操作系統等綜合性知識,比如Java,c++,python都是需要的(GUI部分,這其實就是Java安卓的前身)。ps:現在很多做嵌入式的轉安卓驅動(安卓是Linux發展而來,具有共性,並且安卓系統的應用越來越廣泛,手機、平板、學習機、門禁機等等),嵌入式還需要了解硬件,一般從事Java開發(APP\網頁)懂這個的很少,畢竟Java本身爲了適合跨平臺使用跑在虛擬機上(虛擬手機等硬件平臺),很少會接觸硬件,對底層已經不是很關注了。

人工智能其實也是個大概念,甚至可以說包含了嵌入式。最終實現的平臺也是硬件平臺支持。
目前的具體應用:機器視覺,指紋識別,人臉識別,視網膜識別,虹膜識別,掌紋識別,專家系統,自動規劃,智能搜索,定理證明,博弈,自動程序設計,智能控制,機器人學,語言和圖像理解,遺傳編程等

其中近年來很火的萬物互聯-物聯網,可以說是以嵌入式爲基礎,人工智能爲發展的結合體;

嵌入式這個概念非常的廣,幾乎可以包括各行各業,從工作類型最常見的是分爲嵌入式硬件工程師和嵌入式軟件工程師。

二、嵌入式崗位分析

1、軟硬件分類
  a、嵌入式硬件工程師
  嵌入式硬件工程師與我們平常所說的硬件工程師不同。嵌入式硬件工程不但要求具備硬件工程師的基本技能,還必須完成部分軟件工程師的工作,例如: 底層驅動的開發嵌入式操作系統的裁剪,移植; GUI、文件系統等軟件的移植; 基於嵌入式操作系統的底層驅動程序的設計等。

  b、嵌入式軟件工程師
  嵌入式軟件工程師與我們平常說的軟件工程師不同。我們平常說的軟件工程師大部分指的是windows 和Linux操作系統下應用軟件的開發人員,硬件平臺是基於PC 機的。而嵌入式軟件工程師則是指在wince.linux 等嵌入式操作系統下進行用戶應用軟件開發的人員,硬件平臺則是基於嵌入式產品的(例如: 手機、PDA 等)。軟件開發工具也有所區別,嵌入式軟件開發一般使用的是嵌入式系統專用的開發工具,例如wince 下的evc,和linux 下的qt 等。

  c、軟、硬件工程師工作性質的區別
  嵌入式硬件工程師的工作是爲軟件工程師搭建好硬件平臺和必要的開發環境。 嵌入式軟件工程師則是根據用戶的需要完善產品的軟件功能。硬件工程師就像是設計師和建築師,負責整個建築的設計和建設。軟件工程師則是負責房間的裝修,錦上添花。

  總的來說, 硬件工程師的工作性質尤爲重要,因爲硬件工程師在設計產品 時不但要完成產品的基本功能,還必須考慮多方面因素: 功耗、干擾、後期維修、生產安裝等。一旦某一個因素考慮不周全,會造成整個產品的設計失敗。
  除此之外,產品在設計中可以沒有軟件工程師,絕不能沒有硬件工程師。 因爲在某些對實時性要求嚴格的嵌入式產品(例如: 工業產品)或者某些低性能的嵌入式產品(例如:CPU使用單片機的產品) 中,往往是不能夠使用操作系統的。 這時,整個產品的設計工作則全部由硬件工程師來完成了。

2、軟硬件工程師簡單對比
a、嵌入式軟、硬件工程帥的就業形式
  軟件工程師的工作性質使得軟件工程師的起點較低,所以目前國內的軟件工程師居多。並且目前國內的嵌入式培訓都是以軟件培訓爲主。所以從長遠看,硬件工程師的就業壓力要小。但是另一方面,企業中硬件開發人員需求量要比軟件開發人員的需求量小。因爲一旦產品定型,後期的產品升級都是由軟件來完成的,硬件的更新和變動很少。

b、嵌入式軟、硬件工程師的工資待遇比較
  工資待遇的高低由企業所處的地域、行業、企業的性質和人員的工作崗位而定。由於每個企業的情況不同,所以工資待遇的差異很大。
  對於以硬件產品爲主的企業來說,硬件開發的成本高,產品的成本也高。因爲後期的加工生產,維修等等都需要很大的費用。所以企業的利潤較低。不過由於硬件工程師掌握着企業的命脈,所以企業會提高硬件設計人員待遇。
對於以軟件產品爲主的企業來說,開發的成本較低,一旦開發完成,後期的產品基本無成本。所以軟件行業的利潤較大。但是,由於軟件工程師人員多,所以待遇也有所下降。

3、嵌入式的硬件工程師和軟件工程師哪個更有前途
(1)、先從企業的角度來講講。我個人認爲造成這個差異的原因,第一個是基本上所有的公司,從初創公司到全球百強,都有對軟件工程師的需求。現在哪個公司不需要幾個碼農來開發app,或者做個web。但是做硬件這種工作並不是所有公司會去做的。

(2)、第二點要歸功於現在的創業潮。不管在美國在中國互聯網創業都是趨勢,但是可以說絕大部分的初創互聯網公司做的都是軟件方向。有個點子,有點技術,找幾個合夥人抱着電腦就能開幹了。但是初創公司要專注做硬件開發就比較難了,因爲成立設計硬件公司的門檻和起步開銷比較大。所以這也導致大部分初創公司以互聯網爲主,能做的了硬件設計的公司基本上都是處於壟斷地位的大企業。

(3)、第三個很重要的原因就是硬件設計。在現在來看已經是相對成熟的技術,大部分硬件的東西已經步入夕陽產業的範疇,因爲很多東西已經成了規範,也因爲很多東西被自動化所取代。前一陣子全球大牌的硬件公司才裁了不少人,Intel更是裁掉了接近20%的硬件工程師。但是互聯網熱從90年代開始到現在熱頭還沒過,而且未來諸多產業如人工智能、機器學習、圖像識別、大數據都纔剛起步,所以還有一定的上升空間。
  
(4)、再從個人的角度來講。想成爲一名軟件工程師找到工作的門檻遠比成爲一名合格的硬件工程師低很多。要想以軟件工程師的身份混到個飯碗,學兩門語言學好,常用的數據結構,刷點題就基本上能找到薪水小几千的崗位,像學朱有鵬老師課程的學生學得好都是上萬的。

(5)、但是要想成爲一名合格的硬件工程師,不是科班出身的不好好學幾門模電數電信號邏輯設計的課,沒有在學校實驗室裏自己焊點電路做實踐,連簡歷都發不出去。而且現在要想學個什麼語言框架,網上搜一搜“”xxx語言入門教程“”就有非常豐富的資源,但是要是在網上搜“如何學好超大規模集成電路設計”,要想找到可以受用的資源幾乎是不可能的。而且就我所參加的招聘會來說,如果有招硬件工程師基本都要求有研究生的學位,但是對軟件工程師的要求基本上就是熟悉算法數據結構,會web編程有相關經歷就夠了。

(6)、軟件工程師很多時候吃的是體力,硬件工程師大部分時候是吃經驗,所以硬件工程師一般得有一定的經歷積澱才能脫穎而出。尤其像模電這種上手程度很高的方向,沒個十年八年的相關經驗根本不算學成出師。所以說本身對從業者的資質要求更高,也是硬件工程師不好找工作的原因之一。

  總體來說嵌入式軟件更有前途,涉及到算法更是其中的重中之重,建議可以學習數學基礎,從事算法類(一般爲圖像/視頻算法),相對硬件工程師,需求最大的肯定是高級的軟件工程師,硬件平臺一般都是通用的,很難突破新技術,上層軟件具有更好的可塑造性,我堅信嵌入式是一個非常朝陽的行業,未來的前景非常好。

三、淺談嵌入式開發優缺點:

從事嵌入式軟件開發的好處是:
  a、目前國內外這方面的人都很稀缺。這一領域入門門檻較高,所以非專業IT人員很難切入這一領域;另一方面,是因爲這一領域較新,目前發展太快,大多數人無條件接觸,難度高才會產生價值。
  b、與企業計算等應用軟件不同,嵌入式領域人才的工作強度通常低一些(但收入不低)。
  c、哪天若想創業,搞自已的產品,嵌入式不像應用軟件那樣容易被盜版。硬件設計一般都是請其它公司給訂做(這叫“貼牌”:OEM),都是通用的硬件,我們只管設計軟件就變成自己的產品了。

從事嵌入式軟件開發的缺點是:
  a、入門起點較高,所用到的技術往往都有一定難度,若軟硬件基礎不好,特別是操作系統級軟件功底不深,則可能不適於此行。
  b、這方面的企業數量要遠少於企業計算類企業。
  c、有少數公司經常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並無此要求,只要有經驗即可。
  d、平臺依託強,換平臺比較辛苦。

四、與互聯網(CS相關的,如平臺服務器,前端/APP/軟件)對比:

a、嵌入式開發學習的技能需要很多,沒有兩三年,是摸不透的,前期性價比以及發展自然比不上純互聯網,以至於網絡上各種勸退;
b、至於薪資方面,如果是51、stm32、avr單片機等中層技術,會有天花板;如果是高層的Linux驅動、ARM處理器再到現在大熱的邊緣硬件加速器等技術;如果在大廠起薪大多不會比互聯網的低;
c、嵌入式公司會少些,頂端的有華爲、中興、大疆、深信服、海康威視,以及現在新興AI獨角獸:地平線機器人、圖森未來、商湯科技、雲從科技等;而互聯網公司自然是扎堆;
d、嵌入式編程語言比較狹窄,一般都是彙編、C/C++;比不上互聯網的各種豐富,其次嵌入式開發中,編程量會少很多,很多時間都在找系統bug,調試各種異常,因此搬磚工作量自然比互聯網的少些;
e、職業發展相對順利,從事企業應用軟件的人,工作範圍廣,項目變化大,日常積累很難產生質變,容易遭遇職業瓶頸,而從事嵌入式軟件,所涉及的專業技術範圍相對固定,時間長了會越來越有經驗,所以說程序員的瓶頸大多數是因爲年齡大,勞動力低下,接受日新月異的新事物能力變弱;而嵌入式,只要你注意積累,會一生享用;
f、工作強度相對較低,注意只是相對,開發自然是少不了加班熬夜,持續學習;開發企業應用軟件的IT企業,這個用戶的系統搞完了,又得去搞下一個用戶的,而且每個用戶的需求和完成時間都不同,開發人員往往疲於奔命,重複勞動;而搞嵌入式系統的公司,都有自己的產品計劃,按自己的節奏行事,所開發的產品通常是通用的,不會因客戶的不同而修改,一個產品型號開發完了,往往還有較長一段空閒時間進行充電和休整;

五、能力和薪資(知乎找的):

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章