工程训练到底应该是什么样的
工程训练到底应该是什么样的,很多人很多时间都在讨论这个问题。当大家终于
承认计算机学科首先是工程学科的时候--或者说比如偶像这样的科学家也认同科
研中的学生必须具备一定的编码能力的时候--也许,我们还需要讨论一下计算机
科学中的工程训练应该是什么样的。
Brooks是位大牛,他主持了IBM的360系统,该系统与后来我国的360没啥关系;
他还写了软件工程领域的著作,《人月神话》,让很多管理者的梦想破灭了。
他对于计算机学科的工程训练是这样说的:
很多学院派教育的弱点在于它们对授课和阅读的依赖,而不是相反地依赖批判实
践(critiqued practice)。有效地教育"设计"的方法是这样的,要求学员以学
徒的身份,按克雷计算机的风格设计一个受到很好约束的计算机体系,谱写一首
巴赫风格的赋格曲,或者设计一座Wren风格的建筑。然后知识渊博和目光敏锐的
导师指出其中风格不符之处,并评论该设计在总体上优秀地符合了约束目标的要
求。
语出[Brooks:设计原本(英文版),机械工业出版社,第245页]
我想,好多人马上会感慨,到底是MIT到底是斯坦福到底是GOOGLE到底是IBM,然
后说我们啥时候会有这样的训练呢?
这和国足……对不起,跑题了。
1.我们也可以有这样的训练。所有的国外优秀教材,在网上几乎都能找到盗版,如
果你真的特别特别缺钱的话。这些优秀的教材,每个人都可以看,因为既不涉及
政治,也不涉及他国机密,完全没有审查和禁止。所以,这方面的借口不找也罢。
但是,我们没有去读。
几年前,我对学生们说:"面对问题,你们不要就跑到QQ上找个同学问,然后整出
份答案来。"现在我才发现,那真是黄金时代啊,现在的同学甚至不跑到QQ上去
问同学了,他们更倾向于说:抱歉,我整不出来。
几年前,我对学生们说:"千万别去看看那些7天21天精通啥啥,那是不可能的。
"现在我才发现,那真是黄金时代啊,现在的同学甚至连这些也不看了,他们更喜
欢百度5分钟就能读完就能试试的贴子--然后破口大骂说根本不好使,扔到一边。
评论一个贴子好不好使,你得先读懂贴子里的术语。如果贴子没有使用术语,而
用正常人类就能读懂的话写的,那一定不是给工程师看的。术语使我们精确。而
精确在工程中至关重要,重要到如果不能精确表达,就什么也没有了。
请对比下面这两段话:
- 化学系北面,排球场南面,北苑的西面?
- 这是化学学院前面,地理学院后面,从这张凳子看过去有学生打球的是北苑旁
边的排球场
易读性适合人类,精确适合工程师。如果你想找个人聊天,当然易读性很重要,
如果你想做工程,精确必不可少。不幸的是,没人付我们钱跟我们聊天,想挣钱
只能设计东西。因此,你只能忍受这种非人性的表达方法,因为这是用来指导你
工程的指南。
所以,你必须先学会那些术语,然后再去看那些快餐贴子。术语的解释在手册里
都有,有时你看完手册,快餐贴子已经不必再看了。
手册比贴子长很多,也枯燥很多,但是工具为什么非要闪闪发光呢?当然,为了
你能喜欢它。又一个不幸,如果你不喜欢乌突突的工具的话,不是工具不适合
你,而是你不适合工程。
2. 设计一个微小的计算机体系,是件非常令人向往和投入的事情,但是你首先要
读懂一些东西;设计巴赫风格的赋格曲,一定也令人向往和有成就感,但是我们
得先了解乐理、赋格曲等等一大堆东西。
没有这些坚持,自我设计学习路线,就没有后面的收获。而很多人,如同建一所
说,更喜欢观摩,而且仅仅是观摩。
他们说:我特别特别想来学习一下。
他们说:我特别特别想参与工程,想得到指到。
他们说: ……
其实,他们什么也不必说,他们只需要投入时间。是语言还是行动,能够检验一
个人到底爱不爱你?那么,是语言还是行动,能够检验你爱不爱工程?
如果你骗了工程,正如你骗了你的朋友,当你需要他的时候,他也只来观摩,并
对你寄予无限同情。
3. 有人会问,我想试试某个技术某个实验,我应该从哪里入手呢?
其实答案非常简单,从这里。你要做的就是坐下来,开始写代码,然后发现不
行,当然,不行是正常的,然后修改你的设计修改你的代码,直到今天晚上熄灯。
还有很多问题没有解决,怎么办?写在纸上,把你的问题拉个单子,明天继续。
不要把那些你看了1眼,思考不到5分钟的问题扔给别人。你提的问题标明了你的
价值。思考5分钟的意思是,坐在这里,只想着这个问题,不考虑任何其他的东
西--人人,QQ,你这个月还剩多少钱可以买几根哈根达斯。思考的投入,如同你
对一个女孩说,你在想她,这个时候你应该没有在想着别人。
在你尝试解决这个问题的过程中,你进步了。而且唯有如此,你才能进步。观摩
不会有任何收益,此事只能躬亲。
写作,演讲,音乐,美术,游泳,自行车,打架,编码,莫不如此。对了,为了
你容易理解,还有恋爱,也是这样。
有人做过比喻,非常精妙。学习就像在体育馆里练肌肉。从来也没有一种方法,
能够让被动动作的那些人长出肌肉来--只有主动地努力才会有效果。通常,主动
的努力以后,你自然会知道应该如何去做,也会知道应该问谁问什么问题。
4. 如果你做不到呢?如果你不能坚持呢?
其实答案也很简单。这个世界并非只有程序员这一个职业。并非如马利同学引用
的,必须会修灯泡的才是男人,那些管理者,能以各种手段赚钱的,也都是男
人,只要他们的女人承认那是男人即可,有很多女人并不那么介意你的收入来源。
更何况那也是合法的。
金庸先生说,"那些都是很好很好的,可是我偏不喜欢,有什么法子呢。"
如果不喜欢,即使导师为你设计了Cray计算机的题目,你也会希望观摩导师或者
师兄完成。这就像看别人练肌肉谈恋爱,你能有什么快乐呢。
所以,我想说的中心意思是,如果你不喜欢工程,为什么还要做它?
去做你喜欢的事吧。
5. 补充的
有人会说,我喜欢足球啊,我喜欢篮球啊,我喜欢化妆,我喜欢美食。可是,我
得挣钱呐,所以不得不做工程。
是这样的,如果你喜欢的东西却不能给你带来价值,说明或者你喜欢的程度不
够,或者你付出的代价不够,或者,你非常不愿望承认的,你的天资不够。
因此,你不能以你的爱好养活自己。那么,怎么办呢?
如果你能够养活自己了,在此基础上,你可以花费任意多的时间在你的爱好上。
如果你不能够养活自己呢?
其实答案也非常简单。
如果在你小学的时候,你今天拿到了非常喜欢的游戏,可是又有作业明天一定要
交,二者不可兼得。怎么办?有以下选项,你看看:
- 完成作业
- 打游戏
好了,估计你已经选完了。现在,少年,不是忧伤的时间了,去执行你所选择
的,然后,勇敢或快乐地去迎接后果吧。
工程训练到底应该是什么样的,很多人很多时间都在讨论这个问题。当大家终于
承认计算机学科首先是工程学科的时候--或者说比如偶像这样的科学家也认同科
研中的学生必须具备一定的编码能力的时候--也许,我们还需要讨论一下计算机
科学中的工程训练应该是什么样的。
Brooks是位大牛,他主持了IBM的360系统,该系统与后来我国的360没啥关系;
他还写了软件工程领域的著作,《人月神话》,让很多管理者的梦想破灭了。
他对于计算机学科的工程训练是这样说的:
很多学院派教育的弱点在于它们对授课和阅读的依赖,而不是相反地依赖批判实
践(critiqued practice)。有效地教育"设计"的方法是这样的,要求学员以学
徒的身份,按克雷计算机的风格设计一个受到很好约束的计算机体系,谱写一首
巴赫风格的赋格曲,或者设计一座Wren风格的建筑。然后知识渊博和目光敏锐的
导师指出其中风格不符之处,并评论该设计在总体上优秀地符合了约束目标的要
求。
语出[Brooks:设计原本(英文版),机械工业出版社,第245页]
我想,好多人马上会感慨,到底是MIT到底是斯坦福到底是GOOGLE到底是IBM,然
后说我们啥时候会有这样的训练呢?
这和国足……对不起,跑题了。
1.我们也可以有这样的训练。所有的国外优秀教材,在网上几乎都能找到盗版,如
果你真的特别特别缺钱的话。这些优秀的教材,每个人都可以看,因为既不涉及
政治,也不涉及他国机密,完全没有审查和禁止。所以,这方面的借口不找也罢。
但是,我们没有去读。
几年前,我对学生们说:"面对问题,你们不要就跑到QQ上找个同学问,然后整出
份答案来。"现在我才发现,那真是黄金时代啊,现在的同学甚至不跑到QQ上去
问同学了,他们更倾向于说:抱歉,我整不出来。
几年前,我对学生们说:"千万别去看看那些7天21天精通啥啥,那是不可能的。
"现在我才发现,那真是黄金时代啊,现在的同学甚至连这些也不看了,他们更喜
欢百度5分钟就能读完就能试试的贴子--然后破口大骂说根本不好使,扔到一边。
评论一个贴子好不好使,你得先读懂贴子里的术语。如果贴子没有使用术语,而
用正常人类就能读懂的话写的,那一定不是给工程师看的。术语使我们精确。而
精确在工程中至关重要,重要到如果不能精确表达,就什么也没有了。
请对比下面这两段话:
- 化学系北面,排球场南面,北苑的西面?
- 这是化学学院前面,地理学院后面,从这张凳子看过去有学生打球的是北苑旁
边的排球场
易读性适合人类,精确适合工程师。如果你想找个人聊天,当然易读性很重要,
如果你想做工程,精确必不可少。不幸的是,没人付我们钱跟我们聊天,想挣钱
只能设计东西。因此,你只能忍受这种非人性的表达方法,因为这是用来指导你
工程的指南。
所以,你必须先学会那些术语,然后再去看那些快餐贴子。术语的解释在手册里
都有,有时你看完手册,快餐贴子已经不必再看了。
手册比贴子长很多,也枯燥很多,但是工具为什么非要闪闪发光呢?当然,为了
你能喜欢它。又一个不幸,如果你不喜欢乌突突的工具的话,不是工具不适合
你,而是你不适合工程。
2. 设计一个微小的计算机体系,是件非常令人向往和投入的事情,但是你首先要
读懂一些东西;设计巴赫风格的赋格曲,一定也令人向往和有成就感,但是我们
得先了解乐理、赋格曲等等一大堆东西。
没有这些坚持,自我设计学习路线,就没有后面的收获。而很多人,如同建一所
说,更喜欢观摩,而且仅仅是观摩。
他们说:我特别特别想来学习一下。
他们说:我特别特别想参与工程,想得到指到。
他们说: ……
其实,他们什么也不必说,他们只需要投入时间。是语言还是行动,能够检验一
个人到底爱不爱你?那么,是语言还是行动,能够检验你爱不爱工程?
如果你骗了工程,正如你骗了你的朋友,当你需要他的时候,他也只来观摩,并
对你寄予无限同情。
3. 有人会问,我想试试某个技术某个实验,我应该从哪里入手呢?
其实答案非常简单,从这里。你要做的就是坐下来,开始写代码,然后发现不
行,当然,不行是正常的,然后修改你的设计修改你的代码,直到今天晚上熄灯。
还有很多问题没有解决,怎么办?写在纸上,把你的问题拉个单子,明天继续。
不要把那些你看了1眼,思考不到5分钟的问题扔给别人。你提的问题标明了你的
价值。思考5分钟的意思是,坐在这里,只想着这个问题,不考虑任何其他的东
西--人人,QQ,你这个月还剩多少钱可以买几根哈根达斯。思考的投入,如同你
对一个女孩说,你在想她,这个时候你应该没有在想着别人。
在你尝试解决这个问题的过程中,你进步了。而且唯有如此,你才能进步。观摩
不会有任何收益,此事只能躬亲。
写作,演讲,音乐,美术,游泳,自行车,打架,编码,莫不如此。对了,为了
你容易理解,还有恋爱,也是这样。
有人做过比喻,非常精妙。学习就像在体育馆里练肌肉。从来也没有一种方法,
能够让被动动作的那些人长出肌肉来--只有主动地努力才会有效果。通常,主动
的努力以后,你自然会知道应该如何去做,也会知道应该问谁问什么问题。
4. 如果你做不到呢?如果你不能坚持呢?
其实答案也很简单。这个世界并非只有程序员这一个职业。并非如马利同学引用
的,必须会修灯泡的才是男人,那些管理者,能以各种手段赚钱的,也都是男
人,只要他们的女人承认那是男人即可,有很多女人并不那么介意你的收入来源。
更何况那也是合法的。
金庸先生说,"那些都是很好很好的,可是我偏不喜欢,有什么法子呢。"
如果不喜欢,即使导师为你设计了Cray计算机的题目,你也会希望观摩导师或者
师兄完成。这就像看别人练肌肉谈恋爱,你能有什么快乐呢。
所以,我想说的中心意思是,如果你不喜欢工程,为什么还要做它?
去做你喜欢的事吧。
5. 补充的
有人会说,我喜欢足球啊,我喜欢篮球啊,我喜欢化妆,我喜欢美食。可是,我
得挣钱呐,所以不得不做工程。
是这样的,如果你喜欢的东西却不能给你带来价值,说明或者你喜欢的程度不
够,或者你付出的代价不够,或者,你非常不愿望承认的,你的天资不够。
因此,你不能以你的爱好养活自己。那么,怎么办呢?
如果你能够养活自己了,在此基础上,你可以花费任意多的时间在你的爱好上。
如果你不能够养活自己呢?
其实答案也非常简单。
如果在你小学的时候,你今天拿到了非常喜欢的游戏,可是又有作业明天一定要
交,二者不可兼得。怎么办?有以下选项,你看看:
- 完成作业
- 打游戏
好了,估计你已经选完了。现在,少年,不是忧伤的时间了,去执行你所选择
的,然后,勇敢或快乐地去迎接后果吧。