编程人生(3):Douglas Crockford

Douglas Crockford是Yahoo!的资深JavaScript架构师,发明了JSON这一应用广泛的数据交换格式。从电视专业到偶然接触了编程,在后来的职业生涯中穿梭在媒体和编程之间。

0、收获
读到编程人生第三位,发现以下共同点:
- 读书很多。
- 读代码也很多。
- 善于把学到的知识找到应用的地方。

Crockford的访谈还包含下面的内容,值得思考和学习:
- 了解编程的历史,有助于在技术领域的探索。
- 通过清理学习别人的代码。
- 拜访客户,才能真正知道客户是怎么使用程序的。
- 编程不论年龄(好吧,这个我很喜欢)。
- 增量开发,这样会比较容易成功。
- 定期重构代码,我理解为“自省”。这样可以保证心动不会偏离方向。

1、自学程序怎么学?
多读。读好书。

有计算机学位的朋友怎么建议?
多读,多写。好好学习写作和阅读。

2、为什么要回顾编程的历史?
很多程序员并不想了解所用语言和工具的出处,想当然地认为是一些社区搞出来并提供给他们用的(嗯,我也曾经这么认为)。其实有很多饶有趣味的故事谈到了他们来自何处、受谁的影响、谁做的这件事、什么地方是错误的、什么地方本来就是错误的但未被看作是错误。
有朝一日重新探索这些技术,定会受益无穷。比如Smalltalk、Lisp。

3、为什么感觉编程很难?
部分原因是大多数事件我们都在做新的东西。如果之前做过,那就可以重用了。
深有同感:如果每次都是重新来过,那个压力和工作量都是不得了。所以平时还是需要一些积累,课下或者下班时间多学习。

4、如何阅读别人的代码?
清理。把代码放到文本编辑器中并开始修复。
首先会统一标点符号,适当缩进,等等这类的事情。虽然有工具可以完成样的事情,但从长远来看,自己完成会更佳高效,因为这会有助于加深对代码的理解。
我的理解,自己动手再讲出来,这个过程本身是工具无法替代的。

5、为什么开发者要访问客户?
Crockford认为,最有效率的手段是把一些测试带给最终的用户:访问客户去。这么做会使开发能深刻意识到客户实际上会怎样使用系统,该如何做才能满足客户的需求。缺少对客户的尊重是一件非常可怕的事情。

6、设计软件会怎么做?喜欢自顶向下、从下往上还是先中间后两边?
都有。这也手段可以让你时刻把握系统的设计。最后需要分而治之,将系统分解为可管理的模块。
当遇到各种问题时,需要同时使用这些技术。一直坚持下去,直到真正搞清楚系统的结构为止。
一旦弄清楚了结构,其他的事情都是自然而然的了。
搞清系统结构,我觉得是一个长期的过程。每次看都会有新的收获。

7、编程只是年轻人的专利吗?
Crockford曾经也这么认为,但自从“睡眠呼吸暂停症”得到缓解后,又开始了编程,而且编程水平可能比以前还要好。

8、如何应对“第二系统效应”?
打算重新实现Habitat(软件)时,结果发现很难。
如果采取增量的方式,相信会取得成功。如果试图在一个阶段中完成所有这些事情,这太困难了。
亲身经历过“第二系统效应”:其实生活中很多情况也是如此,如果想要一步到位,可能很多优秀的产品都永远出不来。
ps:第二系统效应由于期待过多、过度设计导致最终失败。详见“第二系统效应”。

9、为什么要每7个周期进行一次重构?
通常团队应该知道什么时候,管理层很久以后才会发现。
团队会定期遭遇问题,比如制造了过多的bug,代码太长了,速读太慢了,进度延后了。
他们知道原因所在,这并非是愚蠢或懒惰造成的,而是代码与目标发生了偏离。

10、“隐藏关卡”
- 要在工作中与QA友好相处,最好的办法是QA与开发合并:)
- Crockford参与过语言的开发,在语言设计方面有丰富的经验。
- 对阅读Knuth的《计算机程序设计艺术》的建议,跳过星号太多的部分,但了解这些知识是非常必要的。
- 他是“软对象”(soft object 指JavaScript中类型的特性)的忠实粉丝。
- 他认为写作和编程能力同样重要,当然还有沟通的能力。

时间: 2024-10-04 05:38:12

编程人生(3):Douglas Crockford的相关文章

编程人生读书笔记(6):Joe Armstrong

Joe Armstrong发明了Erlang语言,并用它开发了开放电信平台(OTP). Joe的学习生涯很特别,开始学习物理,后来因为没钱念博士转而学习计算机.学习期间接触了人工智能并撰写了机器人视觉的论文. 接下来由于行业的变故,人工智能也搞不下去了.辗转到了瑞典空间研究中心,最后加入了爱立信计算机科学实验室,发明Erlang. 0.编程启蒙 中学时代学习Fortran,苦于每次只能提交一个程序,于是想到“偷懒”的办法——并发执行. 期间为同学们调试程序,标准开价居然是一杯啤酒. 1.对开发工

