如何 硬體 軟體 都精通,或者說 都懂?

個人見解:

做項目是為了做出一樣東西,把這作為一種樂趣

做一個項目,硬體軟體都離不開

做項目的過程中,需要用到的知識也肯定會有沒接觸過的——學海無涯——一個人學習的知識不應該是局限的,而應該按需學習使用——無論硬體軟體。

但這些只是一種美好的假想,實際操作起來,要考慮的實際問題還是有的,比如不能精通就無法生存?但這個可以這樣設想:精通某個專的方向,然後廣泛涉獵各種知識技能(技不壓身)

但還是想聽聽大家的討論和見解:真有可能一個人同時懂(甚至精通)硬體和軟體嗎?(主要用以做出一些自己想玩的東西,比如類似於可以用來專利的有趣成果的項目)


關鍵是你認為什麼是精通,哪個層面的實現是精通


剛入職的我和你想法一樣,野心很大,想軟體硬體都精通。可現實告訴我們人的精力有限,知識是要不斷學習的,涉及的方面太廣反而適得其反,到頭來什麼都會一點但都不精通。

如果你精力旺盛,學有餘力,那請忽略我這段話。


你只要精通招聘就可以了,軟硬體相關職位的。


可以的,相信我,不過效率太低,就和木桶效應一樣,一個團隊最短的板往往是決定成敗的。你一個人的項目那你就不可避免的有短板。

所以團隊合作能力比單兵作戰能力要重要一點,會組建團隊的是將才,單兵能力max的只能算尖兵。

本科時候在做國賽之前所有的比賽和項目都是軟硬兩手抓,那時候時間也多,就所有東西都學了一遍,但是總有不精通的

比如我畫板子的時候畫一下午板子吃一碗飯體力就補回來了,但是寫程序寫一個小時就餓的不行,晚飯更是得吃三碗飯,寫程序的時候還得隨時攝入士力架。效率還太低,往往調程序花費的時間較多。藍後因為生活費付不起自己的飯錢,每天都得餓肚子,接著就寫不出程序,想想好慘啊。

後來做國賽找隊友,和倆給力隊友,一心只用畫板子,效率高了不知道好多。互相watch your back才是正道。


理論上當然可以,而且在 PC 早期發展浪潮中就湧現出不少這樣的人物,如早期的蘋果合伙人 Wozniak 。這傢伙不僅單槍匹馬設計了 Apple 一代的硬體系統,還為該系統編寫了絕大多數的軟體。

但是,隨著計算機行業的發展,軟硬體彼此之間的技術細節日趨複雜,所謂的軟硬體精通變得越來越不可能,且沒必要

1. 計算機整體技術是很典型的層次體系,每個層次間抽象化出不同的介面

比如,

  • CPU 對外開放出不同的引腳供電路設計人員使用,使用者無需關注 CPU 內部邏輯門的構成;
  • 操作系統替你管理各種底層硬體設備,抽象出驅動程序供上層應用使用(如顯卡驅動),使用者無需關注每一個具體硬體背後的細節(可能同種設備的不同型號背後有著無數繁瑣的細節);
  • 雲主機廠商採用虛擬化技術將一系列大型伺服器抽象出一個個邏輯獨立的私有主機,使用者無需關注這些伺服器的組織架構,日常運維,地理位置等次要因素就可主觀上擁有一台私有主機;

類似的例子還有很多,主要是從工程角度來說,硬體是高度模塊化,軟體是分層解耦的,這是一種高效的工程手段。很多所謂軟硬體都懂的人,更多的是懂目前所從事工作內容上下 1 到 2 層的內容。

2. 軟硬體技術都是講究實戰,要想達到精通的角度必須花費巨大的時間成本,而這巨大的時間成本很可能無法用同等的物質回報來等效

