1. 程式人生 > >《構建之法》(十二)

《構建之法》(十二)

開發 org acm 舉例 作者 程序員 並不是 與或 記錄

軟件工程師的職業道德

軟件工程師的誓言(一)

這節 內容主要說一說作為軟件工程師,應該遵守自己的行業守則。

程序本身沒有倫理和職業道德, 但是程序員和軟件企業要有。書上 舉例了好些例子都說明了這一點。每個行業都有自己要遵守的職業規則。

正如書上所說,在醫學上有著名的希波克拉底誓言,我們還知道,學生在學校入團入黨也宣誓,法官警察入職也宣讀誓言等等一樣,軟件工程師有類似的誓言。如 - IEEE/ACM 在前幾年就發布了 Software Engineering Code of Ethics and Professional Practice。 現在已經是5.2 版。

為了對軟件工程師這一職業有更深的認識,下面摘抄一遍翻譯:

目前,計算機已經成為推動經濟、工業、政治、醫療、教育、娛樂和整個社會發展的核心技術。而在這當中,軟件工程師通過親身參與或者教授軟件系統的分析、說明、設計、開發、授權、維護和測試等實踐工作,為社會做出了巨大貢獻。正是由於他們在軟件系統開發中起到的重要作用,軟件工程師有很大的機會去造福或者危害社會,並有能力去促使或影響他人造福或者危害社會。為了盡可能確保這些影響是有利於社會的,軟件工程師必須承諾自己所從事的職業能造福社會, 並且能夠得到大眾認可尊重。這一承諾要求軟件工程師必須遵守下列《職業道德規範和實踐標準》。

這一《規範》包括了有關職業軟件工程師的行為和決斷的八項準則,涉及軟件工程方面的實際工作者、教育工作者、經理、主管、決策制定者以及相關的受訓人員和學生。這些準則指出了個人、小組和團體參與軟件工程的道德責任關系,以及這些關系中的主要責任。每一條原則都是對這些關系中的責任做出的說明。這些責任覆蓋了軟件工程師的人性,他們對那些受軟件工程師工作影響的人們的特別關照,以及軟件工程實踐的獨特因素。《規範》規定任何已經成為或者想成為軟件工程師的人必須遵守這些原則。

本規範的每個部分都不應該被斷章取義, 孤立使用去判斷人們有意或無意犯下的錯誤。因此這些原則和條款並不是非常完善詳盡的。在實際使用過程中,不應當將條款中的可接受部分和不可接受部分分開來講。同時,《規範》也不是一個簡單的道德算法,可以產生所有的道德上的決定。在某些情況下,一些標準可能會相互抵觸或者與其他地方的標準相互抵觸。在這種情況下,就要求軟件工程師能夠運用自己的道德判斷能力,在特定的情況下做出最符合《規範》的行為。

解決道德沖突最好的方法是對基本原則進行全面的思考,而不是去盲目的依靠一些具體條目。這些原則應當會促使軟件工程師們去更廣泛的思考哪些人是他們工作的受眾,去思考他和他的同事是否給予其他人足夠的尊重,去思考對他們工作有足夠了解的公眾會如何看待他們的決定,去思考他們的決定如何影響最小,以及去思考他們的行為是否符合一名優秀的專業軟件工程師的標準。在所有這些思考中,對公眾健康、安全與福利的關註是最主要的。也就是說,“公眾利益”是《規範》的核心。

由於軟件工程這一行業的多變性與苛刻性,它需要一份相關的規範去應對自身不斷出現的新情況。《規範》記錄了這個行業的道德立場與標準。因此即使是對於這樣普遍性的要求,《規範》依然為軟件工程師以及他們的經理提供了支持。《規範》無論是對團隊中的個人還是團隊本身來說都提供了一個道德基礎。《規範》也規定了那些對軟件工程師或其團隊來說道德上不正當的要求。

這份《規範》不僅僅能用來對那些遭到質疑的行為的性質進行判斷,它還具有非常重要的教育功能。由於這份《規範》表達了這個行業對於職業道德的一致認識,因此它是教育公眾和那些有抱負的專業人員有關軟件工程師道德責任的一種工具。

《構建之法》(十二)