学习编程语言非常有趣:它可以提高你的技能,你可以用它来创造你想要的任何东西。 毕竟,编程语言是构建软件的基础,可以创建其他人可以与之交互的内容。
我喜欢编程本身:这对我来说是一个益智游戏。 它主要是关于逻辑的,逻辑很有趣!
你可以创造一些游戏的游戏。 这不是很酷吗?
在本文中,我将描述我用来学习我所知道的编程语言的过程。 我会尝试回答这些问题:
如何正确学习新的编程语言?
什么是最好的资源?
有什么心态和工具可供使用?
这种学习方法的其他好处是什么?
如果您是一个完整的初学者或者您已经了解编程语言并不重要:过程是相同的。
和亲爱的读者一起来吧,让我们去编程之地,每个变量,功能和类都和平相处。
前奏:一个可以聚焦的环境
首先,让我们从开始就明白:学习一门新的编程语言需要一些时间和精力。 没有什么是不可能的,但不要指望一件非常容易的东西,这将带给你很多钱和荣耀。
要了解一般情况,您需要关注学习的质量 。 如果你试图过多地推动自己,你将不会学到任何东西。 如果你在编码时看电视,你也不会学到那么多。
你需要:
一个安静的地方,您可以专注于您想要学习的内容。
一个鼓舞你的地方。 最好的地方就是你不能试图做别的事。
选择代码编辑器/ IDE。 我们想学习编程语言,而不是找到完美的工具。 不要花费数小时:只选择最受欢迎的选项。 我绝对建议编辑进行某种自动完成,它会对你有所帮助。
现在我们正在设置,让我们开始吧。
第一步:学习和理解基础知识
基础知识包括:
1、代码语法
2、编程的基础知识
第一种是每种编程语言都是唯一的,第二种可以应用于很多种。
如果你是一般的编程初学者,不要害怕基础知识:你会在整个过程中得到它们。
寻找最佳的工作资源
要学习新语言的语法,最好的方法是拿一本书并复制作为示例给出的代码。 听起来很愚蠢,但对我来说这是最有效的。
读书是不够的 :如果你想学点东西,你需要积极学习。 阅读过于被动。
如果您的书很好,它将向您解释语言语法的基础知识,以及代码片段的一些基本原理作为示例。 在代码编辑器中复制这些示例并执行它们。
在阅读本书时,不要试图详细了解所有内容,特别是如果您是一个完整的初学者。 你可以稍后再回过头来看看。 目前,我们的目标是对语言的运作方式有一个良好的全球性想法。
那里有很多书为你提供一些解释代码。 我个人非常喜欢整个学习过程 。 不要害怕标题中的“硬”:它只是表明它会正确地教你什么,你没有捷径。 这就是我们想要的。
对于已经有一些经验的人来说,这些书在开始时可能有点无聊。 但是,它也可以教你一些你不了解的基础知识,或者只是刷新一些被遗忘的记忆。
你可能会问自己:为什么一本书? 为什么不在互联网上关注一些文章?还是一系列Youtube视频? 仅仅因为您永远不会知道您在Internet上使用的内容的质量。 你不想错误的习惯; 很容易学习不准确的概念,以后会被它完全搞糊涂。 学习比学习更容易。
这就是为什么你应该选择一本由你想要学习的语言社区建议的书。 你需要确保你可以相信它的教学:你应该在论坛,讨论组中询问什么是最好的书。 像goodreads这样的网站上的正面书评也可以作为一个很好的指标。
你想避免误解,那就是你知道一些只是部分正确或完全错误的事实。
现在,我有一个小测验给你。 从这些非常客观的命题中学习的最佳方法是什么?
定期关注您的图书,每次会议最多30分钟到2小时。
每两个月塞满8个小时的学习,你的腹部充满了红牛,凌晨2点,当你的拖延不能再让你睡觉了。
我与红牛没有任何合作伙伴关系,而且人们的注意力非常短暂。 连续两个小时学习已经充满挑战。 这就是为什么你是对的,亲爱的读者:走第一条路。
你将以更快的方式学习。 学习将更愉快,压力更小,更少疲惫。
花点时间,耐心等待,你会到达那里 。 不要忘记:最困难的是开始。如果你像其他人一样有拖延的倾向,试着打开你的书只有10分钟。 如果在这10分钟后你仍然不想学习,请关闭它。
你会惊讶于这种简单的技术可以引导你。
个人知识评估
回到你不时写的代码,这次没有这本书。 问问自己这些问题:
我上次学到了什么?
这些例子的目的是什么以及本书试图教给你什么?
这个具体语法是什么意思?
这个功能的目的是什么?
这个例子的输出是什么?
这是为了让您记住新编程语言的基本原理和语法:通过尝试记住上次学到的内容并用自己的语言表达。
如果你真的很有动力,你甚至可以尝试找到其他解决方案来输出相同的结果。
编写代码时,请不要使用太多注释! 尝试理解代码。 在大多数情况下,它会为您提供足够的信息,以便找到它的目的。 此外,当你将成为一名为美国国家航空局工作的富有且着名的开发人员时,你的同事们不会评论他们将编写的每一行代码(我希望如此)。 他们希望您能够理解代码。
如果你不知道你写的是什么,那就完全没问题了。 即使尤达自己说的相反, 尝试也是最重要的 。
在你试图记住你在以前的学习课程中学到的东西之后,打开你的书并让这些“啊哈! 我现在记得了!“胜利的想法在你美妙的大脑中绽放。
你可以每周或每两天测试一次,没关系。 只需要一个学习计划:
读了这本书
复制代码
不时在没有书的情况下测试自己
回到1
你需要找到自己的节奏:不要太慢或你的动力会受到影响,不要太快或者你会感到疲惫和厌恶。 找到一个平衡点来保持您对新编程语言的兴趣,这是最重要的!
第二步:开始一个侧面项目
当你中途或即将完成你的书时,你可以开始这个计划的第二步来统治宇宙:开始一个侧面项目。
实际上,只要您能够使用新编程语言的语法而没有太多困难,就可以开始它。 试着调整一下:如果你不能真正建立一些东西,因为你每2分钟需要谷歌如何写这个或那个连续2个小时,你还没准备好。
如果你对你的书完全厌倦,如果只是打开它感觉就像一个折磨,如果你有最糟糕的噩梦基本上每一页,它可能是一个微妙的指示,你需要更具体和创造性的东西。 因此,侧面项目!
你可能会问,副项目的好处是什么? 亲爱的读者,非常好的问题。 你知道,学习编程语言的语法和基础是必不可少的 ,但绝对不够。 编程是关于解决问题的,你需要能够用新语言解决各种问题。
一个有障碍和困难的侧面项目是最好的方法。 此外,它很有趣。
您可以构建哪个Side Project?
我已经写了一系列关于副项目的文章:
第一篇文章是关于必须将你的副项目结束的心态。 信不信由你,心态是最重要的!
第二篇文章重点介绍了我用来遵循这种思维模式的工具。
如果您只需要记住这些文章中的一件事,那就是以下内容:构建一些小东西! 你不想建立一年中最好的应用,变得富有,有名,不开心。 你想学习一门新语言。
你的副项目可以是todo列表应用程序,pomodoro应用程序或计算器。 更好的是:如果你有一些个人想法可能是一个有趣的小项目,请继续。 它甚至比在互联网上挑选随机的想法更好。
如果你想在之后建立更大的东西,请随意这样做。 一步一步走,一点点开始,如果你想要的话,就越做越大。 请记住,虽然侧面项目难以实现更大的增长。
Side Project的最佳工作方式
您需要确切了解您的项目将具有哪些功能。 我永远不会说得足够:尽可能少,一开始就是最好的。 您仍然可以在以后添加更多。
然后,按照下列步骤操作:
1、打开IDE /编辑器
2、选择要编码的功能
3、编码
4、当你被困时,谷歌是你的朋友
5、万岁! 你的功能有效
6、回到2
这称为迭代过程。 即使你在开始时错了,你也会修复你的错误,并在每次迭代后更接近你的甜蜜项目的成就。
分析瘫痪可能是你作为开发者的最大敌人:不要过度思考和编码。 不要试图在这些美妙的代码行中找到完美:我们不关心这一点。
不要花费大量时间搜索最好的工具。 我建议不要在你的第一方项目中使用任何框架。 如果您需要一些图书馆,请先按社区提供建议(或首先由Google排名)并继续使用。 更好的是:如果不是太长或太无聊,请自己编码。
如果您在一段时间后感觉舒适,您也应该尝试编写一些自动化测试。 了解语言如何处理测试非常重要。 将其视为奖励。
第三步:向世界展示你的新技能
分享您的准则并提高您的信誉
如果你是一个充满独角兽,彩虹和凡人焦油坑的梦幻发展世界的初学者,你需要对git有点熟悉。 它基本上是一个允许您在外部服务器上对所有代码进行版本控制和推送的系统。
git的方法和原因超出了本文的范围。 如果您想让我谈一谈,您可以在下面写下评论。 别害羞! 亲爱的读者,我喜欢听到你的消息。
在您的系统上安装git并在Github上创建一个帐户。 然后, 推送您的项目。
完成后,祝贺! 您现在可以向全世界展示您的代码。 如果您计划以开发人员的身份找到第一份工作,这将非常有用:您可以向想要查看新功能的任何人展示您的精彩项目。
它甚至比建立一个充满空虚的投资组合更好!
这就是为什么侧面项目很重要的原因:它将教你新的闪亮的编程语言,它将提高你作为开发人员的可信度。 您将在Github上获得更多代码,您将不得不跳过我个人讨厌的无聊和通常的面试编码测试。
这有多好?
从您的同行那里获得反馈
所有这一切都非常好,但有一些重要的事情要记住:单独在一个项目上工作可以教你很多错误的东西。
即使你遵循一本认真而称赞的书,你仍然可能会误解一些概念。 你也可以成为能力幻觉的受害者,当你认为自己知道某些东西但你无法使用它甚至解释它时。 不是真的有用,不是吗?
从你的书中编写代码并进行辅助项目可以防止你用废话填满你的大脑,但仍然存在一些风险。
这就是为什么我会建议你向最多的人展示你的代码。 转到Reddit,论坛,Facebook小组,并征求反馈意见。 消极的是最好的:它们永远不容易处理,但它们会教你很多,这就是我们想要的。
如果您了解一些经验丰富的开发人员,您可以向他们提出反馈意见,那就更好了。 它可能是您在工作中接触的一些开发人员。 你可以去你所在地区的开发者聚会。 拥有一位您熟悉的导师,以及能为您提供个性化建议的导师将是最好的。
当它具有建设性时,反馈很有意义。 没有任何论据或解释,不要考虑纯粹的批评。 你想要的是建设性的反馈:那些是合理的,能够清楚地解释你的错误以及解决它们的可能解决方案。
这种方法真的有效吗? 如何应用这三个步骤
这部分不仅仅是一个以自我为中心的关于我的喋喋不休,我是多么伟大( 这个博客的页面就在那里),更多的是给你具体的例子。
20年前我是如何学习发展的?
当我年轻的时候,我想编写视频游戏。 我喜欢玩它们,但我已经有了这些冲动来在屏幕上创建东西。
因此,我的父母给我买了一本书来为我的生日学习C. 我在这本书上花了几个月的时间:我已经应用了我刚才解释过的三步技术。 那时我没有上网,所以我没有选择,我对此感到非常高兴。
我阅读所有内容并在阅读时复制了大部分代码。 这本书教会了我所需的所有编程基础知识。
在本书的中途,我开始编写我的第一个项目:一个文本RPG,您可以在Windows终端中选择您的种族和武器进行基于文本的冒险。
即使我现在可以访问Youtube以及我想要的基本上所有文章或资源,但如果我观看它们或被动地阅读它们,它将毫无用处。 我试过,大多数时候我都不记得了。 学习和练习是相辅相成的,一个没有另一个没有意义。
此外,我关于C的书很好地解释了很多基础知识并强调了最重要的主题和细节。 这就是为什么今天,当我需要学习一门新语言时,我遵循完全相同的方法,并且我非常小心地找到经过验证和称赞的资源来学习。
我是如何在2018年学习Golang的?
让我们回到更接近的过去:一年前,作为PHP开发人员工作8年后,我决定学习一种新的编程语言来扩展我的技能。 我选择Golang有很多原因。 再说一次,如果你想了解它们,“在下面评论”,我会像你说的那样做,掌握。
第一步:我的一位同事建议我在复制所有代码时阅读Go in Practice。 这是他自己学习语言的原因。
第二步:半途而废,我在Golang开始了我的第一个项目: testomatic。
第三步:我在Golang google组和Golang subreddit上分享了我的代码。 甜蜜的Golang社区给了我宝贵的反馈,帮助我了解Golang的一般理念和最佳实践。
结果? 我在2018年5月找到了一份全职Golang开发人员的工作。
奖励步骤:在开始我的新工作后,我阅读Go in Action以更好地理解语言的基本原理和机制。
由于我跟踪了很多事情(但不是所有事情)的时间,这里有一些指标可以让你知道我花了多少时间在第一步和第二步。 这仅供参考,您需要根据自己的需求和动机调整学习时间!
第一步:通过Effective Go
y轴是我每周做的番茄钟数。
一个番茄钟是25分钟的焦点学习。
正如你所看到的,我在2018年1月开始非常缓慢但始终如一地阅读这本书:这是学习任何你想要的东西的关键。 我在3月和4月花费的时间增加了:这是从我的PHP开发人员到Golang开发人员的通知期。
我想为我的新工作做好准备。 另一个原因:Golang是一种有趣的语言,我期待更多地了解语法,以便用它来构建一些东西。
第二步:testomatic,我在Golang的第一个项目
红线代表我每周预计要做的工作量。
蓝线是我正在做的工作量。
再一次,你可以看到相同的模式:我开始缓慢但始终如一,然后我的动力在三月和四月通过屋顶。
这是一个很好的例子,强调你不必通过计划每周29小时的学习来完成你的项目:一天只有25分钟可以带来意想不到的结果,当它一直完成时。
您可能会注意到我从未完成这本书:因为我开始作为全职Golang开发人员与能够帮助我的有才能的同事一起工作,我认为我并不是真的需要。 这完全没问题:如果你不觉得有必要,不要给自己施加压力来完成你的每一本书。
此外,您可以随时回到未完成的书籍。
总结
这是本文描述的学习方法的精简版本:
第1步:找到一本知名且经过评级的书籍,按照它并编写代码作为示例。
第2步:在书的中途(或者当你觉得准备好的时候),开始一个小方案项目。 如果它是个人的东西,那就更好了。
第3步:向任何可以给您反馈的人显示您的代码。 有导师是最好的!
如果您需要记住本文中的内容,请记住: 主动学习总是比被动学习更好。
我同意从书中复制代码示例并编写自己的项目编码比在Youtube上被动地观看编码视频更加努力。 但是,既然你是一个(可能是想要的)开发者,你应该能够享受它,至少在大多数时候。