Bob大叔提出程序員宣言
考慮到這一技術的重要性,和其他職業擁有的一樣,Uncle Bob向軟件程序員提議了一種宣言。
一年前,Robert C. Martin以及a.k.a. Uncle Bob 意識到軟件程序員的重要性 ,他們寫道:
我們統治了世界。…
沒有 一件發生在我們社會當中的事情離得開軟件。 沒有 …
如果沒有了軟件:電話不響。汽車不啟動。飛機不起飛。炸彈不爆炸。烤箱不烤食物。車庫門不開。錢不轉手。電不產生。并且我們找不到去商店的路。…
Martin繼續觀察到,在社會作出重大貢獻的程序員應負責和遵循職業道德,來為了社會的美好而運用他們所擁有的權力。程序員應該決定什么是他們的責任,并且這些責任政府或雇主不應該強加給他們。另外他受 Order of the Engineer 的啟發而勾勒出一套職業道德的藍圖。一年后,Martin重寫了道德的問題,這一次他寫了更多關于代碼的質量,提出了每一個成員都應該采用來“保護和維護這個行業的榮譽”的 The Programmer’s Oath 程序員宣言:
- 我將不會生成有害的代碼。
- 我生成的代碼將會永遠是我最好的作品。我將不會故意發布在行為或結構上有缺陷的代碼。
- 伴隨每一次發布,我會生成一個快速、肯定以及可重復的證據讓代碼的每個元素都按它應該的方式工作。
- 我將做到經常、微小地發布,這樣就不妨礙別人的進步。
- 我將勇敢地和不懈地完善代碼,不放過任何機會。我將永遠不會讓代碼變得更糟。
- 我將盡我所能來保持自己的生產率,和其他人相比盡可能的高。我將不會做任何會降低生產率的事。
- 我將時刻確保別人能代替我,并且我能代替他們。
- 我將生成的判斷在幅度和精度上是可信的。我不會在不確定的時候作出承諾。
- 我將永遠不會停止學習及改進我的技術。
Martin的提議在推ter上得到了各式各樣的反響,從:
? @ klenkes74 :我的假設是如果我嚴格根據那些規定生活,我的雇主會解雇我。
? @ QuiteVague : 大多數程序員不能夠對此作出承諾——質量和業務需求之間的平衡并不掌握在他們的手上。…我已經把這些人中的每一個都提升到了各種各樣的管理者當中。然后,正如我所說的,你贏得了一些,你失去了一些。:)
@ DamienPetrilli: 非常的不切實際,完全不適用于現實世界中的大多數人。
@ asthasr : #9是唯一有效的。其他的都是不可能實現的(“證據”)或者依靠我們不能控制的外部因素。
@ sleepyfox : 由于天生的不確定性,我認為#8是不可能維持的。一個判斷最好是一個猜測而不是一個承諾。
到:
@ brianvhughes : 在最好的情況下,#5 是有希望的。#8 是不可行的。 但是,這也不全是不好的。
@ simonbrown : “我將永遠不會停止學習及改進我的技術。”<- 對!
@ Khris_Fernandez : 我會樂意從現在開始我們在我從事的每一個項目上都簽下這個!可悲的是,有些事永遠不會做。不管怎樣,謝謝Bob。
@ GGrell : 我笑了,我哭了,我歡喜。這就是我每天爭取寫軟件的一部分真實寫照。
應答那些不贊同宣誓需求的人,馬丁認為軟件工程師應具備道德責任,并且像醫生、律師和工程師一樣,他們應該擁有一條宣言,這條宣言是“教條一般的定義”。
在相同的筆記上,Rugged Software的創始人已經寫了幾年 The Rugged Manifesto ,一系列程序員被邀請來遵守的原則:
我很堅固,更重要的是,我的代碼很堅固。
我知道軟件已經成為當今世界的重要基石。
我知道這種基石角色隨之而來的就是重大的責任。
我知道我的代碼會以我沒有預期到的方式使用,會以與其當初設計目標不同的方式使用,使用期限也會超出最初預期。
我知道我的代碼會被充滿才華而有毅力的敵對者攻擊,他們會威脅我們的物質世界、經濟運行和國家安全。
我知道這些事實,因此我選擇變得堅固。
我很堅固,因為我拒絕成為漏洞和弱點的來源。
我很堅固,因為我的代碼能夠面對這些挑戰,并不受它們的影響而繼續運行。
我很堅固,不是因為這樣做簡單,而是因為這是必然之選,而且我已準備好面臨挑戰。
隨著起誓與否,是否遵從宣言的每句話,可能每個人都同意軟件工程師旨在編寫出好的軟件。那意味著什么以及如何實現它則是另一個故事。
查看英文原文: Uncle Bob Proposes an Oath to Programmers