IoT 時(shí)代可以說是互聯(lián)網(wǎng)的下一代,將更多的物和設(shè)備連接起來。IoT 時(shí)代硬件,已經(jīng)不再是做一款獨(dú)立的硬件,IoT 研發(fā)已經(jīng)進(jìn)入困境,為此Ruff 進(jìn)行了一次破局 IoT 研發(fā)困境的嘗試。
提及 IoT(物聯(lián)網(wǎng),Internet of Things),幾乎整個(gè) IT 行業(yè)的共識(shí)是未來一定會(huì)是一個(gè) IoT 時(shí)代,繼互聯(lián)網(wǎng)時(shí)代將更多的人連接到一起之后,IoT 時(shí)代將會(huì)把更多的物(Thing)連接起來。但是,一說到 IoT 的研發(fā),人們的第一反應(yīng)通常是,物就是硬件,做硬件就要懂嵌入式,所以,IoT 開發(fā)就是嵌入式開發(fā)。于是,我們看到在 IoT 的指引下,各大硬件廠商和嵌入式操作系統(tǒng)廠商搖旗吶喊,紛紛暢想著 IoT 的未來,而現(xiàn)在的 IoT 行業(yè)狀態(tài)卻是,只問腳步聲,未見人下來。為什么會(huì)這樣?我們不妨簡要分析一下。
1 IoT 研發(fā)困境
• 產(chǎn)品經(jīng)理與硬件工程師難以協(xié)同
在 IoT 時(shí)代,做一個(gè)硬件,已經(jīng)不再是做一款獨(dú)立的硬件,本質(zhì)上,它就是一個(gè)產(chǎn)品,與這個(gè)時(shí)代的其它產(chǎn)品沒有區(qū)別。無論是硬件廠商,還是操作系統(tǒng)廠商,他們擁有的都是研發(fā)實(shí)力,但在產(chǎn)品上卻不是強(qiáng)項(xiàng)。而哪里擁有最多的產(chǎn)品經(jīng)理呢?現(xiàn)在的答案是互聯(lián)網(wǎng)公司。但為什么互聯(lián)網(wǎng)的產(chǎn)品經(jīng)理不來做物聯(lián)網(wǎng)呢?
不是沒有,而是很難。
曾經(jīng)有一個(gè)互聯(lián)網(wǎng)產(chǎn)品經(jīng)理看到了 IoT 的未來,決心投身這個(gè)未來,做一款改變世界的硬件產(chǎn)品。根據(jù)互聯(lián)網(wǎng)思維的做事方式,他說,我先要做一個(gè)東西先試錯(cuò),因?yàn)槲乙膊淮_定對這個(gè)產(chǎn)品是否是對的。他把這個(gè)想法給了硬件工程師,硬件工程師說,我要做六個(gè)月。當(dāng)時(shí)這個(gè)互聯(lián)網(wǎng)產(chǎn)品經(jīng)理就崩潰了,說我從來都有想法大概兩周試出來,你告訴我要六個(gè)月。雙方很努力的協(xié)調(diào)之后,硬件工程師按照他把初步的想法做出一個(gè)東西。臨近實(shí)現(xiàn)結(jié)束,產(chǎn)品經(jīng)理出來說,我有一個(gè)新的想法,這回輪到硬件工程師崩潰了。
• 瀑布式研發(fā)
雙方之所以會(huì)有如此大的差異,本質(zhì)上,是因?yàn)殡p方在用不同的工作模式在工作。硬件研發(fā)屬于瀑布式開發(fā),而互聯(lián)網(wǎng)產(chǎn)品研發(fā)則采用的是敏捷軟件開發(fā),雙方對于開發(fā)節(jié)奏的理解截然不同。瀑布式要求一次性做好所有的事情,而敏捷開發(fā)則要不斷地試錯(cuò)。在20年前,軟件行業(yè)的主流開發(fā)方式也是瀑布式的,但對于這個(gè)需要快速響應(yīng)變化的年代,瀑布式研發(fā)顯得越加不合時(shí)宜了。
• 重復(fù)造輪子
在硬件行業(yè)里,有一個(gè)典型的現(xiàn)象,在一個(gè)項(xiàng)目做好的東西很難用到另外一個(gè)項(xiàng)目上,比如,TCP/IP 協(xié)議棧,即便你已經(jīng)爛熟于胸,拿到一款新的硬件,往往要重來一次。對于這種現(xiàn)象,在軟件行業(yè)里,有一個(gè)常用的說法:重復(fù)造輪子。這在某種程度上是一種浪費(fèi),放在行業(yè)的角度,這種浪費(fèi)現(xiàn)象更加嚴(yán)重,你在一個(gè)硬件上做的一個(gè)工作,在其它公司,會(huì)有另外的工程師做著同樣的事情,然而你不知道,沒法用。在行業(yè)中,如此大規(guī)模的浪費(fèi)導(dǎo)致整個(gè)行業(yè)進(jìn)展緩慢。
• 系統(tǒng)與應(yīng)用一體
IoT 時(shí)代需要的必然產(chǎn)品本質(zhì)上就是一個(gè)應(yīng)用,但在硬件行業(yè)里,大多數(shù)人并不能將應(yīng)用與系統(tǒng)分開,做一款硬件產(chǎn)品,往往需要從硬件到系統(tǒng),再到上層的應(yīng)用一起做。這樣的做法帶來的后果往往是,系統(tǒng)與應(yīng)用常?;煜谝黄?,做過開發(fā)的人都知道,這也通常意味著代碼混雜在一起,維護(hù)的難度系數(shù)便直線上升。此外,這還有一個(gè)隱含的要求,做硬件的人要懂得從系統(tǒng)到應(yīng)用的各種知識(shí)。
今時(shí)今日,前端工程師已經(jīng) IT 行業(yè)里一個(gè)主流的職位。但你不妨同前端工程師交流一下,看有多少前端工程師知道,屏幕上顯示的點(diǎn)到底是怎么顯示出來的,總的來說,比例不會(huì)高,除非他自己非常有熱情的去研究這些東西。而在嵌入式領(lǐng)域,要做一個(gè)應(yīng)用必須知道各種細(xì)節(jié),包括底層的寄存器。從某種程度上說,這是對人的要求非常非常高。
這種高要求導(dǎo)致嵌入式行業(yè)人才培養(yǎng)也極其困難,即便是一個(gè)計(jì)算機(jī)專業(yè)的學(xué)生,真正理解操作系統(tǒng),理解硬件底層是怎么運(yùn)作都是一件有很高難度的事情。我們看到一個(gè)很無情的現(xiàn)實(shí)是,雖然我們以為嵌入式領(lǐng)域人才已經(jīng)很多了,但是與做軟件的人比起來做嵌入式的人,數(shù)量還是太少。