正如題主所言,一個人出於興趣愛好確實是可以在軟硬體上投入精力並持續學習,但這可能更多的是處於一個 愛好者 的層面上。根據流行的1萬個小時的理論,要想從軟硬體技術都達到專家級別,投入的時間很有可能是別人專註於某個領域研究的數倍乃至更多。而且,這些技術需要實戰來不斷累計經驗,而非簡單的理論知識堆積,從實際角度來說,一個工程師,相同時擁有軟硬體優秀的從業經驗,這難度很大很大。況且,從目前趨勢來看,IT 從業者專註於軟硬體某個技術領域潛心研究,一般都可以有比較不錯的發展。如果兩手都抓兩手都要硬的話,短期內可能很難從物質上得到顯著的回報。

所以,個人可以從 愛好者 的角度去多方拓展自己的技術棧,但從現實從業的角度出發,這也許是一個糟糕的選擇。

3. 軟硬體技術的結合程度跟產品技術複雜程度成正相關

我當年讀書的時候,做的是嵌入式,經常是一個人設計電路,製作電路板,編寫程序,然後軟硬體聯調,但這也僅僅局限於某些個人小型硬體項目。比如上文所舉的 Wozniak,他雖然主力設計了Apple 一代,但是,在當時那個年代,他所製作的 PC 其複雜程度還處於一個頂尖高手可控範圍內(況且Wiz也沒涉及到微電子領域),而如今,一台 iPhone 的技術複雜程度又豈是個體所能控制?

kickstarter 上還是有不少成功且典型的小型嵌入式設備是由個人主力開發完成的,我們可以說這是技術愛好者在技術可控範圍內軟硬體技術結合的典範。脫離了技術可控談軟硬體精通,有點說不過去(當然,有人提到的鋼鐵俠,恩,這個可以算是一個特例&>__&<"")。

綜上,要想達到專家級別的軟硬體精通是一件非常困難(近乎不現實)的事情,但是,做到一個愛好者程度,應該還是可以的。興趣是最好的老師,而且不同技術彼此之間都是互通互聯,只要我們持續努力,在某個環節實現自我軟硬體技術的完美融合,還是指日可待的。


技多最壓身,不知道多少人死在亂點技能樹上面…工作後就能體會。一般情況是一方面專攻,另一方面夠用就成。只是每個人層面不一樣,這樣某些人的夠用就變成了我們的精通。我想玩的技術有十幾種,但最多精力只允許我玩工作相關度不大的一種,再多就都做不好了。 千萬別亂點技能點啊,沒法洗天賦呢……目前版本不支持啊


我覺得可以軟硬都懂,能做出東西,但是要都精通,都達到大神的級別,那就太難了,我本人就走在亂點技能樹的路上,,之前從事兩年的安卓開發,做了好多app,最後做幾款已經非常拿的出手了,通往小大神的路上了。然後,,我就跑去點藍牙ble開發的技能樹了,,用的晶元還是資料非常少的da14580,摸爬滾打,兩三個月,現在也做出寫東西,算是入門,但是離精通還遠著,想成為大神需要經過時間和項目的積累。對了,我還會畫pcb,焊電路板,除了bga,其他各種封裝都ok。

我覺得需要有個主攻方向,其他做到了解懂用,是比較好的。方向的問題需要自己決定。腳踏兩條船難往前走。但是如果是創業的話,我覺得東西做出來最要緊,一人多職很需要。

其實我還想學 ps 前端 後台。不需要學多好,入門總是可以的,業餘愛好


想了很久,覺著用下面的句子描述我比較合適:

軟體程序員中的電路設計小萌手;

硬體工程師中的大數據開發逗逼;

金融從業者中的註冊電氣工程師。

並不是刻意為之,成長經歷使然。

本科研究生均為自動化專業,也就是傳說中的「嫁人當嫁自動化,軟體硬體都不怕」的萬金油專業。課程涉獵C語言、數字電路、模擬電路、電氣工程、電力電子、PLC等等。本科學校學風紮實,自己也算個學霸,各門課都學的可以。相對而言,本科學校的自動化專業里的硬體方向更牛一些。參加過智能車,電子設計大賽、機器人大賽等等,練就了焊電路的好手活,嵌入式代碼也寫了不少。

