優秀工程師的三大思維(2)
發表于:2019-05-16來源:未知作者:未知點擊數:
標簽:
需求一旦確立,會基于模塊化的思想拆分成多個功能模塊去降低實現的局部復雜度,最終將所有功能模塊拼接在一起去實現整體需求。每個功能模塊會安排
需求一旦確立,會基于模塊化的思想拆分成多個功能模塊去降低實現的局部復雜度,最終將所有功能模塊“拼接”在一起去實現整體需求。每個功能模塊會安排給一個人或一個團隊負責,由于功能模塊是需求分解后的產物,容易導致工程師在實現的過程中只看到“樹木”而忘記了“森林”。
性能是工程師在實現一個功能模塊時不得不關注的,特別是當功能模塊被運用于高頻、時效性敏感、算力有限的場合時
性能將尤其被關注。在現實中有時會存在工程師樂于追求性能的極致去體現自己的技術實力,甚至出現過早追求性能而滑入過度設計的誤區。
毫無疑問,一個正規的團隊,對于功能模塊的開發工作多會以項目制、多個迭代的方式去完成交付。不少工程師這里會有一個誤區,忘記了敏捷思想所倡導的“項目計劃的目的是為了適應變化”,而是將“按時交付”當作是天職,各種趕工爬到終點時卻毫不意外地看到了“一地雞毛”的景象。
在邁向第四次工業革命的道路上,人工智能、大數據、機器學習,Kubernetes、Istio、Knative、Go、Dart、Flutter等新技術不斷沖擊著工程師已掌握的技能??焖俑霞夹g的迭代步伐是每個有追求的工程師不斷提升自己專業素養的表現之一。工程師的內心一定不缺乏對新技術的追求,憧憬自己所掌握的技術具有一定的先進性。
工程思維
工程思維的起點是流程。流程的背后是科學,以既定的步驟、階段性的輸入/輸出去完成價值創造,通過過程控制確保最終結果讓人滿意。由于流程涉及每一個工程師的工作質量與效率,其含義不只在于定義、工具化、檢查等內容,而是應基于工程師的日常工作習慣,將流程與工程師的工作環境無縫整合。“無縫”體現于流程中的概念與工程師群體已建立的專業常識相一致、沒有增加毫無價值的負擔,根本仍是確保易用性。
機制的含義是通過對所需解決問題的分析,以一種模式去解決同類問題。機制應體現一定的系統性,而非“頭痛治頭,腳痛治腳”。系統性不是一開始就能被洞察到,可能在演進的過程中逐步發現和完善的,因而需要工程師在工作的過程中不時回顧并付諸實踐去落實。對于工程師來說,機制是通過系統性的軟件設計去達成的。
可以說產品質量直接決定了工程師的工作和生活幸福感。一個質量不可靠的產品一定會給用戶和工程師自己帶去麻煩,甚至造成無法挽回的經濟損失并造成負面的社會影響。對于工程師來說,那勢必打亂個體的工作與生活節奏。為了讓產品的質量做到可靠,
單元測試、靜態分析、動態分析等確保工程質量的手段應成為工程師的基本工作內容,通過將這些手段與CI(Continuous Integration)流程進行整合去持續構建起對軟件產品的質量信心。
在互聯網行業,除了軟件產品的質量得可靠外,風險可控是另一個不能忽視的內容。而風險可控是建立于系統性機制和質量可靠之上的。對于服務端軟件來說愈是如此。風險往往出現于資源使用的極端場景,當從外部涌入的過多事務遠超軟件產品的處理能力時,需要有一定的機制讓整個產品能相對平滑地應對,或是擴充資源、或是限制涌入事務的流量。
軟件所需的機器成本是比較容易忽視的話題,軟件成本不只與軟件性能相關,還與軟件之間的依賴、技術方案等因素相連。當一個軟件需要從公司的內部對外輸出時,平時忽視對成本的關注就會暴露出成本問題。比如,為了運行某個軟件需要數量龐大的計算資源,所導致的資金開銷對于客戶來講很可能是無法接受的。
至此,大致介紹完了自己所理解的工程師思維。
延伸
了解工程師思維的價值在于,工程師個體需要在工作中逐步建立起產品、技術和工程三大思維,以便用更為全面的視角去看待日常工作中所面臨的困境和困惑。當站在單一的思維去看待所面臨的問題時可能覺得不合理,但從三大思維層面去審視時所得到結論可能完全相反。從團隊協作的角度,只有團隊中有更多的個體從多維度去進行思考,才容易發現崗位間銜接的那些無人問津的灰色地帶,進而通過補位、助攻去更大程度地發揮團隊的效能。
顯然,不同崗位、不同職責的工程師對于這三大思維的深度要求是不一樣的,但從多維度去思考卻應是每個工程師都應該具備的素養。
原文轉自:https://www.jianshu.com/p/47b5b7cf27f3