今日推荐英文原文：《How To Learn a New Programming Language Fast》
推荐理由：最简单的用图片画图的方法就是像素画了，把一块块的像素块作为图片来作画。而这个项目则不只是像素，还使用了一些万万没想到的画法——比如大小不同的圆圈，回形针等图案，甚至是 at 的符号 @ 也能用来画出一个 GitHub 的吉祥物来，而且画的还有模有样的。
今日推荐英文原文：《How To Learn a New Programming Language Fast》作者：Jun Wu
How To Learn a New Programming Language Fast
The first step is figuring out your unique learning stylePeople often marvel at a star programmer’s ability to pick up any language extremely fast. “This person must be gifted,” they’ll say. This person must be good at science and math.
The truth is that becoming a master learner is a practice. The more you practice learning any skill, the more you will understand how to learn any programming language with the speed and agility of a star programmer.
Each person is different. People think that there must be some shortest route to this learning problem. But the learning problem is tailored toward the type of thinker you are. Are you a bottom-up thinker, a top-down thinker, a visual learner, or an auditory learner? You are the architect who can design your learning solution. I am here to simply help you get there faster.
QualificationsWhen I started programming 15+ years ago, I had to pick up four programming languages in six months for a project that was due at the end of the year. My career was riding on it. Before that year finished, I not only learned these four programming languages, but I also completed that project.
When I started my career, I went on a graduate training program where for six weeks we had to pick up the entire undergraduate course work of various parts of finance: corporate finance, interest-rate products, equity products, etc. I barely passed that training program because up until that point, I had no prior finance education. But I passed the program.
Am I gifted? No. Am I a master learner? No. Because I grew up in a household where I received no love unless I performed, the pressure enabled me to learn this one trick that I applied over and over again.
The # 1 Trick in LearningI have found a trick that works for me through practice and pressure. I didn’t realize I found my trick until someone asked me one day, “Do you remember the books that you read from childhood?” I replied, “No, I don’t. But, I’ve internalized these books.” These were fiction books that this person was talking about.
But I realized I’ve internalized the struggles from the characters and learned from the struggles of the characters. Even though I didn’t remember the details of the book, I didn’t have to go back to re-reading the book because I’ve internalized the most important parts of the book.
How Do You Go About Internalizing the Most Important Concepts?If you study so-called gifted education, you will realize that gifted people are people who are more sensitive than the average person. The way they pick up knowledge fast is mainly due to their sensitivity. Because they are sensitive to anything presented, they can internalize the knowledge faster than anyone.
All of us who are not gifted can pretend that we are gifted and implement a method to internalize concepts. This method will enable us to learn as a gifted person learns. We may take longer than the gifted person. But we will nevertheless get there faster than we did before.
The method has to be tailored to the type of learner you are: visual learner, auditory learner, reading/writing learner, or kinesthetic learner.
You can straddle a few different types and be in the middle of the quadrants. For instance, I am a visual learner who has learned to be a reading/writing learner at school. At work, due to my programming profession, I became a kinesthetic learner.
By figuring out which type of learner you are, you can immerse yourself in the type of mediums that will enable you to learn the best. By immersing yourself in the medium, you will heighten your sensitivity to the subject. This way it is much easier to internalize the concepts.
Types of learners (illustration by Jun Wu)
Visual learnerIf you are a visual learner, you love visualizing ideas and concepts. You can create mind maps of the concepts. I am a visual learner. I often use a whiteboard to diagram all the components of the concepts in my programming books. I also diagram all of the components of the systems I am building. Once I do it once, it’s easier for me to imprint the image into memory.
Tools for learning: YouTube videos, lists-oriented training, diagrams, mind maps Exercises for remembering: create mind maps, make modules, create Visio diagrams
Auditory learnerIf you are an auditory learner, then you are likely to learn by listening to someone talk about the subject.
Tools for learning: audiobooks, podcasts, TED videos, classroom instruction Exercises for remembering: teaching the concepts to someone else, coding with a buddy and teaching each other.
Reading/writing learnerIf you are a reading/writing learner, then you are likely to learn from reading programming books and taking notes.
Tools for learning: programming books, making list, taking notes Exercises for remembering: writing a blog about concepts learned, creating question/answer lists
Kinesthetic learnerIf you are a Kinesthetic learner, then you learn best by doing. You like to engage in learning that involves physically acting out what you have learned.
Tools for learning: programming projects, study groups, coding competitions Exercises for remembering: tracing through mind maps, coding with Visio block diagrams, engaging in different coding projects with a buddy
How Do You Practice the Concepts You’ve Internalized?Practicing the concepts you’ve just learned is just as important as internalizing the concepts. From my experience, the first time you internalize something, it’s in your short-term memory. For you to remember it for the long haul, you must practice these concepts over and over again.
Here are resources where you can practice concepts that you have learned:
CodeChef — This is a website that contains practice modules and holds competitions for programming. Particularly for algorithms coders, this is the website to be to practice what you have learned.
Coderbyte — This is a website where you can solve coding challenges and view other people’s coding solutions.
HackerRank — This is a website where you can practice with coding challenges and learn from tutorials.
CodinGame — This is a website where you can solve coding challenges tied to online games.
Practice working on projectsOnce you’ve had the practice you need to master concepts, then you are ready to work on projects.
1.Create one project per language that showcases all the important concepts of the language.
For instance, if you use Ruby/Rails, you should try to build a website; if you are learning SQL, you should install and put together a database; if you are learning data science, you should analyze a dataset trying different algorithms with it.
2.Code interviews are the best practice around.
Technical interviews can be grueling. The way to master these interviews is really to look at it as practice for the big leagues. You can prepare for it by using some interview-preparation sources, such as Cracking the Coding Interview, LeetCode (practice coding with an online judge, Gainlo (mock interviews with professionals), Glassdoor (practice past interview questions), and GeeksforGeeks (look at the solved questions).
ConclusionNow you know becoming a master learner is a practice. By internalizing concepts, anyone can become a master learner of programming languages fast. Like a gifted person, if you heighten your sensitivity around the subjects you learn by immersing yourself in a learning medium (e.g., audio, visual, words, etc.), you will learn faster than ever before.
After you’ve learned the concepts, you can practice the concepts through projects, code interviews, and coding competitions. In no time, you will be hired as a programmer.
What are you waiting for?