參與學校學生網站建設,網站日訪問量13萬人次左右,這可是很高的數。做過校區技術部負責人,一腔熱血,以碼代碼為樂,熬過的夜數都數不過來。初為頁面美工,但因自己審美是在有問題,棄之,但PS技術尚可,負責培訓了幾屆網站新人;組建了前端團隊,CSS/JS/XML啥的也都能搞;而後又學習後端PHP/MYSQL,至少代碼量高高的。從頁面到前端到後端到資料庫一人建站不是問題。開發過Android APP。

本科進實驗室搞過電力電子方面的設計,晶閘管、IGBT都摸過,實驗室老師是自動化生產線設計方面的大牛,經驗豐富。雖然我水水的,但也跟著大師學了個一星半點。然後我還是供配電註冊電氣工程師(初級),搞過流水線的自動化改造,雖然還沒投產,但深知工業改造的不易。

研究生做過電路板,搞無線充電方向。而後又研究演算法,之後又開始搞大數據,什麼Hadoop/Spark都整過。在百度演算法部門見別人搞過廣告推薦演算法,我負責跟著打醬油。

/****************昏割線*****************/

然後,總結了下自己,不能說是軟硬體都精通,倒是都沾點。這樣的優點呢,也有不少:

1、涉及軟硬體的項目,整體架構理解透徹。硬體方面需要哪些技術,軟體方面需要如何開發,哪裡是項目的難點,如何開展,怎麼解決,思路非常清晰。

2、能和搞軟體的人大談設計模式;能和搞硬體的人吐槽電磁干擾。在程序員中,他們認為我是程序員;在硬體工程師中,他們認為我是硬體工程師。

3、技術上都懂點,不容易被人忽悠。

4、干起物聯網方面的項目,哎呀,這順手啊,硬體設計、嵌入式開發、信息傳送、伺服器搭建、用戶界面設計,溜溜地~~

5、自己干點小項目找樂子,開發個Android APP控制家裡魚缸啊,整個Arduino採集下實驗室數據啊,不用幫手……

缺點呢:

我都不知道我是硬了,還是軟了……

-------------------------分割線--------------------------

最後,如果大家感興趣可以關注以下微信公眾號。用軟硬體都通的視角來展望智能製造(工業4.0)的未來。

本公眾號主要介紹與智能製造相關的軟體技術、硬體技術、設計方法、前沿新聞等。推文頻率較低, 同時也歡迎您投稿或參與討論。


做嵌入式的肯定敢這麼說


終於可以坐下來(我會告訴你們我今天寫了一份軟體需求,一份硬體需求,coding,debug,外加採購協議棧,聯繫供應商然後搞到現在才有空上知乎?)把這個問題稍微回答下。先講點題外話,早上關注這個問題的時候,關注該問題的知友不多,在地鐵上手機碼字頗為痛苦,等著下班回答。沒想到下午一看,發現有不少大牛回答,而且還有一些知友在評論中「坐等」我的答案,搞得我亞歷山大,看來非好好答答不可(開玩笑啦,只是跟各位好好探討交流下)。當然了,知友捧場於我而言是一種榮耀吧,謝謝大家。

我剛看到這個問題的時候其實內心是有兩個疑問的:1.什麼是軟體,硬體?2.什麼是精通?

什麼是軟體,硬體?考慮到我們是在CS,EE,通信這些範疇,暫先把範圍局限在「電」領域內。軟體?編程語言是軟體,設計模式是軟體,交互開發是軟體,網路開發是軟體,數據挖掘是軟體........我們不妨再細化一點,以編程語言為例:C/C++/C#/JAVA/Erlang/python/haskell/scheme.........硬體?mems是硬體,ASIC是硬體,RF是硬體,電源是硬體,畫板子也是硬體...........拿ASIC來說,還分數字和模擬,還分前端和後端,還分前仿和後仿.........好吧,講了這些,我只想說明一個點:軟體和硬體的範圍實在太寬了,如果說廣義上的軟硬體都懂有沒有可能?我想,答案是:存在理論上的可能性。

