軟件開發的人文關懷

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

 幾年前,我從溫伯格的《技術領導之路》中學到一點:技術人員往往更喜歡和機器打交道,因為他們“認為”自己更適合和機器打交道;但是,優秀的技術人員必須(也必然)具備好的溝通能力。所以,溫伯格鼓勵各位技術人員多加練習和其他人打交道的能力。溫伯格的這個觀點我是非常贊成的,好的技術人員一定需要“勇敢”面對他人,不能被“自實現的預言”局限在機器的世界里。

  不過我也發現,“技術人員(當然我主要說的是軟件開發人員)不適合跟人打交道”的負面影響不止于此,它還成了一種刻板印象(stereotype),進而影響到開發團隊之外的人。這個問題其實很嚴重,它會導致其他人和開發人員溝通時自覺或者不自覺地切換到“和機器溝通”的模式上來,比如單純依賴郵件而避免見面溝通,比如“你只管這么做出來就好了,別管我用來干什么”。以面向機器的模式來與人溝通,結果往往是完整的項目(而不是狹義的“軟件項目”)割裂開來,皆不歡喜。

  這種情況我一直在思考,究其原因,一方面是組織不夠完善,另一方面,軟件開發也缺少人文關懷——軟件可以沒有活力,而軟件開發卻不能沒有活力;程序可以像機器一樣,程序員卻不能像機器一樣。要改變這種狀態,就應當增添更多的人文關懷(這里要多解釋一點,“人文”其實也可以叫“人性”,它與“文”并沒有太多關系,只是“人性主義”約定俗成翻譯成了“人文主義”而已),把開發人員當成活生生的人,而不是視為程序或者工具。

  當然,做到這一點并不容易,因為許多人印象里,軟件開發人員就是“悶瓜”(充其量是“悶騷”),不好捉摸也不好打交道,那么干脆把他們當成工具來對待好了,“人性化”這樣高難度的處理還是免談為妙。但是事情并沒有這么簡單,因為不善于溝通,并不意味著開發人員不在乎人文關懷,相反,絕大多數人內心其實是愿意接受而且認可這些關懷的。只是因為許多開發人員不善于表達,因此并沒有太多資料研究和論述軟件開發中的人文關懷(或者開發人員真正在乎的人文關懷),所以這個話題值得一說。

  按照我的經驗,以下幾個方面都是軟件開發人員比較在乎,而往往被其他人所忽視的,所以要增加軟件開發的人文關懷,不妨多注意。

  第一,開發環境。這里說的“開發環境”不是指的IDE,而是開發人員所使用的軟硬件。這類設備是大多數開發人員唯一的生產工具,它們的好壞直接決定了開發人員的生產效率。可惜,許多人似乎并不理解這一點,很多公司只給開發人員配備普通的辦公電腦,于是開發人員也只能貢獻出普通辦公人員水平的程序。目前來看,硬件上有比較大的內存(8G以上),多臺顯示器(最好其中一臺可以很方便地旋轉),有用起來順手的鍵盤鼠標(這點非常重要),軟件上有無障礙訪問Google的線路,健全開放的代碼庫等等,應該是必須的配備。提供這些條件,一方面可以切實提高工作效率,另一方面,可以大大改善開發人員工作的心情。后一點看起來無關緊要,卻體現出對開發人員的尊重,其影響甚至超過前一點。

  第二,內部交流。我見過許多開發人員,即便是與旁邊或者對面的同事交流,也不愿意說話,而喜歡在IM上打字,這樣的效率非常低,更厲害的是造成隔膜——上班時間都沒話說,下班時間就更沒話說了,想要形成有凝聚力、配合默契的團隊,就始終只能是美好的愿望了。所以,日常工作中一定要鼓勵面對面的交流,(尤其是多人參與的討論,可以專門安排地方交流),以逐漸形成面對面交流的行為習慣。不少開發人員即便自己比較悶,內心也不排斥甚至渴望活躍熱烈的工作氣氛。我曾經遇到過一名水平不錯的程序員,他雖然不擅言辭,卻不喜歡大公司內“死氣沉沉”的技術部,更愿意呆在人人都愿意說話,人人有話說的小團隊。現在,我們部門的開發人員經常會為了一些問題三五成群地交流,并不影響其他人的工作,這種氣氛還很受大家喜歡。這些例子都說明,對開發人員而言,當面對話其實是非常必要也非常合適的交流方式。

  第三,工作意義。我曾說,程序員職業素養的體現之一就是對業務的了解。現實中,確實有不少一些程序員對業務不夠了解,不過程序員對業務沒有足夠的熱情只是一方面原因,另一方面,業務部門不愿意讓程序員詳細了解也是常見的情況。許多公司的業務部門需要開發力量時,既不描述項目的背景,也不介紹項目的意義,只生硬地扔過來幾份文檔(而且很多是粗制濫造的文檔),就完成了對接。究其原因,有時候是這些人將程序員視作簡單的“碼農”,認為他們不需要了解業務,只需要寫代碼即可;也有些時候是因為程序員思維比較嚴謹,遵守邏輯,而不少業務部門的人缺乏這類訓練,表達想法和需求時如不夠嚴謹細致,更習慣“看一步算一步”的野路子。前一種情況是態度上的不尊重,后一種則是能力上的欠缺(或懶惰)。但無論是哪種情況,都會給開發人員造成非常不好的影響,最終結果就是項目的支離破碎,大家都龜縮在自己的地盤上,“鐵路公安,各管一段”。其實按照我的經驗,絕大多數開發人員并不排斥理解自己所開發的軟件的實際應用和意義,以此為基礎,大多數人甚至有興趣去提出改進方案,這其實是非常好的狀態,其前提是,需要為給程序員提供足夠多的空間和機會去理解自己工作的意義,而不僅僅是告訴他們“你只管這么做就好了,別問我為什么這么做”。

  第四,個人成長。“一個人要怎樣才愿意呆在一家公司?”一位前輩告訴我的是:如果這個人覺得公司有前途,自己也有前途,就會呆下來。這個答案我非常認可。但是在實際工作中,后一個“有前途”往往被忽略了。在軟件開發中這個問題更嚴重。一方面,開發人員經常被視為生產代碼的機器,大家只關注他提交的程序,而不關注他是如何提交程序的,在工作中有什么收獲;另一方面,很多開發人員對于前途常有持續的焦慮,又得不到解決。常見的結果就是開發任務顯得冷冰冰、硬邦邦,開發人員也感覺自己做的都是簡單重復勞動,產生倦意甚至抗拒情緒(我知道許多人會說,要想成為一名好的開發人員,就應當在簡單重復勞動中精益求精。這個道理確實沒錯,但也需要有合適的切入點,換句話說,應當讓開發人員認可精益求精的價值,并真切體會到它帶來的好處)。其實,有許多開發人員對自己的未來是有所打算的,比如有些人可能希望更了解業務,有些人希望更深入鉆研技術。技術團隊的領導平時應當能抽時間了解這些設想(如果能加以建議或指點就更好了),在安排新工作時有所照顧和側重,這樣,開發人員就可以感覺到自己的成長,覺得自己的工作是有前途的,工作起來也更有積極性。

  許多年前我讀到董樂山先生翻譯的《西方人文主義傳統》,心里從此深深打上了“人文主義”的烙印(也由此知道了“人文主義”其實和“文”沒什么關系)。經過這些年來的工作和思考,我又認定軟件開發和其它工作并沒有迥異的差別,既然其它行業可以提倡人文關懷,引入更多的人性化因素,軟件開發也可以這么做。因為軟件開發的特殊性,找到開發人員認可的“人文關懷”可能難度更大一些,但并非不可能,而且相當有意義。


Yurii 2013-06-08 08:54:19

[新一篇] 忠告:不要在愚蠢時間寫代碼

[舊一篇] 世間再無喬布斯
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表