编程人生(1)Jamie Zawinski

0.总结一直不清楚自己的编程水平为什么没啥长进?Jamie Zawinski的经历告诉我:书读少了.手册看少了.代码读少了.代码写少了.归结到一点,壮士还需继续努力啊. 1.为什么要读这本书?很早就发现这本有意思的书“Coders at Work”,虽然看了一点英文版,但毕竟不如中文那么流畅.重读这本书源自最近在做的一件事情:想了解中外编程高手都是怎样学习和编程的.通过搜索的方式进行了一些调查,但结果非常有限.很多时候得到的就是类似个人简介式的内容.兜了一圈最后又回到了原点,原来<编程人生>就

Java Script after Douglas Crockford&#39;s Training (JSON father)

有幸能参加大牛的培训,学到了很多东西,下面总结一下: 1.总的思想是每一门语言都有好有坏,我们要通过好的代码规范和其他一些方式去避免使用糟糠的那一部分.JS有很多缺点,但是也有很多优点,我们就用他的优点就够了,不要去把他的缺点的部分加到你的代码里 2.每一个Object 就是一个动态属性的集合.Object里每个属性都有一个唯一的Key.可以看作是HashMap 3.JS中所有都是对象除了(null and undefined) 创建对象的方式: •var my_object = {foo: b

编程人生(2):Brad Fitzpatrick

Brad Fitzpatrick是一位典型的Web程序员.与普通的程序员不同,他在别人还在学认字读本的时候就开始写程序了.(推荐优秀的儿童英文教材Clifford the Big Red Dog).他主要的成就是,创办了LiveJournal一 个著名的社交网站.这是Fitzpatrick在大一入学前创立的.高中时期也不乏作品,比如FreeVote.在LiveJournal开发过程中,他 对可伸缩性网站设计有了深刻理解.然后编写了著名的memcached.Perbal和MogileFS(好吧,我

编程人生读书笔记(4):Bredan Eich

Bredan Eich是JavaScript设计者,Mozilla首席技术官,ECMAScript标准的制定者.Breda有着坚实的理论基础和较强的工程实践能力,本科物理专业,数学底子很好.在学校里主要做科研编程,毕业后从事网络.系统内核开发.专长是编译器,内核开发,设计了JavaScript语言. 0.总结从语言设计者的角度看待编程.学习和实践的关系:- 编程要实践,选择合适的工具(语言),有自己的态度(动力)坚持练习.- 设计代码的方法:用伪代码理清思路,再着手底层实践.实践多了,最后总结成

我的经历——致岁月摧残的编程人生

2012年我怀着当初的梦想离开了陆良,来到了云南省红河哈尼彝族自治州红河学院,来到这个学校一个人也不认识,还记得那天是一个带着我是一个学长,学长带着我们一直送到了金达的宿舍三楼,就这样开始了我的大学生活,大一大二的生活很忙碌,活动很少参与,加入的家教机构,我也没有去过一次.社费可以说是白交了,大一的时候不带电脑去学校,怕影响自己学习,因为还没有从高中的忙碌时期过度过来. 然而到大二的时候,我拿了属于自己的第一台电脑,拿到了宿舍,那个时候我连怎样装软件都不会,连基本的查看电脑系统信息都不会,因为我

Javascript编程风格

转自阮一峰 http://www.ruanyifeng.com/blog/2012/04/javascript_programming_style.html 作者: 阮一峰 日期: 2012年4月27日 Douglas Crockford是Javascript权威,Json格式就是他的发明. 去年11月他有一个演讲(Youtube),谈到了好的Javascript编程风格是什么. 我非常推荐这个演讲,它不仅有助于学习Javascript,而且能让你心情舒畅,因为Crockford讲得很幽默,时不

再谈javascript面向对象编程

前言:虽有陈皓<Javascript 面向对象编程>珠玉在前,但是我还是忍不住再画蛇添足的补上一篇文章,主要是因为javascript这门语言魅力.另外这篇文章是一篇入门文章,我也是才开始学习Javascript,有一点心得,才想写一篇这样文章,文章中难免有错误的地方,还请各位不吝吐槽指正 吐槽Javascript 初次接触Javascript,这门语言的确会让很多正规军感到诸多的不适,这种不适来自于Javascript的语法的简练和不严谨,这种不适也 来自Javascript这个悲催的名称,

jQuery中的编程范式

浏览器前端编程的面貌自2005年以来已经发生了深刻的变化,这并不简单的意味着出现了大量功能丰富的基础库,使得我们可以更加方便的编写业务代码,更重要的是我们看待前端技术的观念发生了重大转变,明确意识到了如何以前端特有的方式释放程序员的生产力.本文将结合jQuery源码的实现原理,对javascript中涌现出的编程范式和常用技巧作一简单介绍.    1. AJAX: 状态驻留,异步更新      首先来看一点历史. A. 1995年Netscape公司的Brendan Eich开发了javacri