程序员和他的苹果(一)

“1665年秋天的一个午后,天气清爽,牛顿踱步在自家的院子里,开始继续思考天体间的相互作用,虽然之前他的脑海里已经有了一点点关于天体间作用力的模糊想法,但这还是飘渺的让他摸不到头脑。这时旁边的苹果树上,一个熟透的苹果掉落在他身旁的草地上,牛顿注视着这颗苹果,他发现了通向真理的第一粒面包渣。若干年后的1687年,牛顿在他的《自然哲学的数学原理》中,提出了伟大的万有引力定律。”

 

这就是举世闻名的“牛顿和苹果”的故事,虽然故事的细节和真实性无从考证,但这无关紧要,它对我们的意义在于,首先它是合理的,其次它告诉我们科学的思维对我们来说是多么的重要。现在我想和大家一起聊聊程序员和他的苹果。

 

对于程序员来说,相对于其他行业的从业者,他们会拥有更多的机会去解决新的问题,或者说他们总是面临着各种各样新事物的挑战:分析新的问题,然后根据自己的经验给出一套合理的解决方案。也许有时候遇到的问题似曾相识,然而细微的差别也有可能导致解决方案上很大的不同。甚至每一个修复Bug的过程某种程度上也是解决一个新问题的过程:观察现象,分析并根据自己的经验给出合理的解决方案。

 

那么对于程序员来讲,究竟什么才是不变的法宝,究竟什么才能让我们在这复杂的世界中游刃有余?在我看来就是两点:科学的思维以及明确完善的知识体系。科学的思维告诉我们如何在复杂的事物以及过程中准确的找到真理,它会帮助我们构建自己的知识体系。而知识体系并不是简单的知识和经验组合,它应该是系统化的知识和经验的组合,知识体系的构成应该是相对完善的,体系中的各个部分的存在和指向应该是明确的而不是似是而、非模棱两可的。换句话说,如果把知识体系看成一个输入输出系统,输入是问题,输出是解决方案,那么对于任何一个输入的问题,知识体系应该可以明确的将其分解,然后分析并最终给出明确的解决方案。就像庖丁解牛。

 

那么我们拥有了科学的思维以及明确完善的知识体系后,还有一个问题,那就是:究竟应该如何去解决问题?我的看法是:我们应该强调用自己的知识体系来解决问题,而不是大脑。这句话并非是要忽略大脑的作用,事实上没有大脑我们什么也做不了。这句话只是想表明知识体系对于解决问题的重要性。还拿庖丁解牛的例子,这位姓丁的厨师由于反复的实践和学习,拥有了自己对于牛的知识体系:牛身体各个部分的构成以及联系,肌肉的分布,骨骼和肌腱的连接以及他们的构造等等。丁厨师不再需要用大脑去思考如何解这头牛,因为这头牛在进入他的知识体系的一瞬间就已经被解了。然而对于一个刚刚从事解牛工作的人来说,他也许也可以解牛,但他需要不停的思考:我该怎么做,我下一步该怎么做,我也许该这样做等等。这就是用知识体系解决问题和用大脑解决问题的区别。

 

还有一个我们不容忽视的事实:知识体系是对过去世界的认识,而我们面临的大多数问题经过合理的分解后,都可以用过去的知识来解决。这也是我们强调用知识体系去解决问题的原因。

 

知识体系并非万能。我们还经常遇到这样的问题,那就是我们的知识体系无法很好的解决的问题,这说明我们的知识体系还不够完善,事实上我们的知识体系也始终处在一个需要不断完善的过程中。这时候怎么办,答案就是科学的思维,这包含了对问题现象的观察,合理的分解和简化,逻辑上的反复推断以及验证,最后确定问题的解决。同时我们需要把解决这个问题的经验和知识完善进我们的知识体系中。

 

因此在程序员的实践过程中,应该有意识的去完善自己的知识体系,同时有意识的用知识体系而不是单纯的大脑去解决问题。

 

那么作为程序员我们应该如何去构建知识体系呢?事实上所有的体系应该都有一个根基,都有个最基本的起点,就像“这个世界是物质的”是所有唯物主义哲学家最基本的观点一样,我们也需要这样一个最基本的观点,作为体系的支撑。那就从一个看似非常简单的问题开始吧。

一个程序员在编程的时候,他在干什么?

当一个程序员在编程的时候,他在干什么?(请继续关注)

 

 

你可能感兴趣的:(感悟)