軟體工程師 – 成長的 10 個階段
文/Gelis Wu
前言
先前,我在 Study4 小聚 #6 分享的一場關於軟體工程師 & 架構設計的養成之路,在該議程中,我分享了軟體工程師的 10 個階段(你的階段如有雷同、應該是…純屬巧合。XDDD)
哪 10 個階段?
我將軟體工程師的成長依序分為 10 個成長階段,因為隨著技能的提升,你該擴充的不會只是只有軟體開發技術,溝通與協作能力尤其重要,也像是『康威定律』中所提到的,你的軟件的設計 & 或系統設計本質上反映了企業的組織機構。系統各個模塊間的介面的設計,也反映了企業各個部門之間的信息流動和合作方式,些技能再進行軟體架構設計時也息息相關,團隊在進行模組設計時需要頻繁的溝通,這些、都是是否能將軟體做好的關鍵因素。
如 Logo 圖片,我依序說明每個階段的成長歷程。
- 初始開發階段、熟悉 Programming / Developer 階段(PM / PO 給規格後加以實作出來)
- 此階段代表已懂得透過重構來讓程式碼有基本的可維護性、已能熟用 DRY ( Don’t Repeat Yourself)
- 這裡的專案收尾代表對於專案開發已經有某些程度的認知、掌握度。我所提的掌握度在於了解『技術債』的產生緣由 與 危害,在 Programming / Devloper 層面懂得透過 SOLID / Design Patterns 解決問題 並 自我成長。
- 我這裡用『紀錄』代表能運用所學 + 將使用者需求運用〔邏輯思考〕與〔抽象化〕轉化為程式碼 + 並能自我成長將經驗保存下來。我認為這是跨越只是(寫程式/實作)進入另一個門檻的重要經驗與歷練。
- 此階段含括上面所有技能,並能夠與〔團隊〕和〔客戶〕協作、並產生出〔產品〕。
- 結合以上、此階段已知流程與規範嚴重影響團隊的協作,這裡還能洞悉流程改造 + 傳承流程與經驗。
- 同樣結合上述條件,這裡還能〔跨團隊〕或〔跨公司〕進行流程的改造與升級。因為已經洞悉軟體開發生命週期的大小事情、熟悉每一個階段會產生的問題 與 如何修正與改造。
- 我這裡的獨立作業不是工作上的獨立作業,而是代表可獨立的對團隊或公司的流程或規範進行指導、清楚缺失 與 問題發生的原因 + 如何改善等。
- 為什麼我這裡用〔專家〕來表示更進一步的階段?因為顧問也不是什麼都懂,專家更趨近於各領域的專業程度都有一定且非常深厚的功力與基礎表現,此人經驗非常老道,軟體開發問題幾乎無所不知、無所不曉。
- 這是我定義的最高等級、也是所謂的工匠等級,此人總和上述所有表現,並能帶領公司或團隊前往心中的目標、隨心所欲、帶領團隊軟體開發就像行雲流水般自然、看似自然,但其實每一件事情都有規律地進行,在我心目中,只有 Ruddy 老師達到這樣的等級。
我對我自己的要求比較高,其實我覺得我對於稱職的顧問還有一點努力的空間,所以我覺得我只到 7-8 的中間階段,且還在努力中,這是我給我自己打的分數!
給有緣看到此篇文章的朋友們做個參考~
謎之音:我看我要練到第 9 層再過個 10 年不知有沒有辦法?? 哈哈哈哈哈 等我到 60 歲不知道能否達到工匠等級….?….
References:
(1). 先前在 Study4 小聚的分享[軟體架構設計的技術養成之路]我的實際投影片
瀏覽 8,701 次