爲什麼每一位工程師都應該學習分析和編程技能?

“數據科學家是21世紀很有吸引力的工作”;“數據是一種新的石油”;“數據正在改變人類觀察世界的方式”。現如今,諸如此類的話語不斷涌現,不可避免地讓人們心生懷疑:我們在選擇專業或者職業時,真的做出了很好的選擇嗎?“我的專業不需要編程技能”;“沒有必要去學習軟件開發”;“如果會寫代碼的話,當初就選擇報計算機專業了。”事實上,以上這些話已經完全過時。因爲在如今這個時代,競爭異常激烈,科技發展日新月異,只有保持終身學習和自學的習慣,才能緊跟時代潮流而不被淘汰。

作爲一名工業和系統工程師,筆者早年間學習的分析和編程技能對於筆者的職業生涯受益無窮。因此,筆者強烈推薦非計算機科學工程師和專家們都去學習分析和編程技能,並且希望它同樣能給你們帶來一定幫助。

“連接人類、技術,與商業。”

作爲一名工業和系統工程師,筆者的主要目標是將工程與管理聯繫起來,並且分析和改造其聯繫過程,或者創造全新的聯繫。具體來說,筆者的職責是尋找能夠提高某一過程效率的人、材料、技術、信息和能源,並且分析如何才能整合起這些要素,使之更加有效。

“工程師熱愛數字,並且樂於同數字打交道。”

不管這份熱愛是否出於真心,但畢竟是他們的本職工作。現如今,幾乎在每一項工程任務中,都會直接或者間接涉及到對數據信息的處理。然而,只有當人們能夠收集、理解、並轉換數據信息時,他們才能對信息加以甄別地利用,取其精華去其糟粕。仔細觀察下面這幅圖,圖中是一個DIKW金字塔體系。在這個金字塔中,從下往上每一層寬度依次減小,這就代表着將純粹的知識轉化爲工作技能之間的距離。由於數據本身並不能直觀地顯示任何信息,因此必須用某種方式將其轉化爲更易於理解的信息。相比之下,真正的挑戰還在於如何往金字塔最上端跳躍。

DIKW金字塔體系

在往DIKM金字塔上層跳躍過程中,主要使用到數據挖掘技術、機器學習,以及各種深度學習算法,比如線性迴歸、邏輯迴歸、K均值聚類、支持向量機、人工神經網絡等。然而,由於處理過程中會接觸到海量數據,因此如果選擇人工處理,則不僅費時費力,而且效率低下,完全是一項不可能完成的任務。在這個時候,編程技能就能大放異彩了。在計算機程序中編寫特定的算法,能夠幫助人們更加快速高效地處理多而雜的數據集。實際上,即使成功開發出數學模型、預測模型、分類模型以及分析模型(僅列舉一部分),並且也對它們進行了相關訓練、測試和驗證,這也只是所有任務中的一部分而已。真正的終極目標還在於從中得出結論,獲得深刻見解,收穫知識,並且再將所有這些轉化爲自己的智慧。只有完成了這一終極目標,數據科學家和工程師才能成爲其公司和組織的寶貴財富。而這,正是分析技能的強大力量。

“與取得研究結果相比,和別人分享它們同樣重要,甚至更加重要。”

如果已經開發出合適的算法,並且取得了最後結果和重大發現,那麼就已經完成了一大步。接下來還需要幹什麼呢?其實,還需要與團隊成員互相分享和交流研究結果和發現。和朋友交流?人們剛開始聽到可能會覺得這簡直太容易了!然而在實際操作過程中,很多人卻發現這是整個過程中最難的一步。其實,這與“少即是多”的原理是一樣的。在用專業術語與別人交流研究結果和發現時,必須保證表達儘可能簡潔明瞭,即使沒怎麼學過統計和編程的人也能理解。通常情況下,上司並不會詳細問研究的各個過程,反而他會要求你邏輯清晰地解釋和闡述最終研究結果。因此,這也是爲什麼大部分崗位招聘都明確要求,應聘者要具備強大的分析和交流能力。

作爲一名非計算機科學工程師,筆者在自己整個學術生涯和職業經歷過程中,親身總結了七條學習分析和編程技能的益處。因此,無論你現在多大年紀,大學學什麼專業,目前處於職業生涯的哪個階段,都應該開始考慮學習分析和編程技能。

