快速学习编程语言_如何更快地学习编程语言

快速学习编程语言

The following is an excerpt from The Complete Software Developer’s Career Guide by John Sonmez. To get the entire book delivered to your inbox, go here.

以下摘录自John Sonmez的《完整软件开发人员职业指南》 要将整本书发送到您的收件箱,请转到此处

How to Learn Programming Languages Faster

For software developers, learning is a journey, not a destination. You will always be able to get better — if you choose to. I’ve spent plenty of time developing my technical skills the wrong way. However, I’ve also learned how to develop technical skills at a lightning fast speed and to teach others at the same time. After all, I created over 50 highly technical developer training courses on Pluralsight over a period of about three years.

对于软件开发人员而言, 学习是一段旅程,而不是目的地。 如果您愿意的话,您将始终能够变得更好。 我花了很多时间以错误的方式发展自己的技术技能。 但是,我还学会了如何以迅雷不及掩耳的速度发展技术技能,并同时教别人。 毕竟,我在大约三年的时间里为Pluralsight创建了50多个高技术开发人员培训课程。

I used to think the best way to learn a technical skill was to take a big reference book and read it cover-to-cover.

我曾经认为学习技术技能的最佳方法是拿一本大参考书,然后从头到尾阅读。

Back then, I read too many 800+ page books to count and didn’t benefit much from the exercise; although my arms might have grown from carrying around books of that size.

那时,我读了800多页的书,无法数数,并且没有从练习中受益匪浅。 尽管我的手臂可能已经随身携带了这么大的书。

I don’t want you to make the same mistakes I did, and if you already have, I want to show you a better way.

我不想让你犯同样的错误,如果已经犯了, 我想向你展示一种更好的方法。

学习如何快速学习 (Learning How to Learn Quickly)

Before we get into the specifics about learning technical skills, I think it’s worth taking a second to talk about learning anything quickly and teaching yourself in general.

在我们开始学习有关学习技术技能的细节之前,我认为值得花一点时间来谈论快速学习任何东西并总体上教自己。

As I mentioned, I spent a large amount of time both learning and teaching various technologies.

正如我所提到的,我在学习和教授各种技术上花费了大量时间。

I learned whole programming languages in a matter of weeks and then turned around and taught courses on them.

我花了几周的时间学习了整个编程语言,然后转过身来讲授了这些课程。

During that process, I developed a reliable system for learning just about anything I needed to learn.

在此过程中,我开发了一个可靠的系统来学习几乎所有我需要学习的东西。

This wasn’t so much a conscious effort as it was a necessity. I was trying to learn at such a rapid rate that I had to come up with efficient ways of doing things, and naturally, patterns of learning developed which helped me to become faster and faster.

这不是必要的有意识的努力,而是必要的。 我试图以如此之快的速度学习,以至于我不得不想出有效的做事方式,自然地,学习模式的发展帮助我变得越来越快。

Here’s how it works.

运作方式如下。

基本过程 (The Basic Process)

The basic idea is pretty simple.

基本思想很简单。

Essentially, you want to first get a good idea of what you are learning and what the scope of it is.

从本质上讲,您想首先了解所学内容及其范围。

You need to get enough information about your subject to understand the big picture and narrow the subject down to a small enough scope that you can actually tackle it and wrap your head around it in a realistic amount of time.

您需要获取有关主题的足够信息,以了解全局,并将主题缩小到足够小的范围,以便您可以实际解决它,并在现实的时间内将您的头围起来。

Then, you need a goal. You need to establish what it is you are trying to learn and why and, most importantly, what metric you will use to know that you’ve learned it.

然后, 您需要一个目标。 您需要确定要学习的内容以及为什么以及最重要的是,要使用什么度量标准来了解自己已经学习了。

Far too many people set out to learn something but have no way to measure whether they have succeeded or not.

太多的人开始学习一些东西,但却无法衡量他们是否成功。

Equipped with that starting point, you can start to gather some resources for learning.

有了这个起点,您就可以开始收集一些学习资源。

I recommend not just reading one book cover-to-cover but to instead gather multiple resources, which may include books, blogs, podcasts, magazines, video courses and tutorials, expert opinions, etc.

