新手学编程,从哪里开始?

最近经常有亲戚朋友甚至陌生人问我,软件工程师的工作是什么样子的。在这一行,我们有很高的声誉,薪资高,工作中的乐趣很多——至少外人是这么想的。虽然这一行的薪水没有电影明星那么高(一些人甚至也将我们看做明星),但是因为不错的收入和声誉,依然很吸引人。

在我的学生生涯中,我们班的退学率是最高的,其中的主要原因是对软件工程师这项工作的误解。一些人退学是因为他们只想玩,不喜欢学习,无论选择什么专业都会退学;另一些则认为他们将来会整天地玩电脑。当然,我们的工作确实是“玩”电脑,只是比打游戏多费一些脑细胞。

亲戚朋友们经常问我:你到底在做什么呢?接下来经常是这个问题:哇,真了不起,怎么才能成为一个工程师?第一个问题的答案,取决于跟我说话的人。如果跟毫无技术背景的人谈,我就不会用像“累加”,“C#”,“Azure”这样的术语,我会用他们懂的东西解释。一般会使用一种通用的语言,无论是工作还是外部项目都用的。

那么,你的工作究竟是什么呢?我帮助顾客解决问题,通过开发软件,来提高他们的工作效率和营业额。通常,我要帮他们实现需求。

这是一个宽泛的答案,几乎可以来描述所有工作。但接下来的问题可以作很好的解释。人们经常使用手机的应用程序,所以谈论起手机应用来轻松地多。所以我就会跟朋友们说我在帮顾客写网页或者应用程序,解决他们的商业问题,让生活更便捷。

这个话题就到此为止了,如果继续讨论下去,有关“建网站”和“写应用”就要说远了。但是偶尔会遇到一些感兴趣的人会接着问:网页不就是一些文本和数值吗?做起来很难吗?当你试图给出一个例子解释的时候,基本上最后都会以好吧,我不知道 而告终。

我有很多科技通朋友,所以经常会被问到:我想学习编程,应该从哪里开始呢?

这是一个有趣的问题,但是又难以回答。当然,我可以甩给他们一本关于.NET编程的书,但是这样做真的好吗?对于初学者,推荐我偏爱的编程语言合适吗?可能不会。不要忘了他们问这个问题的真正的目标。他们是想了解计算机以及软件运行的原理吗?还是写一些小程序来恶作剧?是要解决他们的问题,还是想来抢你的饭碗?

当我听到这个问题的第一反应,就是弄清楚他们为什么想学编程。这是一个很好地起点——弄清楚从中想要得到什么。我们可以根据他们的目的来回答这个问题。

当你发现自己在重复地做同一件事情的时候,就可以考虑自己写一个软件来完成这些事。

如果你有一个真实世界的问题待解决,或者有一个明确的目标,那么给你行动的建议就很简单了。写代码和学习代码不仅仅是重复,而且要花上很多的时间,这是事实,要牢记于心。事实上,当你学着写出你的第一个程序的时候,写第二个就简单多了,逐渐变得熟练,越写越快。

我想学习编程,应该从哪里开始呢?

简单地建议是鼓励他们尝试解决一个真实世界的问题,但这仍然没有告诉他们如何开始。首先,我要给他们推荐顺手的工具。说到工具,就不得不提语言或者参考书,对于初学者来说,不能太高级,最好是简单几步就能运行一个hello world程序。如果不能很快看到自己的成果,他们就可能会放弃。编程不只是我们所写的代码,还有其他相关的东西。

我想让他们尽快的看见自己的成果,即使只是写了一行代码也没有关系,他们也会为此感到自豪。这么快看到自己的成果,他们就会有兴趣进行更深层次的探索,并准备好学习一门真正的编程语言,可能是C#,Java,Python或者其他的语言。早期你要教他们思维过程:if……this我这样做,else就这样,等等。

