
A friend recently said: "I want to learn how to code. How and where do I start?"
最近有一位朋友说:“我想学习编码。我从哪里开始?”
我想学习编码-是去宜家还是种自己的树? (I want to learn how to code - Do I go to Ikea or grow my own tree?)
It's like woodworking. You can START by growing a tree, then chopping it down and finishing it, sanding it, before you make a table. Or you can go to Ikea. More likely you'll try something in between.
这就像木工。 您可以先种植一棵树,然后砍下来再整理,然后打磨,然后再制成桌子。 或者您可以去宜家。 您更有可能在两者之间尝试一些操作。
Modifying a WordPress theme is going to Ikea. Writing you own web framework is growing a tree first because you don't like the existing trees. You have to decide where on the spectrum you want to be, from being a custom furniture maker from the Woodright's Shop or someone who assembles prefabricated pieces made by someone else.
修改WordPress主题将转到宜家。 编写自己的Web框架首先会长出一棵树,因为您不喜欢现有的树。 您需要决定要属于哪个领域,从伍德赖特商店的定制家具制造商到组装别人生产的预制件的人。
好,我从哪里开始? (Ok, where do I start?)
Very cool. I'm always happy when folks want to learn to code. The Facebook thread continued with the usual suggestions:
很酷。 当人们想学习编码时,我总是很高兴。 Facebook主题继续提供通常的建议:
Then the more interesting questions started to get to the root of the matter.
然后,更有趣的问题开始成为问题的根源。

