就拿我来说吧,以前写程序的时候,总是不喜欢思考,认为只有大神写出来的东西,我们在这个基础上能用就行了。
有一次别人告诉我:“程序,就是要思考大神写的框架,不然,你到哪个公司都一样,对你没有什么提高。”。
这句话的升华告诉我们,无论是哪一行,学什么,都要学会从生活中发现“不一样的东西”。
什么是编程思想?这个问题太过于概括,也许你会说:如果我学的是JAVA,那么当我吃透JAVA编程思想这本巨著以后,我就理解了一部分关于JAVA的编程思想。
那么我请问:如果没有这本书,你怎么才能深入的去理解JAVA的机制呢?假如没有外界的资料,或许靠你自己,永远也无法知道编程思想内部的一些东西。
孔子曾经说过一句话:“学而不思则罔,思而不学则殆”。这句话作为每个中国人其实我觉得不用我解释其含义了吧?
关于"思考"究竟应该思考一些什么好呢?才是有价值的呢?
我就用程序来给大家打比方吧,很多人,他学了很久的编程,看了很久的书,在公司里做了很多的项目。但是有一天,
我如果要他脱离公司的框架,给他一个简单的需求:比如,我说,给我做一个淘宝类似的网站,反正看起来喜欢就行,能赚钱就行。这就是需求,然后限期N个月做好。我想,就算一个2年工作经验的人,我不说你做不出来,很多人看到这个需求的时候。
第一反应就是大脑肯定一片空白,不知道如何下手。
我是一个入行仅仅一年的小菜鸟,大家如果觉得我说得不对,可以关掉窗口。
那么继续吧,牢骚发完了,那么造成大脑一片空白的原因有2个,一个:需求不明,二个:代码怎么写也不知道。
因为大家都习惯了在公司里做事,只是做自己的一块小功能,而忽略了整体。
那么造成需求不明的原因在哪里呢?
我个人认为并不是工作经验过少,或者不是搞这一块的,因为总有理由说自己不是搞需求设计的,所以可以成立。
我个人觉得是平时不注意观察事物而造成的。
给大家举一个比较普通的例子,大家应该都用过谷歌浏览器吧?
一个很小的细节,每次载入新网页的时候,标题栏的载入标志总是一个圆圈,并且是顺时针旋转的。大家有没有想过,这个图标GOOGLE为什么要把它设计成顺时针旋转的?而不是逆时针旋转,或者是设计成其他的动态形状?
再个大家举一个例子:分页。简单吧?就是把数据分成N页。
好,我再告诉大家,我现在数据库这张表里有10E条数据,我现在每页要分10条出来,我要这个逻辑执行完,限定N秒的时间。再问大家,分页简单吗?
假如是有10E条数据的分页,怎么样才能高效的分页?我没学很深,开始跟大家说了,我只是一个入行很浅的人,要我告诉大家,这东西怎么实现,我恐怕做不到,我只是分享下我的思路。
比如,开始说的分页问题,大家通常用的方法,就是把所有的数据都查出来,然后点到相应的页码,把其他的数据都屏蔽掉。但是对于10E条,显然这样做效率很低。具体什么方法,我也不知道才能优化,我只是分享思想。
算了,不说了,我个人还需要沉淀一下。晚安。