天天看點

工程師的思維與軟技能工程師要掌握的思維:工程思維、技術思維、産品思維。工程師要掌握的軟技能:抽象能力、分級能力、分治能力、項目管理能力。

工程師要掌握的思維:工程思維、技術思維、産品思維。

前期看到一篇阿裡人寫的一篇文章關于工程師的思維,然後自己做為工程師以及日常的工作很有感觸。以下談下自己的了解。

工程思維

軟體工程解決的是面對尤其複雜軟體時如何通過系統化的、規範的、可度量的方法控制軟體過程,讓整體可控,進而保障工程師對軟體的全局認知以及解決問題的有效性。在應用比較小或初期時一般沒差別,當應用及組織變大的時候,焦油坑、崗位牆等問題便凸顯出來。工程便可讓團隊在運作形式上達成共識,在解決問題時選擇有效工具。工程思維也是工程師差別于程式員最主要的方面。

參考:分析、設計、度量、測試、項目管理(進度、品質、風險、變更)等基礎課題。

技術思維

如果工程思維是通過機制組合個體,那技術思維則是思考如何把個體提升到極緻。技術對于IT來說是第一生産力,是工程師建構個體的起點,是以内心要認可并尊重技術。我覺得技術思維考慮兩方面,一是對技術在實際中的合理運用,這也是工程的本質;二是持續學習保持技術的深度及先進性,每個崗位對深度的了解不同,但至少要清楚每個技術的原理及邊界。

參考:技術原理、品質屬性、需求溝通、個人産力評估、持續學習。

産品思維

是從長線及全局分析需求并評估技術投入的價值,也是個體及團隊活動的指引。自從産品崗剝離出來後,崗位牆問題最突出的就變成了技術與産品的分歧。其實化解的方法就是産品崗要做好團隊的産品賦能,技術崗做好團隊的技術賦能。在思維上有一緻的溝通基礎後,再一起通過工程方法進行産品度量及有效配合完成一緻目标。

參考:戰略性、投産比、客戶為中心、業務模式。

工程師要掌握的軟技能:抽象能力、分級能力、分治能力、項目管理能力。

抽象能力

是針對事物本質實作現實與軟體的映射。如果是從0開始建構系統,一定是從資料模型開始,從E-R圖到應用API模型。對于目前核心系統是軟體包的情況,開發時多數隻需調用接口,這時也應從API層定義好各模型(顆粒度及依賴關系很關鍵),把基礎服務層做紮實。軟體包二次開發多是腳本式的開發,我個人不是很喜歡,長遠看還是要抽取軟體包最有價值的部分(成熟的業務流程及營運模式,技術一般封閉)轉換為自己的。

分級能力

這裡說分級是把抽象出來的子產品群組件進行等級排序,包括其承載的功能的重要級排序、投入的成本排序及其本身能力的排序。這樣在架構全局中元件及子產品關系的建立時就有了限制。比如交易功能運作時依賴了營運活動功能,無論從功能重要級别還是運維能力級别上都是相反的。如果屈服于省時省力,那就把生産系統置于雷區,後果就很嚴重了。

分治能力

指分而治之能力,是從全局性的考慮,将大問題拆分為小問題解決、公共問題聚合為切面方案解決。也是上面提到的依賴問題的一種解決思路,從方案階段就拆厘清楚并排序,從關鍵路徑角度一步步完成。切面方案引用了Spring的AOP的說法,把非核心的通用功能通過切面完成,減少系統的侵入性以及提升後續的擴充能力。

上面三種也是架構的主要能力。

最後一項,項目管理能力

隻有了解了項目管理才能了解周報、月報及各種彙報,目的就是透明可量化,過程可控,最終目标可預期。項目管理一邊是活有多少,另一邊是能做多少,哪一邊估算偏差大,都會導緻目标的天平失衡。對于個人來說,一定要清楚任務的工作量和個人的輸出量,做好大家的預期管理;工作過程中找到關鍵路徑,并做好風險識别,保障自己的可持續輸出。