编码员,黑客,程序员,开发人员和计算机科学家之间有什么区别? (What's the difference between a Coder, a Hacker, a Programmer, a Developer, and a Computer Scientist?)
These words might all mean the same thing to you. Perhaps you hear geek, nerd, and dweeb, but we all know these have very important differences. Knowing the differences also can give you a sense of how deep you want to go on your coding adventure.
这些话对您可能意味着同一件事。 也许您会听到极客,书呆子和dweeb,但我们都知道这些有非常重要的区别。 了解这些差异还可以使您了解要进行编码冒险的深度。
- Coders - Can pretty much figure out it. It'll work, but it won't be pretty. 编码员-几乎可以弄清楚。 可以,但是不会很漂亮。
- Hackers - usually low level folks, skillful, with detailed understanding of some area deeply, often scarily deeply. 黑客-通常是低级人员,技术娴熟,对某些领域有深入的了解,经常会深入。
- Programmer - Write code and understand algorithms. Often work alone and well. 程序员-编写代码并了解算法。 经常独自工作,身体健康。
- Developer - Are the best generalists, can use lots of different systems and languages and get them to talk to each other. Are true and broad professionals, work with people, and communicate well. 开发人员-是最好的通才,可以使用许多不同的系统和语言,并使他们彼此交谈。 是真正和广泛的专业人士,与人合作,并能很好地沟通。
- Computer Scientist - Need to be able to prove how computers work, at a theoretical level. Are usually math people also. 计算机科学家-需要能够从理论上证明计算机的工作方式。 通常都是数学界人士。
If you are closer to one of these already you can get an idea of which direction to head.
如果您已经更接近这些方向之一,则可以了解朝哪个方向前进。
我们是否假设进行网络编程? (Are we assuming web programming?)
Everyone on the thread assumed some kind of web programming, which makes sense, since nearly everyone's on the web in 2013. However, just a few years ago we might have sat our friend down and made a Hello World app at the console, or perhaps loaded up Visual Basic, dragged a button, and MessageBox'ed Hello World.
线程上的每个人都采用某种网络编程,这很有意义,因为2013年几乎每个人都在网络上。但是,仅在几年前,我们可能让我们的朋友坐下来,在控制台上制作了Hello World应用,或者加载了Visual Basic,拖动了一个按钮,然后使用了MessageBox的Hello World。
Is Markup Code? Lots of people said "learn HTML and CSS," but I don't think that's coding in the classical sense. As a gateway to JavaScript and Web Services, I think it's a good place to start. The thing is, though, that while not every app is a web application that makes HTML in a browser, most applications are connected applications in some way. Apps consume data from services, send notifications, texts, emails and tweets. Nearly every application is distributed in some way, even if it's just a simple app that calls a web server for some data.
是标记代码吗? 很多人说“学习HTML和CSS”,但是我认为这不是经典意义上的编码。 作为JavaScript和Web服务的门户,我认为这是一个不错的起点。 事实是,虽然不是每个应用程序都是在浏览器中生成HTML的Web应用程序,但大多数应用程序都是以某种方式连接的应用程序。 应用程序使用服务中的数据,发送通知,文本,电子邮件和推文。 几乎每个应用程序都以某种方式分布,即使它只是一个简单的应用程序,它调用Web服务器获取一些数据。
If you want to be a coder today, or, let me go further and say if you want to be an effective coder, you will want understand the web and what really happens when you type twitter.com in your web browser. Just like you should understand how trees grow if you want to be a carpenter, how engines work if you want to be a race car driver, or where the water comes from if you want to be a plumber. Heck, you should really understand all of these things if you want to be an effective human. ;)
如果您想今天成为一名编码员,或者让我进一步说,如果您想成为一名有效的编码员,您将需要了解网络以及在网络浏览器中键入twitter.com时的实际情况。 就像您应该了解要成为木匠的树木如何生长,想成为赛车手的引擎如何工作,或者想成为水管工时水从何而来。 哎呀,如果你想成为一个有效的人,你应该真正理解所有这些东西。 ;)
“我想学习编码”实际上是什么意思? (What do we really mean by "I want to learn to code?")
What's the question under the question? Does she want to make websites? Design them? Does she want to make mobile applications and take them on the go? Does she want to create a gadget that will text her when she leaves the garage door open too long? These are all very different endpoints and there's lots of great ways to get started if we dig in a little.
问题下的问题是什么? 她想建立网站吗? 设计它们? 她是否想制作移动应用程序并随身携带? 她是否要创建一个小工具,当她把车库门打开得太久时会发短信给她? 这些都是截然不同的端点,如果我们稍微深入一点,就有很多很棒的入门方法。
Interested in Web Development?
对Web开发感兴趣?
- Any of the many "Learn to Code" sites mentioned above will do fine. 上面提到的许多“学习编码”网站中的任何一个都可以。
Interested in Web Development?
对Web开发感兴趣?
Interested in Hardware?
对硬件感兴趣?
Consider a Raspberry Pi or Arduino.
考虑使用Raspberry Pi或Arduino 。
Interested in Hardware?
对硬件感兴趣?
Interested in the code and history under the code you use every day?
对您每天使用的代码和历史记录感兴趣吗?
Interested in the code and history under the code you use every day?
对您每天使用的代码和历史记录感兴趣吗?
Already a techie but want to learn the hard way?
已经是技术人员,但想学习困难的方法?
Already a techie but want to learn the hard way?
已经是技术人员,但想学习困难的方法?
Interested in being a well-rounded developer?
有兴趣成为一名全面的开发人员吗?
Interested in being a well-rounded developer?
有兴趣成为一名全面的开发人员吗?
You can totally jump in to the web, learn a little JavaScript and start making web apps, and you should. But as with everything, if you've got deeper interest, there are a few different paths to going further. Do a little research into the breadth of possibilities available to you, and you just might try a slightly different path.
您完全可以进入网络,学习一些JavaScript,然后开始制作Web应用程序,应该这样做。 但是,与所有事物一样,如果您有更深的兴趣,可以有一些不同的方法来进一步发展。 对可用的广度进行一些研究,您可能会尝试一条稍微不同的路径。
相关链接 (Related Links)
Teaching Kids Electronics, Computers, and Programming Fundamentals with Snap Circuits
Programming's not for you? How about thinking? Be empowered.