学习啦>学习方法>通用学习方法>学习态度>

成年人学习编程有哪些技巧

欣怡分享

  掌握编程的艺术通常需要数千小时的努力,如果你掌握了技巧,必定能缩短时间。以下是学习啦小编分享给大家的学习编程的技巧的资料,希望可以帮到你!

  成年人学习编程的技巧

  1.读>写代码>读>写代码(日复一日)

  关于如何高效学习编程我要给出的第一条建议是在阅读代码和编写代码之间循环往复。阅读代码(书籍,博客文章,开源代码)将帮助你查看解决方案,了解最佳做法,并大致了解语言或系统。但是在你这样做之后,你需要自己实际去写代码。可以是任何东西。可以是小的编码练习或业余项目,但确保你能将之付诸于实践,并用某种方式使用你学到的东西。如果你不这样做,那么你会发现自己面对编辑器会无所适从无从下手。

  这方面的诀窍是让自己感到不舒服。这是相当痛苦的,但就应该这样。编码遵循80/20规则。花80%的时间在20%的代码或20%你所学的东西上。习惯于这种不舒服的感觉并克服它是关键。

  这个迭代周期不应该以周为周期或以月为周期发生,而是应该以日为周期。知识等待使用的时间越久,知识这把斧头就越钝。等待学习新知识的时间越长,你就越难以将其融入到代码中。

  我推荐阅读关于通用编程主题的网站是lobste.rs。上面有许多关于许多编程主题的文章。另一个好的网站是Hacker News,但网站时常偏离话题。

  2.不要陷入僵局。请求帮忙

  我最大的错误是在学习编程陷入僵局的时候用了太长时间。在被卡住时,我会花很多时间在一些愚蠢的东西或一些我根本上不明白的东西上。有时候我需要花费好几天时间才能完成这些工作,而原本我可以用这些时间做更多的事情和学习更多的东西,如果我能找到更好的解决方法的话。卡在一个东西上面超过一个小时基本上就是在浪费时间了。

  我推荐三件事情以避免僵局。第一是试着总是阅读更多关于你使用的技术,并总体掌握正在发生什么。通常,当你陷入困境时,意味着你对需要澄清的事情做出了不正确的假设。第二是咨询互联网。这一点很显然,但依然值得一提。在网上查找并询问有过这个问题的人是一个非常重要的技能。Stackoverflow可以说是互联网上最好的网站。不要害怕在那里问自己的问题。通常,只要尽力正确地阐述你的问题就OK了。我真的希望以前我能多问些问题,但总是因为害怕会显得愚蠢而止步。我的第三个建议是向你认识的人请求帮助。通常,你或许已经理解了技术,而且有了问题,但是你可能需要更高层次的上下文才能真正解开谜团。不要胆怯,大着胆子上前去问吧。

  例如,当学习Docker时,我花费了大量的时间从头开始重新构建图像。我从根本上不明白docker缓存,并用20分钟时间来等待单个更改到Dockerfile通过。我可能花了8个小时就用在等待构建上。如果我读过更多关于Docker或问一个知道的人,那么可能我早就搞明白了,还可以在更短的时间内学到更多。

  3.为项目而工作

  在我的经验中,没有什么可以与工作于自己的项目以学习编程更有用的了。除了一些例外,我所知道的所有真正优秀的程序员都有一个习惯就是工作于业余项目(这也可能发生在工作中!)。有了一个点子并试图实现这个点子是非常具有挑战性的。它需要很强的自律心。但是,通过尝试实际做一件事情,你可以学到如何分解问题并应用技术。你面对的各种问题,以及你如何解决它们才真正是所谓的编程。知道编程语言的每一个古怪细节的确是有帮助的,但它只会让你越来越落伍。此外,想要完成项目的驱动力是继续学习的动力。从业余项目获得的满足感远远超过你在抽象中学习东西的满足感。

  我对于选择业余项目的建议是,选择你感兴趣同时你也有想法如何实现的东西。能够在开始之前表达实现总是有助于保持我的动力。在此旅途之中你一定会学到很多!

  4.认识到深入钻研和搬运工之间的区别。相应地选择。

  有两种类型的程序员:完美主义者和搬运工。有些人希望一切都是正确的,他们希望完美,他们希望遵循所有的最佳实践,并写出漂亮的优雅代码。他们想要理解每一行代码。有别于那些不管三七二十一,只要自己的代码能工作即可,即使对代码库有损害的人。平衡这两种技能是非常重要的。有时你应该深入钻研一个问题或项目,看看发生了什么。有时你应该让它工作即可,即使你不知道发生了什么。

  每当你花费太多时间在某个东西上时,那就问问自己:我应该采取哪种方法?在大多数情况下,你会想取中间值。你想提供一个好的、坚实的解决方案,同时你可以自信地理解和修改,但没有耗费荒谬的时间。随着你作为开发人员的成长,你会更好地明白什么时候就此离开就可以,以及什么时候需要以某些方式完成。

  就个人而言,我喜欢我的项目80%完美。如果你的项目是绝对100%完美,没有一行代码让你觉得尴尬,那么很有可能你已经花了太多的时间。

  5.与其他程序员交谈

  学习编程的一个很好的方法就是和其他的程序员交谈。不必谈论任何特定的内容。可以是你正在学习的东西,可以是你认为很酷的东西,可以是你正在工作的东西,皆可。你会发现很多程序员并不喜欢只是聊编程。这样做可能会让你学到很多关于库,服务,编程语言和模式方面的知识。但是,最重要的是,你将了解到其他人是如何看待编程的。你会发现,你认为理所当然或从来没有考虑的事情在人与人之间是非常不同的。

  如果你没有什么可谈的,那就回到编辑器战争或tab vs space的话题。

  6.尝试一切。如果搞不懂的话,那就等6个月。

  最后,我要说的是,一直以来在我身上发生着这样的事,我尝试过很多东西,但我就是不理解。在用30分钟尝试新的东西后,我会停下来。我想这在起步时是很正常的。但是,我记得很多次,在6个月后(或3个月或9个月),我会回到同样的问题或技术上,弄清楚如何使用它。这是因为我又掌握了一些我以前不具备的知识,或者因为它只是另一种方式的框架。等待一段时间,然后回去,总是一种最有用的方法。

  成年人学习编程的建议

  去解决实际问题

  理论很无聊,所以理论问题通常也很无聊。如果能从在学习编程的同时能获得一定的外快,相信你一定更有兴趣。因此,首先要扪心自问“我为什么要学这个?”如果答案是“为了创造”,那么,去做吧!好消息是,你不必一上来就需要了解如何编码:在这之前先(粗略地)描绘出你想要创造出的东西的模样。你缺少什么应用吗?缺少你需要的工具吗?

  这样做的好处在于,你不必去做什么宏大的项目,你可以从简单但是实用的小工具入手。但无论是什么,你都需要关心它。我第一个项目是用Ruby写的,自那以后一直用了很长时间,虽然从未发布出去。我很自豪,不仅是因为它的成功,更是因为借此我对Ruby(不是Rails)的掌握深刻了许多。

  站得高才能看得远

  这里我推荐了一本书,并不是因为收了多少好处费,而是因为它真的很不错!我从未看完哪本编程书,但Code Simplicty真的让我着迷。这是一本关于编程艺术的的书,涵盖了几乎从入门开始的一切,它会告诉你应该何时向应用添加新功能、何时去优化代码(过早地优化会这样),以及其他有意义的东西。

  如果你读过这本书(或者其它类似书籍),一定会对你以后的研究带来积极的影响。

  谨慎地挑选技术

  你应该从ANSI C开始第一个项目吗?除非真的情况特殊,否则答案应该是否定的。优秀的程序员知道如何编程,而非熟悉某个特定的编程语言,他们能够在很短的时间学会适合指定项目的编程语言。但第一次使用并不容易,因为你必须掌握的不是语言,而是通用的编程理念(程序逻辑、流控制、变量类型、范围、对象等等)。因此你需要花时间思考你想要在编码时使用的语言或技术。

  这应该在你选定项目之后,一旦你决定了要实现的东西,那么可选的技术就不会太多。比如,你想要开发一个原生的iPhone应用,那么Ruby on Rail肯定就不合适;但如果你想做Web编程,可选语言非常之多,每种语言又会衍生出更多的框架。

  花点时间研究下可选方案——该语言的社区怎么样?容易得到技术支持吗?有免费好用的开发工具吗? 《Which Programming Language Should You Learn For Software Development?》这篇文章做了详细介绍。

  不要花费过多的时间去学习大块知识

  我曾经花了几周时间看一个PHP的视频教程,大概有将近30个小时。我现在会PHP吗?仍然不会,我的意思是我看过很多PHP代码,但这纯粹是在浪费时间,不编程就想要掌握这么多的知识是不可能的。对我来说,仔细地编写一个线程的例子非常糟糕,这会失去很多学习的机会。我只有在创造自己感兴趣但经常出问题的东西时才能保持兴趣。解决一个你感兴趣的问题才能学习新知识。盯着屏幕傻看30个小时还是算了吧……

  花时间去配置开发环境

  不仅仅有很多编程语言,开发环境也有很多。有的人使用文本编辑器,例如Vim和Notepad++。挑选一个编辑器,并使之最适合你是个非常个人化的过程,但这只是开始,接下来你还需要设定键盘快捷键、颜色方案、插件等等。

  但这也仅仅是一小部分——设置开发环境还需要安装你打算使用的编程语言、代码库、版本控制系统(如Git)等等。也就是说,你需要为此花上数小时。但是没关系,就像工匠需要先熟悉他们的工具一样,这也是工作必要的准备——学习使用快捷键、调整代码高亮显示,工具的体验越好,你就越能专心于编写代码,因此这是一个不容略去的环节。

  不要着急——截止日期是最大的敌人

  无论你打算做什么,要记住——你是在学习!所以忘了截止日期吧。如果仅仅为了保证代码的正常工作而编写难看的代码,这是得不偿失的。虽说有胜于无,但如果你以完美为目标而小心翼翼地设计、构建,一定能从中学习地更多。

    3664425