StackOverflow 创始人关于如何高效编程的清单

转载 2017年08月04日 17:14:55

转自:https://mp.weixin.qq.com/s?__biz=MzIwMzg1ODcwMw==&mid=2247486219&idx=1&sn=9db802a5cb5b2dd3fa8058f6f6e6cfaa&source=41#wechat_redirect


策划|Jeff Atwood

编辑|薛命灯

这是 StackOverflow 联合创始人 Jeff Atwood 注释的十戒。程序员普遍有很强的自尊心,都应该看看本文,打印下来时刻提醒自己。

“无我编程”发生在开发阶段,表现为技术团队经常通过同级评审的方式来发现软件中的缺陷。目的是让所有人(包括作者)都参与寻找缺陷,而不是证明软件产品里没有缺陷。人们会交换各自手上的代码,相互进行评审,并且大家都有这样的共识:代码的原始作者会犯错误,而作为评审者,他们会找出这些错误。最后的结果是,每个人都从自己的错误以及别人的错误里有所长进。这就是“无我编程”的由来。

无我编程的十条戒律,最早出现在 Gerald Weinberg 于 1971 年出版的经典著作《程序开发心理学》里。Stack Overflow 网站的联合创始人 Jeff Atwood 在博客上再次列出了这十条戒律。要知道,在这本著作出版的时候,Jeff 才一岁。虽然已经过去了几十年,但这些原则并没有被时间侵蚀,仍然值得每一位程序员拜读。

  1. 接受自己会犯错的事实。关键是要在错误进入到生产环境之前把它们找出来。所幸的是,除了小部分在喷气推进实验室里开发火箭制导系统的程序员,大部分错误都不会造成致命的后果。所以,我们一定能够而且也应该要学会嫣然一笑,然后继续。

  2. 不要使用代码来针对个人。要记住,代码评审的目的是为了找出问题,而且总归会找到问题。如果真的找到了问题,请不要把它作为针对个人的借口。

  3. 不管你知道多少“秘籍”,总有人比你知道得更多。如果你开口,他们就会教你更多的东西。在你认为没有必要的时候,学会接受他人的建议。

  4. 不要不经讨论地重写代码。“修复代码”与“重写代码”是有明显的区别的。了解这些区别,并在代码评审的框架之内进行程式化的变更,而不是单独作战。

  5. 尊重比你懂得少的人,并对他们抱以耐心。与技术人员打交道的非技术人员认为技术人员要么是妄自尊大的讨厌鬼,要么是爱撂挑子的倔驴。所以,我们不要用我们的愤怒和不耐烦去加深他们对我们的这种印象。

  6. 这个世界唯一不变的就是变化。敞开胸怀,面带微笑地去拥抱变化。把每一个需求变更、平台变更或工具变更都看成是一个新的挑战,而不是令人厌恶的麻烦。

  7. 真正的权威来自于知识,而不是职位。知识造就了权威,而权威会迎来尊重。如果你想要在一个无我的环境里得到尊重,那么充实你的知识吧。

  8. 坚定你的立场,优雅地接受挑战。要知道,你的想法有时候会遭到反对。你可以证明自己是对的,但不要试图报复,不要总是叫嚷着“我早就说过”,不要被否定的想法看成是一个牺牲品或者某种战斗口号。

  9. 不要成为“小黑屋里的人”。不要躲在小黑屋里写代码,就算偶尔露个面,也只是为了买一杯可乐。躲在小黑屋里只会让你与其他人失去联系,淡出他们的视野,失去控制。在一个开放的协作环境里,你会找不到自己的位置。

  10. 批评代码,而不是人。对人好一点,而不是代码。让你所有的评审为代码带来积极的改进,把你的评审与局部标准、程序规范和更好的性能结合在一起。


最不喜欢的编程语言排行!StackOverflow工程师搞事情

(点击上方公众号,可快速关注) 转自:开源中国社区 www.oschina.net/news/90175/disliked-programming-languages 如有好文章...
  • P5dEyT322JACS
  • P5dEyT322JACS
  • 2017年11月04日 00:00
  • 268

C++ 高效编程不得不看的九本开源书籍

书籍是非常主观和私人的财产,编程书籍也不例外。但是不管 C++ 编程书籍的风格、关注点或者节奏如何,好书总可以带领读者走过一段引人入胜的旅程,揭示编程语言的能力,还能向读者描绘如何使用编程语言来实现各...
  • linuxprobe2017
  • linuxprobe2017
  • 2017年03月11日 11:14
  • 705

第一次在stackoverflow上提问,亮瞎了。。

下午看oc代码,看到这么一句 array_multisort($sort_order, SORT_ASC, $method_data); 这个是对多个数组进行排序的,倒是没什么好说。然后我...
  • u010703523
  • u010703523
  • 2015年06月29日 20:38
  • 2499

我的高效编程秘诀

DanielBMarkham曾发表博文《To code quickly, you must quit coding》,文中他为我们分享了高效编程的几个秘诀。《外刊IT评论》对本文进行了翻译,现转载于此...
  • sinbas
  • sinbas
  • 2015年08月01日 06:57
  • 1130

《TCP/IP高效编程》 ---------阅读笔记

技巧1:理解面向连接与无连接协议之间的区别 对于无连接来说,每个分组的处理都独立于所有其他分组,而对于面向连接的协议来说,协议实现则维护了与后续分组有关的状态信息。 RTO定时器超时并不意味着原来...
  • a2796749
  • a2796749
  • 2015年10月07日 17:16
  • 419

C#高效编程--改进C#代码的50个行之有效的办法笔记

Item1 使用属性而不是可访问的数据成员 属性这个ygyy
  • hymyjl2011
  • hymyjl2011
  • 2014年04月03日 21:44
  • 1906

StackOverflow 这么大,它的架构是怎么样的?

【伯乐在线补充】:Nick Craver 是 StackOverflow 的软件工程师 & 网站可靠性工程师。 这是「解密 Stack Overflow 架构」系列的第一篇,本系列会有非常多的内容。...
  • rise51
  • rise51
  • 2016年03月14日 12:54
  • 1260

Stack Overflow上提到的最多书籍的排行

闲了也是闲,偶尔逛逛Hacker News,自己的英语很水,逛街呢也希望能多多提高下自己,于是乎,见到一些文章,mark的同时,也同样enjoy it。原文地址:http://www.dev-book...
  • huanglong8
  • huanglong8
  • 2017年02月09日 11:54
  • 453

c++ 面向对象高效编程 【笔记】什么是面向对象编程?

面向过程与面向对象:面向过程编程:面向过程解决问题的方法是解决的问题转化为一组函数,这种编程方法是从函数的角度来思考问题,也称为问题的功能分解。 这种方法缺陷: 缺乏安全性,任何程序、代码都可以直接...
  • sinat_26908721
  • sinat_26908721
  • 2016年10月25日 15:45
  • 308

创始人语录:如何高效产出!(一)

不知你们是不是像我一样,觉得公司创始人很神秘,他们是怎样将一个小公司做成如今灼手可热的大公司的?他们是如何利用自己一天24小时安排各种事项决定的?他们也向我们一样还抽时间去看电影吗? ...
  • whgggg
  • whgggg
  • 2014年09月16日 08:30
  • 799
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:StackOverflow 创始人关于如何高效编程的清单
举报原因:
原因补充:

(最多只允许输入30个字)