黑客初学者刷屏技巧
重点 (Top highlight)
It’s easy to get overwhelmed when you’re learning to code. The road to finding your first job and then growing out of it is full of obstacles and dead ends. Here are some tricks that will help you navigate the programming jungle, find a job, and develop as a junior programmer.
在学习编码时,很容易不知所措。 找到第一份工作然后逐渐成长的道路充满了障碍和死胡同。 这里有一些技巧,可以帮助您浏览编程丛林,找到工作并成为初级程序员。
更深入而不是更广泛 (Go Deeper, Not Broader)
You may think a junior developer needs to know lots of languages and technologies. I don’t blame you. These are some of the requirements I found lately on job advertisements:
您可能会认为初级开发人员需要了解许多语言和技术。 我不怪你 这些是我最近在招聘广告中发现的一些要求:
- TypeScript 打字稿
- Angular 角度的
- React React
- Gulp 古尔普
- Vue Vue
- Node 节点
- React Native React本机
That’s crazy. You don’t need to know all of that to find a job. Actually, you can’t know all of that at the beginning of your career.
太疯狂了。 您不需要知道所有这些就可以找到工作。 实际上,您在职业生涯的开始并不能一无所知。
Job requirements are at best “good to have” and at worst a wishlist.
职位要求充其量是“一件好事”,而最糟糕的是希望。
Typically, the process of creating a job advertisement consists of a senior developer listing everything he knows and muttering that it’s useful. Then the HR manager makes that list a prerequisite.
通常,创建招聘广告的过程包括一个高级开发人员,列出他所知道的所有内容并喃喃自语这很有用。 然后,人事经理将该列表作为前提条件。
In a real job, nobody expects a junior developer to have in-depth knowledge of many programming subjects. And if someone does expect that, they shouldn’t be allowed near the recruitment process or be working with juniors.
在实际工作中,没有人期望初级开发人员具有许多编程主题的深入知识。 而且,如果有人确实希望这样做,则不应该在招聘流程附近或与初级人员一起工作。
你需要知道的 (What you need to know)
The most common mistake junior front-end developers make is trying to learn several frameworks at the same time. Trying to bite off more than they can chew leaves them confused and discouraged.
初级前端开发人员最常见的错误是尝试同时学习多个框架。 试图咬下去超过他们的咀嚼能力,会使他们感到困惑和沮丧。
What you need is to have a deep understanding of a few crucial topics. In web front-end development, it is HTML, CSS, JavaScript, and usually one JavaScript framework. You can easily leave everything else for better times.
您需要对一些关键主题有深入的了解。 在Web前端开发中,它是HTML,CSS,JavaScript,通常是一个JavaScript框架。 您可以轻松地将其他一切留在美好的时光。
This approach will benefit you in the short run (it’s easier to find a job when you’re good at something) and in the long term (if you understand core concepts deeply, you’ll learn new things more rapidly in the future). And employers know that.
这种方法将在短期内(当您擅长某事时更容易找到工作)和长期(如果您对核心概念有深入的了解,那么将来会更快地学习新事物)将使您受益。 雇主知道这一点。
![Image for post](https://miro.medium.com/max/9999/1*fsdZlvX0m2pA53HUEDYwcw.jpeg)
看看引擎盖下 (Look Under the Hood)
Almost every problem you encounter has already been solved. Thousands of libraries are waiting for you to use them in projects. Take advantage of that, as they are often well-tested, take care of tricky edge cases, and create abstractions to help you code.
您遇到的几乎每个问题都已经解决。 成千上万的库正在等待您在项目中使用它们。 利用它们的优势,因为它们通常经过了良好的测试,请注意棘手的边缘情况,并创建抽象来帮助您进行编码。
Libraries are useful to accelerate your programming, but they’re also a great learning tool. Looking at the code written by accomplished developers will open your eyes to new ideas and ways to approach programming. I’ve learned tons of tricks just by looking at git repositories of popular libraries.
库对于加速编程很有用,但是它们也是一个很好的学习工具。 查看由经验丰富的开发人员编写的代码,您将看到新的想法和方法来进行编程。 仅通过查看流行库的git存储库,我学到了很多技巧。
What’s even better, you’ll often discover that core concepts behind many libraries are simple. As a junior developer, I frequently used a library to create tabs. When I finally decided to take a peek at the code, it turned out that it was pretty simple to follow. So when I needed to tweak tabs behavior in the project, I could do it in a few minutes.
更好的是,您经常会发现许多库背后的核心概念很简单。 作为初级开发人员,我经常使用库来创建选项卡。 当我最终决定浏览一下代码时,结果发现它很简单。 因此,当我需要调整项目中的选项卡行为时,可以在几分钟内完成。
As a bonus exercise, you can try to recreate the basic capabilities of a library without looking at its code. Later, compare your code with the original and try to understand the decisions made by the library’s author.
作为一项额外的练习,您可以尝试重新创建库的基本功能,而无需查看其代码。 以后,将您的代码与原始代码进行比较,并尝试了解图书馆作者的决定。
拥抱失败 (Embrace the Failure)
The web is full of promises: Learning to code is easy. You just need to pay us $2,000 and take 200 hours of online classes. In two months, you’ll become a software developer!
网络充满希望:学习编码很容易。 您只需支付$ 2,000并参加200小时的在线课程。 在两个月内,您将成为软件开发人员!
No, it’s not. And no, you won’t.
不,这不对。 不,您不会。
Programming is hard, and you’ll get confused time and time again. Some bugs will take days to fix. Unraveling some concepts can take weeks. You need to be ready for countless frustrations.
编程很难,一次又一次,您会感到困惑。 有些错误将需要几天的时间才能修复。 弄清一些概念可能需要数周的时间。 您需要为无数的挫折做好准备。
It may sound gloomy, but in reality, failure is OK. If you’re failing, it means you’re trying to do new and challenging things. The only way to grow is to extend beyond your limits. Failure is an essential part of the process. Befriend it, and you’ll see the benefits rapidly.
听起来可能令人沮丧,但实际上,失败是可以的。 如果失败了,则意味着您正在尝试做一些新的具有挑战性的事情。 成长的唯一方法就是超越自己的极限。 失败是该过程的重要组成部分。 成为它的朋友,您会很快看到好处。
Also, there is a silver lining. On many occasions, you’ll look at your old code and think, “How could I have been so stupid?” This feeling is a testament to the progress you’ve made, and it’s an excellent moment to take some pride in your development.
此外,还有一线希望。 在许多情况下,您将查看旧代码并认为:“我怎么会这么愚蠢?” 这种感觉证明了您所取得的进步,同时也是为自己的发展感到自豪的绝佳时机。
![Image for post](https://miro.medium.com/max/9999/1*uSFQeBjVQiz27LyvyYFYWw.jpeg)
专注于过程 (Focus on the Process)
Be aware of the perils of the learning checklist. It’s good to have priorities. You need to define what you need to learn. But setting goals that are too rigid can easily backfire.
注意学习清单的危险。 有优先权是一件好事。 您需要定义需要学习的内容。 但是设定过于严格的目标很容易适得其反。
Imagine you decided to learn closures this week and higher-order functions next week. You learn a lot, but after two weeks, you discover that you don’t understand either subject. You feel like a failure and begin to wonder if you’ll ever become good enough to be a programmer. In reality, though, you were too ambitious with your goals.
想象一下,您决定本周学习闭包,下周学习高阶函数。 您学到了很多东西,但是两周后,您发现自己对任何一个学科都不了解。 您感觉自己像一个失败者,开始怀疑您是否会成为一名程序员而变得足够好。 但实际上,您对目标过于雄心勃勃。
When you start, you don’t know what’s difficult and what’s not. Additionally, people vary in their ability to grasp different subjects. Some things will be harder for you than others, and it’s OK. You don’t have control over that, so don’t get discouraged.
当您开始时,您不知道什么是困难的,什么不是。 此外,人们掌握不同主题的能力也各不相同。 有些事情对您来说会比其他事情难,而且还可以。 您对此没有控制权,因此不要灰心。
When you push yourself too hard, you set yourself up for failure.
当您过分用力时,就会为失败做好准备。
Instead of setting learning goals, you should focus on the process. For example, decide to learn for one hour a day. It’s a better approach because you have greater control over your process than over your outcomes. So every day when you learn, it’s a success. And if you’re learning every day, the results are sure to follow.
而不是设定学习目标,您应该专注于过程。 例如,决定每天学习一小时。 这是一种更好的方法,因为您对流程的控制要比对结果的控制更大。 因此,每天学习都会成功。 而且,如果您每天都在学习,那么一定会得到结果。
做笔记 (Take Notes)
I’m sure you’re not taking enough notes. We all overestimate our ability to remember things. You’ll have to solve these same problems all over again. If you don’t save solutions, you’ll have to reinvent them.
我确定您做的笔记不够。 我们都高估了我们记忆事物的能力。 您将不得不再次解决这些相同的问题。 如果不保存解决方案,则必须重新发明它们。
So don’t trust your memory and document everything — the ways you solved problems, useful algorithms and functions, and good learning materials. You’ll need them along the way, so create a personal library.
因此,不要相信您的记忆并记录一切-解决问题的方式,有用的算法和功能以及良好的学习资料。 一路需要它们,因此创建一个个人库。
It’s easy to get lost in the sea of hyperlinks and other resources, so take some time to pick the optimal way to keep your notes. I use the app that allows you to add tags to resources and find them easily, but stick to whatever works for you.
在超链接和其他资源的海洋中很容易迷路,因此请花一些时间来选择保存笔记的最佳方法。 我使用的应用程序允许您将标签添加到资源中并轻松找到它们,但是坚持使用适合您的方法。
翻译自: https://medium.com/better-programming/5-simple-tips-for-beginner-programmers-1d4fcdde43a3
黑客初学者刷屏技巧