深度学习去燥学习编码_学习编码的警示故事。 我自己的。

深度学习去燥学习编码

I was just a guy in a suit in an office with a vague startup idea. Then I decided to learn to code.

我只是一个办公室里西装革履的家伙,有着模糊的创业想法。 然后我决定学习编码。

I overheard some guy at a happy hour bragging about how easily he was able to automate his office workflows by using a language called Ruby. I thought, “huh, Ruby.” I went home, googled it, and within 15 seconds, I was working through a random Ruby tutorial.

在一个欢乐时光,我听到一个家伙吹牛,吹嘘他使用一种叫做Ruby的语言能够多么轻松地自动化他的办公室工作流程。 我以为,“露比。” 我回家,用谷歌搜索,然后在15秒内,我完成了一个随机的Ruby教程。

A week later, I went to my first hackerspace meeting. Everyone was talking about languages like Scala, Clojure and Go. There was so much to learn. I borrowed three O’reilly books and got about 50 pages into each of them.

一周后,我参加了我的第一次hackerspace会议。 每个人都在谈论诸如Scala,Clojure和Go之类的语言。 有很多东西要学。 我借了三本O'reilly的书,每本都有50页。

A friend told me I should get good at Emacs, and gave me his configuration files. I spent a few hours learning basic Lisp syntax so I could further configure it.

一个朋友告诉我,我应该精通Emacs,并给了我他的配置文件。 我花了几个小时学习基本的Lisp语法,以便可以进一步配置它。

Then some guy walked by and saw me using Emacs. “Why are you using Emacs?” he asked me. “Don’t you know Vim is better?” “Hm. Vim.” So I started memorizing dozens of Vim keyboard shortcuts.

然后有人走过去,看到我在用Emacs。 “为什么要使用Emacs?” 他问我。 “你不知道Vim更好吗?” “嗯。 Vim。” 因此,我开始记住数十个Vim键盘快捷键。

At the time, it seemed reasonable to think that the faster I could type, the faster I could code. I switched to a Programmer’s Dvorak keyboard layout because, hey, it was objectively the most efficient keyboard a programmer could use.

当时,认为输入速度越快,编码越快似乎是合理的。 我改用程序员的Dvorak键盘布局,因为,客观上,它是程序员可以使用的最高效的键盘。

On the days I could actually get my netbook to successfully boot Linux — and that I was able to type more than 10 words per minute — I studied Python by working through books and Udacity courses.

在那些日子里,我实际上可以让我的上网本成功启动Linux,并且每分钟可以输入10个以上的单词。我通过学习书籍和Udacity课程学习了Python。

After 7 months of grueling self-study and going to coding events, I landed my first software engineer job.

经过7个月的艰苦学习和参加编码活动,我找到了我的第一份软件工程师工作。

During my interview with the CTO, I told him about all the tools I’d learned and the esoteric configurations I was using. The CTO nodded and listened politely. And once I’d finished boasting of the breadth of my knowledge, he put me in my place with a single polite observation. He said, “There are many ways you can do most things, but only a few ways that make sense.” With that, he handed me a beat-up MacBook and set me loose in the developer bullpen.

在接受CTO采访时,我向他介绍了我学到的所有工具以及所使用的深奥配置。 首席技术官点点头,有礼貌地听。 一旦我吹嘘自己的知识面广,他就会礼貌地把我放在我的位置。 他说:“您可以通过多种方式来完成大多数事情,但是只有少数几种才有意义。” 这样,他就给了我一台破旧的MacBook,让我在开发人员的牛棚中放松了。

Four years before, the company had decided to build their product using Ruby on Rails. They committed fully to that decision, and much of their original code was still intact. All the engineers used MacBooks, which were both reliable and similar to the Ubuntu Linux servers they used in production.

四年前,该公司决定使用Ruby on Rails构建产品。 他们完全致力于这一决定,而他们的大部分原始代码仍然完好无损。 所有工程师都使用了MacBook,它既可靠又类似于生产中使用的Ubuntu Linux服务器。

Instead of arguing over Vim or Emacs, everyone just used RubyMine, a powerful Integrated Development Environment (IDE) with a sensible default configuration. This meant that any one engineer could sit down next to any other engineer and immediately start pair programming on a task without needing to orient themselves to their colleague’s development environment. This fact alone solved much of the awkwardness and unconscious resistance two developers feel when they try to collaborate.

每个人都没有使用Vim或Emacs争论,而是使用了RubyMine,它是功能强大的集成开发环境(IDE),具有明智的默认配置。 这意味着任何一名工程师都可以坐在其他任何工程师旁边,并立即开始在任务上进行结对编程,而无需使自己适应同事的开发环境。 仅凭这一事实,就解决了两位开发人员在尝试进行协作时感到的尴尬和无意识的抵制。

