在2017年9月5日深圳舉行的“‘名家芯思維’之2017年物聯網核心技術和應用國際研討會”上,周立功先生做了題為“平臺即服務”的講演。 ...
引言
產品的BOM(物料清單)成本很低,而毛利又很高,為何四成上市公司的年利潤卻不夠北上深廣的一套房?房子到底被誰買走了,這個問題值得我們反思!
讓我們重新審視成本
包括開發者在內的很多管理者,做產品算的只是BOM成本,甚至連一個MCU相差一毛錢都嫌貴,卻不關註未知的成本。每當問到產品什麼時候上市時,普遍的回答都是“差不多了”,為何會出現這樣的問題呢?而事實上,那些未知的成本就是利潤流失的根源(如圖1所示)。
圖 1 重新審視成本
利潤從哪裡來
早期創業時,只要抓住一個機會,多參加展會,多做廣告,成功的概率就很大。在互聯網時代,突然發現入口多了,聚焦用戶的難度越來越大。當產品面臨競爭時,你會發現“沒有最低只有更低”。而且現在已經沒有互聯網公司了,攜程變成了旅行社,新浪變成了新媒體……,機會驅動、粗放經營的時代已經過去了。
Apple之所以成為全球最賺錢的手機公司,關鍵在於產品的性能超越了用戶的預期,且因為大量可重用的核心領域知識,綜合成本做到了極致。Yourdon和Constantine在《結構化設計》一書中,將經濟學作為軟體設計的底層驅動力,軟體設計應該致力於降低整體成本。人們發現軟體的維護成本遠遠高於它的初始成本,因為理解現有代碼需要花費時間,而且容易出錯。同時改動之後,還要進行測試和部署。
更多的時候,程式員不是在編碼,而是在閱讀程式。由於閱讀程式需要從細節和概念上理解,因此修改程式的投入會遠遠大於最初編程的投入。基於這樣的共識,讓我們操心的一系列事情,需要不斷地思考和總結,使之形成可以重用的模式,這就是方法論的起源。
顯然,作為管理者必須深刻認識利潤模型,即利潤=需求-設計。需求是致力於解決“產品如何好賣”的問題,設計是致力於解決“如何降低成本”的問題。由此可見,要麼就是需求沒有抓準,要麼就是管理成本太高。
其中一個極其重要的措施需要逐年對缺乏創意的員工進行末位淘汰,其實企業中很多平庸的人就是吞沒利潤的成本。比如,很多開發者只會抄DEMO,卻不會根據實際的需求做出性價比更好的設計,即便這樣的具有10年工作經驗的人又有什麼價值呢?
思維差異與收益
通過財務數據分析,由於早期決策失誤和缺乏科學的軟硬體工程方法,我們開發了一些周期長、技術難度大且回報率極低的產品,不僅軟體難以重用,而且擴展和維護難度很大,從而導致開發成本居高不下。
雖然大多數開發者都很勤奮,但其奮鬥目標不是企業和個人收益最大化,而是以學習基礎技術為樂趣,極少與市場人員和用戶交流,不註重提升個人挖掘用戶需求的創造力,而是將精力用錯了地方,這是很多人一輩子也沒有認識到的深刻問題。只是錶面地嘆息自己懷才不遇,甚至將自己失敗的責任推給他人。由此可見,人與人之間的差別不在於知識和經驗,而是思維方面的差異決定了每個人的未來。
從軟硬體開發來看,軟體工程、電子工程與電腦科學、電子科學技術學是完全不同的兩個領域的知識,其主要區別在於人,因為軟硬體開發是以人為中心的過程。如果考慮人的因素,工程技術更接近經濟學而非科學。顯然,如果我們不改變思維方式,則很難開發出既好賣且成本低的產品。
圖 2 核心域與非核心域
核心域與非核心域
其實一個軟體系統封裝了若幹領域的知識,其中一個領域知識代表了系統的核心競爭力,這個領域被稱為“核心域”,其它領域稱為“非核心域”。雖然更通俗的說法是“業務”和“技術”,但使用“核心域”和“非核心域”更嚴謹(如圖2)。
非核心域就是別人的領域,比如,底層驅動、操作系統和組件,即便你有一些優勢,也是暫時的,競爭對手也能通過其它渠道獲得。雖然非核心域的改進是必要的,但不充分,還是要在核心域上深入挖掘,讓競爭對手無法輕易從第三方獲得。因為在核心域上深入挖掘,達到基於核心域的復用,這是獲得和保持競爭力的根本手段。
要達到基於核心域的復用,有必要將核心域和非核心域分開考慮。因為過早地將各個領域的知識混雜會增加不必要的負擔,從而導致開發人員騰不出腦力思考核心域中更深刻的問題。由於待解決的問題的規模一旦變大,而人腦的容量和運算能力有限,因此必須分而治之,因為核心域與非核心域的知識都是獨立的。
圖 3 AWorks平臺
平臺制勝
代碼的優劣不僅直接決定了軟體的質量,還將直接影響軟體成本。軟體成本是由開發成本和維護成本組成的,而維護成本卻遠高於開發成本,蠻力開發的現象比比皆是,大量來之不易的資金被無聲無息地吞沒,整個社會的資源浪費嚴重。
為何不將複雜的技術高度抽象呢?如果實現就能做到讓專業的人做專業的事,AWorks就是在這樣的背景下誕生的。由於其中融入了更多的軟體工程技術方法,因此就能做到將程式員徹底從非核心域中釋放出來,聚焦於核心競爭力。
追求代碼復用和跨平臺,這是開發者夢寐以求的奮鬥目標,但現實很殘酷,幾乎無法成為現實。原因何在?MCU有M0、M4、M7、ARM9、A5、A7、A8內核、DSP......有些項目不需要操作系統,有些項目可能選擇FreeRTOS或μC/OS-II或sysBIOS,另一些項目可能選擇Linux或Windows,因為不同的半導體公司支持的平臺不一樣。
基於此,我們不妨做一個大膽的假設。雖然PCF85063、RX8025T和DS1302來自不同的半導體的公司,但其共性都是RTC實時日曆時鐘晶元,即可高度抽象共用相同的驅動介面,其差異性用特殊的驅動介面應對。雖然FreeRTOS或μC/OS-II或sysBIOS、Linux、Windows各不相同,但它們都是OS,多線程、信號量、消息、郵箱、隊列等是其特有的共性,顯然QT和emWin同樣可以高度抽象為GUI框架。也就是說,不管什麼MCU,也不管是否使用操作系統(OS),只要修改相應的頭文件,即可復用應用代碼,這就是AWorks平臺的雛形(如圖3)。
由於AWorks制定了統一的介面規範,並對各種微處理器內置的功能部件與外圍器件進行了高度的抽象,因此無論你選用的是ARM還是DSP,通過“按需定製”的外設驅動軟體和相關組件,以高度復用的軟體設計原則和只針對介面編程的思想為前提,則應用軟體均可實現“一次編程、終生使用和跨平臺”。基於此,進一步擴大了AWorks使用範圍,又發展出了代碼更小的AMetal,AWorks能給你帶來的最大價值就是不需要重新發明輪子。
由此可見,無論你選擇什麼晶元和任何OS,比如,Linux和其它任何RTOS,只要AWorks支持它,就可以在目標板上實現跨平臺運行。因為無論什麼OS,它只是AWorks的一個組件,針對不同的OS,AWorks都會提供相應的適配器,那麼所有的組件都可以根據需要更換。
結論
ZLG(廣州周立功單片機科技有限公司)之所以始終處於高速發展狀態,首先是改變觀念和思維方式的突破,有了正確的思想和方法,就知道從哪裡入手了,將優秀人才聚焦需求分析,致力於解決“產品如何好賣”問題,通過技術創新致力於解決“如何降低成本”的問題,最終實現利潤最大化。