在Meduim網站最近的一篇博文中,Christiaan Verwijs提出了授予軟件開發人員的權力是否應該以道德行為準則為基礎的疑問。Verwijs在標題為《軟件開發人員的道德規范?》一文中解釋說,軟件開發人員對世界具有重大影響,并且他們具有“保護隱私、開發安全應用程序以及通過構建產品以促進產品多樣性的責任。” Verwijs繼續闡述說:
“軟件開發者”是一種職業,可與律師或醫生相媲美。任何一門職業所具備的典型特征就是它會有自己的道德準則,就好比醫生遵循的希波克拉底誓言或是一些工程師所遵循的阿基米德誓言一樣。
2015年大眾公司的丑聞向我們展示了一個倫理妥協的極端案例,最終導致一名工程師在今年8月被判刑。這名工程師通過“在尾氣排放控制模塊中設計巧妙且隱蔽的算法,以偵測汽車何時進行排放測試”,操控實際的尾氣排放測試結果。
大眾公司丑聞發生后,我們與IEEE Spectrum雜志進行了溝通。以色列內蓋夫Gurion大學的商業倫理學教授Yotam Lurie博士評論說:
大眾軟件工程師作為一名專家,竟忽視了自己的信托責任,這著實令人震驚。為確保安全性,即使效率或者經濟性并不高,但專家在整個組織內部是具有半監管責任的,在該起事件中,具體指的是環境安全。
在今年早些時候的采訪中,Scrum.org的產品負責人Dave West對可能導致道德歧義的情況進行了評論:
如果你被迫要求按時完成任務,或者當事情關乎你個人的生計,你就很難定奪孰對孰錯了。道德準則可提供環境和框架,以支持專業人士。我很希望能夠看到一個標準化的行業道德準則。而我們自己的道德準則是不斷完成提升航天器類軟件專業性的使命。
Robert C. Martin(Bob叔叔)在9月份向InfoQ的Ben Linders發表了他自己關于程序員誓言的提議,其中涉及到9個關于工藝、透明度和反饋環的聲明。該聲明首先提到,“我不會編寫不利的程序代碼”,馬丁繼續解釋說:
軟件開發者可對用戶造成兩種不利。 第一個是最明顯的,就是開發的軟件可能會出現運行錯誤。 我們應承諾盡最大努力提供不會出現運行錯誤的軟件,而這似乎也是合乎情理的。
進而,Martin繼續闡述構建軟件的職業責任,即軟件結構設計應將后期是否能夠對該軟件進行靈活調整考慮在內。
程序員時常會對用戶產生的第二種不利影響則體現在軟件的結構設計上。用戶通常都希望一款軟件可以進行靈活的調整或更改,畢竟軟件應體現出靈活性,用戶需要他們的軟件系統足以跟得上社會和技術的快速發展變化,所以承諾盡全力維護軟件的靈活性,這應當不算過分。
Lurie在其2015年發表的題為“軟件工程師的職業道德:道德框架”的文章中給出了一系列可能會在SDLC各階段均涉及到的道德問題, Lurie解釋了軟件開發中對道德思考的需求:
在該條件下,軟件開發者(專家)和終端用戶(客戶)之間將存在某種權力關系,這必然需要基于道德制衡使其能夠正規化,以確保濫用現象的發生...
Lurie進一步解釋說,有些行為通常被認為是單純的技術活動,這些應給予倫理道德的思考:
更具體地說,這些看起來貌似屬于軟件包的關鍵技術特性,如質量、可用性、可靠性、精確性、適用性和安全性,實際上決定了該產品具有什么功能以及如何為客戶提供服務的問題。軟件產品的這些關鍵技術特性實則具有重要的道德影響。
在ThoughtWorks近期的一篇關于構建軟件、技術原理的“核心價值和實踐”博文中,Evan Bottcher分享了“軟件構建工藝”中所反映的“基礎軟件工程價值”的見解。
Bottcher寫到:
價值觀是信念的一種描述,如果這些屬性存在,我們將能夠構建軟件,并且不僅可滿足用戶和客戶的需求,而且有信心在短期或長期時間段內順應快速的軟件變更。
Bottcher以XP的價值觀和原則為基礎,提出了快速反饋、簡潔、可重復性和零冗余代碼四個核心價值。 這些反過來還將支持8個核心工程實踐:
設計簡單代碼集體所有權結對編程重構測試驅動設計持續集成重復性任務的自動化垂直切片Bottcher提到,這些價值觀和原則應該適用于所有可交付的成果,包括MVP在內。
當一款軟件真正面臨被拋棄時,是應該做出權衡的。 然而,這些均為一些核心價值觀以及實踐做法,即便是短期交付的成果,仍存在不確定性。 放棄采納這些實踐做法將降低你的效率,即使在短期內也是一樣。
Martin還強調了不要向程序員誓言相關的一些做法妥協的重要性。
每個程序員都有被過度結構化和混亂的代碼嚴重阻礙的經歷。這種代碼寫起來看似簡單,但卻使系統處于一個令每個人都低效的狀態,其他人效率越低,他們便會覺得采納捷徑的壓力越大,這使得系統處于不斷惡化的狀態。 請重復我的話:“若要走得快,首先需做得好”
Verwijs所描述的軟件開發人員的道德規范,圍繞以用戶為中心、開發人員與團隊間關系提出了道德規范的相關建議,以及與故障和復雜性、透明度、質量和用于保護用戶安全和隱私的快速反饋環的誠信度問題。Verwijs的道德規范是通過實踐來呈現的。 他解釋了采用單一代碼的困難:
這些道德規范涉及的其中一個問題是,僅當絕大多數開發人員接受這些道德規范并且它們成為教育培訓的一部分以后,才會產生效果。我們當然還未達到該程度。
在大眾丑聞這個事件里,被判刑的工程師被要求服刑40個月,并支付20萬美元的罰金,雖然這名工程師并沒有策劃該起丑聞,但檢方的備忘錄指出:
該名工程師明確自己所作所為是錯誤的,但他通過安慰自己說,自己僅僅是一個工程師,主要工作就是不管可行與否,都要提出切實可靠的解決方案,以此來降低自己由于詐騙行為產生的道德負罪感。
查看英文原文:Ethics, Values and Practices for Software Professionals