1. 提高邏輯思維能力

編寫代碼需要進行邏輯思維。從已知信息一直到目標結果,需要找出其中的邏輯鏈,並且考慮代碼執行過程中可能存在的侷限性和潛在錯誤。通過使用邏輯算子、While循環、For循環,以及條件語句,不僅能提高邏輯思維能力,也能增強編程、分析情況和解決問題的能力。

2. 提高系統思維能力

學習分析和編程技能也可以幫助提升系統思維能力,即理解萬事萬物都是相互聯繫的。各團隊之間,部門之間,並非單獨作戰,而是相互合作,朝着同樣的目標前進。因此在分析問題,解決問題時,必須同時就其可能對整個業務和組織產生的影響作出全局分析和評估,而非單獨考慮你正工作的那一個部門。一句話概括,整體大於部分的總和。

3. 提高問題解決能力

在編寫代碼或開發程序來執行某一任務或解決某一問題時,就必須先將其拆解成更小的部分。在分析具體問題時,與直接分析整體而言,從細節着手其實會更加有效。因爲這樣不僅能幫助快速找出事物的根本原因並給予解決,而且還能具體而直觀地展示出原本無法看到的細節之處。簡言之,與“分而治之”是同樣的道理。

4. 提高解決問題時的創造力

大家可能會發現,在大多數情況下,某一問題的解決方案可能不止一個。因此,在真正應用某一方案之前,必須對所有解決方案的有效性和可行性進行評估和比較。比如,其中某些方案可能涉及大量編碼工作,其他一些則不需要很多,甚至其中一些編碼工作還要求人們要有豐富的知識才能勝任。在尋找解決方案的過程中,人們可能會多次改變思路,不斷分析使用的方案是否能夠真地解決問題,並且尋求相應反饋和建議。最後,爲了高效地實現目標,人們通常會在這個時候充分發揮自己無限的創造力。

5. 提高對於過程的分析和理解能力

在知道自己想去哪之前,必須明白自己現在在哪。在分析問題時,理解自己處於哪一階段必不可少。在目前階段,哪些是輸入信息、過程、決策、轉換、交流、延遲、錯誤和結果?誰是這一過程的主導者?誰是利益相關者?誰又是最終客戶?目標是什麼?離這一目標有多遠?這所有問題,在着手編碼前或者編碼過程中都必須思考清楚,只有這樣才能讓自己在分析過程和解決問題時更加得心應手。

6. 增強做決策時的自信

擁有堅實的分析能力和豐富的統計學知識,能夠幫助更好地創建評估多種情景的決策支持系統,從而讓人們基於目前的侷限性來作出優質決策。未來,當你需要向別人展示成果時,你會變得更加自信,並且應用統計學和數學知識來有理有據地進行闡述,而不再僅僅依賴常識和直覺,或者計算機的指令。

7. 脫離舒適圈

在完成任何一項全新的任務時,每個人都會經歷自己的學習曲線。毋庸置疑,在某些階段,人們可能會發覺自己陷入了困境。但是,這沒關係,因爲網上有那麼多的資源可以給予你幫助。逐漸地,隨着人們對某一問題的研究愈加深入,就會發現越是自認爲見多識廣,實際上越孤陋寡聞。因此,這就會極大激發人們的好奇心,激勵人們去學習新事物,擴充新知識。在網絡上,有着無數可用於不同目的的資源,其中包括各種程序包、代碼庫、算法、函數、程序、語言和軟件等。當然,大家也無需爲了成爲下一個編程大師而去學習以上所有的資源,大家真正需要去做的是尋找出很符合自己目標的資源,加以甄別地去學習。

尾記

有些人說自己年紀太大,爲時已晚,於是放棄學習分析和編程技能;也有些人覺得自己的職業生涯已經足夠成功,沒必要再去學習新知識。其實,這一切都只是藉口而已。在當今世界和市場中,一切事物都在以空前的速度變化和發展着。目前,大部分工作都要求應聘者具備一定的分析和編程技能,或者至少會使用特定的電腦程序和軟件。所以,當機會來臨時,我們是否已經準備好迎接了呢?市場並不會因我們的需求而改變,真正需要迎合市場需求的,反倒是我們自己。

還在等什麼,趕快開始學習吧!自己寫的代碼,並且能夠有效運行,這種感覺真的很酷!

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