The company was OK with me not knowing Ruby on Rails. Since I’d focused my studies enough to learn some Python and Django and win a hackathon, they took that as a sign that I could eventually learn Rails.

该公司对我还不了解Ruby on Rails表示满意。 由于我将研究重点放在学习一些Python和Django并赢得黑客马拉松上,所以他们将其视为我最终可以学习Rails的标志。

The first few weeks were tough, and not just because I was working with a new team in a new language, framework and codebase. It was tough because everywhere I looked, I saw evidence that I’d gone about learning to code in an absurdly masochistic way.

最初的几周很艰难,不仅仅是因为我正在与一个新团队一起使用新的语言,框架和代码库。 这很艰难,因为在我所看到的任何地方,我都看到证据表明我已经开始以荒谬的受虐狂方式学习编码。

I’d spent months sitting alone in libraries and cafes, blindly installing tools from the command line, debugging Linux driver problems, and banging my head over things as trivial as missing parenthesis.

我已经花了几个月的时间独自坐在图书馆和咖啡馆里,从命令行盲目安装工具,调试Linux驱动程序问题,并且对琐碎的事情(如缺少括号)感到震惊。

I dabbled in every online course program imaginable, and started countless MOOCs. I don’t think I actually got something onto the internet without the guidance of a tutorial until month number five!

我涉足每一个可以想象的在线课程,并开始了无数的MOOC。 在第5个月之前,如果没有教程的指导,我认为我实际上并没有在互联网上获得任何东西!

This gave me the impression that programming was a Sisyphean struggle. I was convinced that the seemingly normal programmers I ran into were actually sociopaths who had experienced, then repressed, the trauma of learning to code.

这给我的印象是编程是一场西西弗斯式的斗争。 我坚信,我遇到的看似正常的程序员实际上是社会变态者,他们经历了然后压抑了学习编码的创伤。

Contrast this with my coworkers, who rarely even encountered syntax errors because their IDEs caught them first. My coworkers’ MacBooks just worked. If they got an error message and couldn’t solve it with a few minutes of reading and googling, they’d simply instant message one another for help debugging it. They’d hop over to one another’s desks and casually pair program.

与我的同事形成对比,我的同事很少遇到语法错误,因为他们的IDE首先抓住了它们。 我同事的MacBook刚好可以工作。 如果他们收到一条错误消息,并且在几分钟的阅读和谷歌搜索中无法解决该问题,那么他们只会相互即时发送一条消息,以帮助调试它。 他们会跳到对方的书桌上,然后随意配对程序。

There wasn’t much ego or elitism. There wasn’t the feeling that programming was a grind. It was just a series of constructive conversations between friendly adults, several of whom had learned to code on their own like I had.

没有太多的自我或精英主义。 没有那种编程是一种磨砺的感觉。 这只是友好的成年人之间的一系列建设性对话,其中一些人像我一样学会了自己编码。

The team was committed to their tools. Aside from Passion Project days and hackathons where developers could experiment with new JavaScript frameworks like Angular.js, they mostly focused on getting better with their current technology. They were conservative about what they allowed into their codebase.

团队致力于他们的工具。 除了Passion Project时代和黑客马拉松之外,开发人员可以尝试使用像Angular.js这样的新JavaScript框架,他们还主要致力于使自己的当前技术更好。 他们对允许进入代码库的内容持保守态度。

You see this same ethos at places like ThoughtBot, where everybody sticks with a small but effective tool chain (in their case, Rails, Vim, Postgres and Redis). By focusing on a few key tools, their engineers become experts who can easily interoperate.

ThoughtBot之类的地方 ,您会看到相同的精神,每个人都坚持使用一个小而有效的工具链(在他们的情况下,是Rails,Vim,Postgres和Redis)。 通过专注于一些关键工具,他们的工程师将成为可以轻松进行互操作的专家。

So the real questions is, if highly productive teams of software engineers work best with a focused set of tools, couldn’t people learning to program also learn best with a focused set of tools? Online coding curricula and coding bootcamps certainly seem to think so.

因此,真正的问题是,如果高生产率的软件工程师团队在使用一组重点关注的工具时能最好地工作,那么学习编程的人难道也不会在使用一组重点关注的工具时学习得最好吗? 在线编码课程和编码训练营似乎也是如此。

But as an individual, with so many options out there, it’s really hard to decide what to learn. I know because I was that dog circling around an intersection, chasing one car after another. A good programmer’s skill set can be described as T-shaped, with shallow knowledge in many areas, but deep knowledge in at least one. But after months of stress and hard work, I was shaped more like an underscore.

但是作为一个人,有很多选择,所以很难决定学习什么。 我知道是因为我是那只狗在交叉路口盘旋,追逐一辆汽车。 优秀的程序员技能集可以说成T形,在许多领域中知识浅薄,但至少具有深厚的知识。 但是经过数月的压力和辛勤工作,我的身形更像是一个下划线。