什麼是精通?這個問題實在回答不了,但我的理解起碼精通是個相對值。以軟體中的編程語言為例,少有人說「我精通C語言」,連Haskell的作者都認為自己不精通Haskell,不是嗎?

////////夜深人靜,明天更新/////////

/***************************************分割線*************************************/

先站座,下班答。


之所以這麼想,是源於你對技術濃厚的興趣以及對新領域的好奇心。但我要告訴你,你首先要hold住自己,先掂量好自己幾斤幾兩,是不是過目不忘一看即懂的天才,即便花費了巨大的腦力體力精通各個領域,你能得到什麼?透支自己的生命換來的不過是幾句讚譽,或者終究還得聽毛頭小子安排工作。做技術最怕帶著虛榮心去做,秀給別人看。所以早日放下這種不切實際又不利自己的想法,踏實熱愛本職工作,學會捨得方得心安。


本來想寫兩篇文章,一篇叫《硬體思維》一篇叫《軟體思維》。既然有這個問題,我就直接回答了。

要精通某項技術,首先從了解這項技術的現有人員思維模式入手。

硬體,從人類社會發展的時間軸線來說,是木製設備--》機械設備--》電子設備--》量子設備。

最早的硬體,我們暫且把其定義為木製的輪子,然後逐步的,透過輪子衍生出了馬車。馬這個生物硬體,在演化的過程中,被機械革命或者說工業革命發明的蒸汽機所取代,變成了發動機,也叫馬達。 而輪子,這個硬體,從木製到鐵質,最後到橡膠輪轂,一路演進。最終,馬車這個硬體,演化成了汽車。

未來呢?很簡單,機械設備的汽車,會被電子設備的電動汽車取代,這是人類社會發展的大趨勢,無法阻擋,所以君不見Tesla會如此萬眾矚目,比亞迪「秦」就算屁股醜陋,也能獲得政府補貼橫行魔都大街。

說完了硬體汽車,再說說硬體電腦。

最初的電腦,可以所示中國人發明的算盤,木製,人工手動,算是生物能源。自從馮諾依曼提出了經典電子計算機模塊化模型,打字機,打孔計算機成為了機械時代計算機的原型。在電子計算機時代,IBM就在計算領域叱吒風雲,其研製出的大型機,成為金融行業標準,其提出的IBM兼容機體系,成就了Intel這家晶元巨頭和微軟這家操作系統大鱷。

未來,量子計算會產生什麼樣的社會變革,我也不得而知。

梳理以上變化的本質,是由於人類在硬體領域奉行的幾個需求,一個是越來越快,一個是越來越模塊化。

回到題主的問題,如何精通硬體,這就很簡單了,看看你需要精通哪個層面的硬體?

是機械硬體嗎?電子硬體嗎?還是木製設備?無論是哪一種,硬體的技術都是需要學習原理並且動手實踐的,機械的實踐,自然是數字機床,機器人設備和生產線加工。電子硬體,自然是分為晶元級別的設計,封裝,調試,主板級別的畫線,驗證,系統測試。系統級別的ME,集成。數據中心級別的能耗控制,架構搭建,互聯互通等等等等。

所以說,硬體要精通,要掌握很多傳統知識,《通訊原理》啦,《計算機體系結構》啦,《微納米微電子》啦,懂得越多越系統,硬體上手越容易。

軟體,從我們之前的分析不難看出,是伴隨的硬體基礎設施完善同時,衍生出來的可變應用層。

木製硬體的軟體,是木製施工圖。諸葛亮的木牛牛馬,如果還有施工圖,我們就能複製出硬體。

