程式維護的心理層面

喲哪桑說

軟體開發者應承擔維護自己作品的責任。從心理面來看,軟體開發者不維護自己的作品,維護就不是自己的問題,就不易讓創建軟體的開發者體認「為維護而設計」的重要性。

我也認為「軟體開發者應承擔維護自己作品的責任」,創建軟體的開發者應該對程式的 Stakeholder 負有課責性-對程式所造成的影響有說明的義務。但程式維護心理層面卻不是如學長所提的那麼簡單,它除了程式設計者的個人因素外,尚須考慮到情境因素。因此,當看到軟體開發者「未」「不」這個字,帶有強烈情感批判意味,不是客觀的說法,容易淪為不實指控,故避免使用。維護自己的作品,我常會使用一句從心理輔導專業的內人那邊,所道聽途說而耳濡目染學來的一句問語:

軟體開發者是不想維護自己的作品,還是無法維護自己的作品呢?

當我們用這個角度去思考程式維護的心理層面時,我們的身份就會從指責者變成好奇者,探索軟體開發者未維護自己作品的真正原因-到底是缺乏動機抑或是能力不足或許有人會覺得奇怪,自己寫的程式怎麼可能會沒有能力維護呢?一個常見的例子是某些開發者的工作量大到他無法負荷,以致於他沒有額外的時間維護多加在他的工作清單的那些程式,並不是他不想維護那些程式。呢;這樣就不會落入被巧妙的壞人故事所主導的陷阱當中,而造成對軟體開發者的徧見與誤解。

徧見與誤解常會造成不完全認知,這種結果往往來至心理學者 Lee Loss 所稱呼的基本歸因錯誤現象:人們習慣把他人的行為歸因於人格或態度等內在特質上,而忽視他們所處環境的重要性。把問題的責任歸咎在他人身上,是看來合理且最不花成本的做法,但它卻往往沒辦法有效地解決問題。想要真的解決軟體開發者未維護自己的作品的問題,必須要了解問題的徵結到底是軟體開發者缺乏動機還是能力不足呢。

我相信「沒有人會故意不去維護自己寫的程式而把責任推給他人」。但事出必有因,或許有時候問題是出在我們身上而自己卻不自知呀,所以我們應該多花點功夫去了解「為什麼理性而正直的開發者會令我們失望呢?」。誠如 Ming 在〈專案成本估算之軟體價格的迷思〉中所回應的

所有的問題都是管理性問題,完全跟技術無關。不幸的,這些都是普遍存在,國內外皆然。好的設計很重要,重複使用元件很重要,但是沒有管理,怎麼推動「好的設計」、「確保重複使用元件」?所以,身為管理者要負起全部的責任。沒有好的管理,就算制定良好的工作流程、作業流程,僅有規劃、紙上作業,沒有執行與監督,一切都是空談、作夢。

好的管理很重要,然而,什麼是好的管理呢?我認為必須滿足下列基本原則:認清行為者的心理層面,為他們的良好行為清除障礙、澄清疑慮;當行為者缺乏動機時予以激勵,使他們有足夠的行動意願與動機;當行為者行動的能力不足且難以啟齒時,讓他們感到安全並想辦法讓他們容易做到,徵詢他們的意見但不誘導他們遵循我們提供的解決方案(代表我們重視他的意見而不是一切照我們說的做)。或許可對軟體開發者未維護自己作品,為解決沒有人願意維護軟體的困境,提供不一樣的思考方向。

相關閱讀:

Powered by ScribeFire.

Please follow and like us:
分類: 問題解決, 心理, 溝通, 生活感觸, 管理, 軟體開發。這篇內容的永久連結

在〈程式維護的心理層面〉中有 3 則留言

  1. Ming表示:

    喲哪桑是站在比較偏技術層面看問題,同人是站在比較偏管理層面思考問題。兩人的看法並不是處於天平的兩端,只是程度上的差異。就技術層面來看,我也認同維護由當初的設計、開發人員維護是可以有效降低維護成本,然而基於種種客觀層面上的因素,是很難完全達成此一目標。因此,透過管理手段來降低軟體維護成本,才是根本性的解決之道。

    同人點出一個在管理上很重要的課題:如何有效激勵開發人員在軟體設計、開發之際,就思考維護性問題。身為軟體從業人員都清楚,版本控制很重要,然而事實上,很多軟體的開發都還是處於土法煉鋼,到底問題是出在哪?依舊是管理人員並沒有有效的監督與控制開發人員的行為。這個現象並不是只發生在軟體業,各種行業都一樣,只是在軟體業上更形嚴重,且軟體本身不是開發完上線使用就沒事,產業型態與一般產品不同。

    若是能在軟體設計、開發的過程中,透過某些機制將相關的「知識」保存下來,勢必可以降低維護面上的困難。這些都是屬於方法論,牽扯到的也都是管理性問題。我經常跟同事講,技術永遠不會是個問題,都可以被解決的,但是管理問題卻是最難克服的,因為一旦涉及人性的問題,複雜程度就不是單純的coding或design pattern那麼簡單。

    另外一個寫程式的人沒能力維護自己的程式的原因在於,隨著時間的累積,參與的專案越多,在手邊的專案正在如火如荼的進行下,根本無力去維護以前的程式。就跟同人所說的,並不是他不願意,而是心有餘而力不足。更多的情況是,一個好用、有能力的人,老闆加諸的工作量只會多不會少,且老闆多半是重視「正在開發的專案」,也因此這樣的人通常都是被放在戰鬥模式,也就是開發模式,至於維護模式,就交給其他人吧!:-)

  2. 喲哪桑表示:

    岔題一下, 我以為我也是從管理工程師的角度下手, 不是技術層面啊! 其實, 我已被人笑我的技術含量愈來愈低了, 有人說我從技術面分析, 我很高興呀! 因此我寫了篇為了維護而設計, 技術含量高一些, 還請同人與Ming指教.

    近來, Web Company 很蓬勃, 我也想提醒這些公司, 他們得要更重視網站一直run下去, 比之軟體公司, 維護對web company會是更重要的!

  3. 自動引用通知: 同人的生活派對 » 不要被「我」給騙了

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。