有时候同学们把程序员看的太神,其实他们并比大家在编程上强出多少。只是他们工作时间长,一部分经验上的差距确实是有的。但要找问题,找错误,他们也只能依靠“调试”来解决,没有其他办法。
如果认真的讲,初级开发者和一个优秀的开发者之间的唯一差距就在于优秀的开发者会利用各种工具分析解决问题,而现在大多数的同学还没有具备这个能力。可。。。这恰恰是编程最重要的能力,对是“最”重要,没有之一。
我记得我在上高中的时候,那时候Web刚刚兴起,QQ空间很流行。如果你想让你的QQ空变的好看,那么在当时有两种选择:
1.购买黄钻使用腾讯的模板。
2.自己去写一些脚本通过QQ空间的模块加载来实现装饰空间。
所以我当时就对HTML和JS特别的有兴趣。可当时网上的资源并不丰富,教程极少,知识非常的分散,更不要说有现在这样成套的付费的教程给你学习。往往要学习一个知识点,你只能在网上去搜集一些零散的资料,再通过自己的思考来学习。这个学习过程,毫无疑问会遇到无数的问题。
但遗憾的是,你没有人求助。我也曾尝试着在CSDN等社区发帖,但说实话这个等待回帖和回帖的质量实在是让你失望透顶。渐渐的,我养成了自己独立思考独立解决问题的习惯,这是一种无奈,但这种习惯所带来的解决问题的能力:真的是,受益终身。
再回顾这几年的编程经历,认真的讲,我没有问过其他人什么问题。有时候不是别人不告诉你,而是我觉得编程者有时候要有一种霸气,你会的,我也能通过自己的研究来学会。这样的习惯一旦养成了,你会发现自己解决问题研究方案的成就感,是别人告诉你所不能比拟的。我追求的就是解决问题后的那种成就感,否则编程有什么乐趣呢?
面向对象重要吗?基础语法重要吗?编程思维重要吗?重要,但远不及培养自己分析和解决问题的能力更加重要。
有些同学说,我不知道怎么培养这种能力。这个能力的培养说难也难,说简单也简单,但无外乎2点:
掌握必要的调试工具
憋着,静下心来。
第一点就不解释了,调试是必须要掌握的。关于第二点,我统计了下,提问区里90%的问题是代码疏忽了,没有按照代码规范里的来写;9%是语法错误;剩下的1%才是真正的问题。
所以,只要你仔细,认真,问题不可能解决不了。写代码的每一步都要非常清晰,我从来不跳代码,每一步的运行结果都会展示出来。即使真的有问题,那也是深层次的BUG,不可能让代码报错或者运行不起来。如果有问题,我会第一时间修正,并通知大家。
但我看到很多问题,我其实挺着急的,着急的不是我无法回答,而是着急很多同学没有找到入门编程的正确路径。我从来不把会某种语言定义成“会编程”,只有你会解决问题,学会分析问题,才算是入门编程。
别人帮你解决的问题,永远没有自己解决带来的收益高。你解决了这个问题,但丢失的却是一次锻炼自己思维能力机会。
学习一门语言是暂时的,学会一项技术也不是永久的,当年dephi的陨落,C#的崛起就是很好的证明(有兴趣的同学可以看一下《Borland传奇》,看看当年Borland是多么牛X的一家公司)。这个时代技术更迭的迅猛,早已是人尽皆知,你永远有学不完的知识。
那么对于编程,什么是永恒?我的答案依然是 解决问题和分析问题的能力。
这种能力甚至可以影响到你对于人生的思考和选择,你说,这个能力重不重要?