我建议您不仅要阅读一本从封面到封面的书,还应该收集多种资源,其中可能包括书籍,博客,播客,杂志,视频课程和教程,专家意见等。



Looking for resources for improving your programming skills? Check out these great links:

寻找资源来提高您的编程技能? 查看以下重要链接:

Check out SitePoint Premium for more books, courses and free screencasts.

查阅SitePoint Premium ,了解更多书籍,课程和免费截屏视频。



Then, you are going to use some of those resources to create an actual plan for learning.

然后,您将使用其中一些资源来创建实际的学习计划。

You are basically going to figure out in what order to learn everything you need to know about your topic.

基本上,您将以什么顺序来学习所需的关于主题的所有知识。

Then, you dive in. From your learning plan, start with each module you are going to learn about your subject. For each module, learn enough to get started , play around for a bit, and then go back and answer any questions you had while playing around.

然后,潜入。从您的学习计划中,开始学习要学习的各个模块。 对于每个模块,要学习足够的知识以开始使用一会儿,然后返回并回答玩时遇到的任何问题

You are basically going to focus on learning by doing , which we’ll talk about in a second.

您基本上将专注于边做边学 ,我们将在稍后讨论。

The key here is to not learn too much up front. Instead, utilize natural curiosity to drive your learning as you play around on your own. Then, go back and actually read the text or consume the content about your topic, with questions in your head and some experience which will naturally guide you to seek out what is actually important.

这里的关键是不要事先学习太多。 相反,当您自己玩耍时,请利用自然的好奇心来推动学习。 然后,返回并实际阅读文本或使用有关您的主题的内容,脑海中浮现出一些疑问和一些经验,这些经验自然会引导您找出真正重要的内容。

A big problem we face when learning by consuming a bunch of material is that we don’t actually know what is important. By playing around first and forming your own questions, you solve that problem and what you learn actually sticks.

在通过学习大量材料进行学习时,我们面临的一个大问题是我们实际上并不知道什么是重要的。 通过先玩游戏然后形成自己的问题,您可以解决该问题以及所学到的东西。

Finally, you take what you learned and you teach it to someone else.

最后,您将学到的东西教给别人。

It doesn’t really matter the format and it doesn’t matter who you teach it to. You could talk to your dog or the squirrels in your yard if you like. Doesn’t really matter.

格式并不重要,您教给谁也无关紧要。 如果愿意,您可以和您的狗或院子里的松鼠交谈。 没关系。

What matters is that you somehow reorganize the thoughts in your head in a way that communicates them to the outside world.

重要的是,您以某种方式将脑海中的思想重新组织起来,并将其传达给外界。

This is the place where learning changes from knowledge to understanding.

这是学习从知识变为理解的地方

And that’s it.

就是这样。

What we have here is a basic formula you can apply to just about anything you want to learn quickly.

我们这里提供的是一个基本公式,您可以将其应用于几乎所有想要快速学习的内容。

(If you want a more detailed example, with a workbook and videos to help you master this process, I’ve created an entire course on this approach, called 10 Steps to Learn Anything Quickly.)

(如果您想要一个更详细的示例,并附有工作簿和视频来帮助您掌握这一过程,我就用这种方法创建了整个课程,称为“ 快速学习所有内容的10个步骤” 。)

Now, let’s talk more specifically about learning and developing technical skills.

现在,让我们更具体地谈论学习和发展技术技能。

通过实践学习 (Learn by Doing)

I believe we all learn best by doing, but when it comes to technical skills, this is paramount.

我相信我们所有人都能从中学到最好的知识 ,但是在技术技能方面,这是至关重要的。

It is just not possible to learn most technical skills by simply reading a book or even watching a video tutorial.

仅仅阅读一本书甚至观看视频教程就不可能学习大多数技术技能。

You may get an idea of what is possible using a particular technology, programming language, or tool, but until you’ve actually used it yourself, or solved problems with it, you are only going to have a surface level understanding.

您可能会了解使用特定技术,编程语言或工具可能发生的事情,但是直到您自己真正使用它或解决它的问题,您才需要对表面有一个了解。

This might be obvious for programming languages, but can you really learn how to use source control from just reading about the syntax?

