编程学习过程中有哪些快速提高编程技巧的方法？
通过这段时间的看书学习和对编程的思考，结合自己的亲身的学习经历，今天想和大家聊一聊如何高效学习编程技术。 我们可以把学习编程技术的人分为下面四种情况。 第一种是既懂方法又努力的，学的又快又好，但大家会觉得这是他们有天赋，甚至称他们是天才，而并没有看到他们的方法和努力。 第二种是不懂方法但努力了，这类人学的不快但愿意花时间学，不过由于学习编程技术所需的时间一般比较长，一些人没有坚持下去便放弃了，而一些人则坚持了下来，最后学的很好。 第三种是知道方法但并不是一直都很努力，这类人学习的持续性比较差，一些技术学的比较好，而另外一些技术学的不好。 第四种是既不懂方法又不肯努力的，这类人自然是学不好编程技术的。 注意我这里说的只是对于学习编程技术的，并不代表编程学的不好的，学习其他事情也是这样，切莫以偏概全。比如在实际生活中，一个编程学的不好的，但唱歌唱的却特别好。 我文章的读者，大都也是和编程专业有关的学生或者是已经工作了的前辈，群里也经常把那些技术比他们好的人称为大佬或大神，除了羡慕外，也能看到他们对于成为大佬的渴望。按照上面的情况划分，他们可能是属于第二种或第三种情况。一个人的努力是看自己，这个别人也教不了，所以我这里和大家聊的是学习编程技术的一些方法，这是对我学习编程技术的总结，这些方法可能并不一定对你有效，所以你大可作为一种参考。 学习编程技术，最开始都是从某一门编程语言开始学起的，拿我来说，之前我也不知道学什么语言好，听别人说 Java 好，才学的 Java（现在看，觉得 Java 真的很好，至少现在来说，在企业级的项目开发中，Java 还是应用最广泛的）。所以往往我们对于一门语言并不知道他们能干什么的时候，或者说是他们的优势在哪，就急于开始学习了，很可能到最后才发现原来有更好的语言做这个，当时花了那么大力气，反而效果并不好。对于语言是这样，对于框架也是这样，就像我之前并不知道 Shiro 的优势是什么，自己手动写权限控制，最后发现还是框架好用（这里先不谈该不该自己造轮子的话题）。 所以学习一门语言或者框架时，第一步并不是上来就扎进去学，而是应该站在”远处“，用客观的眼光去看待它，找出它的优点和缺点，看看是不是符合自己的需要。比如说，你要从事人工智能方面的研究，目前来说 Python 是最好的选择（这里先不谈 Python 的性能问题）。对于语言的认识，对于新手来说，并不简单。看网上的文章，肯定也是各执一词，因为没有哪一种语言是完美的，没有缺点的，知乎上的大牛还是比较多的，你可以去那里看看他们对该语言的评价，好的坏的都看看，相信你应该可以得出自己要不要学的结论。而对于框架，我觉得认识它的最好方法是去它的官网，看官方文档，因为这是最一手的资料。 但这些资料往往是英文的，所以英语对我们学习技术是至关重要的（老实讲，现在我们用的编程技术 99% 是来自西方，我们还停留在全面模仿和学习西方的阶段），所以在很长一段时间，我们都要接受英文文档，同时提高自己的英文阅读能力。实际上，文档中框架介绍的英文并不多，少的也就几个关键字就把框架的特点概括了，学习过英语的人借助字典翻译都是可以看懂的，只是需要你耐着性子看下去罢了。 上面便是学习编程技术的第一步——认识它，就算你现在用不上，了解一下也是挺好的。互联网时代信息获取渠道很多，比如慕课网就是很好的学习平台，既有免费的视频教程还有手记文章，上面有很多编程大佬的分享，所以选择一些免费的资源作为认识技术的一种方式，是个不错的选择。认识了技术之后，即使时是向别人介绍时，也可以说出来一些。你也可以试着介绍自己学过的一些技术，看自己能否清晰的说出来你对它的认识，或者只是知道一些技术细节，对整体的认识并不够。 学习编程技术的第二阶段就是学着使用它，如果已经有书籍和视频可以帮你学习它，那么这两种方式肯定是比较好的。学习语言和一些常见的框架，基本上都是有视频和书籍的，视频可以在网上找些免费的，比较推荐大家去看看慕课网，只要对你有帮助的资源你就应该利用起来学习，我学习使用某项技术时，也是看了不少视频。如果某个框架没有相关的书籍和视频，那么只能找些文档和去官网学习了，对于前端框架（库）来说，这是很常见的。 学习需要一个过程，没有基础，看视频是最好的方式。有了基础后，我觉得看书是更好的选择，也可以节省你的时间，我就是买了很多书，现在学习也基本都是看书来的。当然没基础的时候还是推荐看视频，虽然要花很长时间，但是后面你就会发现自己学习其他技术会越来越快。在这个阶段遇到问题，也是很正常的，在网上一般都是可以找到答案的，自己解决问题的能力也会慢慢锻炼出来。 学习编程技术的第三个阶段是掌握（第二阶段和第三阶段的分界线其实并不是很明显），能够用这个技术做出一点东西来，就说明你逐渐掌握它了，比如你学完 Java Web，自己可以动手做出来一个简单的管理系统网站，这就可以了，并不需要考虑复杂的业务场景，这些在工作时会学到的。 这个阶段更多的关注技术本身的细节，比如 Java 中的多线程编程有几种方式，最好自己动手写写笔记或者博客，这些都是很好的学习方式。学习框架，也可以看看官方文档，部分技术文档也有中文版的，毕竟写官方文档的人一般都是这个技术的开发者，他们肯定是最懂这个的。学习编程技术就像铸剑一样，需要经过反复的淬火，剑才能变得更加锋刃，学习也是需要不断地回顾和总结的过程，这样才能强化和巩固所学的知识。每个人的记忆力都是不一样的，根据自己的情况，时不时的复习非常非常有必要的。 学习编程技术的第四个阶段是深入，对于语言，可以看看实现的源码（这里又要提到 Java 的好处了），在第二个阶段学着使用它时，肯定会有一些概念和知识点，比如在 Java 中，ArrayList 对象中的数组是可以动态扩容的，但是你是否知道在 Java 中具体是怎么实现自动扩容的呢？如果你回答不了这个问题，那只能说明你还需要进一步的学习 Java，大部分的 Java 源码你都可以直接反编译查看，这里推荐 Intellij IDEA IDE，查看 Java 源码非常的方便（但 Java 也有一些本地化的方法，和操作系统关系密切，并不是 Java 写的，不能直接查看），而 Eclipse 还需要手动导入源码，不是很方便。 学习框架，这个阶段要关注框架的设计思想和实现，也需要看源码，一些热门的框架，找几本经典的书籍来看也是不错的。还是推荐国外的书籍，毕竟很多框架都是从国外传入国内的，国外优秀的书籍会比较多些，当然我们国内也有一些，但总体还是国外多些。如果没有相关的书籍，那么就只能去相关的技术社区和看源码了。如果是开源的技术，一般都会推管到 GitHub 上，可以去 GitHub 上看看，不懂的可以提个 Issue，甚至学到一定程度也可以贡献你的智慧，到这个阶段，不用我说，你都知道该怎么做了。 如果身边有和自己学习同一种编程技术的，可以多多交流，肯定可以碰撞出思维火花的。或者看一些优秀作者的书籍，我读了杨冠宝大牛（孤尽，也就是《阿里巴巴Java开发手册》的作者，下面称之为杨老师）的《码出高效——Java开发手册》，当一些观点和作者不谋而合时，那种感觉非常爽。比如在谈到面向对象时，杨老师说可以从哲学的角度看 Object 类中的方法，我是谁（getClass 方法、toString 方法），从哪里来（Object 构造方法、clone 方法），到哪里去（finalize 方法），之前我也这样想过，但是没杨老师总结的好。有时候读书发现这些，也是很有趣的。在读吴军博士的《态度》一书时，他给二女儿讲为什么要读非小说类的名著时，说阅读不能只看一些期刊和杂志，即使严肃杂志上的文章质量非常高，但作者观点的前因后果由于篇幅都被省略掉了。 零星的观点也是形不成知识体系的，而书的知识完整性是比较高的。所以在学习编程技术时，读书是很有必要的。但是也不要因为学习编程技术，而只看相关的书籍，这样你的视野会受限制，这点我这段时间才感受到，也是最近才开始看些编程无关的书籍，包括金融和经济学相关的。读这些看似与编程无关的书，能开阔人的眼界，增长人的见识，码农只是程序员的下限，优秀的程序员绝对不只会写程序。上面提到的的书籍，如果你感兴趣也可以看一看，相信你会从中受益的。 考虑到这篇文章的受众，所以写的是比较基础的，我这段时间也在思考如何写好文章。我算是比身边的人多学习了点东西，不能保证这篇文章就是很好的高效学习编程技术的方式。所以这里谈谈到的一些做法，未必对你来说就是有效的。如何写好文章也是我今后的学习方向，也欢迎你在评论区留言，提出你的建议和观点，还可以点赞支持一下哦~ 推荐阅读： 有哪些靠谱的Python课程推荐？ 如何更加有效的学习一门编程语言？ 成为JAVA程序员是自学还是去培训班? 程序员如何有效、愉快的使用 GitHub？  作者：Wizey 链接：https://www.imooc.com/article/263343 来源：慕课网 本文原创发布于慕课网 ，转载请注明出处，谢谢合作