首先引用孔夫子的一句话:学而不思则罔,思而不学则殆。
首先,学而不思者罔这句话的意思就是如果做一件事情,我们只是为了完成任务才去做这件事情,如果我们不对问题进行思考,那么我们就会感觉知其然而不知其所以然。
思而不学则殆这句话就是,如果我们不动手去做,而一味的去思考结果,那么就会在一个点停滞不前。
其实我很赞成孔夫子的话,我个人认为这2句话很适合编程的人,当然“学而不思者罔”这句话,我个人觉得更适合于我们程序员。
其中造成学习而不去理解它的原理有几点原因。
- 任务本身的进度很赶,没时间去研究那么深刻,只是把东西拿来用就行了。
- 语言本身的封闭性造成的,比如某些不开源的语言(本人只是发表观点,不针对任何人)。
- 算法和数学的复杂性让一部分基础差的人望而却步。
我虽然不算是特别会思考的人,当然,我也是从从不思考的拿来主义者变成了一个有思考习惯的人,我一般做一件事情的话,我都会去思考我拿来的代码为什么这么写。现在我来比较一下拿来主义者和真正的思考程序的人的区别,当然我现在也算是半个拿来主义的人, 所以有不好的地方请多多指教。
我就拿我们项目出现的一件事情来说,因为我们这次做的项目是以ASP.NET的CMS模板为基础来建设的,所以我的另一位同事碰到了一个问题:因为企业之窗是展示企业的地方,所以是动态的数据,他问我,模板怎么配,其实说白了,配出来的模板都是以文章的形式显示的,所以我就想到了用ajax去展示结果。
从这件小事可以看出,思考是必须的,如果只是一味为了完成任务去写程序,就会造成一个死结,这个死结就是程序员常常提到的瓶颈。
瓶颈是怎么形成的,其实我认为,无论是大师(图灵),还是小到我们普通的代码搬运工,或者是新人。都会有一个瓶颈,这个瓶颈就像我们小时候学的井底之蛙一样,只是每个人的高度不同,所以造成的瓶颈也会大小不一。
瓶颈的形成并不是一天两天形成的,瓶颈的形成是一个潜移默化的过程,也就是说,在你开始编程的那天起,或许就已经慢慢形成了瓶颈的影子,当你积累到一定的程度以后,这个瓶颈就会被无限放大,成为阻碍你前进的一个不可逾越的障碍。
那么怎么才能让瓶颈变大呢,我认为,既然对于任何人都有一个瓶颈,那么瓶颈是不可能消失的,我们只可能让我们站得更高。我的认为有以下几点:
- 注重英语和数学基础的培养。
为什么我特意提到的英语,有些人认为,现在网络资源那么发达,不一定你要看原版的,我个人认为,英语好可以更好的理解代码,因为代码不是中文的。至于数学基础大家应该没什么异议,我的理解就是兴趣为王,我特别喜欢学离散数学,同事有时候问我为什么毕业了,工作了还要学这东西,还问我是不是为了考研,其实不是 的,我是个人喜欢学习数学,就像我喜欢代码,打游戏一样。
- 注意创新能力的培养。
创新能力是一个很概括的讲法,我以前一直以为创新能力就是你能想到多少别人想不到的奇思妙想,纵观人类的历史,伟大的发明创造都是一个好的灵感。如果要我定义创新,我个人认为:创新能力包括联想能力和灵感(奇思妙想),但是有了这些是不够的,因为这样仅仅是停留在你的大脑里,如果想要把这些奇思妙想转化为有用的代码,就要想方设法把一些想法应用到代码里,牛顿曾经说过一句话,伟大的人是站在巨人的肩膀上的。就是说,我们在想象的同时要把一些前人总结的经验融合到自己的思想里去,只有这样,才能提高,O(∩_∩)O哈哈~,说得不对请多指教。
- 保持对编程的热情
这一点很重要,当新技术出来的时候,我们无限热情,当然,热情和好奇心能保持多久,你也就会得到多久的快乐,你也会在这个行业一直发展下去。还有思考也会让你进步,写出更加有效率的代码,另外,不管你是C#,JAVA程序员,建议你去学一下C或者C++当中的一门,对于理解底层代码,我个人认为,会更好的帮你写好高一级的编程语言。
好了,就写这么多了,有不妥或者疑问的地方,还请指出,我会修正。