对于编程语言而言,这可能是显而易见的,但是您可以仅通过阅读语法来真正学习如何使用源代码控制吗?

If you’ve never made the mistake of merging a file into the wrong branch or checking out the wrong version of the source code, and you’ve never actually used a version history to figure out where a bug got introduced, you aren’t really going to know how to use source control — you’ll just think you do.

如果您从未犯过将文件合并到错误的分支中或检查出错误的源代码版本的错误,并且您从未真正使用版本历史记录来找出错误的来源,那您就不会真的会知道如何使用源代码控制-您只会以为会这样做。

边干边学 (How to Learn by Doing)

At the risk of regurgitating some information that might seem obvious, I’m going to tell you about how to actually learn by doing — consider this as a reminder for something you already know.

冒着反省一些看似显而易见的信息的风险,我将告诉您有关如何边做边学的实际知识- 将此视为对您已经知道的事情的提醒。

Whenever you are going to try and learn a technical skill, start by figuring out what it is going to help you do.

每当您打算尝试学习技术技能时,请先弄清楚它将对您有什么帮助。

If you don’t have an immediate need for the skill, you might even question whether you need to learn it at all. A large amount of time is wasted by learning technical skills we are never actually going to use in the real world. Believe me, I’m so guilty of doing this that it’s not even funny.

如果您不急需该技能,您甚至可能会质疑是否需要学习该技能。 学习我们从未在现实世界中实际使用的技术技能会浪费大量时间。 相信我,我为此感到内that,以至于都不好笑。

You’ll have a much easier time learning something if you have an immediate application for it — a real reason to learn it.

如果您有一个即时的应用程序,您将有一个轻松得多的时间来学习它-这是学习它的真正原因。

I guarantee you will be learning like you’ve never learned before if you are being instructed on how to skydive right before you fly up into the sky and jump from a plane.

我保证,如果您在飞上天空并从飞机上跳下之前得到有关如何跳伞的指导,您将像以前从未学过的那样学习。

But what if you don’t have a pressing need? What if you are learning a technical skill because you want to be able to get a job where you’ll need to use it?

但是,如果您没有紧迫的需求怎么办? 如果您因为希望能够找到需要使用的工作而学习技术技能,该怎么办?

In that case you need to manufacture a reason to use that skill. Create a goal.

在这种情况下,您需要说明使用该技能的理由。 建立目标。

做中学的一个例子 (An Example of Learning by Doing)

Let’s look at a real example.

让我们看一个真实的例子。

Suppose you wanted to learn about relational databases and how to use them.

假设您想了解关系数据库以及如何使用它们。

You could just try and read about a database and run some queries against it to play around with — and that might be somewhat effective.

您可以尝试阅读有关数据库的信息并对其进行一些查询以配合使用-这可能有些有效。

What if instead your goal involved creating a database to store a collection of movies you owned?

相反,如果您的目标涉及创建数据库来存储您拥有的电影的收藏,该怎么办?

What if your goal was to query this database, insert new movies, delete movies, update the titles, etc?

如果您的目标是查询该数据库,插入新电影,删除电影,更新标题等,该怎么办?

What if you wanted to create a simple application to let you access the database and do all this?

如果您想创建一个简单的应用程序来访问数据库并执行所有操作,该怎么办?

Now, you have a purpose and a way to learn by doing.

现在,您有一个目的和一种边做边学的方法。

Now, you have something to do.

现在,您有事要做。

How do you approach learning about relational databases?

您如何学习有关关系数据库的知识?

You crack open that book or you watch that video tutorial, looking for specific information you need to know to solve your actual problems.

您可以打开书本或观看视频教程,以查找解决实际问题所需的特定信息。

Then, you actually create and use a database and not just as an exercise. You have a real goal.

然后,您实际上创建并使用数据库 ,而不仅仅是作为练习。 你有一个真正的目标。

Think about how much more information you’ll retain when you work and learn in this way.

考虑这样工作和学习时,您将保留多少信息。

And won’t it also be so much more fun?

而且会不会更有趣呢?

我如何教授技术技能 (How I Teach Technical Skills)

As I mentioned earlier, I have taught quite a few technical skills in a pretty large variety of technologies in my day.

正如我之前提到的,我今天已经在相当多的技术中教授了很多技术技能。

