The First Post

          昨天参加了公司组织的一次据说是洗脑的培训课,主讲者是清华大学的一位博士,现在是一名Software Architect,他第一份工作在贝尔实验室。主要讲解的是面向欧美软件开发的思维模式,这位老兄从古至今,旁征博引,侃侃而谈(一口气讲了3小时),阐述了他对软件开发之外或者说是软件开发更高层次的理解,事后也有些启发,闲暇时间做一些整理,加上自己的理解,权当开山之作,以期与大家共勉!

1.
一切皆有本源,敢问 多问,敢做。他在谈到他在Bell Labs里的工作经验时,讲到很多UNIX操作系统,编程语言的发展历史(我想很多新手都不会很了解的),谈到了Bell Labs的文化氛围,当时就问了一个问题:为什么D.M.Ritchie把他开发出的系统描述语言取名为C语言,当时大家哑口无言,答案其实很简单:因为Ritchie在推出C语言之前,已经有2个测试版本,取名分别为A语言,B语言,C语言当然就是Release版了,大家顿悟;当时就提到:在一定程度时体现了个人的工作能力和工作态度;

2.
善于复杂问题简单化。世界是复杂的,所以生活是复杂的,程序开发不能解决所有问题,就像计算机不能解决所有问题一样。当年图灵在开发出自己的图灵机时,它用非常简单的工作原理诠释了所有的逻辑命题,可以肯定,当今所有计算模型都没有超出图灵的运算范畴,然而,即使是在这样的前提下,图灵机并不能解决现实世界的所有问题,我们软件开发的目标即是:在我们的预设前提下,简化复杂应用,解决或半解决实际问题;

3.
计算机不能解决所有问题,善于简化,妥协。生活所有的问题分为两类:UndecidablityDecidablity,我们能解决Decidablity非常有限,计算机能解决的Decidablity就更是微乎其微,况且,我们现在所用的计算机所能解决的都是Undecidablity,为什么我们还要解决?这是因为:我们在现实的生活中,预设了太多的前提,计算机只能做在这个前提下做的工作,于是我们简化了问题,对Undecidablity做了妥协,这样,软件便应运而生了;但是,你丝毫不能认为你已经解决了问题或者是了解了软件,正如那句话:真理只能永远的接近,却始终不能达到它;

4.
把握整个picture,知道自己的位置和发展方向。计算机技术日新月异,发展迅猛,计算机技术领域犹如汪洋大海,我们就如沧海之一粟,来往何方,去归何处,需要认真地定位,恰当的寻找自己的立足点,不要随波逐流,否则,最终也只能望洋兴叹;

5.
团队,协作,沟通。这一点我就不用罗嗦了

   O
了。

 

你可能感兴趣的:(first)