什麼是「工程能力」?

前幾天問一個學計算機的學長,我問他學計算機是不是要數學很好,他說不是。我再追問那麼這個專業領域的人最看重哪一種能力,學長說CS最看重工程能力。

請問一下各界工程師,工程能力指的是什麼呢?


既然題目說的是計算機,那我就只說計算機的好了。基本上說一個人工程能力的素養好,一般來說指以下幾個方面:

  1. 寫出來的東西容易修改和升級
  2. (自動化)測試完善
  3. 能夠把各種不同的東西集合在同一個流程里
    1. 以前我比較喜歡舉的一個例子就是,也是我曾經見過的。一個人圖形演算法很牛逼,結果不知道怎麼輸出bmp(逃,等於工作沒完成。
  4. 選擇恰當的演算法和數據結構做為零件
    1. 這裡的恰當指的並不一定是最快最不消耗內存,主要是從低成本上來衡量的。如果你的硬體資源很多,人力資源卻比較少,那就應該選做起來最簡單的。
    2. 修改演算法的時候也是。有時候你去琢磨一下如何降低係數,有可能在你當前的處境上,比降低複雜度要強。
  5. 時刻滿足DRY原則,能不要重複的信息,盡量不要多處出現,在某些極端情況下,可以考慮寫codegen來解決問題。generated code包含信息是不算信息的,只有codegen本身和他的input算信息。


題主探討的是「工程能力」這個詞,但我覺得首先要把工程這個詞給解釋清楚。

工程,在百度百科中有如下解釋:

工程是科學和數學的某種應用,通過這一應用,使自然界的物質和能源的特性能夠通過各種結構、機器、產品、系統和過程,是以最短的時間和最少的人力、物力做出高效、可靠且對人類有用的東西。

我們看下圖:

還有這張:

這兩張照片是ABB的宣傳畫。這兩張照片中,前者是軋機控制,後者是冶煉控制,都是DCS集散式測控系統。

如果我們只會寫幾段代碼,或者只會設計電源電路,或者只片面地了解簡單的機械設計原理及感測器原理,我們能進行此類工程的設計嗎?

現代工程的設計,需要的是具有綜合知識的工程人員,需要的是多專業多學科的大協作,需要的是快速學習能力和奮進精神。我們必須快速地學習新知識,並靈活運用到工程設計中。

所以,題主所謂的工程能力,應當指的是人的綜合工作能力。

一位優秀的工程設計者,一定也是一位經驗豐富的學習型專家。只有這樣,才能在我們這個瞬息萬變的信息時代跟上前進步伐,在工程設計上做到心有餘且力充足。

我們來看一個實例:

在我做過的工程中,有一項是某高速公路隧道群燈光和隧道風機控制的。這些隧道有長有短,從數百米到數千米不等,數量達十幾條。隧道入口和出口處的照明燈光需要考慮到白天和夜晚,還有陰天和晴天等等。隧道風機的功率不等,在10kW到37kW之間。隧道風機除了用於通風外,還承擔火災時的排煙任務。

設計中,我在這些隧道群的入口處配套了許多光照度感測器,隧道內配套了N多煙霧感測器,這些感測器把信息傳送到無人值守的隧道配電室電力監控PLC中,PLC的測控程序對參數進行計算,給出最合理的燈光控制方案及隧道風機控制方案,再由外設介面模塊負責實施驅動。

PLC把現場信息彙編成數據表,然後通過光纜傳輸的高速公路監控中心。

就這個並不複雜的工程,我們看到,它既有供配電設計和電機控制、照明控制設計,也有數據通信和信息交換方面的設計,同時還有感測器技術,以及氣象分析等等。

記得其中的一座隧道,落日的餘暉恰好能照進隧道,這為我們的光感測器採集天空亮度和PLC的邏輯判斷帶來問題。為了達到較好的控制,我在現場做了好多次感測器數據採集分析,並且調整了N次測控程序,最後完滿地解決了問題。

這個例子充分說明,我們對工程的綜合設計,就是題主所謂的「工程能力」。

======================

從題主行文看,題主是學生無疑。既然是學生,我就多說幾句吧:

每年畢業季,我都會參加學校組織的模擬面試。我會問學生一個問題:您覺得自己是否有能力勝任此工作?事實上,這在實際面試時,我也會如此詢問求職者。

作為學生,他們的回答無非就是熱愛編程、熱愛電子電路等等,並且反覆說自己獲得了何種競賽獎項。當我告訴學生,這些工作牽涉到哪些工程知識,以及哪些國家標準和規範,並詢問學生如何理解這些相關知識時,學生往往就傻眼了。

在單位,如果是工程師面試,情況就完全不同。應試者會對工程的設計問題侃侃而談,對國家標準和規範如數家珍般地羅列一番,既從容不迫,又獨有慧眼,讓人感到十分信任。

我覺得,這種區別應當就是題主所謂的「工程能力」吧。

我深信,題主甚至包括他所說的那位學長在內,未必能理解工程能力這個詞背後的意義。我們只能期望題主走向職場後,自己去體驗吧。願題主能儘快掌握必要的專業知識和技能,培養和建立起真正的【工程能力】,並祝願題主日後一切都好!


工程能力,即理工科達成最終結果的能力。

設計一個大樓,設計一個水壩,設計一個軟體。

建設一個大樓,建設一個水壩,開發一個軟體。

大樓竣工,水壩合龍,軟體上線。 這些都叫做 project go live。

工程能力和象牙塔里的研究能力所不同的在於,理論研究只關注主體部分,而工程能力包含了處理實際上存在的問題。

計算機來說,你說我懂JVM,這是技術能力,你知道參數,知道方法論,這些都不是工程能力,運用這些知識,解決實際問題,才是工程能力。有不同的物理機器,有不同的各種容器,有實際的結果才是工程能力。

更科普的講一下:

配電腦大家都知道。你懂哪個CPU好,哪個顯卡性價比高,這些是「知識」。但是妹子找你配電腦,你說,你開個單子給你,你去京東上配一台。這並不是「高」工程能力,這是「較高的solutioning」,而你懂得開個配置的單子,跑去電腦城或者京東上買來,送去妹子房間安裝好,調試好,按照妹子的身高臂長,桌子情況調整好顯示器,機箱位置,按照妹子的手大小選擇滑鼠而非「大家都說這個好」,等一切都調整好,妹子坐下來,哎,用起來就是舒服。

這才是工程能力。

知識在理工科只是50%的路程,結果才是理工科的終極目的。達成結果的能力,就是工程能力。


在我們加速器行業,有工程能力是指:能在有限的資源和時間裡,達到預期的指標。

一般來說這行業內的工程師們的工程能力都是不錯的,那自不必說。如果一個研究員 physicist有很強的工程能力的話,那基本是打通科研和工程兩大領域。未來前途不可限量,是當首席的料。這樣的人非常稀缺。我們實驗室招leader一般要求就是打通兩個領域,而現實就是招不到。

這中間矛盾是,科研要求有激情和想像力,而工程需要落到實處。平衡風險和效益。

另外為達到指標,有可能存在數條路徑。有些路徑平平淡淡但能做成,花費高。有些路徑存在風險,但能發現新東西。在資源豐富的時候可以發展各方向; 而資源有限時,就要會取捨。physicists的取捨靠taste品味; 工程思維取捨,靠對細節的把握。這又是一對矛盾。

而在有限的時間內,做出東西來是另一項重要的能力。預計和安排各個方向的合理進度是非常難的。我見過太多的優秀研究員在時間的估計上簡直是災難,純粹在胡說八道。而有工程能力的人能合理估計各個細節上的時間花費。君不見,首席工程師很大一部分時間花在製作進度表上。


有些學術/工業界大神提出了一個技術理論的基本概念或者實裝性演算法/產品。相當於從0到1、工程能力就是從1做到90然後賣給要求為100的客戶


我們經常聽到一些專業「土木工程」、「岩土工程」、「機械工程」等,但不會聽到「土木科學」、「機械科學」,因為這些學科是工程應用,而不是科學。

一般會把「數學」、「物理」、「化學」稱作科學,這些基礎學科,是其它學科的支撐,沒有這些基礎學科的突破,其它學科也不會產生質的飛躍,硬體晶元的越做越小,沒有物理學材料學科的進步,很難做到,這次雙一流學科里材料科學是最大的贏家!

雙一流大學的評比中,一級學科只有「計算機科學與技術」,二級學科才有「軟體工程」、「網路工程」,計算機科學在前,技術在後。計算機作為一種新興的學科,計算機硬體離不開物理學的支撐,計算機軟體離不開數學的支撐,軟體里的很多演算法,背後都站著N多偉大的數學家,計算機領域使用頻率很高的「散列演算法」(Hash函數),就是一個數學函數。

Hash函數最常用到的MD5、SHA,現在在安全領域使用最頻繁,用於對數據鑒權,數字證書指紋。再比如Dififie-Hellman、RSA演算法也是數學家發明出來的,沒有數學家的支撐,信息安全就是一個空中樓閣。

學好數學對計算機的學習絕對是有幫助的,數學的存在就是為了解決現實的問題,數學的學習隨著學習的深入,會越來越抽象,對鍛煉抽象思維、邏輯推理絕對是有益處的。

而計算機又是一個應用學科,需要將數學上的演算法轉化為可以利用的技術,比如hash函數,是將原始不定長的消息,通過離散、壓縮成一個定長的消息摘要,將不同的消息輸入,最大程度生成不同的消息摘要輸出。

於是就有了可以工程上可以利用的MD5、SHA,將演算法封裝成人人都可以使用介面函數,具體演算法如何實現,對於99%+以上的工程師其實也並不關心,只需要知道這種演算法的特點及應用場合即可。

這就是數學工程化的體現!

計算機科學與技術,做為一個產業,需要基礎學科的支撐;但作為一個學生,學好數學對學好計算機絕對是有幫助的,想想計算機編程的演算法,二分法、遍歷樹、二叉樹都是數學演算法的應用。

對於網路工程一樣,最最基礎的也是最最重要的,比如網路掩碼、相同網段、不同網段通信,這些就是基礎,學好基礎才能再學習代理。

只要一出現代理,就需要小心,有代理的地方事情就複雜了,無論是ARP代理、Socks代理、還是http代理,代理又分透明代理、不透明代理。

這就是學習的規律,最基礎的要先學,學紮實了再學難一點的才有可能,否則一頭扎進很難的地方,往往進展維艱,這並不是一個好的學習方法!


舉個例子:

賣9.9的東西,人家給10塊錢,你知道找錢一毛,就是數學水平;

賣9.1的東西,人家給10塊錢,你還知道問一句「有一毛嗎?」,就是工程能力。


我認為一個完整的工程是由以下幾部分組成的:(排序遵從先後順序)

一、工程子項目分類

  1. 商業構思(有了一個點子或者有了一個機會)
  2. 盈利模式構想(怎麼賺錢)
  3. 市場調研及風險分析(找到項目的立足之本,判斷項目的外圍條件,保證確實能賺到錢)
  4. 投資決策(決定干,還是不幹?不幹,直接退出,要干,繼續往下)
  5. 團隊建立(組成一個團隊)
  6. 計劃立項(分為內部立項和外部立項,外部立項主要是政府的核准審批備案,大多民企或小規模非限制性投資涉及不到,內部立項則根據)
  7. 融資準備及實施(干工程是需要錢的,錢怎麼來?自己掏還是銀行借?怎麼借?借來怎麼用?怎麼安排資金能達到費用上的最優?現金流要怎麼控制才能不斷裂,預備費要留多少,資本金出資多少,銀行借貸利率多少,優惠性貸款及政策是否可以爭取?)
  8. 工程實施籌備(審批程序是否完備,該獲得的許可是否都拿到了?人員是否進駐現場;不論是什麼行業,要防止用到扳手找扳手,用到文件現去申請的這種過程,以免極大影響開發進度,在商場上,時間就是生命)
  9. 項目開工計劃(主要是工作任務分配、工作中的溝通及協調,信息反饋層級及互動安排)
  10. 項目實施及管理(運用專業能力幹活)
  11. 項目竣工(做完)
  12. 項目運營(生產產品)
  13. 營銷(出售產品)
  14. 項目後評價(回頭點評:這個項目我做的怎麼樣?整理思路,汲取經驗教訓,找出不足)

以上就是一個廣義的工程的概念,工程其實也就是一個系統。狹義的工程,可能就是其中的一條(大部分集中在9)或者幾條的組合。

二、實例分析

好了,解釋清楚了,實戰幾個。

例一:共享單車(題主的IT行業)

  1. 商業構思(提出共享單車理念,解決「最後一公里」的出行困難,但只是一個想法)
  2. 盈利模式構想(設想以押金及使用費的形式,獲取利潤)
  3. 市場調研及風險分析(市場調查、風險分析、盡職調查,確實人們有這種需求,我們的想法合理,風險能控制,盈利能達到預期,前景很好)
  4. 投資決策(「干!」)
  5. 團隊建立(ofo VS 摩拜)
  6. 計劃立項(正式成立「共享單車」項目,列入公司計劃etc)
  7. 融資準備及實施(上市融資or資本金出資+銀行貸款,沒錢,幹什麼工程?)
  8. 工程實施籌備(外部協調上下游產業鏈,簽訂合同,內部展開布局)
  9. 項目開工計劃(先做什麼,後做什麼,要做什麼)
  10. 項目實施及管理(單車開始生產,APP開始開發)
  11. 項目竣工(第一批單車交貨,APP測試通過)
  12. 項目運營(單車投入市場,開始運營)
  13. 營銷(做活動,做推廣,打廣告)
  14. 項目後評價(我們賺錢了嗎,賺了多少,哪裡有不足,接下來我們要去哪裡)

例二:跨境XXX水電工程(電力行業)

  1. 商業構思(一帶一路,X國有條未開發的河流資源不錯,簽訂MOU)
  2. 盈利模式構想(發電上網)
  3. 市場調研及風險分析(系統性風險、非系統性風險、電力消納分析、國家是否提供優惠性投資條件、是否對電費支付提供有力擔保etc,預可行性研究可行性研究)
  4. 投資決策(簽訂PPA,「干!」)
  5. 團隊建立(XXX項目人員抽調)
  6. 計劃立項(XXX國XXX項目公司成立 or 成立JVA)
  7. 融資準備及實施(上市融資or資本金出資+銀行貸款,貸款組合?是否有政策性優惠貸款)
  8. 工程實施籌備(政府審批、征地移民、施工圖出圖)
  9. 項目開工計劃(業主、設計方、施工方三方協調)
  10. 項目實施及管理(開始建設)
  11. 項目竣工(竣工驗收,施工方移交項目)
  12. 項目運營(業主開始運營)
  13. 營銷(一般不需要,多為照付不議)
  14. 項目後評價(我們賺錢了嗎,賺了多少,哪裡有不足,接下來我們要去哪裡)

在一個廣義工程的全過程,能夠有機會從頭到尾跟蹤的人屈指可數,大部分人終其一生,很可能也就是在以上的某個環節中對號入座,而且你在的單位實力越強,你的螺絲釘化就越明顯,摸大象的能力會很厲害,甚至紋理走向都能預測出來,但是整個大象是什麼樣子,可能這輩子都無法知道了。

能全過程跟蹤一個工程,是一件很完美的人生際遇,能讓你感受到一種全局美感,在縱覽全局過程中培養出來、鍛鍊出來的能力,這就是廣義上的工程能力。狹義的工程能力,其實就是專業能力。

三、知識體系

寫到這裡,讓我們回過頭去,看看一個工程全過程的知識體系和需要的能力有多麼龐大

  1. 商業構思(敏感的商業嗅覺和思維,鑽石級寶藏,超越書本的範疇,無法評價)
  2. 盈利模式構想(金融學、經濟學)
  3. 市場調研及風險分析(CPA、CFA相關、法律相關)
  4. 投資決策(果斷的行事風格,能扛壓力的人格與性格)
  5. 團隊建立(人力資源)
  6. 計劃立項(強有力的領導能力,感染能力、表達能力,清晰的向上級和其他人傳達信息,告訴他們為什麼我們要這樣做,我們這樣做為什麼是對的,讓別人建立對你的信任,同意你的想法)
  7. 融資準備及實施(財務管理、金融、會計etc)
  8. 工程實施籌備(商務合同、法律、相當談判能力)
  9. 項目開工計劃(系統工程、進度控制、管理、協調、溝通、人事安排、計劃調度)
  10. 項目實施及管理(電氣工程師、機械工程師、碼農……等等各個專業的專業人才)
  11. 項目竣工
  12. 項目運營(專業運營維護人員,各專業能力均有)
  13. 營銷(營銷、策劃、推廣、宣傳、廣告、輿論、公關)
  14. 項目後評價

四、總結

寫到這裡,我覺得可以針對題主的問題再次總結一下了,究竟什麼什麼才是工程能力?還是要看你總覽業務的多少而定。當你的上級和你提起此事時,只需要看他分管的業務類型涉及哪些,就知道他說的能力到底涉及哪些內容。比如一個焊工老師傅說你工程能力不行,大概你要好好學學電焊,因為你焊的可能實在是太差了。如果是馬雲或者是國家電網董事長對你說這句話,大概你要把我上面列些的東西全部學懂,才能提高自己的工程能力……

PS:我跟蹤過的列寫環節,大概12個左右,真說搞清楚的應該是0個……


工程能力,我認為就是組織人的能力。說白了就是解決人與人,人與工作問題能力。舉個例子,比如我要在一年內打穿一個八十平米八百米的隧道。如果你是項目經理你要怎麼辦?隧道工程很複雜,需要材料,需要測量,需要施工,需要機電,需要安全,還需要找民工。這時候你該幹什麼?當然是成立自己的班子,建立自己的組織。分配任務到組織每個人。組織是項目成敗關鍵。具體如何組建組織,組織如何運行。等到兄弟我當上項目經理後,再來說這個問題。現在我也是兩眼一抹黑。


就是做工程項目的基本功,比如用鴨嘴筆進行engineer drawing


謝邀。

看了之前的答案,大家已經回答的很好了。尤其是 Patrick Zhang 先生作為一位前輩對這個問題的細心解答使我很是受用。 羞愧自己也掛著海歸電氣工程師的頭銜,畢業卻做著和這電氣工程師完全不相關的事情。簡化一點說,我對工程能力的理解,就是能用最高效,最簡潔的方法,最大限度的滿足客戶需求的能力。


在CS界,最簡單最直觀的角度,就是看你的代碼量,以及日均代碼量。

但是,這個肯定是不全面的,而且很有誤導性。

應該看有效代碼量,提交代碼引發的bug數,導致構建失敗的數目,工作日日均代碼量等等等等。當然還不夠啊,還要看,你代碼的風格檢測的warning,profile引發的gap,函數/分支的增刪量,測試的覆蓋率等等等等。

以上還不夠啊,比如你提交代碼後,對於同一段代碼是否需要重複修改提交;你提交的代碼是否在deadline之前提交;你提交的代碼是否有高度抽象,其中可用部分有抽取出來成為公用庫;代碼是否易測,無論是單元還是系統級測試;代碼里是否很多copy/paste; 代碼可讀性高么,注釋完整嗎?

夠了沒?還不夠啊

你的框架是否易擴展?是否考慮未來擴展時對主體代碼的影響,是否要改大量的代碼才能新增一個小小的功能?模塊可拆分么?能復用么?介面是否足夠健壯和簡單,無論上下游如何變化,都能夠以不變應萬變?異常處理機制怎樣,是否考慮到那些長尾異常情況?邊界情況考慮的是否周全?是否能支持多種輸入/輸出,只需要參數變化就能在多種情況下運行?

以上です


設計、執行、可執行、設計解釋、協調能力的統稱。

與此意義相反的名字稱謂,是:「嘴炮」!

我們舉例子說:題主拿火柴棒製作一個建築模型。我們將這個模型的設計水平、酷炫程度、前沿程度放在一邊,不做過多評價。

第一位,首先要解決的是:這個模型按照什麼樣的順序來完成。大概需要用到什麼材料,需要用多少材料,大約是0.1m3木材,還是1m3木材,還是10m3木材?作為工程師,非材料計算專員,需要有個不那麼精確的大概評估。0.1m3木材和10m3木材的差距很大。

第二位,要解決的是:製作這個模型,需要多少人參與。是1個人還是5個人,還是10個人。這麼多人之間,如何進行類別分工。在製作過程中,細節之作精確到哪一種程度?評價的標尺是什麼。

第三位,執行和未經驗證的設計構思,總存在一些誤差。面對這些誤差,允許的誤差概率是哪些,所參考的技術規程、規範條文是哪些?工程執行,偶爾會和設計構思,存在一些矛盾。面對這些矛盾,應當作出何種調整?(因此,要求會做設計協調)。


我怎麼覺得不是個人業務專業能力,而是管理能力,怎麼把活兒拆碎了,化繁為簡,先把控全局,再在每個時間節點前保質完成各個小部分。簡單說就是時間觀,系統觀


利用資源做成一件事或項目的能力


我是做冶煉工業車間的冷卻設備這一塊的

我的工作範圍包括:

聲學建模與分析

進氣口冷卻

進氣口過濾器外殼核查

進氣口過濾

防冰

計算流體動力學 (CFD)

排氣豎道

有限元分析 (FEA)

GT 壓縮機結垢

結構設計

而這套冷卻設備又要和生產設備結合在一起

絕非單純做冷卻

要考慮到生產設備的配套

還要對生產線進行針對性設置


我感覺,大概是…

研發:把 做不到的 變成 能做到的

產品:把 客戶需求 轉化 想清楚的

工程:把 想清楚的 做成 做出來的

銷售:把 做出來的 匹配 客戶需求


工程能力就是深入貫徹落實科學發展觀,以人為本,愛黨敬業,為社會主義現代化建設奉獻終身!


作為一個攻城獅,所謂的攻城能力,當然就是

好吧。。。。搞笑,我們是認真的。。。。嚴肅點,進正文


不管你是研究生,博士還是。。。,你永遠離不開一個詞叫做項目。拋開數學物理等基礎科學不談,大部分學科的項目的最終目的就是要落實到工程。銘記一點,你有一個萬惡的甲方,(或者一個xx的基金委),你要滿足他們一切毫無人道的需求,他們才能給你錢,而掙錢,才是你工作的最終目的。

你的數學能力,編程能力,重不重要,非常重要啊。別人三天推到出來,還不一定對的公式,你二十分鐘就搞定了,節省的時間,就是節省的金錢啊。同樣的道理,別人debug三天搞定的東西,你一個小時結束。可是呢。。。當你辛辛苦苦推到出來的成果,或者編出來的代碼,要怎麼樣才能用呢?

這就像一個不會射門的前鋒,準備工作都結束了,結果臨門一腳就是射不進,那你前面準備的再好也白搭啊。

後面是個人觀點:工程能力更像是一個理論到應用的轉化能力,好的理論得不到好的轉化,那麼這個方法的價值相對而言就會大打折扣。我們老師更喜歡把我們的研究方向分為偏重方法和偏重工程。但是無論你的理論做的多麼高深,最後的統一要求就是你的方法是可以使用的,而不是僅僅停留在跑跑算例。

再說一個簡單的觀點:編程,對很多人來說並不難,寫一個app,相對來說經過一些訓練也可以完成,可是真的寫一個能夠上線穩定使用的app的人,相對來說就捉襟見肘了。


工程能力往往與工程素養緊密的結合在一起,你工程素養越高,工程能力至少不會太低。

個人認為工程素養最大一點是誠實,知之為知之,不知為不知。討論交流,用邏輯來說話,而不是說一堆沒用的廢話。

能做到上面這一點的前提是,你對所做的東西,了解的很透徹,至少我自己所做的那部分工作,寫的那部分代碼,是深思熟慮,想清楚了的。而不是,看別人咋做,我就照貓畫虎(可以這樣,但要懂原理),但不知道原理。

對自己的每一行代碼負責,知道自己寫下的每行代碼是為什麼這麼寫,甚至要考慮運行時的狀態。相信邏輯,而不是盲目相信自己和別人。做到這一點,我認為工程能力就不錯了,是個靠譜的工程師。

其他的手段,單元測試等等很多是為了保護上一點,做更充分的驗證。


推薦閱讀:

計算機科學/工程和機械工程誰更有前景?
機械加工工藝工程師看刀具手冊有什麼用?
作為一個機械工程師是一種怎樣的體驗?
為什麼機械專業經常被認為行情不好沒有前景?
如何評價一台數控磨床的性能,主要看哪些技術參數?

TAG:土木工程 | 工程學 | 機械工程 | 電氣工程 |