如何避免学习Java时常犯的错误
所以,你决定成为一名程序员。这主意不错,但你现在应该做什么呢?
有想法和付诸实践之间有着巨大的差别。你会遇到犹豫不决、学习方法错误、程序漏洞、动力丧失、懒惰、时间不足等等问题。我认为你找不到一篇文章能解决所有这些问题。
但是,如果有人告诉你哪里出了问题,你肯定可以避免至少其中一些问题。
如果你想学习Java,我可以成为你的“导师”。
本文介绍了学习Java和Java初学者(或其他编程语言学习者)常犯的错误。我既是资深Java开发人员,也是Java导师,因此对这个话题非常了解。
开始之前……误区一:认为读IT学院是必须的
大学或其他任何正规教育机构可以让你获得计算机科学的知识和理解,但很难让你成为一名专业的、面向行业的软件开发人员。
大学里的编程学习更偏重学术方法。你的学习重点是理论和算法。你可能还会在学年末做一些接近科研的大型项目。这或许有用,但并不适合典型的面向行业的软件开发人员。
我的意思是,大学或许并非学习软件开发知识的最佳途径,但如果你梦想从事科学编程方面的工作,它可能很适合你。如果你是一名高中生,想成为一名程序员,那么计算机科学专业的大学也是一个不错的选择。
在其他情况下,读IT院校并非必要,而且很多时候只是浪费时间。记住,并非所有程序员都拥有计算机科学学位。不出所料,他们中的大多数都没有。
误区一:学习的错觉
我记得戴夫,他曾是我的学生。他反复尝试各种免费的在线Java课程。我估计他把亚马逊上所有Java书籍都买了一半。他的浏览器书签里收藏了无数个关于Java的网页……然而……他却不知道该怎么办。
他会开始上一门课,然后又去上另一门,接着又一门一门地放弃,如此反复。在他遇到我之前,他已经学习了三年!
“那么,戴夫,你最近在研究哪些话题呢?”我问道。
“扫描仪和阅读器,”他回答道。
“哦,嗯……你的面向对象编程和集合编程进展如何?”
“我只是稍微尝试了一下,并没有深入研究。”
“你不是跟我说过你学Java已经三年了吗?”
“……是的,但我几个月前就停了下来,你知道,然后又从头开始了。”
他白白浪费了三年时间,到处闲逛,从一个资料库跳到另一个资料库。如果你对Java稍有了解,肯定会觉得戴夫根本不适合软件开发。幸运的是,事实并非如此。
他的问题在于他开始收集课程和书籍,而不是真正学习。他并非没有成为优秀程序员的潜质,但他却不是自己的好老师。
戴夫加入我的团队一年后,就成为了一名合格的Java开发实习生,并且开始认真学习。我并不是想对所有人说:“嘿,赶紧找个老师,你自学不行。” 大多数人只要知道该怎么做,并且有合适的学习计划,就能自学。而这正是我首先为戴夫做的。我为他制定了学习计划和学习大纲。
别误会我的意思。我认识很多人完全靠网络自学编程。他们拥有一项非常重要的技能——处理信息并区分有用信息和无用信息的能力。
第 0 个错误会迅速扼杀你的梦想,而第 1 个错误则会慢慢地、痛苦地消耗你的时间和金钱。
很容易在“第0条”上犯难。请访问任何求职平台,搜索Java软件开发人员职位。我认为你找不到任何要求计算机科学学位,而是更看重技术知识和经验的职位。
最常见的错误是“学习错觉”,这其实很难避免。它包含懒惰、缺乏决策能力以及试图寻找学习灵丹妙药的心态。潜在的开发者会获取过多可靠的信息,却不知如何运用。他们开始觉得软件开发太难,于是放弃尝试……或者再次尝试,却犯同样的错误。
我的主要建议是,要用正确的方法去做:
- 找到合适的课程大纲。如果你有导师(或者程序员朋友)指导,那当然最好。如果你没有课程大纲,而且你无法或不想参加线下课程,那就找一两门好的在线课程,然后开始学习。独立的评价/评分可以帮助你选择合适的课程,本文稍后会列举一些优质的免费课程。
- 坚持不懈是成功学习的关键。每天都要编写代码,或者至少隔天编写一次。
- 你的学习时间中,至少75%应该用于练习,25%或更少用于理论学习。下文将更详细地分析这个典型的初学者错误。## 错误二:理论学习过多,练习不足 想象一下,一个两岁的小男孩想说话。然而,他的爸爸妈妈不让他开口,因为他太小,对这方面一无所知。他们决定先给他讲解语法规则,并请一位语言治疗师(越早越好!)。经过这些努力之后,他们终于让他尝试了。我想,如果采用这种方法,恐怕会有更多人不会说话了!
或者我们想象一下,一个身材魁梧的人想打冰球。“抱歉,伙计。在你阅读或听一些讲座之前,你没资格上冰,例如:”
- 冰的物理学
- 曲棍球运动员运动的运动学和动力学
- 冰球和曲棍球杆入门指南
- 冰球运动员团队合作的心理学
- 初学者冰球运动员的伤口和创伤
- “如果其他冰球运动员的冰鞋离你的脸太近,你会怎么办?” “嗯,”那人说,“我还是别玩这个游戏了。冰球肯定很无聊也很可怕,而且太复杂了。”
听起来很荒谬,不是吗?然而,很多学生和一些老师都认为,我们在谈论编程时就应该这样做。
我的信息很简单:
- 要想掌握任何实用技能,就应该多加练习!
- 编程是一项实践性很强的活动。
- 结论1和2很明显,对吧?从一开始,就找一本包含大量编程练习的课程或书籍,每天练习。这样做可以避免学习编程时最大的误区之一:过分注重理论。
我并不是说你应该忽略理论。我的意思是“少学理论,多学代码”,理论和代码的比例约为25:75。编写代码是学习Java的最佳途径。
错误三:没有正确检查你的解决方案
你的代码是否按预期运行?很多时候,新手程序员只要得到正确的结果就认为代码运行正常。然而,这并不意味着一切都运行良好。
你越早学会正确地测试代码,就能越快成为一名更优秀的程序员。学习单元测试是一项非常有用的技能,但对于完全的新手来说并非易事。要知道,正确的单元测试简直就是一种超能力!
掌握代码审查的第一步是运用“如果……会怎样?”的思维方式,并尝试不同的数据集。虽然要考虑到所有情况并不容易,但每一次在恰当的时机提出“如果……会怎样?”的问题,都能让你积累宝贵的经验。
不过,我必须承认,近年来涌现出了一些非常优秀的编程课程和平台,它们都配备了自动代码审查功能。这些课程和平台极大地简化了你的入门编程步骤,让你能够将注意力集中在学习任务本身。
下面你会找到一些有用的链接,指向具有自动代码验证功能的资源。
错误四:练习频率低
你知道提升实用技能最有害、最不理智的方法是什么吗?我可以用一个词来形容——“有时”。学习编程就像攀登一座冰山。如果你停下来,就会迅速滑落,甚至可能一头栽下去。编程技能也是如此。一旦你停止编程,你的技能就会以惊人的速度退化。
那样学习会浪费你很多时间。别再折磨自己了,要定期练习编程。我的意思是,至少每周三次——或者,更好的是,每天都练。
错误五:碍于面子不肯寻求帮助
你知道专业软件开发人员在尝试用已知方法解决某个问题失败后会怎么做吗?他们会去 Stack Overflow 论坛向其他人求助。亲爱的 Java 初学者,你为什么不也这样做呢?
你可能会问:“如果我的问题很蠢,其他人嘲笑我怎么办?” 好吧,真的,万一呢?要知道我们现在生活在网络喷子横行的时代,所以最好的办法就是无视他们。
记住一件重要的事情:为了学习,你有权问任何看似愚蠢的问题。但在提问之前,请先用谷歌搜索一下。几乎所有初学者的问题都已经被其他学生问过,并且已经得到了解答。
在编程论坛上,向其他Java初学者或软件开发人员提问或交流真的很有激励作用。你会意识到自己并非孤军奋战,有很多人可以帮助你,你也可以帮助别人。
错误六:放弃或试图过快地完成任务
“我尝试过一次做这道题,但没得到正确答案。我应该问问谷歌……或者我的导师……或者我最近认识的那位软件开发人员。”
停,停,停。你还没试过呢!
当然,很难准确把握寻求帮助的最佳时机。不过,首先问问自己为什么现在想寻求帮助。或许只是因为你懒惰,或者想更快地完成任务。如果是这样,那就别这么做。我们谈论的是学习,而不是速度竞赛。
错误七:选择难度过高的任务
这正好是第五个误区的另一面。有些学生愿意花费数百小时来解决一个对他们来说目前难度过大的问题。我认为,对于初学者来说,解决大量简单问题比解决一个难题更好,至少在学习的最初两三个月内是如此。
我建议你把棘手的任务留到以后再做,先完成其他任务。你以后随时可以回头解决难题。也许你会发现它并没有想象中那么难?
错误之八:失去动力
“我不懂这个主题……我编程水平不够。我应该放弃,尝试其他的东西。”听起来是不是很耳熟?
每一个——我是认真的——编程初学者都至少经历过一次失去动力的情况。我自己就经历过很多次,事实上,次数太多了。我的所有团队成员,以及所有成功的学生,也都经历过这种情况。
当你再次感到动力不足时,请记住这一点。如果你的动力缺失情况非常严重,试着换个学习主题。别忘了:几乎任何人都能学会编程。学习编程并不容易,但绝对是可能的。
成功学习 Java 的链接
我收集了一些对学生和我自己作为辅导老师的工作都很有帮助的链接。这些链接对你也会很有用。
CodeGym适合初学者到中高级水平的学生。它是一个实用的在线课程,提供优秀的 Java 核心课程大纲、大约 1000 个(我估计)带有自动代码验证功能的编程练习,以及各种提示和技巧。它有点像电子游戏:你扮演一个机器人角色,需要不断升级,从新手成长为 Java 程序员。完成的编程练习越多,获得的技能点就越多,你可以用这些技能点来解锁新的课程和练习。
CodinGame适用于 Java 或其他编程语言的中高级学习者。它让你能够在基于浏览器的集成开发环境中直接修改游戏,编译并实时查看更改!接受挑战,提升你的开发技能。它并非在线课程,而是一种寓教于乐的编程方式,包含趣味十足且富有挑战性的练习,适合认真学习编程的初学者和经验丰富的开发者。
GeeksforGeeks是一个面向极客的大型计算机科学门户网站。它包含一些针对不同编程语言的学术课程,课程大纲清晰,并配有大量实践练习、测验和谜题。你还可以找到与算法和数据科学相关的实用问题。
Oracle Docs是每个 Java 开发人员或学生从该语言的作者那里获取信息的主要来源。
三个优秀的 Java 理论教程,适合从零基础到高级学习者的所有人:Tutorialspoint、w3schools和javaTpoint。
Stack Overflow是最大的开发者社区,你可以在这里提出你的问题,或者搜索其他学生提出的问题的现有解决方案。
Coderanch 的规模比 Stack Overflow 小,但它对初学者非常友好,也很适合 Java 开发人员。
Reddit 是一个庞大的网站,你可以在这里找到问题的答案。一些有用的子版块包括learnprogramming、java和learnjava。
职业发展相关的阅读/观看指南:
- Kathy Sierra 和 Bert Bates 合著的《Head First Java》是一本适合新手的好书。
- 《Core Java Volumes I and II—Fundamentals》(作者:Cay Horstmann)是最好的 Java 书籍之一,适合所有 Java 学习者。## 自信应对 Java 挑战 你并不孤单。所有 Java 初学者在掌握软件开发的道路上都会遇到挑战。犯错没关系;你还在学习!
如果你在学习上遇到困难,或许你正面临着我上面提到的某个问题。记住,这些问题都有简单的解决方法。牢记这一点,并采用正确的方法练习。
别再担心了,开始写代码吧!
本文最初以客座文章的形式发表在精彩的Simple Programmer 博客上。
文章来源:https://dev.to/selawsky/how-to-avoid-典型-错误-while-learning-java-emm