Therefore, I thought you would benefit from seeing how I teach technical skills to make them easier to learn. That way, you can just apply this concept when teaching them to yourself.

因此,我认为看到我如何教授技术技能使他们更容易学习,将会使您受益。 这样,您可以在自己教自己时应用这个概念。

Make sense?

合理?

When I teach technical skills, I want to give people the biggest bang for their buck, and I don’t want to bore them with a bunch of stuff they don’t really need to know or could learn on their own when they actually need to learn it.

当我教授技术技能时, 我想给人们以最大的帮助 ,而我也不想给他们带来一堆他们真正不需要的东西,或者他们真正需要时可以自己学习的东西学习它。

Instead, I focus on teaching what will be immediately valuable and giving students the resources they need to practice what I call “just in time learning” when they need to go deeper on a topic.

相反,我专注于教学什么将立即有价值 ,并在需要深入研究某个主题时,为学生提供他们所需的资源,以练习所谓的“即时学习”。

There are three main things I try to teach someone when I am teaching a technical skill:

当我教授技术技能时,我主要尝试以下三件事:

  • The Big Picture: what can you do with the technology?

    大图:您可以使用这项技术做什么?
  • How to get started

    如何开始
  • You need to know 20% to be the most effective

    您需要知道20%是最有效的

Let’s break each of these things down.

让我们分解所有这些事情。

总体情况:您可以使用这项技术做什么? (The Big Picture: What Can You Do With the Technology?)

I always start with the big picture.

我总是从大局开始。

I believe in the power of Google to solve most of your problems, but you can’t Google something if you don’t know what it is.

我相信Google可以解决您的大多数问题,但是如果您不知道它是什么您将无法使用Google。

Therefore, I first try to teach my students how big a particular technology is and what all it can do.

因此,我首先尝试教我的学生某种特定技术有多大以及它可以做什么。

This is at a very surface level. I’m not showing them or you how to do everything in a technology; I’m just giving you a quick tour and overview of all the points of interest on a map.

这是非常表面的水平。 我不是在向他们展示或向您展示如何在技术中做所有事情。 我只是给您快速浏览并概述地图上所有景点。

For a programming language, for instance, I might talk a bit about the history of the language and what it is mostly used for.

例如,对于一种编程语言,我可能会谈一谈该语言历史及其主要用途。

Then, I might jump in and show you all the constructs of the language and the language features — especially the unique ones.

然后,我可能会介绍所有语言的结构语言功能 ,尤其是独特的语言

Finally, I might introduce you to the various libraries that are a standard part of the language and give you an idea of what you can do with them and what they cover.

最后,我可能向您介绍各种语言库这些库是该语言的标准组成部分,并为您提供了使用它们的功能以及它们涵盖的内容的概念。

The idea here is to give you the complete lay of the land without going into the details.

这里的想法是为您提供完整的土地布局,而无需关注细节。

You can always look up the details on your own for the things you are interested in.

您始终可以自行查找感兴趣的事物的详细信息。

At this step, I want to eliminate the unknown unknowns. I want to make sure that you establish what you don’t have any knowledge about, so when you need to learn about it, you can know where to look.

在这一步, 我想消除未知的未知数。 我想确保您建立了自己不了解的知识,因此当您需要了解它时,便可以知道在哪里查找。

My goal is that you don’t say, “Oh, I didn’t know X could do that,” but instead say, “I know X can do it. I’m not sure how, but I can figure that out later.”

我的目标是您不要说:“哦,我不知道X可以做到这一点,”而是说:“我知道X可以做到。 我不确定如何操作,但以后可以解决。”

Imagine trying to learn woodworking without knowing that such a thing as a dremel or router existed.

想象一下在不知道存在诸如dremel或router刨机的情况下尝试学习木工的情况。

You don’t have to know how to use those tools, but without knowing they exist, you would be severely handicapped.

您不必知道如何使用这些工具,但是如果不知道它们的存在,您将受到严重的伤害。

如何开始 (How to Get Started)

The next thing I like to teach students is how to get started.

我想教学生的下一件事是如何开始。

This is often the most difficult part of learning a technology — and it’s the precursor to “doing” — so I try to make this as painless as possible.