機械設備的軟體,除了AutoCAD ProE的施工圖,還包括機械設備再現示教系統,以及PLC編程系統。注意了,這裡我們發現,隨著人類社會的進步,軟體的權重在增加。

是的,到了信息社會,硬體變成了晶元,主板,數據中心,電信基站等設施,而軟體變成了BIOS,嵌入式代碼,操作系統,辦公軟體,APP,甚至移動互聯網時代衍生出了APP。

是的,硬體在以線性速度增加,而軟體則是以指數級別的速度在刷新人類的生活。

所以,同學們,軟體要精通,相對來說,就要更加善於學習新的編程框架。BIOS工程師在PC橫行的年代一度很金貴,但是到了移動互聯網時代,這套軟體已經沒有人用了,所以如果繼續抱著不放,很有可能面臨失業。反之,H5這個事情,很多年不溫不火,到了微信鏈接一切的年代,一瞬間就爆發了。

如果再仔細探究,其實硬體和軟體只是為了滿足應用場景的一種實現手段。那一台標準的筆記本電腦來說,硬體就是CPU,主板,顯示器,鍵盤等,而軟體則是BIOS,操作系統windows,瀏覽器QQ,輸入法搜狗等。我們在真正滿足用戶需求的時候,不會提硬體,也不會提軟體,我們會提出「業務流程電子化」,「客戶管理系統在線化」等業務邏輯需求。

所以,就算你硬體軟體都精通,要想好好發展,也需要理解硬體和軟體的本質,是滿足業務方的業務需求。

好了,現在不但回答了如何精通,還順便糾正了一下小夥伴的思路,先搞明白why為啥你要精通硬體或者軟體。


我看那本計算機系統概論,裡面的序言寫了,真正的計算機工作者是不會把軟硬區分開的,而是站在一個高度上,將軟硬看作一個整體,程序需要硬體支持,而硬體又必須靠軟體來體現價值,高效簡潔的程序是建立在你很懂硬體工作原理的基礎上的,


放心的亂點技能樹。打遊戲,看美劇,吹牛,樣樣都能費時間,玩什麼都是玩。人不要給自己的學習設限。

現代社會需要複合型人才。多涉獵一些領域,會有更多的機會。

創業指望團隊合作基本扯淡,單打獨鬥才是真諦。團隊合作的前提是有足夠的資金,然後還得有理想的人聚集在一起,可望而不可求。


想清楚自己要幹嘛,學習會廢掉你很多時間,知識夠混就可以拉,生活還有許多其他的事去做咧


想有什麼用,真去做才最重要。


關注我~看我的回答和關注的問題~哈哈(人的精力有限,學我的下場就是搞得哪方面都不精,其實關鍵是相關工作崗位不多且沒有純軟體有發展空間)

硬體這東西如果不搞個幾百兆的模擬數字N層板,那也不算學多好,感覺搞搞入門就行了

軟體這東西博大精深,方向太多,軟硬體介面這部分關鍵就是體系結構和工具鏈問題,還有FPGA可以作為跳板,還有操作系統。

操作系統之上的世界就太多彩了 ...

-------------------------------------

評論里的一些內容:

以功能為目標的實現都是簡單的。以性能為目標的東西才是複雜的。我有個答案講了「電子設計」,軟體與硬體的介面部分基本上就是邏輯電路,CPU,操作系統這一塊;深入之後拼的都是理論基礎和實踐經驗,最後說白了在你走對了路之後拼的實際是時間。在我看,軟硬體的紮實的理論基礎只能偏向於一個具體的細化方面,很難達到全面精通。


推薦閱讀:

國內DFRobot和Seeed Studio兩家哪家生產的Arduino電路板質量更好???
友寶售貨機是全部自主研發么?
雲主機會不會出現硬碟壞掉的問題?
遊戲悍將的電源都是炸彈嗎?
內存卡實際上是外部存儲器,為什麼大家都叫它內存卡?這樣合適么?

TAG:軟體 | 硬體 | 智能可穿戴 | 硬體創業 | 軟硬結合 |