为什么好学生,学不好编程?

老师好,今年我大二,软件工程专业。

我的高数、英语等课程都学的很好,考试成绩也很高。但唯独学校开的C语言学不懂,即使花了很长时间 看懂了一点,仍然也写不出来代码。而且,我同宿舍的很多人都有这种情况,她们从中学到现在,各科也都学的很好,但唯独学不好编程。请问,是什么原因造成的啊?

 

答:一些好学生,写不了代码;而一些“差学生”写程序却很厉害。这个问题,我在很多大学都遇到过。以下,谈谈我的观点。(本文仅表达个人观点,无意冒犯)

 

第一,“好学生”的学习方法,不适合学编程。

    很多好学生,是这样学习的:预习、学习、复习、不懂就问,必须先把第一个知识完全搞懂,才会去学习第二个知识。觉得这样,虽然学的慢一点,但会学的很踏实。

    怎么说呢?以上这种想法本身是没错的,但如果真这么学,可能得先花个3年才能完整的学完第一遍;然后再花个3年复习,才能记住。不过,等你学完后,那些技术是否还在普遍使用,就不好说了。

    为什么这么说呢?

    因为,

        1.软件开发的知识量太大了,更新速度太快了;

        2.想学好软件开发,必须掌握“二八定律”。尤其初学时,只要把那些最常用的20%技术掌握了,就足够了。但对于“好学生”而言,让他们暂时放弃80%的知识,心理上可能无法接受。他们习惯了脚踏实地的学习,他们反对蜻蜓点水、投机取巧。这就导致,原本一个初学阶段“不重要”的知识,耗费了他们大量的时间和精力,甚至打击了他们继续学习的信心。

         举个例子,初学者学“反射”和“自定义注解”时,大概率是学不懂的,即使学懂了,也不知道“反射“、”自定义注解”究竟能用来干啥?所以,此时,就产生了两种学习方向。

    (1)算了,这些知识既然学不懂,我就脸皮厚一点,不管了,先跳过这些,去学习后面的其他知识吧(这往往是“差学生”的选择);

    (2)坚持就是胜利!虽然我今天没学懂,但我一定比昨天强;同样的,明天也一定比今天强。只要我坚持下去,一定能够学懂的(这往往是“好学生”的选择)。

      实际上呢?像“反射“、”自定义注解”等非常多的知识,不要说初学者了,就是三年以内的上班族程序员,也不一定理解的很透彻。也就是说,那些折磨人、耗时很长的大量知识点,通常“不值得”初学者花太多的时间去学习。即使学了,可能在很长一段时间内 也用不上,用不上 就自然会淡忘了。

      因此,在学习软件开发时,“差学生”有着思维上的优势,他们会接受“不懂就跳过”的学习思维;而“好学生”却往往在大量非重点知识上耗费太多精力。

 

    

    对于“好学生”和“坏学生”的学习思维,还有一点值得说明。“坏学生”可以在对一个知识一知半解的情况下,就直接上机去实践;而“好学生”经常需要等到他把那个知识彻底搞懂了,才敢去上机。但由于软件开发的知识量太大,根本没有足够的时间让你把每个知识全搞懂再上机;此外,软件的“实践性”属性就已经决定了,软件开发是必须通过反复的上机实践,才可能达到“彻底”的搞懂。

 

 

第二,“好学生”过于追求问题的标准答案。

  在学习数学、物理、化学等传统学科时,存在着严格的公式和明确的定律。常见的考题可能也就几千道(几千道是我乱猜的,不要杠,杠就是你对)。我想说的是,每一个知识、每一道题的答案,几乎都有标准化等着你。是对是错,一查便知。但软件开发却有着很大的不同。软件开发属于“工科”,是一门实践性学科,必须“实践”才能知道最适合你的答案。就好比游泳,在岸上讲再多的理论,都必须你下水亲自试了后,才知道哪个动作、哪个姿势最适合你。

     再举一个具体的例子。数学题错了,老师会告诉你是哪些计算弄错了;英语题错了,老师会告诉你哪些语法有问题;物理化学题错了,老师也会告诉你哪些公式或定律用错了。但软件开发呢?基本的语法错误,Eclipse、Idea等编译器会直接提示你错误,所以不用问老师;但如果是逻辑错了,怎么办?的确,老师可以指导你是哪里的逻辑出了问题,但要注意,“逻辑”是长在你自己脑子上的,最佳的方式仍然是需要你自己找到思维出错的根源,然后才能想办法修正,老师只能帮你“治标”,但“治本”还需要你自己想办法。更甚,有些问题,老师是没法回答你的(除非忽悠你)。比如,你可能会问“老师,JVM最佳参数怎么调?”,老师回答“得根据具体情况调”;你又问“老师,TOMCAT线程数多少合适?”,老师回答“得根据具体情况调”;你接着问“老师,堆空间设置几个G最好?”,老师回答“得根据具体情况调”。此时,你可能面带微笑离开,但心里一定会想“老师,你咋这么水”。实际上,我认为以上类似的问题,老师真的是没法回答的。你不妨这么想,如果真的有“统一的、通用的最佳参数值”,人家JVM为什么不预先设置好?还非得让我们每个人去设置一遍?每个项目不同、每台计算机的性能不同、设置每个项目自审的架构质量不同,这些都会影响到如何设置一个“最佳参数”。那这些问题要怎么解决,如何设置最佳参数?两个办法:1.经验;2.根据性能测试的结果慢慢调整。(此外,你真的认为,对于你提出的这个问题,每个老师的水平都比你高吗?)

 

    总结一下本文:很多“好学生”学不好编程的原因,可能有如下两个:

     1.学习过于踏实,不懂得暂时跳过非重点知识。应该根据二八定律,先用最短的时间,学习最实用的技术。

     2.问的太多,不懂得学软件开发一个很重要的能力是:自学。学软件开发不要追求对错,而要追求如何提升自己的思维逻辑。

     

 

 

- 完 -

推荐阅读

测评 | 2<<3 的效率高于 2*8 ?

Java小白到大神的心路历程(框架)

答疑 | 我是JAVA初级,有必要学架构设计吗?

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值