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

我的高数、英语等课程都学的很好,考试成绩也很高。但唯独学校开的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初级,有必要学架构设计吗?

为什么好学生,学不好编程?相关推荐

  1. 计算机不学c语言的专业,关于高职计算机类专业学生学不好C语言的思考

    摘 要 本文针对目前高职计算机类学生学不好C语言的普遍状况,分析了其成因,并提出了解决该问题的一种设想. 关键词 高职 C语言 基础课 中图分类号:G434 文献标识码:A 作为高职中的传统专业,计算 ...

  2. 谈我们为什么学不好编程2——你是否已进入“等死模式”?

    在大本营中,我最常被问到的问题之一,可能是像这样的:老师,请问我是应该学 C++还是学Java呢?老师,听说C语言已经不行了, .Net才是未来的方向,是不是这样的?老师,我原来学过C,现在想学C#, ...

  3. 那些 IT 界的神翻译,原来我学不好编程的原因就在这

    近日博主 ruanyf 在网上发布了一条关于套接字"socket"的解释,引发了网友对于那些 IT 界的神翻译的讨论: 突然想到,socket就是插座.服务器的socket,就是服 ...

  4. 为什么学不好编程?——好文章一网打尽

    常看我文章的同学应该都知道,我经常会发一些精选文章链接合集.俗话说"温故知新",所以偶尔回顾一下过往的优秀文章也不妨是一个好选择.另外,经验告诉我,很多来到大本营的同学都是匆匆过客 ...

  5. 如何学好c语言数据结构编程,如何学好C语言和数据结构,为什么学不好编程?——好文章一网打尽...

    经常看我文章的同学应该都知道,我经常会发一些精选文章链接合集.俗话说"温故知新",所以偶尔回顾一下过往的优秀文章也不妨是一个好选择.另外,经验告诉我,很多来到大本营的同学都是匆匆过 ...

  6. 学生学不好数学 关键在自己而不在老师

    "学生学不好数学,不喜欢数学,最重要的原因是老师教不好.如果学生遇上笛卡尔,个个都会对数学感兴趣."中科院院士:著名数学家林群在和北京十一学校师生座谈时如是说(见2008年2月29 ...

  7. 学生学python编程---实现贪吃蛇小游戏+源码

    学生学python编程---实现贪吃蛇小游戏+源码 前言 主要设计 1.蛇的表示 2.蛇怎么移动? 3.玩家控制小蛇移动功能的实现 4.如何判定游戏结束? 应用知识点 1.python知识点 1.1 ...

  8. 英语和数学不好是不是学不好编程?

    做IT行业观察这个公众号已经三个多月~期间遇到很多想学编程,但又害怕学习编程的人,他们都有同样的问题: 学习编程,是否需要英语? 我数学不好,能学好编程吗? 学习编程,英文和数学肯定少不了,但编程领域 ...

  9. 有了这些经典书籍+配套实验环境上线,还有什么借口说学不好编程?

    近期,**实验楼和「人民邮电出版社」合作,推出了一大波经典编程书籍改编的线上课程.**无需安装复杂的编程环境,只需一个浏览器,即可在实践中学习这些经典教材. 课程清单 **<React 实战&g ...

最新文章

  1. “分布式哈希”和“一致性哈希”的概念与算法实现
  2. https下 http的会被阻塞 This request has been blocked; the content must be served over HTTPS.
  3. jQuery 的原型关系图
  4. “既然计划没有变化快,那制订计划还有个卵用啊!”
  5. 每个程序员都必须知道的8种通用数据结构
  6. 3c vrrp的接口监视_主备冗余协议,VRRP基础,状态机选举及VRRP配置,理论+实战...
  7. OpenJudge NOI 1.7 14:大小写字母互换
  8. 完美解决xhost +报错: unable to open display 装oracle的时候总是在弹出安装界面的时候出错...
  9. 初学python100例-案例23 python输出菱形图案 青少年python编程 少儿编程案例讲解
  10. zip 命令实现批量文件压缩
  11. Qt 获取当前屏幕分辨率
  12. 量化投资之工具篇一:Backtrader从入门到精通(5)-Strategy类源代码解读
  13. win10 文件系统错误-2147416359
  14. ABP 使用HttpClient调用WebAPI授权问题Unauthorized
  15. HP1020打印机打印异常
  16. flex little know
  17. java自行车内走线,科普向 公路车有几种全内走线方式?
  18. Linux下的磁盘分区和逻辑卷
  19. 递归求阶乘之和(动态规划)
  20. 早教幼儿相关的微信公众号图文应该怎样排版?

热门文章

  1. 无源晶振(crystal)和有源晶振(oscillator)的区别
  2. 山西工商学院计算机信息工程学院,【第二课堂】山西工商学院“迎新赛”篮球赛会计学院VS计算机信息工程学院...
  3. Udacity数据分析(进阶试学)-五王之战分析 - 冰与火之歌
  4. 通过网络地址下载图片示例
  5. 求a100的值,an是一个集合{2^s+2^t且t>s>=0}程序验证
  6. 云计算与云原生 — Docker 容器技术完全解析
  7. 一名开源工程师的自白
  8. 什么是「中华田园敏捷开发」,人才
  9. RISC-V相关概念整理
  10. orcal-day09-kattle之Spoon-oracle完成数据清洗