本节书摘来自异步社区出版社《程序员的修炼——从优秀到卓越》一书中的第1章,第1.6节,作者:【美】Jeff Atwood,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.6 勿以专家自居

程序员的修炼——从优秀到卓越
对于权威,我心存芥蒂。我在“Strong Opinions, Weakly Held”(观点鲜明,但不固执己见)一文中曾经说过下面的话。

当我了解到别人把我视为专家或者权威,而不是像伙伴一样的志趣相投者时,就会觉得局促不安。

如果非要我说在迄今为止的职业生涯中学到的一点东西的话,那一定是:当你用专家或者自以为洞悉一切的眼光去面对软件开发时,必将面临失败。

如果真的有所谓的专家的话,他们一定要比普通人更加不可信,因为他们不够客观。各位读者应该像怀疑身边所有的东西那样怀疑我写的内容。自己调查研究得来的数据应该胜过你从别人那里得来的信息,无论那些人被你、我、谷歌乃至大型社区认为有多么权威。

你和那些自以为是专家的程序员共事过吗?应该感觉很痛苦吧?我就有过这样的经历。你或许会说我已经对专家有了偏见。那么,维基百科(Wikipedia)和我一样——在维基百科上有一段标题为“给予专家编辑者的警告”的文字做了如下解释。

1.专家们会通过对经验和证书的展示来证明自己与众不同。如果总是默不作声,是没有办法向人证明自己的专业的。但事实上,通过这种方式来证明自己的专业是毫无意义的。

2.专家们没有解决编辑冲突的特权:如果一个专家和一个普通人对于某段内容存有争议,专家不允许摆架子宣判自己胜出。总之,在维基百科,不管你是不是专家,像“因为是我说的”这样的话是不会被接受的。同样,专家贡献的内容是不会被保护的,普通人可以在后面的版本对其进行修改。理论上来讲,编辑的质量才是决定性因素。

3.在维基百科,有一股强大的反专家思潮。如果你是专家,那么对你的要求会比对常人的更高。

在这里,我们可以体会一下这个由整个社区的人来维护的、自由的、开放的百科全书对于专家贡献的怀疑论。但是,这样做可行吗?

我想说,不去考虑这些内容的来源,而只靠对内容的严格审核,这恐怕是唯一可行的方法了。这是对于权威的一种激烈挑战。但是,这种挑战恰恰是必要的。这个世界上只有少数的专家,却有大量的普通人。当你想要建立一个包含各种信息的网站时,这些普通人的贡献是最最重要的。这是一个不规则的世界,里面装满了无穷无尽的细节。对于这一点的认识,恐怕没人能超过程序员了。每天与各种细节做着斗争的程序员,他们对当前的问题拥有最多的认识;对于这些细节,并没有多少专家能够了解。

于是,当人们普遍认为专家意见(往好了说)是不切实际,或者(往坏了说)是累赘的时候,成为专家还有什么意义呢?在最近的一次谷歌访谈中,James Bach描述了一个后现代专家的典型形象——他就是《摩天大楼失火记》1中的Steve McQueen。

(转向消防局局长)“Kappy,我们现在的情况怎么样?”

“火是从81层的储藏间开始的,烟非常大,我们目前无从得知烟已经蔓延到哪里了。”

“那排气系统呢?”

“应该会自动打开的,可能是引擎烧坏了。”

“那洒水器呢?”

“81层的洒水器没发挥作用。”

“为什么?”

“我不知道。”

(转向设计师)“Jim,给我快速介绍一下这里的救火供水管系统。”

“每层都有3英寸和1.5英寸的出水口。”

“每分钟加仑数是多少?”

“从底层到68层是1500,从68层到100层是1000,100层以上是500。”

“这些电梯有应急程序吗?”

“有的。”

“那你打算从哪一层开始?”

“79层。那里是我的办公室。”

“也就是火灾下面的两层。那将会是我们的前方指挥部。大家带上工具。另外我想看看从81层到85层各层的规划。”

“好的。”

(转向安保总监)“给我一份你这里的住户清单。”

“不用担心,我们正在把他们转移出来。”