近几年兴起了教孩子编程的热潮,让有一些人问我如何学习编程的时候,我会告诉他们:像一个天真的孩子那样去学习。我们是如何教小孩子编程的呢?Code.org是一个很好的资源,通过教你把浏览器里的代码块拼装在一起来教编程,使你能够很快看到自己的成果。甚至可以通过这个写出自己的Flappy Bird。虽然这些课程不能解决你重复的工作,也不能解决你的业务需求。但是却给了你一个对编程的很好的印象。告诉你如何将代码组织在一起,如果将两个重要的代码块接在一起需要注意什么。

我想学习编程,应该从哪里开始呢?对于这个问题,没有同意的答案。根据你学习的热情和进度,可以给予一些指导。有数以万计的资料可以供你利用,在Code.org上做一些东西只是第一步,还有很长的路要走。如果你准备好了继续前行,首先应该有一本介绍编程基础的书。

真的吗?我已经准备好了学习编程,给我那些资源吧!

很多人想要别人拿勺子来一口一口地喂给自己知识,这是不现实的,编程要花很多时间,不断练习。你将会在错误中得到进步,并收获很多“哇,太棒了!”的时刻。如果你真的想要给你的电脑写一个软件,也有很多给初学者的好书供参考。即使最后没有完成你自己的软件,这些物价的知识也会让你受益匪浅。

我初学Java的时候看过一本Head First Java,对初学者来说是不错的一本书。很多人以前从没有写过什么程序,这本书中的介绍给了他们很大帮助。Help First是涵盖编程语言和技术的一系列书籍。想要走最少的弯路开始你的第一个hello world程序,我推荐Head First Python

不喜欢读书?推荐你看一下这个视频:Pluralsight’s Programming for Kids video.

如果你有孩子,和他们一起学习编程将使你们双方受益。孩子们有极高的兴趣和有趣的问题,可以拓宽你的思维。这也是和孩子们相处的一个好机会!坦白的说,我一直期待教我的孩子编程。

读一本书,再花些时间在Code.org上玩一玩,看一些Pluralsight上看的视频。这之后,你就会感觉你已经有了进步,想要更多的知识。如果你真的想学的更多的话,建议你去大学听一些课,或者上夜校学编程。为以后写真正的软件积累一些知识。

下面,是我为想要学习编程,又没有经验的人列的一些链接资源:

最后的建议,想象一下买一个小小的硬件,安装在你的车库里,当你的车开的离墙太近的时候,它就会发出信号——Arduino可以将它变成现实。可能性是无限的,只要你抓住你脑子里出现的新奇的想法,不断体验到编程的乐趣。

如果你和朋友或亲戚讨论这个问题的时间和这篇文章这样长,他们一定会满意地离开,并期待写出自己的第一个程序。

你会怎么回答这个问题呢?  ——如果我想学习编程,应该从哪里开始?

本文翻译自Filip的博客。



新手学编程,从哪里开始?”已经有6条评论

  1. 網上google來到這,我是新手,剛開始兩週的學習,基本是白丁。其實一點計算機背景都沒有,我想學編程是因為使用了很多安卓APP都覺得不滿意,好想自己寫一個。當然不知道何年何月才有能力寫,於是終於開始學習了,當時網上google了很久,雖然現在還是不太懂,看到有人說PYTHON比較容易入門,於是選了PYTHON,但不知道方向對不對。JAVA, C#, C++,還有什麼的,雖然大家都說你想學哪個,就直接買本書讀,但其實我想知道需不需要什麼背景或是PREREQUISITE? 還是說這些語言真的都可以各自為政,不管白丁還是經驗豐富,要學就直接學。

    • 我個人覺得,編程還是比較容易入門的。從 hello world 開始一點點進步。不過如果直接寫 Android 的話,可能會被很多亂七八糟的 UI 啦什麼的困擾,如果想寫 Android 的話,建議從 Java 開始學起吧。

      您的工作不是這個的話,只是當成一個業餘的興趣愛好,也是很不錯的選擇~
      我發郵件給您,推薦一些不錯的資源吧。

  2. 惭愧,看到第二段才确信这是翻译.

    谁会在得知你干软件这行后还进一步问你具体干什么, 他们只会说”哦,修电脑的啊”

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注