Bob大叔提出程式設計師宣言

infoq發表於2015-12-03

  考慮到這一技術的重要性,和其他職業擁有的一樣,Uncle Bob向軟體程式設計師提議了一種宣言。

  一年前,Robert C. Martin,也就是Uncle Bob意識到軟體程式設計師的重要性,他寫道:

我們統治了世界。…

沒有一件發生在我們社會當中的事情離得開軟體。沒有…

如果沒有了軟體:電話不響。汽車不啟動。飛機不起飛。炸彈不爆炸。烤箱不烤食物。車庫門不開。錢不轉手。電不產生。並且我們找不到去商店的路。…

  Martin繼續觀察到,在社會作出重大貢獻的程式設計師應負責和遵循職業道德,來為了社會的美好而運用他們所擁有的權力。程式設計師應該決定什麼是他們的責任,並且這些責任政府或僱主不應該強加給他們。另外他受Order of the Engineer的啟發而勾勒出一套職業道德的藍圖。一年後,Martin重寫了道德的問題,這一次他寫了更多關於程式碼的質量,提出了每一個成員都應該採用來“保護和維護這個行業的榮譽”的The Programmer’s Oath程式設計師宣言:

  1. 我將不會生成有害的程式碼。
  2. 我生成的程式碼將會永遠是我最好的作品。我將不會故意釋出在行為或結構上有缺陷的程式碼。
  3. 伴隨每一次釋出,我會生成一個快速、肯定以及可重複的證據讓程式碼的每個元素都按它應該的方式工作。
  4. 我將做到經常、微小地釋出,這樣就不妨礙別人的進步。
  5. 我將勇敢地和不懈地完善程式碼,不放過任何機會。我將永遠不會讓程式碼變得更糟。
  6. 我將盡我所能來保持自己的生產率,和其他人相比儘可能的高。我將不會做任何會降低生產率的事。
  7. 我將時刻確保別人能代替我,並且我能代替他們。
  8. 我將生成的判斷在幅度和精度上是可信的。我不會在不確定的時候作出承諾。
  9. 我將永遠不會停止學習及改進我的技術。

  Martin的提議在Twitter上得到了各式各樣的反響,從:

@klenkes74:我的假設是如果我嚴格根據那些規定生活,我的僱主會解僱我。

@QuiteVague:大多數程式設計師不能夠對此作出承諾——質量和業務需求之間的平衡並不掌握在他們的手上。…我已經把這些人中的每一個都提升到了各種各樣的管理者當中。然後,正如我所說的,你贏得了一些,你失去了一些。:)

@DamienPetrilli: 非常的不切實際,完全不適用於現實世界中的大多數人。

@asthasr: #9是唯一有效的。其他的都是不可能實現的(“證據”)或者依靠我們不能控制的外部因素。

@sleepyfox: 由於天生的不確定性,我認為#8是不可能維持的。一個判斷最好是一個猜測而不是一個承諾。

  到:

@brianvhughes:在最好的情況下,#5 是有希望的。#8 是不可行的。 但是,這也不全是不好的。

@simonbrown: “我將永遠不會停止學習及改進我的技術。”<- 對!

@Khris_Fernandez: 我會樂意從現在開始我們在我從事的每一個專案上都簽下這個!可悲的是,有些事永遠不會做。不管怎樣,謝謝Bob。

@GGrell:我笑了,我哭了,我歡喜。這就是我每天爭取寫軟體的一部分真實寫照。

  應答那些不贊同宣誓需求的人,Martin認為軟體工程師應具備道德責任,並且像醫生、律師和工程師一樣,他們應該擁有一條宣言,這條宣言是“教條一般的定義”。

  在相同的筆記上,Rugged Software的創始人已經寫了幾年The Rugged Manifesto,一系列程式設計師被邀請來遵守的原則:

我很堅固,更重要的是,我的程式碼很堅固。

我知道軟體已經成為當今世界的重要基石。

我知道這種基石角色隨之而來的就是重大的責任。

我知道我的程式碼會以我沒有預期到的方式使用,會以與其當初設計目標不同的方式使用,使用期限也會超出最初預期。

我知道我的程式碼會被充滿才華而有毅力的敵對者攻擊,他們會威脅我們的物質世界、經濟執行和國家安全。

我知道這些事實,因此我選擇變得堅固。

我很堅固,因為我拒絕成為漏洞和弱點的來源。

我很堅固,因為我的程式碼能夠面對這些挑戰,並不受它們的影響而繼續執行。

我很堅固,不是因為這樣做簡單,而是因為這是必然之選,而且我已準備好面臨挑戰。

  隨著起誓與否,是否遵從宣言的每句話,可能每個人都同意軟體工程師旨在編寫出好的軟體。那意味著什麼以及如何實現它則是另一個故事。

  英文原文:Uncle Bob Proposes an Oath to Programmers

相關文章