“不是那些住在里面的人,而是那些在这里的商户。”

“我们很幸运,绝大多数人还没有搬进来呢,其余的晚上都下班了。”

“我想知道他们都是些什么人,不是他们现在在哪儿。”

“他们是什么人?这有什么关系吗?”

“有羊毛或者丝绸的生产商吗?这些材料燃烧之后会释放出氰化物气体。或者有体育用品的生产厂商吗,比如乒乓球?这些东西燃烧之后会释放出有毒气体。还要我继续往下说吗?”

“好吧,我去给你准备一份住户清单。”

(转向救火队长)“都准备了些什么?”

“升降机组,中央控制。货梯在这里。空调的输送管,6英寸的。”

“管道都在这里吗?”

“1个,2个,3个,4个,5个。”

“81层有没有施工的地方?有没有易爆物,比如汽油、清洗剂?”

“我想没有。”

这段对话除了告诉我们Steve McQueen脾气不太好之外,还有什么呢?作为一位专家,重要的不是告诉别人你知道什么,而是要清楚你应该问什么样的问题,并且灵活运用你所掌握的知识去解决眼下的具体问题。作为专家,你的作用是提供明智的、可执行的方向。

我喜欢James Bach的演讲的原因是,他把演讲的整个前半部分时间都用在质疑和颠覆所有的一切上了,包括他的领域、专业知识,甚至他自己的名声和信誉。在那之后,他才通过一个持续学习的过程,慢慢地、小心翼翼地进行重塑。

第0阶段:我克服了漫不经心。

我现在明白了,我需要学点东西。

第1阶段:我克服了恐惧。

我觉得我可以学会这个科目或者技能。我会对它变得很了解,而不会惧怕比我懂得多的人。

第2阶段:我变得有条理。

我不再觉得自己不懂装懂或者不学无术。我觉得我有能力参与讨论或实践。我对自己说的话很有信心。

第3阶段:我超越了自身能力。

现在我觉得对自己有了更高的要求,不再停留在“过得去”而沾沾自喜。我想冒一点风险,富有创造力,不断学习,不断推动自己进步。我想要与那些充满热情的人共事。

James Bach先生太有洞察力了,他就是我最喜欢的那种“海盗学者2”。他给新近成为专家的那些人提了一些建议:

实践,实践,再实践!
不要把经验和专业知识混淆。
不要相信口口相传,但可以了解一下。
不要单凭信仰,要有自己的方法论。
拥有自己独特的学习方式——这点没人能帮你。
请爱惜羽毛。建立并维护自己的声誉。
孜孜不倦地收集资源、资料和工具。
建立自己的标准和道德规范。
避免那些庸俗的技能认证。
与那些自我要求高的同事一起工作。
多写,多说,保持诚实。
当然,Bach先生在这里谈论的是测试,但我相信这些建议一样可以被用于程序开发,或者其他会用到你的专业能力的领域。从怀疑一切开始,而且一开始的怀疑对象更多的是自己。

如果你想成为一个真正的专家,而不是徒有虚名,那就效仿一下Steve McQueen吧——不要只是告诉别人该做什么,而要做一个善于问问题的人。