这通常是学习技术中最困难的部分-并且是“实践”的先驱-因此我尝试使这一过程尽可能地轻松。

I want to show a student how to download whatever they need to download, get it installed, create their first project, and compile their code.

我想向学生展示如何下载他们需要下载的任何东西,安装它,创建他们的第一个项目以及编译他们的代码。

Once a person is able to overcome this obstacle, they can start playing around and actually building things or working with the technology.

一旦一个人能够克服这一障碍,他们就可以开始玩耍并实际建造东西或使用技术。

If this barrier to entry seems too high, someone is likely to just read a book or watch a tutorial and never actually get their hands dirty.

如果这种进入的门槛似乎太高,某人可能只是看书或看教程,而实际上从不弄脏自己的手。

You can utilize this in your own studies by making sure you focus on discovering how to get started with a particular technical skill early on in your learning process.

您可以通过确保自己专注于在学习过程中尽早发现如何开始使用特定的技术技能,来在自己的学习中利用这一点。

Look for specific tutorials or guides that will show you how to get started, then you can take it from there.

寻找特定的教程或指南,这些教程将指导您如何入门,然后您可以从那里开始。

您需要知道20%是最有效的 (You Need to Know 20% to Be the Most Effective)

Finally, I try to teach students 20% of the information concerning the technology that they’ll use 80% or more of the time.

最后,我尝试教给学生20%的信息,这些信息将使他们80%或更多的时间会使用该技术。

Almost everything in life falls into what is called the Pareto principle, which basically states that 20% of something produces 80% of the results.

生活中的几乎所有事物都属于所谓的帕累托原理 ,该原理基本上说20%的事物产生80%的结果。

The key to learning a technical skill is figuring out what the 20% is.

学习技术技能的关键是弄清楚20%是什么。

What 20% can you learn that will be used in 80% of the work you do using that technical skill?

使用该技术技能,您将在80%的工作中学到20%的知识?

This is where it is really going to be critical to be doing rather than just reading.

在这里,要做的不仅仅是阅读,这实际上是至关重要的。

Many books and even tutorials are written like reference manuals, not giving particular emphasis to the 20% of the technology that is most important to know.

许多书籍甚至教程的编写都像参考手册一样,没有特别强调最重要的20%技术。

If you are actively working with a technology, you’ll quickly discover what you use the most because it will be extremely painful to not know it.

如果您正在积极地使用一项技术,您将很快发现最常使用的技术,因为不了解它会非常痛苦。

Let’s look at the relational database example again.

让我们再次看一下关系数据库示例。

Most likely, if you learn about relational databases, you’ll find that writing select statements is pretty squarely in that 20% area.

最有可能的是,如果您了解关系数据库,您会发现在这20%的区域中,编写select语句非常合适。

If you just read a book on SQL, you might find equal weight given to selecting, inserting, updating, deleting, indexing, and various other database functions.

如果您只是读一本有关SQL的书,则可能会发现选择,插入,更新,删除,建立索引以及其他各种数据库功能具有同等的重要性。

However, if you actually try and create a database and use it, you are going to be doing a whole lot of select statements. You’ll also quickly realize that you need to learn how to join tables.

但是,如果您实际上尝试创建数据库并使用它,则将要执行很多选择语句。 您还将很快意识到,您需要学习如何联接表。

Instead of wasting your time trying to learn everything there is to know about relational databases, you’ll focus your efforts on learning how to write select statements, join tables, and other common operations that make up that critical 20%.

与其浪费时间尝试学习有关关系数据库的所有知识,不如将精力集中在学习如何编写select语句,join表以及其他占该关键20%的其他普通操作上。

This is why doing is so important.

这就是为什么做如此重要的原因。

It also can help to shadow an expert and watch them work, or even assist them in an apprentice-like situation.

它还可以帮助掩盖专家并观察他们的工作,甚至在学徒般的情况下帮助他们。

By just seeing someone who uses the technical skill you are developing and what their 20% is, you can learn what you need to know quickly.

通过仅看到使用您正在开发的技术技能的人及其20%的知识,您就可以快速了解需要了解的知识。

On the job training especially can be extremely effective.

在职培训尤其有效。

