无我编程的10条诫律最早出现在 1971 年 Gerald Weinberg 出版的《程序开发心理学》中。后由Stack Overflow网站的联合创始人 Jeff Atwood 在其2006年5月9日的博文《无我编程的10条诫律》中再次列出。
The Ten Commandments of Egoless Programming https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/
Jeff Atwood 在其2006年5月12日的博文《无我编程:你的工作不代表你》中,引用 Johanna Rothman的描述,解释了无我编程的由来。
Egoless Programming: You Are Not Your Job https://blog.codinghorror.com/egoless-programming-you-are-not-your-job/
无我编程发生在开发阶段,表现为技术团队经常通过同级评审的方式来发现软件中的缺陷。目的是让所有人(包括作者)都参与寻找缺陷,而不是证明软件产品里没有缺陷。人们会交换各自手上的代码,相互进行评审,并且大家都有这样的共识:代码的原始作者会犯错误,而作为评审者,他们会找出这些错误。最后的结果是,每个人都从自己的错误以及别人的错误里有所长进。这就是无我编程(egoless programming)的由来。不管我的工作做得“完美”还是“有欠缺”,“我”本人并不对正在开发中的产品负责。“我”的价值体现在尽心尽职,以及从错误中学习而付出的努力,而不是我的工作的最初成果。
Stephen Wyatt Bush在2012年4月7日的博文《爸爸和无我编程十条诫律》中提到:
在爸爸去世前,我和他谈论了2个星期关于编程的事。 我22岁,一个在大学里攻读美术设计的四年级的学生。爸爸62岁,一个很老的爸爸。早在世纪60年代他就在田纳西理工大学编程,他在打孔纸带上做FORTRAN开发。他知识丰富。 这个学期我才刚刚开始接触编程,而我的整个脑子全被它吸引住了。编程很神奇,很强大,在很多方面比图像设计更富创造性(我会在另外的文章里谈论这个话题)。 在我假期回到家时,爸爸向我分享了无我编程的十条诫律。他把它打印出来,逐条和我讨论。这是在他意外去世前我们仅有的关于编程的讨论。也许这是让我对此念念不忘的原因。 http://blog.stephenwyattbush.com/2012/04/07/dad-and-the-ten-commandments-of-egoless-programming/
tshi&老曹根据网络上流传的翻译版本,对照英文原文,编译如下。
因为指出了我们的工作态度,这些关于人们编程活动的原则永不过时。《程序开发心理学》写于1971年,老曹在那一年刚刚出生。虽然已经过去了几十年,但这些原则并没有被时间侵蚀,程序员普遍很强的自尊心也没有被侵蚀。
程序员普遍很自我(ego),专家们也都好为人师。在有部门边界的大型组织中,或者是层级结构的小型组织中,技术人员在讨论问题时,往往包含了自己的价值取向,利益选择。也就是屁股决定了脑袋。
把自我价值观从本职工作中分离出来是很重要的!
你的工作不代表你。你的价值不在于你银行里有多少钱,也不在于你穿什么鞋,或者你钱包里的任何证件。 电影《搏击俱乐部》(Fight Club)里的几句台词
如果你的工作不代表你,接受别人对你工作的批评就要容易得多了!