For each person I’ve met who started out learning this way — and I’ve met many — there are probably countless people who started out this way, got discouraged, and gave up their dreams of being a programmer. I don’t want this to happen to you.

对于我遇到的每个开始以这种方式学习的人-我已经认识了许多人-可能有无数的人们以这种方式开始学习,灰心丧气,并放弃了成为程序员的梦想。 我不希望这发生在你身上。

你需要集中精力 (You need to focus)

Without further ado, here the big mistakes I see new coders make all the time:

事不宜迟,在这里,我看到新编码员经常犯下的重大错误:

  • Switching languages or frameworks frequently, or deluding themselves into thinking they can become proficient in all of them.

    经常切换语言或框架,或自欺欺人地认为它们可以精通所有语言或框架。
  • Personalizing their development environment with exotic tools, rather than more conventional tools that can be reliably used while collaborating with others.

    使用奇异的工具来个性化他们的开发环境,而不是可以与他人合作时可靠地使用的更常规的工具。
  • Trying to learn tools like Docker and Famo.us because they’re new and exciting, even though they haven’t yet mastered more fundamental technologies.

    尝试学习Docker和Famo.us之类的工具,因为它们是新的且令人兴奋的,即使它们还没有掌握更基本的技术。

If I had to summarize my do-as-I-say-not-as-did advice in one word, it would be: focus.

如果我必须用一个词来总结我的“我说不做”的建议,那就是: focus

My question to you is: would you describe your plans for learning to code as focused? If you feel your plans are focused, you should stop reading now and get back to studying, because I don’t want to say something that might cause you to lose focus. If you haven’t focused your plans for learning to code yet, I have good news — you can do this right now. But it will take a few minutes and involve making some hard decisions. Wait! Don’t leaaaaave… Oh, good. You’re still here. OK, here are the decisions you need to make:

我对您的问题是:您是否会重点描述学习编码的计划? 如果您觉得自己的计划专注,则应该立即停止阅读并重新学习,因为我不想说些可能导致您失去专注的事情。 如果您还没有计划好学习编码的计划,那么我有个好消息-您现在就可以这样做。 但这需要几分钟,并且需要做出一些艰难的决定。 等待! 别走走……哦,很好。 你还在这里。 好的,这是您需要做出的决定:

  1. Choose one type of software development that interests you enough to define your career: web, mobile, gaming or embedded. I recommend web because it’s flexible. There are a ton of jobs and a ton of learning resources. If you’re passionate about something other than web development, leave this blog post and google search “getting started in _____ development” and go all-in on it!

    选择一种足以引起您的兴趣来定义您的职业的软件开发类型:网络,移动,游戏或嵌入式。 我推荐网络,因为它很灵活。 有大量的工作和大量的学习资源。 如果您对网站开发以外的工作充满热情,请离开此博客文章和Google搜索“ _____开发入门”,并全力以赴!

  2. Choose one language to learn: JavaScript, Ruby, or Python. Each has its strengths. Each has tools that can be used to build web apps (Node.js, Rails, and Django respectively). Unless you already have a strong preference, I recommend JavaScript because it’s the most popular language.

    选择一种要学习的语言:JavaScript,Ruby或Python。 每个人都有其长处。 每个工具都有可用于构建Web应用程序的工具(分别为Node.js,Rails和Django)。 除非您已经非常有偏好,否则我建议您使用JavaScript,因为它是最受欢迎的语言。

  3. Choose one online curriculum to study. If you’re learning JavaScript, freeCodeCamp.org has a comprehensive one. Trust the wisdom of the teachers who designed the curriculum you’ve chosen, and work through it in the recommended order, without skipping around.

    选择一种在线课程进行学习。 如果您正在学习JavaScript, freeCodeCamp.org会提供全面JavaScript。 信任设计了您选择的课程的老师的智慧,并按照推荐的顺序来完成它,而无需跳过。

Once you’ve made these decisions, the path forward is simple. Keep your sanity by ignoring the hype surrounding new tools. Keep your momentum by working through your chosen curriculum seven days a week, even if it’s only for half an hour at a time. Keep your confidence by trusting the judgement you made with today’s decisions.

一旦做出这些决定,前进的道路就很简单。 通过忽略有关新工具的宣传来保持理智。 即使您一次只学习半个小时,也可以每周7天完成所选课程来保持动力。 相信您对今天的决定所做出的判断,可以保持信心。

And remember: with patience, any able-minded person can become a great coder, and that includes you.

请记住:有耐心的人,任何有头脑的人都可以成为出色的编码人员,其中包括您。

I only write about programming and technology. If you follow me on Twitter I won’t waste your time. ?

我只写关于编程和技术的文章。 如果您在Twitter上关注我,我不会浪费您的时间。

翻译自: https://www.freecodecamp.org/news/a-cautionary-tale-of-learning-to-code-my-own-eddb24d9d5a7/

深度学习去燥学习编码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值