阅读专家的文章 (Read What Experts Are Writing)

I’ll leave you with one final idea to help you develop technical skills.

我将给您最后一个想法,以帮助您发展技术技能。

Become an avid reader of what experts who already possess that technical skill are writing.

成为那些已经掌握该技术技能的专家的狂热读者。

When I was learning my craft, I would spend about 30 minutes each day reading various blogs related to subjects I was learning about.

当我学习自己的手艺时,我每天将花费大约30分钟阅读与所学主题相关的各种博客。

When I really wanted to get an in-depth knowledge of C++, I devoured Scott Meyers’ Effective C++ books.

当我真的想深入了解C ++时,我吞噬了Scott Meyers的Effective C ++书。

Oftentimes, just hearing an expert’s opinion on a subject can grant you deep insights you wouldn’t be able to gather on your own.

通常,仅听取专家对某个主题的意见可以为您提供深刻的见解,而您将无法自己收集这些见解。

It’s one thing to understand the syntax of a programming language or how to use a framework; it is another thing to understand the idiomatic usage of either.

了解编程语言的语法或如何使用框架是一回事。 了解两者的惯用用法是另一回事。

Study how experts are applying the skills in the real world that you are trying to learn.

研究专家如何在您尝试学习的现实世界中应用技能。

Read about the problems and arguments experts have regarding the intricacies of a technical skill, and your understanding will deepen.

阅读有关专家对技术技能的复杂性所遇到的问题和争论,您的理解将会加深。

实践,实践,实践 (Practice, Practice, Practice)

Hopefully, I’ve given you a few good tips to learn your technical skills and to develop them further.

希望我给您一些好的技巧,以学习您的技术技能并进一步发展它们。

It should be pretty clear to you now that learning by doing is critical — especially when dealing with technical skills.

现在您应该很清楚,边做边学非常关键 -尤其是在处理技术技能时。

It should also be pretty clear to you that you need to have an actual plan to learn and a clear goal of what it is exactly that you want to learn.

您还应该很清楚, 您需要有一个实际的学习计划,有一个明确的目标明确要学习的内容。

I want to leave you with one final point.

我想谈谈最后一点。

Practice.

实践。

It’s going to take time to develop any technical skill. In order to get good at something, you are going to have to practice a lot.

开发任何技术技能都需要时间。 为了善于做某事,您将不得不练习很多。

Try not to get frustrated by how long it may seem to take, especially when you feel like you aren’t making progress.

尽量不要对似乎要花多长时间感到沮丧,尤其是当您觉得自己没有进步时。

If you put in the time, the skills will come as long as you are following a solid plan with a clear goal.

如果您投入时间,那么只要您遵循一个明确目标的可靠计划, 技能就可以发挥作用

Just keep at it and trust the process.

只要坚持下去,并相信这个过程

从这往哪儿走 (Where to Go From Here)

With the techniques I’ve covered in this post, you’re better prepared to tackle new technical skills than most of the software developers I’ve met over the last few years.

借助我在本文中介绍的技术,比起过去几年中遇到的大多数软件开发人员,您已经准备好应对新的技术技能。

I’ve just scratched the surface, though, of the steps you can take to further your career as a developer.

不过,我只是简单地介绍了可以采取的步骤,以进一步发展作为开发人员的职业。

In fact, I’ve put together an entire book just for developers who want to grow as professionals and earn more income while doing work they love. It’s called The Complete Software Developer’s Career Guide. For more information (and free access) click here.

实际上,我为希望成为专业人士并在从事自己喜欢的工作时获得更多收入的开发人员整理了一本书。 这就是《完整软件开发人员职业指南》 。 有关更多信息(免费访问), 请单击此处



If you want to expand your programming skills, check out SitePoint Premium. We have tons of books and video courses to help you on your programming journey, along with lots of free screencast. Signing up for free also gives you access to SitePoint’s famous Web forum.

如果您想扩展编程技能,请查看SitePoint Premium 。 我们提供大量书籍和视频课程,可帮助您进行编程,同时还提供许多免费的截屏视频。 免费注册还使您可以访问SitePoint著名的Web论坛

翻译自: https://www.sitepoint.com/how-to-learn-programming-languages-faster/

快速学习编程语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值