人類對敏捷開發與軟體工程的三種認知與行為
2017.6.24, 深圳, Ken Fang
在這麼多年的敏捷開發、軟體工程的職場生涯中, 收穫最多的是, 能與相當多不同產品型態的團隊、相當多不同個性的人共同的合作與交流。
而這其中讓我最感興趣的一點就是:每個人對敏捷開發、軟體工程的認知與將敏捷開發、軟體工程應用在實際產品開發中的實際的情況。
@ A 型別的人:學習敏捷開發、軟體工程的意願很高, 並且悟性也很高;非常的清楚敏捷開發、軟體工程背後的思路, 更可貴的是, 自身能深度的去思考, 如何能運用敏捷開發、軟體工程去解決自身或團隊在產品開發上的種種的問題。這型別的人在個性上共同的特徵是:謙卑、務實、專注、熱愛追求產品與團隊的成功。
@ B 型別的人:不論學什麼敏捷開發, 都還是要將自己所熟悉的那一套, 往敏捷開發裡頭套;每天早上都開站立會,但站立會卻淪為冗長的工作進度彙報與工作上的交相指責。有敏捷看板, 但產品開發的模式, 卻是大瀑布。審計各式各樣的文件, 卻沒有協作。只有文件卻沒有設計。更別提每日風險管理⋯等等。這型別的人個性上的特徵是:習慣在既有的城堡、框框裡, 用自己所完全熟悉的方法, 做自己所完全熟悉的事物。
毫無疑問的, 這型別的人, 即使是站了一百年的站立會議, 依舊無法理解高效的產品開發與團隊應變為何物? 也沒法明白, 為何產品的程式碼越寫越多時, 莫名其妙的缺陷也就越來越多? 版本交付的日期與質量也越來越不可控? 當然, 更無法區分做產品與做事之間的差別了。
@ C 型別的人:完全不認同、不相信這世上有敏捷開發、軟體工程這回事。只認同開發軟體就是寫程式碼, 今天白天程式碼搞不定, 晚上通宵搞, 晚上通宵再搞不定, 明天再搞, 總有一天能搞定⋯什麼迭代計劃, 每日風險管理, 按時交付, 分層隔離設計, 單元測試⋯都是廢話。這型別的人個性上的特徵就是:有強烈的主觀意識與自傲。所以, 世界在他們的眼中,永遠是不會變的;世界永遠是他們自己所認知的那個樣子。
C 型別的人, 所面臨的處境與 B 型別的人是類似的; 也是沒法明白, 為何產品的程式碼越寫越多時, 莫名其妙的缺陷也就越來越多? 版本交付的日期與質量也越來越不可控?
C 型別的人, 永遠搞不明白的一件事是: 為何當年開發初期產品的那個神奇且牛逼的大牛, 已不復見了?!
我概略的經驗值(不是精準的科學資料):B 型與C 型的人約佔了 85%, 而 A 型的人約佔了 15%。
所以, 我想, 在敏捷開發、軟體工程的職場生涯中, 除了要時時的去學習新的程式語言、軟體架構、測試技術以外, 學習與瞭解人類的 “認知” , 也是一項必要且有趣的課程。
因為, 當了解了人類的 “認知” , 我們就能從團隊成員的人格特質, 去設計適合團隊成員人格特質的敏捷開發、軟體工程的實踐, 而不僅僅只是從產品的角度, 去設計敏捷開發、軟體工程的實踐。
“ 當了解了人類的認知, 我們將更能使敏捷開發、軟體工程、產品與人, 做更緊密的結合, 而使得人類的行為能以更有價值、更高效的形式, 體現在產品的開發上; 這就是我們一直在努力的方向⋯”