《程序员的修炼——从优秀到卓越》一一1.6 勿以专家自居相关推荐

  1. 《程序员的修炼——从优秀到卓越》一一1.10 十年磨一剑

    本节书摘来自异步社区出版社<程序员的修炼--从优秀到卓越>一书中的第1章,第1.10节,作者:[美]Jeff Atwood,更多章节内容可以访问云栖社区"异步社区"公众 ...

  2. 程序员的修炼-从优秀到卓越札记:阅读之美

    前言:培根这样说过,"读史使人明智,读诗使人聪慧,数学使人精密,哲理使人深刻,伦理学使人有修养,逻辑修辞使人善辩".对于程序员来说,单纯的编码并不能使我们卓越,读一读那些优秀的书籍 ...

  3. 《程序员的修炼——从优秀到卓越》读书笔记

    这本书作者是stack overflow的创始人之一 里面有几个很有意思的观点值得记录分享一下. 待办事项不靠谱 每24小时就有一个To-Do软件发布,所以你大概需要一个To-Do软件来跟踪发布的新的 ...

  4. 《程序员的修炼——从优秀到卓越》-摘要

    第一章 绝地反击之术 待办事项不靠谱 与其用软件去记录那些待办事项,不如用脑子记住他们.不要去规划什么时间内该干什么,有时候会发现很多不如意的地方. 今天上班可以放羊 不要形成工作就是干活的思想,适当 ...

  5. 程序员的修炼-从优秀到卓越札记:附录

    前言:其实我更想写一些自己的疑惑,而那些卓越的程序员给出一些建议.写的札记越来越多,却更容易感到迷惘,感觉心中有一个症结无法打开,从而在某一些时候感受到困惑. 既然如此,那我就先描述一下自己的苦闷,再 ...

  6. 程序员的修炼-从优秀到卓越札记:编程之道2

    前言:天气愈来愈热了,笔记本也开始发烫,写一篇文章也开始变得艰难.我最近一直在写读书札记,也许很多人不喜欢看,我却乐此不疲,能够把自己的感悟跃然于纸上,感觉就像一个"好"的程序员, ...

  7. 程序员思维修炼:如何从新手成为专家

    在"职场跃迁工具:德雷福斯模型及应用2例"中,给大家分享了"德雷福斯模型": 这个模型,来自<程序员思维修炼>这本书: <程序员思维修炼> ...

  8. 高效能程序员的修炼 --读书笔记

    高效能程序员的修炼 –读书笔记 这是我读完Jeff Atwood的<高效能程序员的修炼>这本书后的一些回顾, 我会根据这本书的章节依次写下对每章节的理解和认识. 高效能程序员的修炼 读书笔 ...

  9. 【伯乐在线】程序员常有,优秀程序员不常有

    本文由 伯乐在线 - 青劲草 翻译自 www.quora.com.未经许可,禁止转载! 欢迎加入:翻译小组,通过 翻译频道 贡献一份力量. [伯乐在线导读]:本文源自 Quora 问答贴<为何没 ...

最新文章

  1. UOJ#80 二分图最大权匹配 [模板题]
  2. 鼠标动效html,5种纯CSS3鼠标hover按钮动画效果
  3. jpa 分页 排序 过滤_使用JPA标准@ViewScoped通过分页,过滤和排序进行Primefaces DataTable延迟加载...
  4. C#值类型和引用类型的不同
  5. numpy基础知识点
  6. es6 获取对象的所有值_前端开发必备 - ES6 新特性之 Set和Map数据结构
  7. Ansible简介及常用模块
  8. Docker系列三~docker安装nginx
  9. 【“互联网+”大赛华为云赛道】GaussDB命题攻略:支持三种开发语言,轻松完成数据库缓冲池
  10. 日志能被截取吗 log4j_Java日志体系居然这么复杂?——架构篇
  11. Java 项目 接口开发规范
  12. Java基础学习总结(155)——Java 日志框架怎么选?Logback Or Log4j2?
  13. edius隐藏快捷键_EDIUS7 Pro快捷键使用方法及全部快捷键功能
  14. 什么是云数据库RDS
  15. 强烈推荐-这个方法让chrome浏览器拓展程序打包成.crx文件最快?
  16. 分享一种Android端IM即时通讯智能心跳算法
  17. 牛客OR36 链表的回文结构
  18. CANopen协议,上位机开发(C#)
  19. Unity中2D游戏多分辨率屏幕适配方案
  20. LayUi做登录注册

热门文章

  1. Boost:在OpenCL并将图像渲染为OpenGL中的纹理
  2. ITK:侵蚀灰度图像
  3. VTK:图片之ImageMapToColors
  4. C++ RBTree(红黑树) 算法(附完整源码)
  5. QT的QSplineSeries类的使用
  6. 经典C语言程序100例之五一
  7. C++封装、构造函数、析构函数
  8. C/C++ 给Python写扩展模块
  9. 新增方法java_Java8_map新增方法
  10. python怎么导入opencv_对python opencv 添加文字 cv2.putText 的各参数介绍